From ad90b440f508d0fac09938ff6bbc406521c28eec Mon Sep 17 00:00:00 2001 From: bytedream <bytedream@protonmail.com> Date: Thu, 10 Aug 2023 13:36:04 +0200 Subject: [PATCH] add frontend and swap whole stack to sveltekit/nodejs --- .env.example | 2 + .eslintignore | 13 + .eslintrc.cjs | 30 + .gitignore | 13 +- .npmrc | 2 + .prettierignore | 13 + .prettierrc | 9 + README.md | 37 + backend/.editorconfig | 18 - backend/.env.example | 59 - backend/.gitattributes | 11 - backend/.gitignore | 19 - backend/README.md | 66 - backend/app/Console/Kernel.php | 27 - backend/app/Exceptions/Handler.php | 30 - backend/app/Http/Controllers/Controller.php | 12 - .../app/Http/Controllers/UserController.php | 37 - backend/app/Http/Kernel.php | 68 - backend/app/Http/Middleware/Authenticate.php | 17 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 30 - backend/app/Http/Middleware/TrimStrings.php | 19 - backend/app/Http/Middleware/TrustHosts.php | 20 - backend/app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/ValidateSignature.php | 22 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - backend/app/Models/Report.php | 11 - backend/app/Models/Report_User.php | 11 - backend/app/Models/Strike.php | 11 - backend/app/Models/User.php | 31 - backend/app/Providers/AppServiceProvider.php | 24 - backend/app/Providers/AuthServiceProvider.php | 26 - .../Providers/BroadcastServiceProvider.php | 19 - .../app/Providers/EventServiceProvider.php | 38 - .../app/Providers/RouteServiceProvider.php | 40 - backend/artisan | 53 - backend/bootstrap/app.php | 55 - backend/bootstrap/cache/.gitignore | 2 - backend/composer.json | 66 - backend/composer.lock | 7960 ----------------- backend/config/app.php | 188 - backend/config/auth.php | 115 - backend/config/broadcasting.php | 71 - backend/config/cache.php | 111 - backend/config/cors.php | 34 - backend/config/database.php | 151 - backend/config/filesystems.php | 76 - backend/config/hashing.php | 52 - backend/config/logging.php | 131 - backend/config/mail.php | 125 - backend/config/queue.php | 109 - backend/config/sanctum.php | 67 - backend/config/services.php | 34 - backend/config/session.php | 201 - backend/config/view.php | 36 - backend/database/.gitignore | 1 - backend/database/factories/UserFactory.php | 38 - .../2014_10_12_000000_create_users_table.php | 32 - ...000_create_password_reset_tokens_table.php | 28 - ..._08_19_000000_create_failed_jobs_table.php | 32 - ...01_create_personal_access_tokens_table.php | 33 - backend/database/seeders/DatabaseSeeder.php | 22 - backend/package.json | 13 - backend/phpunit.xml | 31 - backend/public/.htaccess | 21 - backend/public/favicon.ico | 0 backend/public/index.php | 55 - backend/public/robots.txt | 2 - backend/resources/css/app.css | 0 backend/resources/js/app.js | 1 - backend/resources/js/bootstrap.js | 32 - backend/resources/views/main.blade.php | 140 - backend/routes/api.php | 17 - backend/routes/channels.php | 18 - backend/routes/console.php | 19 - backend/routes/web.php | 24 - backend/storage/app/.gitignore | 3 - backend/storage/app/public/.gitignore | 2 - backend/storage/framework/.gitignore | 9 - backend/storage/framework/cache/.gitignore | 3 - .../storage/framework/cache/data/.gitignore | 2 - backend/storage/framework/sessions/.gitignore | 2 - backend/storage/framework/testing/.gitignore | 2 - backend/storage/framework/views/.gitignore | 2 - backend/storage/logs/.gitignore | 2 - backend/tests/CreatesApplication.php | 21 - backend/tests/Feature/ExampleTest.php | 19 - backend/tests/TestCase.php | 10 - backend/tests/Unit/ExampleTest.php | 16 - backend/vite.config.js | 11 - package-lock.json | 5576 ++++++++++++ package.json | 44 + postcss.config.js | 6 + src/app.css | 28 + src/app.d.ts | 12 + src/app.html | 13 + src/hooks.server.ts | 4 + src/lib/components/Countdown/Countdown.svelte | 61 + src/lib/components/Input/Input.svelte | 72 + src/lib/components/Input/Select.svelte | 37 + src/lib/index.ts | 1 + src/lib/server/database.ts | 37 + src/lib/server/minecraft.test.ts | 27 + src/lib/server/minecraft.ts | 78 + src/lib/stores.ts | 5 + src/routes/+layout.svelte | 20 + src/routes/+page.svelte | 12 + src/routes/+server.ts | 6 + src/routes/register/+layout.svelte | 3 + src/routes/register/+page.svelte | 23 + src/routes/register/+server.ts | 49 + src/routes/register/Register.svelte | 221 + .../register/RegistrationComplete.svelte | 32 + src/routes/rules/+layout.svelte | 3 + src/routes/rules/+page.svelte | 121 + static/favicon.png | Bin 0 -> 3113 bytes static/fonts/MinecraftRegular.otf | Bin 0 -> 11016 bytes static/fonts/Roboto-Regular.ttf | Bin 0 -> 168260 bytes static/img/craftattack-logo.webp | Bin 0 -> 37202 bytes svelte.config.js | 18 + tailwind.config.js | 12 + tsconfig.json | 17 + vite.config.ts | 9 + 124 files changed, 6665 insertions(+), 11046 deletions(-) create mode 100644 .env.example create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 README.md delete mode 100644 backend/.editorconfig delete mode 100644 backend/.env.example delete mode 100644 backend/.gitattributes delete mode 100644 backend/.gitignore delete mode 100644 backend/README.md delete mode 100644 backend/app/Console/Kernel.php delete mode 100644 backend/app/Exceptions/Handler.php delete mode 100644 backend/app/Http/Controllers/Controller.php delete mode 100644 backend/app/Http/Controllers/UserController.php delete mode 100644 backend/app/Http/Kernel.php delete mode 100644 backend/app/Http/Middleware/Authenticate.php delete mode 100644 backend/app/Http/Middleware/EncryptCookies.php delete mode 100644 backend/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 backend/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 backend/app/Http/Middleware/TrimStrings.php delete mode 100644 backend/app/Http/Middleware/TrustHosts.php delete mode 100644 backend/app/Http/Middleware/TrustProxies.php delete mode 100644 backend/app/Http/Middleware/ValidateSignature.php delete mode 100644 backend/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 backend/app/Models/Report.php delete mode 100644 backend/app/Models/Report_User.php delete mode 100644 backend/app/Models/Strike.php delete mode 100644 backend/app/Models/User.php delete mode 100644 backend/app/Providers/AppServiceProvider.php delete mode 100644 backend/app/Providers/AuthServiceProvider.php delete mode 100644 backend/app/Providers/BroadcastServiceProvider.php delete mode 100644 backend/app/Providers/EventServiceProvider.php delete mode 100644 backend/app/Providers/RouteServiceProvider.php delete mode 100755 backend/artisan delete mode 100644 backend/bootstrap/app.php delete mode 100644 backend/bootstrap/cache/.gitignore delete mode 100644 backend/composer.json delete mode 100644 backend/composer.lock delete mode 100644 backend/config/app.php delete mode 100644 backend/config/auth.php delete mode 100644 backend/config/broadcasting.php delete mode 100644 backend/config/cache.php delete mode 100644 backend/config/cors.php delete mode 100644 backend/config/database.php delete mode 100644 backend/config/filesystems.php delete mode 100644 backend/config/hashing.php delete mode 100644 backend/config/logging.php delete mode 100644 backend/config/mail.php delete mode 100644 backend/config/queue.php delete mode 100644 backend/config/sanctum.php delete mode 100644 backend/config/services.php delete mode 100644 backend/config/session.php delete mode 100644 backend/config/view.php delete mode 100644 backend/database/.gitignore delete mode 100644 backend/database/factories/UserFactory.php delete mode 100644 backend/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 backend/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php delete mode 100644 backend/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 backend/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 backend/database/seeders/DatabaseSeeder.php delete mode 100644 backend/package.json delete mode 100644 backend/phpunit.xml delete mode 100644 backend/public/.htaccess delete mode 100644 backend/public/favicon.ico delete mode 100644 backend/public/index.php delete mode 100644 backend/public/robots.txt delete mode 100644 backend/resources/css/app.css delete mode 100644 backend/resources/js/app.js delete mode 100644 backend/resources/js/bootstrap.js delete mode 100644 backend/resources/views/main.blade.php delete mode 100644 backend/routes/api.php delete mode 100644 backend/routes/channels.php delete mode 100644 backend/routes/console.php delete mode 100644 backend/routes/web.php delete mode 100644 backend/storage/app/.gitignore delete mode 100644 backend/storage/app/public/.gitignore delete mode 100644 backend/storage/framework/.gitignore delete mode 100644 backend/storage/framework/cache/.gitignore delete mode 100644 backend/storage/framework/cache/data/.gitignore delete mode 100644 backend/storage/framework/sessions/.gitignore delete mode 100644 backend/storage/framework/testing/.gitignore delete mode 100644 backend/storage/framework/views/.gitignore delete mode 100644 backend/storage/logs/.gitignore delete mode 100644 backend/tests/CreatesApplication.php delete mode 100644 backend/tests/Feature/ExampleTest.php delete mode 100644 backend/tests/TestCase.php delete mode 100644 backend/tests/Unit/ExampleTest.php delete mode 100644 backend/vite.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 src/app.css create mode 100644 src/app.d.ts create mode 100644 src/app.html create mode 100644 src/hooks.server.ts create mode 100644 src/lib/components/Countdown/Countdown.svelte create mode 100644 src/lib/components/Input/Input.svelte create mode 100644 src/lib/components/Input/Select.svelte create mode 100644 src/lib/index.ts create mode 100644 src/lib/server/database.ts create mode 100644 src/lib/server/minecraft.test.ts create mode 100644 src/lib/server/minecraft.ts create mode 100644 src/lib/stores.ts create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+page.svelte create mode 100644 src/routes/+server.ts create mode 100644 src/routes/register/+layout.svelte create mode 100644 src/routes/register/+page.svelte create mode 100644 src/routes/register/+server.ts create mode 100644 src/routes/register/Register.svelte create mode 100644 src/routes/register/RegistrationComplete.svelte create mode 100644 src/routes/rules/+layout.svelte create mode 100644 src/routes/rules/+page.svelte create mode 100644 static/favicon.png create mode 100644 static/fonts/MinecraftRegular.otf create mode 100644 static/fonts/Roboto-Regular.ttf create mode 100644 static/img/craftattack-logo.webp create mode 100644 svelte.config.js create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..660e508 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +DATABASE_URI=sqlite://./database.db +PUBLIC_START_DATE=2023-12-26T00:00:00 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..ebc1958 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,30 @@ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/.gitignore b/.gitignore index a09c56d..bb6a35d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,12 @@ -/.idea +.idea +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* +database.db diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..0c05da4 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +engine-strict=true +resolution-mode=highest diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..a77fdde --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "pluginSearchDirs": ["."], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..895bab8 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +## Quickstart + +To run the website locally simply execute the following commands: + +```shell +# install all dependencies +$ npm i +# run in development mode. this will start the dev server at localhost:5173 +$ npm run dev +``` + +## Building + +To build the website for production, use the following command: + +```shell +# install all dependencies +$ npm i +# build for production. will be available in the build/ directory +$ npm run build +# run the production build. +# this will start the server at 0.0.0.0:3000, you can customize this and various other behaviors by defining environment variables. see the configuration section below for more information +$ node build/index.js +# same as 'node build/index.js' above but this loads variables from a .env file into the environment +$ node -r dotenv/config build/index.js +``` + +## Configuration + +Configurations can be done with env variables + +| Name | Description | +| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| `HOST` | Host the server should listen on | +| `PORT` | Port the server should listen on | +| `DATABASE_URI` | URI to the database as a connection string. Supported databases are [sqlite](https://www.sqlite.org/index.html) and [mariadb](https://mariadb.org/) | +| `PUBLIC_START_DATE` | The start date when the event starts | diff --git a/backend/.editorconfig b/backend/.editorconfig deleted file mode 100644 index 8f0de65..0000000 --- a/backend/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 4 -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/backend/.env.example b/backend/.env.example deleted file mode 100644 index ea0665b..0000000 --- a/backend/.env.example +++ /dev/null @@ -1,59 +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=mailpit -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS="hello@example.com" -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_USE_PATH_STYLE_ENDPOINT=false - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_HOST= -PUSHER_PORT=443 -PUSHER_SCHEME=https -PUSHER_APP_CLUSTER=mt1 - -VITE_APP_NAME="${APP_NAME}" -VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -VITE_PUSHER_HOST="${PUSHER_HOST}" -VITE_PUSHER_PORT="${PUSHER_PORT}" -VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" -VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/backend/.gitattributes b/backend/.gitattributes deleted file mode 100644 index fcb21d3..0000000 --- a/backend/.gitattributes +++ /dev/null @@ -1,11 +0,0 @@ -* text=auto eol=lf - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore -.styleci.yml export-ignore diff --git a/backend/.gitignore b/backend/.gitignore deleted file mode 100644 index 7fe978f..0000000 --- a/backend/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -/.phpunit.cache -/node_modules -/public/build -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.env.production -.phpunit.result.cache -Homestead.json -Homestead.yaml -auth.json -npm-debug.log -yarn-error.log -/.fleet -/.idea -/.vscode diff --git a/backend/README.md b/backend/README.md deleted file mode 100644 index 3ed385a..0000000 --- a/backend/README.md +++ /dev/null @@ -1,66 +0,0 @@ -<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p> - -<p align="center"> -<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a> -<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a> -<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a> -<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a> -</p> - -## 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. - -You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch. - -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/backend/app/Console/Kernel.php b/backend/app/Console/Kernel.php deleted file mode 100644 index e6b9960..0000000 --- a/backend/app/Console/Kernel.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - -namespace App\Console; - -use Illuminate\Console\Scheduling\Schedule; -use Illuminate\Foundation\Console\Kernel as ConsoleKernel; - -class Kernel extends ConsoleKernel -{ - /** - * Define the application's command schedule. - */ - protected function schedule(Schedule $schedule): void - { - // $schedule->command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - */ - protected function commands(): void - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/backend/app/Exceptions/Handler.php b/backend/app/Exceptions/Handler.php deleted file mode 100644 index 56af264..0000000 --- a/backend/app/Exceptions/Handler.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace App\Exceptions; - -use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; -use Throwable; - -class Handler extends ExceptionHandler -{ - /** - * The list of the inputs that are never flashed to the session on validation exceptions. - * - * @var array<int, string> - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - */ - public function register(): void - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/backend/app/Http/Controllers/Controller.php b/backend/app/Http/Controllers/Controller.php deleted file mode 100644 index 77ec359..0000000 --- a/backend/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -namespace App\Http\Controllers; - -use Illuminate\Foundation\Auth\Access\AuthorizesRequests; -use Illuminate\Foundation\Validation\ValidatesRequests; -use Illuminate\Routing\Controller as BaseController; - -class Controller extends BaseController -{ - use AuthorizesRequests, ValidatesRequests; -} diff --git a/backend/app/Http/Controllers/UserController.php b/backend/app/Http/Controllers/UserController.php deleted file mode 100644 index fe24621..0000000 --- a/backend/app/Http/Controllers/UserController.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -namespace App\Http\Controllers; - -use App\Models\User; -use Exception; -use Illuminate\Http\Request; -use Illuminate\Http\Response; -use Ramsey\Uuid\Uuid; -use Throwable; - -class UserController extends Controller -{ - public function create(Request $request): Response - { - $user = new User(); - $user->fill([ - 'firstname' => $request->get('firstname'), - 'lastname' => $request->get('lastname'), - 'birthday' => $request->get('birthday'), - 'telephone' => $request->get('telephone'), - 'username' => $request->get('username'), - 'playertype' => $request->get('playertype'), - 'password' => $request->get('password'), - ]); - - $user->uuid = Uuid::uuid4(); - - try { - $user->saveOrFail(); - } catch (Throwable $e) { - return response(["error" => $e->getMessage()], 500); - } - - return response($user); - } -} diff --git a/backend/app/Http/Kernel.php b/backend/app/Http/Kernel.php deleted file mode 100644 index 494c050..0000000 --- a/backend/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -namespace App\Http; - -use Illuminate\Foundation\Http\Kernel as HttpKernel; - -class Kernel extends HttpKernel -{ - /** - * The application's global HTTP middleware stack. - * - * These middleware are run during every request to your application. - * - * @var array<int, class-string|string> - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Illuminate\Http\Middleware\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array<string, array<int, class-string|string>> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's middleware aliases. - * - * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. - * - * @var array<string, class-string|string> - */ - protected $middlewareAliases = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, - 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, - 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, - 'can' => \Illuminate\Auth\Middleware\Authorize::class, - 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, - 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, - 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, - 'signed' => \App\Http\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/backend/app/Http/Middleware/Authenticate.php b/backend/app/Http/Middleware/Authenticate.php deleted file mode 100644 index d4ef644..0000000 --- a/backend/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -namespace App\Http\Middleware; - -use Illuminate\Auth\Middleware\Authenticate as Middleware; -use Illuminate\Http\Request; - -class Authenticate extends Middleware -{ - /** - * Get the path the user should be redirected to when they are not authenticated. - */ - protected function redirectTo(Request $request): ?string - { - return $request->expectsJson() ? null : route('login'); - } -} diff --git a/backend/app/Http/Middleware/EncryptCookies.php b/backend/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/backend/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -namespace App\Http\Middleware; - -use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; - -class EncryptCookies extends Middleware -{ - /** - * The names of the cookies that should not be encrypted. - * - * @var array<int, string> - */ - protected $except = [ - // - ]; -} diff --git a/backend/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/backend/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/backend/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -namespace App\Http\Middleware; - -use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware; - -class PreventRequestsDuringMaintenance extends Middleware -{ - /** - * The URIs that should be reachable while maintenance mode is enabled. - * - * @var array<int, string> - */ - protected $except = [ - // - ]; -} diff --git a/backend/app/Http/Middleware/RedirectIfAuthenticated.php b/backend/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index afc78c4..0000000 --- a/backend/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace App\Http\Middleware; - -use App\Providers\RouteServiceProvider; -use Closure; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; -use Symfony\Component\HttpFoundation\Response; - -class RedirectIfAuthenticated -{ - /** - * Handle an incoming request. - * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next - */ - public function handle(Request $request, Closure $next, string ...$guards): Response - { - $guards = empty($guards) ? [null] : $guards; - - foreach ($guards as $guard) { - if (Auth::guard($guard)->check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/backend/app/Http/Middleware/TrimStrings.php b/backend/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/backend/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -namespace App\Http\Middleware; - -use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; - -class TrimStrings extends Middleware -{ - /** - * The names of the attributes that should not be trimmed. - * - * @var array<int, string> - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/backend/app/Http/Middleware/TrustHosts.php b/backend/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index c9c58bd..0000000 --- a/backend/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace App\Http\Middleware; - -use Illuminate\Http\Middleware\TrustHosts as Middleware; - -class TrustHosts extends Middleware -{ - /** - * Get the host patterns that should be trusted. - * - * @return array<int, string|null> - */ - public function hosts(): array - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/backend/app/Http/Middleware/TrustProxies.php b/backend/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/backend/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -namespace App\Http\Middleware; - -use Illuminate\Http\Middleware\TrustProxies as Middleware; -use Illuminate\Http\Request; - -class TrustProxies extends Middleware -{ - /** - * The trusted proxies for this application. - * - * @var array<int, string>|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/backend/app/Http/Middleware/ValidateSignature.php b/backend/app/Http/Middleware/ValidateSignature.php deleted file mode 100644 index 093bf64..0000000 --- a/backend/app/Http/Middleware/ValidateSignature.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -namespace App\Http\Middleware; - -use Illuminate\Routing\Middleware\ValidateSignature as Middleware; - -class ValidateSignature extends Middleware -{ - /** - * The names of the query string parameters that should be ignored. - * - * @var array<int, string> - */ - protected $except = [ - // 'fbclid', - // 'utm_campaign', - // 'utm_content', - // 'utm_medium', - // 'utm_source', - // 'utm_term', - ]; -} diff --git a/backend/app/Http/Middleware/VerifyCsrfToken.php b/backend/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/backend/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -namespace App\Http\Middleware; - -use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; - -class VerifyCsrfToken extends Middleware -{ - /** - * The URIs that should be excluded from CSRF verification. - * - * @var array<int, string> - */ - protected $except = [ - // - ]; -} diff --git a/backend/app/Models/Report.php b/backend/app/Models/Report.php deleted file mode 100644 index 7b8e00e..0000000 --- a/backend/app/Models/Report.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -namespace App\Models; - -use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Database\Eloquent\Model; - -class Report extends Model -{ - use HasFactory; -} diff --git a/backend/app/Models/Report_User.php b/backend/app/Models/Report_User.php deleted file mode 100644 index 87567c4..0000000 --- a/backend/app/Models/Report_User.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -namespace App\Models; - -use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Database\Eloquent\Model; - -class Report_User extends Model -{ - use HasFactory; -} diff --git a/backend/app/Models/Strike.php b/backend/app/Models/Strike.php deleted file mode 100644 index ebb76b0..0000000 --- a/backend/app/Models/Strike.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -namespace App\Models; - -use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Database\Eloquent\Model; - -class Strike extends Model -{ - use HasFactory; -} diff --git a/backend/app/Models/User.php b/backend/app/Models/User.php deleted file mode 100644 index 4b95f1d..0000000 --- a/backend/app/Models/User.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -namespace App\Models; - -use Faker\Core\Uuid; -use Illuminate\Database\Eloquent\Concerns\HasUuids; -use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Database\Eloquent\Model; -use Illuminate\Support\Facades\Date; - -class User extends Model -{ - use HasFactory; - use HasUuids; - - /** - * @var mixed|\Ramsey\Uuid\UuidInterface - */ - protected $table = 'user'; - - protected $fillable = [ - 'firstname', - 'lastname', - 'birthday', - 'telephone', - 'username', - 'playertype', - 'password', - ]; - -} diff --git a/backend/app/Providers/AppServiceProvider.php b/backend/app/Providers/AppServiceProvider.php deleted file mode 100644 index 452e6b6..0000000 --- a/backend/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -namespace App\Providers; - -use Illuminate\Support\ServiceProvider; - -class AppServiceProvider extends ServiceProvider -{ - /** - * Register any application services. - */ - public function register(): void - { - // - } - - /** - * Bootstrap any application services. - */ - public function boot(): void - { - // - } -} diff --git a/backend/app/Providers/AuthServiceProvider.php b/backend/app/Providers/AuthServiceProvider.php deleted file mode 100644 index 54756cd..0000000 --- a/backend/app/Providers/AuthServiceProvider.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -namespace App\Providers; - -// use Illuminate\Support\Facades\Gate; -use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; - -class AuthServiceProvider extends ServiceProvider -{ - /** - * The model to policy mappings for the application. - * - * @var array<class-string, class-string> - */ - protected $policies = [ - // - ]; - - /** - * Register any authentication / authorization services. - */ - public function boot(): void - { - // - } -} diff --git a/backend/app/Providers/BroadcastServiceProvider.php b/backend/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 2be04f5..0000000 --- a/backend/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -namespace App\Providers; - -use Illuminate\Support\Facades\Broadcast; -use Illuminate\Support\ServiceProvider; - -class BroadcastServiceProvider extends ServiceProvider -{ - /** - * Bootstrap any application services. - */ - public function boot(): void - { - Broadcast::routes(); - - require base_path('routes/channels.php'); - } -} diff --git a/backend/app/Providers/EventServiceProvider.php b/backend/app/Providers/EventServiceProvider.php deleted file mode 100644 index 2d65aac..0000000 --- a/backend/app/Providers/EventServiceProvider.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -namespace App\Providers; - -use Illuminate\Auth\Events\Registered; -use Illuminate\Auth\Listeners\SendEmailVerificationNotification; -use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; -use Illuminate\Support\Facades\Event; - -class EventServiceProvider extends ServiceProvider -{ - /** - * The event to listener mappings for the application. - * - * @var array<class-string, array<int, class-string>> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - */ - public function boot(): void - { - // - } - - /** - * Determine if events and listeners should be automatically discovered. - */ - public function shouldDiscoverEvents(): bool - { - return false; - } -} diff --git a/backend/app/Providers/RouteServiceProvider.php b/backend/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 1cf5f15..0000000 --- a/backend/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -namespace App\Providers; - -use Illuminate\Cache\RateLimiting\Limit; -use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\RateLimiter; -use Illuminate\Support\Facades\Route; - -class RouteServiceProvider extends ServiceProvider -{ - /** - * The path to your application's "home" route. - * - * Typically, users are redirected here after authentication. - * - * @var string - */ - public const HOME = '/home'; - - /** - * Define your route model bindings, pattern filters, and other route configuration. - */ - public function boot(): void - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - - $this->routes(function () { - Route::middleware('api') - ->prefix('api') - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->group(base_path('routes/web.php')); - }); - } -} diff --git a/backend/artisan b/backend/artisan deleted file mode 100755 index 67a3329..0000000 --- a/backend/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -<?php - -define('LARAVEL_START', microtime(true)); - -/* -|-------------------------------------------------------------------------- -| Register The Auto Loader -|-------------------------------------------------------------------------- -| -| Composer provides a convenient, automatically generated class loader -| for our application. We just need to utilize it! We'll require it -| into the script here so that we do not have to worry about the -| loading of any of our classes manually. It's great to relax. -| -*/ - -require __DIR__.'/vendor/autoload.php'; - -$app = require_once __DIR__.'/bootstrap/app.php'; - -/* -|-------------------------------------------------------------------------- -| Run The Artisan Application -|-------------------------------------------------------------------------- -| -| When we run the console application, the current CLI command will be -| executed in this console and the response sent back to a terminal -| or another output device for the developers. Here goes nothing! -| -*/ - -$kernel = $app->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/backend/bootstrap/app.php b/backend/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/backend/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/* -|-------------------------------------------------------------------------- -| Create The Application -|-------------------------------------------------------------------------- -| -| The first thing we will do is create a new Laravel application instance -| which serves as the "glue" for all the components of Laravel, and is -| the IoC container for the system binding all of the various parts. -| -*/ - -$app = new Illuminate\Foundation\Application( - $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) -); - -/* -|-------------------------------------------------------------------------- -| Bind Important Interfaces -|-------------------------------------------------------------------------- -| -| Next, we need to bind some important interfaces into the container so -| we will be able to resolve them when needed. The kernels serve the -| incoming requests to this application from both the web and CLI. -| -*/ - -$app->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/backend/bootstrap/cache/.gitignore b/backend/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/backend/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/backend/composer.json b/backend/composer.json deleted file mode 100644 index e1fb449..0000000 --- a/backend/composer.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The skeleton application for the Laravel framework.", - "keywords": ["laravel", "framework"], - "license": "MIT", - "require": { - "php": "^8.1", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^10.10", - "laravel/sanctum": "^3.2", - "laravel/tinker": "^2.8" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/pint": "^1.0", - "laravel/sail": "^1.18", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^7.0", - "phpunit/phpunit": "^10.1", - "spatie/laravel-ignition": "^2.0" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true, - "allow-plugins": { - "pestphp/pest-plugin": true, - "php-http/discovery": true - } - }, - "minimum-stability": "stable", - "prefer-stable": true -} diff --git a/backend/composer.lock b/backend/composer.lock deleted file mode 100644 index 6ab6c76..0000000 --- a/backend/composer.lock +++ /dev/null @@ -1,7960 +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": "aa322c53454393ed775cfe4807d54a50", - "packages": [ - { - "name": "brick/math", - "version": "0.11.0", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "5.0.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.11.0" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - } - ], - "time": "2023-01-15T23:15:59+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", - "scrutinizer/ocular": "1.6.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Dflydev\\DotAccessData\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], - "support": { - "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" - }, - "time": "2022-10-27T11:44:00+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.8", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", - "type": "tidelift" - } - ], - "time": "2023-06-16T13:40:37+00:00" - }, - { - "name": "doctrine/lexer", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-12-15T16:57:16+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.2", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", - "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.2" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-09-10T18:51:20+00:00" - }, - { - "name": "egulias/email-validator", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2.0 || ^3.0", - "php": ">=8.1", - "symfony/polyfill-intl-idn": "^1.26" - }, - "require-dev": { - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^4.30" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2023-01-14T14:17:03+00:00" - }, - { - "name": "fruitcake/php-cors", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", - "shasum": "" - }, - "require": { - "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barryvdh", - "email": "barryvdh@gmail.com" - } - ], - "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", - "homepage": "https://github.com/fruitcake/php-cors", - "keywords": [ - "cors", - "laravel", - "symfony" - ], - "support": { - "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-02-20T15:07:15+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.1" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" - }, - "type": "library", - "autoload": { - "psr-4": { - "GrahamCampbell\\ResultType\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "An Implementation Of The Result Type", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Result Type", - "Result-Type", - "result" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2023-02-25T20:23:15+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.7.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2023-05-21T14:04:53+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/3a494dc7dc1d7d12e511890177ae2d0e6c107da6", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2023-05-21T13:50:22+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.5.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.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": "2023-04-17T16:11:26+00:00" - }, - { - "name": "guzzlehttp/uri-template", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/uri-template.git", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.19 || ^9.5.8", - "uri-template/tests": "1.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "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.1" - }, - "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": "2021-10-07T12:57:01+00:00" - }, - { - "name": "laravel/framework", - "version": "v10.16.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "5c93d2795c393b462481179ce42dedfb30cc19b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/5c93d2795c393b462481179ce42dedfb30cc19b5", - "reference": "5c93d2795c393b462481179ce42dedfb30cc19b5", - "shasum": "" - }, - "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", - "composer-runtime-api": "^2.2", - "doctrine/inflector": "^2.0.5", - "dragonmantank/cron-expression": "^3.3.2", - "egulias/email-validator": "^3.2.1|^4.0", - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-session": "*", - "ext-tokenizer": "*", - "fruitcake/php-cors": "^1.2", - "guzzlehttp/uri-template": "^1.0", - "laravel/serializable-closure": "^1.3", - "league/commonmark": "^2.2.1", - "league/flysystem": "^3.8.0", - "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.62.1", - "nunomaduro/termwind": "^1.13", - "php": "^8.1", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.7", - "symfony/console": "^6.2", - "symfony/error-handler": "^6.2", - "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.2", - "symfony/http-kernel": "^6.2", - "symfony/mailer": "^6.2", - "symfony/mime": "^6.2", - "symfony/process": "^6.2", - "symfony/routing": "^6.2", - "symfony/uid": "^6.2", - "symfony/var-dumper": "^6.2", - "tijsverkoyen/css-to-inline-styles": "^2.2.5", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/process": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/testing": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version" - }, - "require-dev": { - "ably/ably-php": "^1.0", - "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^3.5.1", - "ext-gmp": "*", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-path-prefixing": "^3.3", - "league/flysystem-read-only": "^3.3", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.4", - "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", - "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^10.0.7", - "predis/predis": "^2.0.2", - "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4" - }, - "suggest": { - "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", - "ext-apcu": "Required to use the APC cache driver.", - "ext-fileinfo": "Required to use the Filesystem class.", - "ext-ftp": "Required to use the Flysystem FTP driver.", - "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", - "ext-memcached": "Required to use the memcache cache driver.", - "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", - "ext-pdo": "Required to use all database features.", - "ext-posix": "Required to use all features of the queue worker.", - "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", - "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", - "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", - "laravel/tinker": "Required to use the tinker console command (^2.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", - "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", - "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", - "league/flysystem-read-only": "Required to use read-only disks (^3.3)", - "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.5.1).", - "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", - "predis/predis": "Required to use the predis connector (^2.0.2).", - "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2023-07-26T03:30:46+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v3.2.5", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "8ebda85d59d3c414863a7f4d816ef8302faad876" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/8ebda85d59d3c414863a7f4d816ef8302faad876", - "reference": "8ebda85d59d3c414863a7f4d816ef8302faad876", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/console": "^9.21|^10.0", - "illuminate/contracts": "^9.21|^10.0", - "illuminate/database": "^9.21|^10.0", - "illuminate/support": "^9.21|^10.0", - "php": "^8.0.2" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^7.0|^8.0", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Sanctum\\SanctumServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Sanctum\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", - "keywords": [ - "auth", - "laravel", - "sanctum" - ], - "support": { - "issues": "https://github.com/laravel/sanctum/issues", - "source": "https://github.com/laravel/sanctum" - }, - "time": "2023-05-01T19:39:51+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "nesbot/carbon": "^2.61", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laravel\\SerializableClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Nuno Maduro", - "email": "nuno@laravel.com" - } - ], - "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", - "keywords": [ - "closure", - "laravel", - "serializable" - ], - "support": { - "issues": "https://github.com/laravel/serializable-closure/issues", - "source": "https://github.com/laravel/serializable-closure" - }, - "time": "2023-07-14T13:56:28+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.8.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", - "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", - "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4|^0.11.1", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0" - }, - "require-dev": { - "mockery/mockery": "~1.3.3|^1.4.2", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Tinker\\TinkerServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Tinker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Powerful REPL for the Laravel framework.", - "keywords": [ - "REPL", - "Tinker", - "laravel", - "psysh" - ], - "support": { - "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.8.1" - }, - "time": "2023-02-15T16:40:09+00:00" - }, - { - "name": "league/commonmark", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d44a24690f16b8c1808bf13b1bd54ae4c63ea048", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "league/config": "^1.1.1", - "php": "^7.4 || ^8.0", - "psr/event-dispatcher": "^1.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "embed/embed": "^4.4", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4 || ^2.0", - "nyholm/psr7": "^1.5", - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - } - }, - "autoload": { - "psr-4": { - "League\\CommonMark\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", - "homepage": "https://commonmark.thephpleague.com", - "keywords": [ - "commonmark", - "flavored", - "gfm", - "github", - "github-flavored", - "markdown", - "md", - "parser" - ], - "support": { - "docs": "https://commonmark.thephpleague.com/", - "forum": "https://github.com/thephpleague/commonmark/discussions", - "issues": "https://github.com/thephpleague/commonmark/issues", - "rss": "https://github.com/thephpleague/commonmark/releases.atom", - "source": "https://github.com/thephpleague/commonmark" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/commonmark", - "type": "tidelift" - } - ], - "time": "2023-03-24T15:16:10+00:00" - }, - { - "name": "league/config", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Config\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Define configuration arrays with strict schemas and access values with dot notation", - "homepage": "https://config.thephpleague.com", - "keywords": [ - "array", - "config", - "configuration", - "dot", - "dot-access", - "nested", - "schema" - ], - "support": { - "docs": "https://config.thephpleague.com/", - "issues": "https://github.com/thephpleague/config/issues", - "rss": "https://github.com/thephpleague/config/releases.atom", - "source": "https://github.com/thephpleague/config" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - } - ], - "time": "2022-12-11T20:36:23+00:00" - }, - { - "name": "league/flysystem", - "version": "3.15.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed", - "shasum": "" - }, - "require": { - "league/flysystem-local": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "aws/aws-sdk-php": "3.209.31 || 3.210.0", - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "phpseclib/phpseclib": "3.0.15", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.1", - "aws/aws-sdk-php": "^3.220.0", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "microsoft/azure-storage-blob": "^1.1", - "phpseclib/phpseclib": "^3.0.14", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.3.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "File storage abstraction for PHP", - "keywords": [ - "WebDAV", - "aws", - "cloud", - "file", - "files", - "filesystem", - "filesystems", - "ftp", - "s3", - "sftp", - "storage" - ], - "support": { - "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.15.1" - }, - "funding": [ - { - "url": "https://ecologi.com/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - } - ], - "time": "2023-05-04T09:04:26+00:00" - }, - { - "name": "league/flysystem-local", - "version": "3.15.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/543f64c397fefdf9cfeac443ffb6beff602796b3", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "league/flysystem": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\Flysystem\\Local\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Local filesystem adapter for Flysystem.", - "keywords": [ - "Flysystem", - "file", - "files", - "filesystem", - "local" - ], - "support": { - "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.15.0" - }, - "funding": [ - { - "url": "https://ecologi.com/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - } - ], - "time": "2023-05-02T20:02:14+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "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.11.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-04-17T13:12:02+00:00" - }, - { - "name": "monolog/monolog", - "version": "3.4.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2.0", - "guzzlehttp/guzzle": "^7.4.5", - "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.1", - "predis/predis": "^1.1 || ^2", - "ruflin/elastica": "^7", - "symfony/mailer": "^5.4 || ^6", - "symfony/mime": "^5.4 || ^6" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "ext-openssl": "Required to send log messages using SSL", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.4.0" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2023-06-21T08:46:11+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.68.1", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4f991ed2a403c85efbc4f23eb4030063fdbe01da", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da", - "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.1.4", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" - }, - "bin": [ - "bin/carbon" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" - }, - { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" - } - ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "support": { - "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" - }, - "funding": [ - { - "url": "https://github.com/sponsors/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon#sponsor", - "type": "opencollective" - }, - { - "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", - "type": "tidelift" - } - ], - "time": "2023-06-20T18:29:04+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.3", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.3" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "📐 Nette Schema: validating data structures against a given Schema.", - "homepage": "https://nette.org", - "keywords": [ - "config", - "nette" - ], - "support": { - "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.3" - }, - "time": "2022-10-13T01:24:26+00:00" - }, - { - "name": "nette/utils", - "version": "v4.0.1", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/9124157137da01b1f5a5a22d6486cb975f26db7e", - "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e", - "shasum": "" - }, - "require": { - "php": ">=8.0 <8.4" - }, - "conflict": { - "nette/finder": "<3", - "nette/schema": "<1.2.2" - }, - "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.9" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.1" - }, - "time": "2023-07-30T15:42:21+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.16.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", - "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.16.0" - }, - "time": "2023-06-25T14:52:30+00:00" - }, - { - "name": "nunomaduro/termwind", - "version": "v1.15.1", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/termwind.git", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^8.0", - "symfony/console": "^5.3.0|^6.0.0" - }, - "require-dev": { - "ergebnis/phpstan-rules": "^1.0.", - "illuminate/console": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^1.0.0", - "pestphp/pest": "^1.21.0", - "pestphp/pest-plugin-mock": "^1.0", - "phpstan/phpstan": "^1.4.6", - "phpstan/phpstan-strict-rules": "^1.1.0", - "symfony/var-dumper": "^5.2.7|^6.0.0", - "thecodingmachine/phpstan-strict-rules": "^1.0.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Termwind\\Laravel\\TermwindServiceProvider" - ] - } - }, - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "Termwind\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Its like Tailwind CSS, but for the console.", - "keywords": [ - "cli", - "console", - "css", - "package", - "php", - "style" - ], - "support": { - "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/xiCO2k", - "type": "github" - } - ], - "time": "2023-02-08T01:06:31+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2023-02-25T19:38:58+00:00" - }, - { - "name": "psr/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.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" - }, - "time": "2023-04-10T20:12:12+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" - }, - "time": "2023-04-10T20:10:41+00:00" - }, - { - "name": "psr/http-message", - "version": "2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" - }, - "time": "2023-04-04T09:54:51+00:00" - }, - { - "name": "psr/log", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" - }, - { - "name": "psr/simple-cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" - }, - "time": "2021-10-29T13:26:27+00:00" - }, - { - "name": "psy/psysh", - "version": "v0.11.20", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0fa27040553d1d280a67a4393194df5228afea5b", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" - }, - "conflict": { - "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.20" - }, - "time": "2023-07-31T14:32:22+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "ramsey/collection", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", - "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", - "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "extra": { - "captainhook": { - "force-install": true - }, - "ramsey/conventional-commits": { - "configFile": "conventional-commits.json" - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Collection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], - "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2022-12-31T21:50:55+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.7.4", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", - "shasum": "" - }, - "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", - "ext-json": "*", - "php": "^8.0", - "ramsey/collection": "^1.2 || ^2.0" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "captainhook": { - "force-install": true - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Ramsey\\Uuid\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2023-04-15T23:01:58+00:00" - }, - { - "name": "symfony/console", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-19T20:17:28+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Converts CSS selectors to XPath expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-12T16:00:22+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-23T14:45:45+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "conflict": { - "symfony/deprecation-contracts": "<2.5" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-16T17:05:46+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-06T06:56:43+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-23T14:45:45+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/filesystem": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T08:31:44+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", - "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" - }, - "conflict": { - "symfony/cache": "<6.2" - }, - "require-dev": { - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-23T21:58:39+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d3b567f0addf695e10b0c6d57564a9bea2e058ee", - "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^6.2.7", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.3", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/clock": "^6.2", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.3", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0", - "symfony/property-access": "^5.4.5|^6.0.5", - "symfony/routing": "^5.4|^6.0", - "symfony/serializer": "^6.3", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^6.3", - "symfony/var-exporter": "^6.2", - "twig/twig": "^2.13|^3.0.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a structured process for converting a Request into a Response", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T10:33:00+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^6.2", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/messenger": "^6.2", - "symfony/twig-bridge": "^6.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mailer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Helps sending emails", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/mailer/tree/v6.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-29T12:49:39+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "~6.2.13|^6.3.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T07:08:24+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-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.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", - "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.27-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.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-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.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-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.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-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.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php83", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-uuid", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-uuid": "*" - }, - "suggest": { - "ext-uuid": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/process", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", - "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-12T16:00:22+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12|^2", - "psr/log": "^1|^2|^3", - "symfony/config": "^6.2", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Maps an HTTP request to a set of configuration variables", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T07:08:24+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-23T14:45:45+00:00" - }, - { - "name": "symfony/string", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "53d1a83225002635bca3482fcbf963001313fb68" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", - "reference": "53d1a83225002635bca3482fcbf963001313fb68", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-05T08:41:27+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "nikic/php-parser": "^4.13", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T07:08:24+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-30T17:17:10+00:00" - }, - { - "name": "symfony/uid", - "version": "v6.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/uid.git", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-uuid": "^1.15" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Uid\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to generate and represent UIDs", - "homepage": "https://symfony.com", - "keywords": [ - "UID", - "ulid", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/uid/tree/v6.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-08T07:25:02+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "77fb4f2927f6991a9843633925d111147449ee7a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/77fb4f2927f6991a9843633925d111147449ee7a", - "reference": "77fb4f2927f6991a9843633925d111147449ee7a", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T07:08:24+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.6", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" - }, - "time": "2023-01-03T09:29:04+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.5.0", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, - "branch-alias": { - "dev-master": "5.5-dev" - } - }, - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://github.com/vlucas" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2022-10-16T01:01:54+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "b56450eed252f6801410d810c8e1727224ae0743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", - "reference": "b56450eed252f6801410d810c8e1727224ae0743", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" - }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" - }, - "type": "library", - "autoload": { - "psr-4": { - "voku\\": "src/voku/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" - } - ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", - "keywords": [ - "ascii", - "clean", - "php" - ], - "support": { - "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.0.1" - }, - "funding": [ - { - "url": "https://www.paypal.me/moelleken", - "type": "custom" - }, - { - "url": "https://github.com/voku", - "type": "github" - }, - { - "url": "https://opencollective.com/portable-ascii", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", - "type": "tidelift" - } - ], - "time": "2022-03-08T17:03:00+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - } - ], - "packages-dev": [ - { - "name": "fakerphp/faker", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "conflict": { - "fzaninotto/faker": "*" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" - }, - "time": "2023-06-12T08:44:38+00:00" - }, - { - "name": "filp/whoops", - "version": "2.15.3", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", - "shasum": "" - }, - "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.3" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2023-07-13T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/pint", - "version": "v1.10.5", - "source": { - "type": "git", - "url": "https://github.com/laravel/pint.git", - "reference": "a458fb057bfa2f5a09888a8aa349610be807b0c3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/a458fb057bfa2f5a09888a8aa349610be807b0c3", - "reference": "a458fb057bfa2f5a09888a8aa349610be807b0c3", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "ext-tokenizer": "*", - "ext-xml": "*", - "php": "^8.1.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.21.1", - "illuminate/view": "^10.5.1", - "laravel-zero/framework": "^10.1.1", - "mockery/mockery": "^1.5.1", - "nunomaduro/larastan": "^2.5.1", - "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.4.0" - }, - "bin": [ - "builds/pint" - ], - "type": "project", - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Seeders\\": "database/seeders/", - "Database\\Factories\\": "database/factories/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "An opinionated code formatter for PHP.", - "homepage": "https://laravel.com", - "keywords": [ - "format", - "formatter", - "lint", - "linter", - "php" - ], - "support": { - "issues": "https://github.com/laravel/pint/issues", - "source": "https://github.com/laravel/pint" - }, - "time": "2023-07-14T10:26:01+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "62582606f80466aa81fba40b193b289106902853" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/62582606f80466aa81fba40b193b289106902853", - "reference": "62582606f80466aa81fba40b193b289106902853", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0|^10.0", - "illuminate/contracts": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", - "php": "^8.0", - "symfony/yaml": "^6.0" - }, - "require-dev": { - "orchestra/testbench": "^6.0|^7.0|^8.0", - "phpstan/phpstan": "^1.10" - }, - "bin": [ - "bin/sail" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Sail\\SailServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Sail\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Docker files for running a basic Laravel application.", - "keywords": [ - "docker", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/sail/issues", - "source": "https://github.com/laravel/sail" - }, - "time": "2023-06-28T18:31:28+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.6.4", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "d1413755e26fe56a63455f7753221c86cbb88f66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/d1413755e26fe56a63455f7753221c86cbb88f66", - "reference": "d1413755e26fe56a63455f7753221c86cbb88f66", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": ">=7.4,<8.3" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3", - "psalm/plugin-phpunit": "^0.18.4", - "symplify/easy-coding-standard": "^11.5.0", - "vimeo/psalm": "^5.13.1" - }, - "type": "library", - "autoload": { - "files": [ - "library/helpers.php", - "library/Mockery.php" - ], - "psr-4": { - "Mockery\\": "library/Mockery" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "https://github.com/padraic", - "role": "Author" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "https://davedevelopment.co.uk", - "role": "Developer" - }, - { - "name": "Nathanael Esayeas", - "email": "nathanael.esayeas@protonmail.com", - "homepage": "https://github.com/ghostwriter", - "role": "Lead Developer" - } - ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", - "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" - ], - "support": { - "docs": "https://docs.mockery.io/", - "issues": "https://github.com/mockery/mockery/issues", - "rss": "https://github.com/mockery/mockery/releases.atom", - "security": "https://github.com/mockery/mockery/security/advisories", - "source": "https://github.com/mockery/mockery" - }, - "time": "2023-07-19T15:51:02+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.11.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2023-03-08T13:26:56+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v7.7.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "69a07197d055456d29911116fca3bc2c985f524b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/69a07197d055456d29911116fca3bc2c985f524b", - "reference": "69a07197d055456d29911116fca3bc2c985f524b", - "shasum": "" - }, - "require": { - "filp/whoops": "^2.15.2", - "nunomaduro/termwind": "^1.15.1", - "php": "^8.1.0", - "symfony/console": "^6.3.0" - }, - "conflict": { - "phpunit/phpunit": "<10.1.2" - }, - "require-dev": { - "brianium/paratest": "^7.2.2", - "laravel/framework": "^10.14.1", - "laravel/pint": "^1.10.3", - "laravel/sail": "^1.23.0", - "laravel/sanctum": "^3.2.5", - "laravel/tinker": "^2.8.1", - "nunomaduro/larastan": "^2.6.3", - "orchestra/testbench-core": "^8.5.8", - "pestphp/pest": "^2.8.1", - "phpunit/phpunit": "^10.2.2", - "sebastian/environment": "^6.0.1", - "spatie/laravel-ignition": "^2.2.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "files": [ - "./src/Adapters/Phpunit/Autoload.php" - ], - "psr-4": { - "NunoMaduro\\Collision\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Cli error handling for console/command-line PHP applications.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "error", - "handling", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/collision/issues", - "source": "https://github.com/nunomaduro/collision" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2023-06-29T09:10:16+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "10.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be1fe461fdc917de2a29a452ccf2657d325b443d", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-text-template": "^3.0", - "sebastian/code-unit-reverse-lookup": "^3.0", - "sebastian/complexity": "^3.0", - "sebastian/environment": "^6.0", - "sebastian/lines-of-code": "^2.0", - "sebastian/version": "^4.0", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.1" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-07-26T13:45:28+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "4.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-05-07T09:13:23+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:56:09+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:56:46+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "6.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:57:52+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "10.2.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1c17815c129f133f3019cc18e8d0c8622e6d9bcd", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.2-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.6" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "time": "2023-07-17T12:08:28+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:58:15+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:58:43+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:59:15+00:00" - }, - { - "name": "sebastian/comparator", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "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/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:07:16+00:00" - }, - { - "name": "sebastian/complexity", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.10", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:59:47+00:00" - }, - { - "name": "sebastian/diff", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-05-01T07:48:21+00:00" - }, - { - "name": "sebastian/environment", - "version": "6.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-04-11T05:39:26+00:00" - }, - { - "name": "sebastian/exporter", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.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/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:06:49+00:00" - }, - { - "name": "sebastian/global-state", - "version": "6.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-07-19T07:19:23+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.10", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:08:02+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:08:32+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:06:18+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:05:40+00:00" - }, - { - "name": "sebastian/type", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:10:45+00:00" - }, - { - "name": "sebastian/version", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-07T11:34:05+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.5.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", - "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "spatie/phpunit-snapshot-assertions": "^4.2", - "symfony/var-dumper": "^5.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Backtrace\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van de Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "A better backtrace", - "homepage": "https://github.com/spatie/backtrace", - "keywords": [ - "Backtrace", - "spatie" - ], - "support": { - "source": "https://github.com/spatie/backtrace/tree/1.5.3" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2023-06-28T12:59:17+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5f2c6a7a0d2c1d90c12559dc7828fd942911a544", - "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0|^10.0", - "nesbot/carbon": "^2.62.1", - "php": "^8.0", - "spatie/backtrace": "^1.5.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.3.x-dev" - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Spatie\\FlareClient\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Send PHP errors to Flare", - "homepage": "https://github.com/spatie/flare-client-php", - "keywords": [ - "exception", - "flare", - "reporting", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.4.2" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2023-07-28T08:07:24+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/de24ff1e01814d5043bd6eb4ab36a5a852a04973", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^8.0", - "spatie/backtrace": "^1.5.3", - "spatie/flare-client-php": "^1.4.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "illuminate/cache": "^9.52", - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "psr/simple-cache-implementation": "*", - "symfony/cache": "^6.0", - "symfony/process": "^5.4|^6.0", - "vlucas/phpdotenv": "^5.5" - }, - "suggest": { - "openai-php/client": "Require get solutions from OpenAI", - "simple-cache-implementation": "To cache solutions from OpenAI" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.5.x-dev" - } - }, - "autoload": { - "psr-4": { - "Spatie\\Ignition\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Spatie", - "email": "info@spatie.be", - "role": "Developer" - } - ], - "description": "A beautiful error page for PHP applications.", - "homepage": "https://flareapp.io/ignition", - "keywords": [ - "error", - "flare", - "laravel", - "page" - ], - "support": { - "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", - "forum": "https://twitter.com/flareappio", - "issues": "https://github.com/spatie/ignition/issues", - "source": "https://github.com/spatie/ignition" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2023-06-28T13:24:59+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "dd15fbe82ef5392798941efae93c49395a87d943" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/dd15fbe82ef5392798941efae93c49395a87d943", - "reference": "dd15fbe82ef5392798941efae93c49395a87d943", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^10.0", - "php": "^8.1", - "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.9", - "symfony/console": "^6.2.3", - "symfony/var-dumper": "^6.2.3" - }, - "require-dev": { - "livewire/livewire": "^2.11", - "mockery/mockery": "^1.5.1", - "openai-php/client": "^0.3.4", - "orchestra/testbench": "^8.0", - "pestphp/pest": "^1.22.3", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan-deprecation-rules": "^1.1.1", - "phpstan/phpstan-phpunit": "^1.3.3", - "vlucas/phpdotenv": "^5.5" - }, - "suggest": { - "openai-php/client": "Require get solutions from OpenAI", - "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Spatie\\LaravelIgnition\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Spatie", - "email": "info@spatie.be", - "role": "Developer" - } - ], - "description": "A beautiful error page for Laravel applications.", - "homepage": "https://flareapp.io/ignition", - "keywords": [ - "error", - "flare", - "laravel", - "page" - ], - "support": { - "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", - "forum": "https://twitter.com/flareappio", - "issues": "https://github.com/spatie/laravel-ignition/issues", - "source": "https://github.com/spatie/laravel-ignition" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2023-06-28T13:51:52+00:00" - }, - { - "name": "symfony/yaml", - "version": "v6.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.4" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T07:08:24+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.1" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/backend/config/app.php b/backend/config/app.php deleted file mode 100644 index 4c231b4..0000000 --- a/backend/config/app.php +++ /dev/null @@ -1,188 +0,0 @@ -<?php - -use Illuminate\Support\Facades\Facade; -use Illuminate\Support\ServiceProvider; - -return [ - - /* - |-------------------------------------------------------------------------- - | Application Name - |-------------------------------------------------------------------------- - | - | This value is the name of your application. This value is used when the - | framework needs to place the application's name in a notification or - | any other location as required by the application or its packages. - | - */ - - 'name' => env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL'), - - /* - |-------------------------------------------------------------------------- - | Application Timezone - |-------------------------------------------------------------------------- - | - | Here you may specify the default timezone for your application, which - | will be used by the PHP date and date-time functions. We have gone - | ahead and set this to a sensible default for you out of the box. - | - */ - - 'timezone' => 'UTC', - - /* - |-------------------------------------------------------------------------- - | Application Locale Configuration - |-------------------------------------------------------------------------- - | - | The application locale determines the default locale that will be used - | by the translation service provider. You are free to set this value - | to any of the locales which will be supported by the application. - | - */ - - 'locale' => 'en', - - /* - |-------------------------------------------------------------------------- - | Application Fallback Locale - |-------------------------------------------------------------------------- - | - | The fallback locale determines the locale to use when the current one - | is not available. You may change the value to correspond to any of - | the language folders that are provided through your application. - | - */ - - 'fallback_locale' => 'en', - - /* - |-------------------------------------------------------------------------- - | Faker Locale - |-------------------------------------------------------------------------- - | - | This locale will be used by the Faker PHP library when generating fake - | data for your database seeds. For example, this will be used to get - | localized telephone numbers, street address information and more. - | - */ - - 'faker_locale' => 'en_US', - - /* - |-------------------------------------------------------------------------- - | Encryption Key - |-------------------------------------------------------------------------- - | - | This key is used by the Illuminate encrypter service and should be set - | to a random, 32 character string, otherwise these encrypted strings - | will not be safe. Please do this before deploying an application! - | - */ - - 'key' => env('APP_KEY'), - - 'cipher' => 'AES-256-CBC', - - /* - |-------------------------------------------------------------------------- - | Maintenance Mode Driver - |-------------------------------------------------------------------------- - | - | These configuration options determine the driver used to determine and - | manage Laravel's "maintenance mode" status. The "cache" driver will - | allow maintenance mode to be controlled across multiple machines. - | - | Supported drivers: "file", "cache" - | - */ - - 'maintenance' => [ - 'driver' => 'file', - // 'store' => 'redis', - ], - - /* - |-------------------------------------------------------------------------- - | Autoloaded Service Providers - |-------------------------------------------------------------------------- - | - | The service providers listed here will be automatically loaded on the - | request to your application. Feel free to add your own services to - | this array to grant expanded functionality to your applications. - | - */ - - 'providers' => ServiceProvider::defaultProviders()->merge([ - /* - * Package Service Providers... - */ - - /* - * Application Service Providers... - */ - App\Providers\AppServiceProvider::class, - App\Providers\AuthServiceProvider::class, - // App\Providers\BroadcastServiceProvider::class, - App\Providers\EventServiceProvider::class, - App\Providers\RouteServiceProvider::class, - ])->toArray(), - - /* - |-------------------------------------------------------------------------- - | Class Aliases - |-------------------------------------------------------------------------- - | - | This array of class aliases will be registered when this application - | is started. However, feel free to register as many as you wish as - | the aliases are "lazy" loaded so they don't hinder performance. - | - */ - - 'aliases' => Facade::defaultAliases()->merge([ - // 'Example' => App\Facades\Example::class, - ])->toArray(), - -]; diff --git a/backend/config/auth.php b/backend/config/auth.php deleted file mode 100644 index 9548c15..0000000 --- a/backend/config/auth.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -return [ - - /* - |-------------------------------------------------------------------------- - | Authentication Defaults - |-------------------------------------------------------------------------- - | - | This option controls the default authentication "guard" and password - | reset options for your application. You may change these defaults - | as required, but they're a perfect start for most applications. - | - */ - - 'defaults' => [ - 'guard' => 'web', - 'passwords' => 'users', - ], - - /* - |-------------------------------------------------------------------------- - | Authentication Guards - |-------------------------------------------------------------------------- - | - | Next, you may define every authentication guard for your application. - | Of course, a great default configuration has been defined for you - | here which uses session storage and the Eloquent user provider. - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | Supported: "session" - | - */ - - 'guards' => [ - 'web' => [ - 'driver' => 'session', - 'provider' => 'users', - ], - ], - - /* - |-------------------------------------------------------------------------- - | User Providers - |-------------------------------------------------------------------------- - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | If you have multiple user tables or models you may configure multiple - | sources which represent each model / table. These sources may then - | be assigned to any extra authentication guards you have defined. - | - | Supported: "database", "eloquent" - | - */ - - 'providers' => [ - 'users' => [ - 'driver' => 'eloquent', - 'model' => App\Models\User::class, - ], - - // 'users' => [ - // 'driver' => 'database', - // 'table' => 'users', - // ], - ], - - /* - |-------------------------------------------------------------------------- - | Resetting Passwords - |-------------------------------------------------------------------------- - | - | You may specify multiple password reset configurations if you have more - | than one user table or model in the application and you want to have - | separate password reset settings based on the specific user types. - | - | The expiry time is the number of minutes that each reset token will be - | considered valid. This security feature keeps tokens short-lived so - | they have less time to be guessed. You may change this as needed. - | - | The throttle setting is the number of seconds a user must wait before - | generating more password reset tokens. This prevents the user from - | quickly generating a very large amount of password reset tokens. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_reset_tokens', - 'expire' => 60, - 'throttle' => 60, - ], - ], - - /* - |-------------------------------------------------------------------------- - | Password Confirmation Timeout - |-------------------------------------------------------------------------- - | - | Here you may define the amount of seconds before a password confirmation - | times out and the user is prompted to re-enter their password via the - | confirmation screen. By default, the timeout lasts for three hours. - | - */ - - 'password_timeout' => 10800, - -]; diff --git a/backend/config/broadcasting.php b/backend/config/broadcasting.php deleted file mode 100644 index 2410485..0000000 --- a/backend/config/broadcasting.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -return [ - - /* - |-------------------------------------------------------------------------- - | Default Broadcaster - |-------------------------------------------------------------------------- - | - | This option controls the default broadcaster that will be used by the - | framework when an event needs to be broadcast. You may set this to - | any of the connections defined in the "connections" array below. - | - | Supported: "pusher", "ably", "redis", "log", "null" - | - */ - - 'default' => env('BROADCAST_DRIVER', 'null'), - - /* - |-------------------------------------------------------------------------- - | Broadcast Connections - |-------------------------------------------------------------------------- - | - | Here you may define all of the broadcast connections that will be used - | to broadcast events to other systems or over websockets. Samples of - | each available type of connection are provided inside this array. - | - */ - - 'connections' => [ - - 'pusher' => [ - 'driver' => 'pusher', - 'key' => env('PUSHER_APP_KEY'), - 'secret' => env('PUSHER_APP_SECRET'), - 'app_id' => env('PUSHER_APP_ID'), - 'options' => [ - 'cluster' => env('PUSHER_APP_CLUSTER'), - 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', - 'port' => env('PUSHER_PORT', 443), - 'scheme' => env('PUSHER_SCHEME', 'https'), - 'encrypted' => true, - 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', - ], - 'client_options' => [ - // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html - ], - ], - - 'ably' => [ - 'driver' => 'ably', - 'key' => env('ABLY_KEY'), - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - ], - - 'log' => [ - 'driver' => 'log', - ], - - 'null' => [ - 'driver' => 'null', - ], - - ], - -]; diff --git a/backend/config/cache.php b/backend/config/cache.php deleted file mode 100644 index d4171e2..0000000 --- a/backend/config/cache.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php - -use Illuminate\Support\Str; - -return [ - - /* - |-------------------------------------------------------------------------- - | Default Cache Store - |-------------------------------------------------------------------------- - | - | This option controls the default cache connection that gets used while - | using this caching library. This connection is used when another is - | not explicitly specified when executing a given caching function. - | - */ - - 'default' => env('CACHE_DRIVER', 'file'), - - /* - |-------------------------------------------------------------------------- - | Cache Stores - |-------------------------------------------------------------------------- - | - | Here you may define all of the cache "stores" for your application as - | well as their drivers. You may even define multiple stores for the - | same cache driver to group types of items stored in your caches. - | - | Supported drivers: "apc", "array", "database", "file", - | "memcached", "redis", "dynamodb", "octane", "null" - | - */ - - 'stores' => [ - - 'apc' => [ - 'driver' => 'apc', - ], - - 'array' => [ - 'driver' => 'array', - 'serialize' => false, - ], - - 'database' => [ - 'driver' => 'database', - 'table' => 'cache', - 'connection' => null, - 'lock_connection' => null, - ], - - 'file' => [ - 'driver' => 'file', - 'path' => storage_path('framework/cache/data'), - 'lock_path' => storage_path('framework/cache/data'), - ], - - 'memcached' => [ - 'driver' => 'memcached', - 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), - 'sasl' => [ - env('MEMCACHED_USERNAME'), - env('MEMCACHED_PASSWORD'), - ], - 'options' => [ - // Memcached::OPT_CONNECT_TIMEOUT => 2000, - ], - 'servers' => [ - [ - 'host' => env('MEMCACHED_HOST', '127.0.0.1'), - 'port' => env('MEMCACHED_PORT', 11211), - 'weight' => 100, - ], - ], - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'cache', - 'lock_connection' => 'default', - ], - - 'dynamodb' => [ - 'driver' => 'dynamodb', - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), - 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), - 'endpoint' => env('DYNAMODB_ENDPOINT'), - ], - - 'octane' => [ - 'driver' => 'octane', - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Cache Key Prefix - |-------------------------------------------------------------------------- - | - | When utilizing the APC, database, memcached, Redis, or DynamoDB cache - | stores there might be other applications using the same cache. For - | that reason, you may prefix every cache key to avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), - -]; diff --git a/backend/config/cors.php b/backend/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/backend/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -return [ - - /* - |-------------------------------------------------------------------------- - | Cross-Origin Resource Sharing (CORS) Configuration - |-------------------------------------------------------------------------- - | - | Here you may configure your settings for cross-origin resource sharing - | or "CORS". This determines what cross-origin operations may execute - | in web browsers. You are free to adjust these settings as needed. - | - | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS - | - */ - - 'paths' => ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/backend/config/database.php b/backend/config/database.php deleted file mode 100644 index 137ad18..0000000 --- a/backend/config/database.php +++ /dev/null @@ -1,151 +0,0 @@ -<?php - -use Illuminate\Support\Str; - -return [ - - /* - |-------------------------------------------------------------------------- - | Default Database Connection Name - |-------------------------------------------------------------------------- - | - | Here you may specify which of the database connections below you wish - | to use as your default connection for all database work. Of course - | you may use many connections at once using the Database library. - | - */ - - 'default' => env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - // 'encrypt' => env('DB_ENCRYPT', 'yes'), - // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Migration Repository Table - |-------------------------------------------------------------------------- - | - | This table keeps track of all the migrations that have already run for - | your application. Using this information, we can determine which of - | the migrations on disk haven't actually been run in the database. - | - */ - - 'migrations' => 'migrations', - - /* - |-------------------------------------------------------------------------- - | Redis Databases - |-------------------------------------------------------------------------- - | - | Redis is an open source, fast, and advanced key-value store that also - | provides a richer body of commands than a typical key-value system - | such as APC or Memcached. Laravel makes it easy to dig right in. - | - */ - - 'redis' => [ - - 'client' => env('REDIS_CLIENT', 'phpredis'), - - 'options' => [ - 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), - ], - - 'default' => [ - 'url' => env('REDIS_URL'), - 'host' => env('REDIS_HOST', '127.0.0.1'), - 'username' => env('REDIS_USERNAME'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_DB', '0'), - ], - - 'cache' => [ - 'url' => env('REDIS_URL'), - 'host' => env('REDIS_HOST', '127.0.0.1'), - 'username' => env('REDIS_USERNAME'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/backend/config/filesystems.php b/backend/config/filesystems.php deleted file mode 100644 index e9d9dbd..0000000 --- a/backend/config/filesystems.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -return [ - - /* - |-------------------------------------------------------------------------- - | Default Filesystem Disk - |-------------------------------------------------------------------------- - | - | Here you may specify the default filesystem disk that should be used - | by the framework. The "local" disk, as well as a variety of cloud - | based disks are available to your application. Just store away! - | - */ - - 'default' => env('FILESYSTEM_DISK', 'local'), - - /* - |-------------------------------------------------------------------------- - | Filesystem Disks - |-------------------------------------------------------------------------- - | - | Here you may configure as many filesystem "disks" as you wish, and you - | may even configure multiple disks of the same driver. Defaults have - | been set up for each driver as an example of the required values. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - 'throw' => false, - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - 'throw' => false, - ], - - 's3' => [ - 'driver' => 's3', - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'region' => env('AWS_DEFAULT_REGION'), - 'bucket' => env('AWS_BUCKET'), - 'url' => env('AWS_URL'), - 'endpoint' => env('AWS_ENDPOINT'), - 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), - 'throw' => false, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Symbolic Links - |-------------------------------------------------------------------------- - | - | Here you may configure the symbolic links that will be created when the - | `storage:link` Artisan command is executed. The array keys should be - | the locations of the links and the values should be their targets. - | - */ - - 'links' => [ - public_path('storage') => storage_path('app/public'), - ], - -]; diff --git a/backend/config/hashing.php b/backend/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/backend/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -return [ - - /* - |-------------------------------------------------------------------------- - | Default Hash Driver - |-------------------------------------------------------------------------- - | - | This option controls the default hash driver that will be used to hash - | passwords for your application. By default, the bcrypt algorithm is - | used; however, you remain free to modify this option if you wish. - | - | Supported: "bcrypt", "argon", "argon2id" - | - */ - - 'driver' => '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/backend/config/logging.php b/backend/config/logging.php deleted file mode 100644 index c44d276..0000000 --- a/backend/config/logging.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - -use Monolog\Handler\NullHandler; -use Monolog\Handler\StreamHandler; -use Monolog\Handler\SyslogUdpHandler; -use Monolog\Processor\PsrLogMessageProcessor; - -return [ - - /* - |-------------------------------------------------------------------------- - | Default Log Channel - |-------------------------------------------------------------------------- - | - | This option defines the default log channel that gets used when writing - | messages to the logs. The name specified in this option should match - | one of the channels defined in the "channels" configuration array. - | - */ - - 'default' => env('LOG_CHANNEL', 'stack'), - - /* - |-------------------------------------------------------------------------- - | Deprecations Log Channel - |-------------------------------------------------------------------------- - | - | This option controls the log channel that should be used to log warnings - | regarding deprecated PHP and library features. This allows you to get - | your application ready for upcoming major versions of dependencies. - | - */ - - 'deprecations' => [ - 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - 'trace' => false, - ], - - /* - |-------------------------------------------------------------------------- - | Log Channels - |-------------------------------------------------------------------------- - | - | Here you may configure the log channels for your application. Out of - | the box, Laravel uses the Monolog PHP logging library. This gives - | you a variety of powerful log handlers / formatters to utilize. - | - | Available Drivers: "single", "daily", "slack", "syslog", - | "errorlog", "monolog", - | "custom", "stack" - | - */ - - 'channels' => [ - 'stack' => [ - 'driver' => 'stack', - 'channels' => ['single'], - 'ignore_exceptions' => false, - ], - - 'single' => [ - 'driver' => 'single', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'replace_placeholders' => true, - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - 'replace_placeholders' => true, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - 'replace_placeholders' => true, - ], - - 'papertrail' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), - 'handler_with' => [ - 'host' => env('PAPERTRAIL_URL'), - 'port' => env('PAPERTRAIL_PORT'), - 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), - ], - 'processors' => [PsrLogMessageProcessor::class], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - 'processors' => [PsrLogMessageProcessor::class], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - 'facility' => LOG_USER, - 'replace_placeholders' => true, - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - 'replace_placeholders' => true, - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/backend/config/mail.php b/backend/config/mail.php deleted file mode 100644 index e652bd0..0000000 --- a/backend/config/mail.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -return [ - - /* - |-------------------------------------------------------------------------- - | Default Mailer - |-------------------------------------------------------------------------- - | - | This option controls the default mailer that is used to send any email - | messages sent by your application. Alternative mailers may be setup - | and used as needed; however, this mailer will be used by default. - | - */ - - 'default' => env('MAIL_MAILER', 'smtp'), - - /* - |-------------------------------------------------------------------------- - | Mailer Configurations - |-------------------------------------------------------------------------- - | - | Here you may configure all of the mailers used by your application plus - | their respective settings. Several examples have been configured for - | you and you are free to add your own as your application requires. - | - | Laravel supports a variety of mail "transport" drivers to be used while - | sending an e-mail. You will specify which one you are using for your - | mailers below. You are free to add additional mailers as required. - | - | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - 'url' => env('MAIL_URL'), - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), - 'port' => env('MAIL_PORT', 587), - 'encryption' => env('MAIL_ENCRYPTION', 'tls'), - 'username' => env('MAIL_USERNAME'), - 'password' => env('MAIL_PASSWORD'), - 'timeout' => null, - 'local_domain' => env('MAIL_EHLO_DOMAIN'), - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - // 'client' => [ - // 'timeout' => 5, - // ], - ], - - 'postmark' => [ - 'transport' => 'postmark', - // 'client' => [ - // 'timeout' => 5, - // ], - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), - ], - - 'log' => [ - 'transport' => 'log', - 'channel' => env('MAIL_LOG_CHANNEL'), - ], - - 'array' => [ - 'transport' => 'array', - ], - - 'failover' => [ - 'transport' => 'failover', - 'mailers' => [ - 'smtp', - 'log', - ], - ], - ], - - /* - |-------------------------------------------------------------------------- - | Global "From" Address - |-------------------------------------------------------------------------- - | - | You may wish for all e-mails sent by your application to be sent from - | the same address. Here, you may specify a name and address that is - | used globally for all e-mails that are sent by your application. - | - */ - - 'from' => [ - 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), - 'name' => env('MAIL_FROM_NAME', 'Example'), - ], - - /* - |-------------------------------------------------------------------------- - | Markdown Mail Settings - |-------------------------------------------------------------------------- - | - | If you are using Markdown based email rendering, you may configure your - | theme and component paths here, allowing you to customize the design - | of the emails. Or, you may simply stick with the Laravel defaults! - | - */ - - 'markdown' => [ - 'theme' => 'default', - - 'paths' => [ - resource_path('views/vendor/mail'), - ], - ], - -]; diff --git a/backend/config/queue.php b/backend/config/queue.php deleted file mode 100644 index 01c6b05..0000000 --- a/backend/config/queue.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -return [ - - /* - |-------------------------------------------------------------------------- - | Default Queue Connection Name - |-------------------------------------------------------------------------- - | - | Laravel's queue API supports an assortment of back-ends via a single - | API, giving you convenient access to each back-end using the same - | syntax for every one. Here you may define a default connection. - | - */ - - 'default' => env('QUEUE_CONNECTION', 'sync'), - - /* - |-------------------------------------------------------------------------- - | Queue Connections - |-------------------------------------------------------------------------- - | - | Here you may configure the connection information for each server that - | is used by your application. A default configuration has been added - | for each back-end shipped with Laravel. You are free to add more. - | - | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" - | - */ - - 'connections' => [ - - 'sync' => [ - 'driver' => 'sync', - ], - - 'database' => [ - 'driver' => 'database', - 'table' => 'jobs', - 'queue' => 'default', - 'retry_after' => 90, - 'after_commit' => false, - ], - - 'beanstalkd' => [ - 'driver' => 'beanstalkd', - 'host' => 'localhost', - 'queue' => 'default', - 'retry_after' => 90, - 'block_for' => 0, - 'after_commit' => false, - ], - - 'sqs' => [ - 'driver' => 'sqs', - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), - 'queue' => env('SQS_QUEUE', 'default'), - 'suffix' => env('SQS_SUFFIX'), - 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), - 'after_commit' => false, - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - 'queue' => env('REDIS_QUEUE', 'default'), - 'retry_after' => 90, - 'block_for' => null, - 'after_commit' => false, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Job Batching - |-------------------------------------------------------------------------- - | - | The following options configure the database and table that store job - | batching information. These options can be updated to any database - | connection and table which has been defined by your application. - | - */ - - 'batching' => [ - 'database' => env('DB_CONNECTION', 'mysql'), - 'table' => 'job_batches', - ], - - /* - |-------------------------------------------------------------------------- - | Failed Queue Jobs - |-------------------------------------------------------------------------- - | - | These options configure the behavior of failed queue job logging so you - | can control which database and table are used to store the jobs that - | have failed. You may change them to any database / table you wish. - | - */ - - 'failed' => [ - 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), - 'database' => env('DB_CONNECTION', 'mysql'), - 'table' => 'failed_jobs', - ], - -]; diff --git a/backend/config/sanctum.php b/backend/config/sanctum.php deleted file mode 100644 index 529cfdc..0000000 --- a/backend/config/sanctum.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -use Laravel\Sanctum\Sanctum; - -return [ - - /* - |-------------------------------------------------------------------------- - | Stateful Domains - |-------------------------------------------------------------------------- - | - | Requests from the following domains / hosts will receive stateful API - | authentication cookies. Typically, these should include your local - | and production domains which access your API via a frontend SPA. - | - */ - - 'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - Sanctum::currentApplicationUrlWithPort() - ))), - - /* - |-------------------------------------------------------------------------- - | Sanctum Guards - |-------------------------------------------------------------------------- - | - | This array contains the authentication guards that will be checked when - | Sanctum is trying to authenticate a request. If none of these guards - | are able to authenticate the request, Sanctum will use the bearer - | token that's present on an incoming request for authentication. - | - */ - - 'guard' => ['web'], - - /* - |-------------------------------------------------------------------------- - | Expiration Minutes - |-------------------------------------------------------------------------- - | - | This value controls the number of minutes until an issued token will be - | considered expired. If this value is null, personal access tokens do - | not expire. This won't tweak the lifetime of first-party sessions. - | - */ - - 'expiration' => null, - - /* - |-------------------------------------------------------------------------- - | Sanctum Middleware - |-------------------------------------------------------------------------- - | - | When authenticating your first-party SPA with Sanctum you may need to - | customize some of the middleware Sanctum uses while processing the - | request. You may change the middleware listed below as required. - | - */ - - 'middleware' => [ - 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, - 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, - ], - -]; diff --git a/backend/config/services.php b/backend/config/services.php deleted file mode 100644 index 0ace530..0000000 --- a/backend/config/services.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -return [ - - /* - |-------------------------------------------------------------------------- - | Third Party Services - |-------------------------------------------------------------------------- - | - | This file is for storing the credentials for third party services such - | as Mailgun, Postmark, AWS and more. This file provides the de facto - | location for this type of information, allowing packages to have - | a conventional file to locate the various service credentials. - | - */ - - 'mailgun' => [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - 'scheme' => 'https', - ], - - 'postmark' => [ - 'token' => env('POSTMARK_TOKEN'), - ], - - 'ses' => [ - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), - ], - -]; diff --git a/backend/config/session.php b/backend/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/backend/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ -<?php - -use Illuminate\Support\Str; - -return [ - - /* - |-------------------------------------------------------------------------- - | Default Session Driver - |-------------------------------------------------------------------------- - | - | This option controls the default session "driver" that will be used on - | requests. By default, we will use the lightweight native driver but - | you may specify any of the other wonderful drivers provided here. - | - | Supported: "file", "cookie", "database", "apc", - | "memcached", "redis", "dynamodb", "array" - | - */ - - 'driver' => 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/backend/config/view.php b/backend/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/backend/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -return [ - - /* - |-------------------------------------------------------------------------- - | View Storage Paths - |-------------------------------------------------------------------------- - | - | Most templating systems load templates from disk. Here you may specify - | an array of paths that should be checked for your views. Of course - | the usual Laravel view path has already been registered for you. - | - */ - - 'paths' => [ - 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/backend/database/.gitignore b/backend/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/backend/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/backend/database/factories/UserFactory.php b/backend/database/factories/UserFactory.php deleted file mode 100644 index a6ecc0a..0000000 --- a/backend/database/factories/UserFactory.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -namespace Database\Factories; - -use Illuminate\Database\Eloquent\Factories\Factory; -use Illuminate\Support\Str; - -/** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User> - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array<string, mixed> - */ - public function definition(): array - { - return [ - 'name' => fake()->name(), - 'email' => fake()->unique()->safeEmail(), - 'email_verified_at' => now(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password - 'remember_token' => Str::random(10), - ]; - } - - /** - * Indicate that the model's email address should be unverified. - */ - public function unverified(): static - { - return $this->state(fn (array $attributes) => [ - 'email_verified_at' => null, - ]); - } -} diff --git a/backend/database/migrations/2014_10_12_000000_create_users_table.php b/backend/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index 444fafb..0000000 --- a/backend/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -use Illuminate\Database\Migrations\Migration; -use Illuminate\Database\Schema\Blueprint; -use Illuminate\Support\Facades\Schema; - -return new class extends Migration -{ - /** - * Run the migrations. - */ - public function up(): void - { - Schema::create('users', function (Blueprint $table) { - $table->id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('users'); - } -}; diff --git a/backend/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/backend/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php deleted file mode 100644 index 81a7229..0000000 --- a/backend/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -use Illuminate\Database\Migrations\Migration; -use Illuminate\Database\Schema\Blueprint; -use Illuminate\Support\Facades\Schema; - -return new class extends Migration -{ - /** - * Run the migrations. - */ - public function up(): void - { - Schema::create('password_reset_tokens', function (Blueprint $table) { - $table->string('email')->primary(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('password_reset_tokens'); - } -}; diff --git a/backend/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/backend/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 249da81..0000000 --- a/backend/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -use Illuminate\Database\Migrations\Migration; -use Illuminate\Database\Schema\Blueprint; -use Illuminate\Support\Facades\Schema; - -return new class extends Migration -{ - /** - * Run the migrations. - */ - public function up(): void - { - Schema::create('failed_jobs', function (Blueprint $table) { - $table->id(); - $table->string('uuid')->unique(); - $table->text('connection'); - $table->text('queue'); - $table->longText('payload'); - $table->longText('exception'); - $table->timestamp('failed_at')->useCurrent(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/backend/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/backend/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index e828ad8..0000000 --- a/backend/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -use Illuminate\Database\Migrations\Migration; -use Illuminate\Database\Schema\Blueprint; -use Illuminate\Support\Facades\Schema; - -return new class extends Migration -{ - /** - * Run the migrations. - */ - public function up(): void - { - Schema::create('personal_access_tokens', function (Blueprint $table) { - $table->id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamp('expires_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/backend/database/seeders/DatabaseSeeder.php b/backend/database/seeders/DatabaseSeeder.php deleted file mode 100644 index a9f4519..0000000 --- a/backend/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -namespace Database\Seeders; - -// use Illuminate\Database\Console\Seeds\WithoutModelEvents; -use Illuminate\Database\Seeder; - -class DatabaseSeeder extends Seeder -{ - /** - * Seed the application's database. - */ - public function run(): void - { - // \App\Models\User::factory(10)->create(); - - // \App\Models\User::factory()->create([ - // 'name' => 'Test User', - // 'email' => 'test@example.com', - // ]); - } -} diff --git a/backend/package.json b/backend/package.json deleted file mode 100644 index e543e0d..0000000 --- a/backend/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "private": true, - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build" - }, - "devDependencies": { - "axios": "^1.1.2", - "laravel-vite-plugin": "^0.7.5", - "vite": "^4.0.0" - } -} diff --git a/backend/phpunit.xml b/backend/phpunit.xml deleted file mode 100644 index f112c0c..0000000 --- a/backend/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" - bootstrap="vendor/autoload.php" - colors="true" -> - <testsuites> - <testsuite name="Unit"> - <directory>tests/Unit</directory> - </testsuite> - <testsuite name="Feature"> - <directory>tests/Feature</directory> - </testsuite> - </testsuites> - <source> - <include> - <directory>app</directory> - </include> - </source> - <php> - <env name="APP_ENV" value="testing"/> - <env name="BCRYPT_ROUNDS" value="4"/> - <env name="CACHE_DRIVER" value="array"/> - <!-- <env name="DB_CONNECTION" value="sqlite"/> --> - <!-- <env name="DB_DATABASE" value=":memory:"/> --> - <env name="MAIL_MAILER" value="array"/> - <env name="QUEUE_CONNECTION" value="sync"/> - <env name="SESSION_DRIVER" value="array"/> - <env name="TELESCOPE_ENABLED" value="false"/> - </php> -</phpunit> diff --git a/backend/public/.htaccess b/backend/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/backend/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ -<IfModule mod_rewrite.c> - <IfModule mod_negotiation.c> - Options -MultiViews -Indexes - </IfModule> - - 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] -</IfModule> diff --git a/backend/public/favicon.ico b/backend/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/backend/public/index.php b/backend/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/backend/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -use Illuminate\Contracts\Http\Kernel; -use Illuminate\Http\Request; - -define('LARAVEL_START', microtime(true)); - -/* -|-------------------------------------------------------------------------- -| Check If The Application Is Under Maintenance -|-------------------------------------------------------------------------- -| -| If the application is in maintenance / demo mode via the "down" command -| we will load this file so that any pre-rendered content can be shown -| instead of starting the framework, which could cause an exception. -| -*/ - -if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) { - require $maintenance; -} - -/* -|-------------------------------------------------------------------------- -| Register The Auto Loader -|-------------------------------------------------------------------------- -| -| Composer provides a convenient, automatically generated class loader for -| this application. We just need to utilize it! We'll simply require it -| into the script here so we don't need to manually load our classes. -| -*/ - -require __DIR__.'/../vendor/autoload.php'; - -/* -|-------------------------------------------------------------------------- -| Run The Application -|-------------------------------------------------------------------------- -| -| Once we have the application, we can handle the incoming request using -| the application's HTTP kernel. Then, we will send the response back -| to this client's browser, allowing them to enjoy our application. -| -*/ - -$app = require_once __DIR__.'/../bootstrap/app.php'; - -$kernel = $app->make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/backend/public/robots.txt b/backend/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/backend/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/backend/resources/css/app.css b/backend/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/backend/resources/js/app.js b/backend/resources/js/app.js deleted file mode 100644 index e59d6a0..0000000 --- a/backend/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -import './bootstrap'; diff --git a/backend/resources/js/bootstrap.js b/backend/resources/js/bootstrap.js deleted file mode 100644 index 846d350..0000000 --- a/backend/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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. - */ - -import axios from 'axios'; -window.axios = 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'; - -// import Pusher from 'pusher-js'; -// window.Pusher = Pusher; - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: import.meta.env.VITE_PUSHER_APP_KEY, -// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', -// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, -// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, -// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, -// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', -// enabledTransports: ['ws', 'wss'], -// }); diff --git a/backend/resources/views/main.blade.php b/backend/resources/views/main.blade.php deleted file mode 100644 index 638ec96..0000000 --- a/backend/resources/views/main.blade.php +++ /dev/null @@ -1,140 +0,0 @@ -<!DOCTYPE html> -<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> - <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - - <title>Laravel</title> - - <!-- Fonts --> - <link rel="preconnect" href="https://fonts.bunny.net"> - <link href="https://fonts.bunny.net/css?family=figtree:400,600&display=swap" rel="stylesheet" /> - - <!-- Styles --> - <style> - /* ! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com */*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{--tw-content:''}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:Figtree, sans-serif;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*, ::before, ::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.relative{position:relative}.mx-auto{margin-left:auto;margin-right:auto}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.ml-4{margin-left:1rem}.mt-16{margin-top:4rem}.mt-6{margin-top:1.5rem}.mt-4{margin-top:1rem}.-mt-px{margin-top:-1px}.mr-1{margin-right:0.25rem}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.h-16{height:4rem}.h-7{height:1.75rem}.h-6{height:1.5rem}.h-5{height:1.25rem}.min-h-screen{min-height:100vh}.w-auto{width:auto}.w-16{width:4rem}.w-7{width:1.75rem}.w-6{width:1.5rem}.w-5{width:1.25rem}.max-w-7xl{max-width:80rem}.shrink-0{flex-shrink:0}.scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.grid-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr))}.items-center{align-items:center}.justify-center{justify-content:center}.gap-6{gap:1.5rem}.gap-4{gap:1rem}.self-center{align-self:center}.rounded-lg{border-radius:0.5rem}.rounded-full{border-radius:9999px}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242 / var(--tw-bg-opacity))}.bg-dots-darker{background-image:url("data:image/svg+xml,%3Csvg width='30' height='30' viewBox='0 0 30 30' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.22676 0C1.91374 0 2.45351 0.539773 2.45351 1.22676C2.45351 1.91374 1.91374 2.45351 1.22676 2.45351C0.539773 2.45351 0 1.91374 0 1.22676C0 0.539773 0.539773 0 1.22676 0Z' fill='rgba(0,0,0,0.07)'/%3E%3C/svg%3E")}.from-gray-700\/50{--tw-gradient-from:rgb(55 65 81 / 0.5);--tw-gradient-to:rgb(55 65 81 / 0);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to:rgb(0 0 0 / 0);--tw-gradient-stops:var(--tw-gradient-from), transparent, var(--tw-gradient-to)}.bg-center{background-position:center}.stroke-red-500{stroke:#ef4444}.stroke-gray-400{stroke:#9ca3af}.p-6{padding:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.text-center{text-align:center}.text-right{text-align:right}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.font-semibold{font-weight:600}.leading-relaxed{line-height:1.625}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgb(0 0 0 / 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-gray-500\/20{--tw-shadow-color:rgb(107 114 128 / 0.2);--tw-shadow:var(--tw-shadow-colored)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.selection\:bg-red-500 *::selection{--tw-bg-opacity:1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.selection\:text-white *::selection{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.selection\:bg-red-500::selection{--tw-bg-opacity:1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.selection\:text-white::selection{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity))}.focus\:rounded-sm:focus{border-radius:0.125rem}.focus\:outline:focus{outline-style:solid}.focus\:outline-2:focus{outline-width:2px}.focus\:outline-red-500:focus{outline-color:#ef4444}.group:hover .group-hover\:stroke-gray-600{stroke:#4b5563}.z-10{z-index: 10}@media (prefers-reduced-motion: no-preference){.motion-safe\:hover\:scale-\[1\.01\]:hover{--tw-scale-x:1.01;--tw-scale-y:1.01;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}@media (prefers-color-scheme: dark){.dark\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.dark\:bg-gray-800\/50{background-color:rgb(31 41 55 / 0.5)}.dark\:bg-red-800\/20{background-color:rgb(153 27 27 / 0.2)}.dark\:bg-dots-lighter{background-image:url("data:image/svg+xml,%3Csvg width='30' height='30' viewBox='0 0 30 30' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.22676 0C1.91374 0 2.45351 0.539773 2.45351 1.22676C2.45351 1.91374 1.91374 2.45351 1.22676 2.45351C0.539773 2.45351 0 1.91374 0 1.22676C0 0.539773 0.539773 0 1.22676 0Z' fill='rgba(255,255,255,0.07)'/%3E%3C/svg%3E")}.dark\:bg-gradient-to-bl{background-image:linear-gradient(to bottom left, var(--tw-gradient-stops))}.dark\:stroke-gray-600{stroke:#4b5563}.dark\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.dark\:ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)}.dark\:ring-inset{--tw-ring-inset:inset}.dark\:ring-white\/5{--tw-ring-color:rgb(255 255 255 / 0.05)}.dark\:hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:stroke-gray-400{stroke:#9ca3af}}@media (min-width: 640px){.sm\:fixed{position:fixed}.sm\:top-0{top:0px}.sm\:right-0{right:0px}.sm\:ml-0{margin-left:0px}.sm\:flex{display:flex}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media (min-width: 1024px){.lg\:gap-8{gap:2rem}.lg\:p-8{padding:2rem}} - </style> - </head> - <body class="antialiased"> - <div class="relative sm:flex sm:justify-center sm:items-center min-h-screen bg-dots-darker bg-center bg-gray-100 dark:bg-dots-lighter dark:bg-gray-900 selection:bg-red-500 selection:text-white"> - @if (Route::has('login')) - <div class="sm:fixed sm:top-0 sm:right-0 p-6 text-right z-10"> - @auth - <a href="{{ url('/home') }}" class="font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Home</a> - @else - <a href="{{ route('login') }}" class="font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Log in</a> - - @if (Route::has('register')) - <a href="{{ route('register') }}" class="ml-4 font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Register</a> - @endif - @endauth - </div> - @endif - - <div class="max-w-7xl mx-auto p-6 lg:p-8"> - <div class="flex justify-center"> - <svg viewBox="0 0 62 65" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-16 w-auto bg-gray-100 dark:bg-gray-900"> - <path d="M61.8548 14.6253C61.8778 14.7102 61.8895 14.7978 61.8897 14.8858V28.5615C61.8898 28.737 61.8434 28.9095 61.7554 29.0614C61.6675 29.2132 61.5409 29.3392 61.3887 29.4265L49.9104 36.0351V49.1337C49.9104 49.4902 49.7209 49.8192 49.4118 49.9987L25.4519 63.7916C25.3971 63.8227 25.3372 63.8427 25.2774 63.8639C25.255 63.8714 25.2338 63.8851 25.2101 63.8913C25.0426 63.9354 24.8666 63.9354 24.6991 63.8913C24.6716 63.8838 24.6467 63.8689 24.6205 63.8589C24.5657 63.8389 24.5084 63.8215 24.456 63.7916L0.501061 49.9987C0.348882 49.9113 0.222437 49.7853 0.134469 49.6334C0.0465019 49.4816 0.000120578 49.3092 0 49.1337L0 8.10652C0 8.01678 0.0124642 7.92953 0.0348998 7.84477C0.0423783 7.8161 0.0598282 7.78993 0.0697995 7.76126C0.0884958 7.70891 0.105946 7.65531 0.133367 7.6067C0.152063 7.5743 0.179485 7.54812 0.20192 7.51821C0.230588 7.47832 0.256763 7.43719 0.290416 7.40229C0.319084 7.37362 0.356476 7.35243 0.388883 7.32751C0.425029 7.29759 0.457436 7.26518 0.498568 7.2415L12.4779 0.345059C12.6296 0.257786 12.8015 0.211853 12.9765 0.211853C13.1515 0.211853 13.3234 0.257786 13.475 0.345059L25.4531 7.2415H25.4556C25.4955 7.26643 25.5292 7.29759 25.5653 7.32626C25.5977 7.35119 25.6339 7.37362 25.6625 7.40104C25.6974 7.43719 25.7224 7.47832 25.7523 7.51821C25.7735 7.54812 25.8021 7.5743 25.8196 7.6067C25.8483 7.65656 25.8645 7.70891 25.8844 7.76126C25.8944 7.78993 25.9118 7.8161 25.9193 7.84602C25.9423 7.93096 25.954 8.01853 25.9542 8.10652V33.7317L35.9355 27.9844V14.8846C35.9355 14.7973 35.948 14.7088 35.9704 14.6253C35.9792 14.5954 35.9954 14.5692 36.0053 14.5405C36.0253 14.4882 36.0427 14.4346 36.0702 14.386C36.0888 14.3536 36.1163 14.3274 36.1375 14.2975C36.1674 14.2576 36.1923 14.2165 36.2272 14.1816C36.2559 14.1529 36.292 14.1317 36.3244 14.1068C36.3618 14.0769 36.3942 14.0445 36.4341 14.0208L48.4147 7.12434C48.5663 7.03694 48.7383 6.99094 48.9133 6.99094C49.0883 6.99094 49.2602 7.03694 49.4118 7.12434L61.3899 14.0208C61.4323 14.0457 61.4647 14.0769 61.5021 14.1055C61.5333 14.1305 61.5694 14.1529 61.5981 14.1803C61.633 14.2165 61.6579 14.2576 61.6878 14.2975C61.7103 14.3274 61.7377 14.3536 61.7551 14.386C61.7838 14.4346 61.8 14.4882 61.8199 14.5405C61.8312 14.5692 61.8474 14.5954 61.8548 14.6253ZM59.893 27.9844V16.6121L55.7013 19.0252L49.9104 22.3593V33.7317L59.8942 27.9844H59.893ZM47.9149 48.5566V37.1768L42.2187 40.4299L25.953 49.7133V61.2003L47.9149 48.5566ZM1.99677 9.83281V48.5566L23.9562 61.199V49.7145L12.4841 43.2219L12.4804 43.2194L12.4754 43.2169C12.4368 43.1945 12.4044 43.1621 12.3682 43.1347C12.3371 43.1097 12.3009 43.0898 12.2735 43.0624L12.271 43.0586C12.2386 43.0275 12.2162 42.9888 12.1887 42.9539C12.1638 42.9203 12.1339 42.8916 12.114 42.8567L12.1127 42.853C12.0903 42.8156 12.0766 42.7707 12.0604 42.7283C12.0442 42.6909 12.023 42.656 12.013 42.6161C12.0005 42.5688 11.998 42.5177 11.9931 42.4691C11.9881 42.4317 11.9781 42.3943 11.9781 42.3569V15.5801L6.18848 12.2446L1.99677 9.83281ZM12.9777 2.36177L2.99764 8.10652L12.9752 13.8513L22.9541 8.10527L12.9752 2.36177H12.9777ZM18.1678 38.2138L23.9574 34.8809V9.83281L19.7657 12.2459L13.9749 15.5801V40.6281L18.1678 38.2138ZM48.9133 9.14105L38.9344 14.8858L48.9133 20.6305L58.8909 14.8846L48.9133 9.14105ZM47.9149 22.3593L42.124 19.0252L37.9323 16.6121V27.9844L43.7219 31.3174L47.9149 33.7317V22.3593ZM24.9533 47.987L39.59 39.631L46.9065 35.4555L36.9352 29.7145L25.4544 36.3242L14.9907 42.3482L24.9533 47.987Z" fill="#FF2D20"/> - </svg> - </div> - - <div class="mt-16"> - <div class="grid grid-cols-1 md:grid-cols-2 gap-6 lg:gap-8"> - <a href="https://laravel.com/docs" class="scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-gradient-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500"> - <div> - <div class="h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full"> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="w-7 h-7 stroke-red-500"> - <path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" /> - </svg> - </div> - - <h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">Documentation</h2> - - <p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed"> - Laravel has wonderful documentation covering every aspect of the framework. Whether you are a newcomer or have prior experience with Laravel, we recommend reading our documentation from beginning to end. - </p> - </div> - - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="self-center shrink-0 stroke-red-500 w-6 h-6 mx-6"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" /> - </svg> - </a> - - <a href="https://laracasts.com" class="scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-gradient-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500"> - <div> - <div class="h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full"> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="w-7 h-7 stroke-red-500"> - <path stroke-linecap="round" d="M15.75 10.5l4.72-4.72a.75.75 0 011.28.53v11.38a.75.75 0 01-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25h-9A2.25 2.25 0 002.25 7.5v9a2.25 2.25 0 002.25 2.25z" /> - </svg> - </div> - - <h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">Laracasts</h2> - - <p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed"> - 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. - </p> - </div> - - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="self-center shrink-0 stroke-red-500 w-6 h-6 mx-6"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" /> - </svg> - </a> - - <a href="https://laravel-news.com" class="scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-gradient-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500"> - <div> - <div class="h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full"> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="w-7 h-7 stroke-red-500"> - <path stroke-linecap="round" stroke-linejoin="round" d="M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 01-2.25 2.25M16.5 7.5V18a2.25 2.25 0 002.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 002.25 2.25h13.5M6 7.5h3v3H6v-3z" /> - </svg> - </div> - - <h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">Laravel News</h2> - - <p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed"> - 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. - </p> - </div> - - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="self-center shrink-0 stroke-red-500 w-6 h-6 mx-6"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" /> - </svg> - </a> - - <div class="scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-gradient-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500"> - <div> - <div class="h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full"> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="w-7 h-7 stroke-red-500"> - <path stroke-linecap="round" stroke-linejoin="round" d="M6.115 5.19l.319 1.913A6 6 0 008.11 10.36L9.75 12l-.387.775c-.217.433-.132.956.21 1.298l1.348 1.348c.21.21.329.497.329.795v1.089c0 .426.24.815.622 1.006l.153.076c.433.217.956.132 1.298-.21l.723-.723a8.7 8.7 0 002.288-4.042 1.087 1.087 0 00-.358-1.099l-1.33-1.108c-.251-.21-.582-.299-.905-.245l-1.17.195a1.125 1.125 0 01-.98-.314l-.295-.295a1.125 1.125 0 010-1.591l.13-.132a1.125 1.125 0 011.3-.21l.603.302a.809.809 0 001.086-1.086L14.25 7.5l1.256-.837a4.5 4.5 0 001.528-1.732l.146-.292M6.115 5.19A9 9 0 1017.18 4.64M6.115 5.19A8.965 8.965 0 0112 3c1.929 0 3.716.607 5.18 1.64" /> - </svg> - </div> - - <h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">Vibrant Ecosystem</h2> - - <p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed"> - Laravel's robust library of first-party tools and libraries, such as <a href="https://forge.laravel.com" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Forge</a>, <a href="https://vapor.laravel.com" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Vapor</a>, <a href="https://nova.laravel.com" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Nova</a>, and <a href="https://envoyer.io" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Envoyer</a> help you take your projects to the next level. Pair them with powerful open source libraries like <a href="https://laravel.com/docs/billing" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Cashier</a>, <a href="https://laravel.com/docs/dusk" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Dusk</a>, <a href="https://laravel.com/docs/broadcasting" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Echo</a>, <a href="https://laravel.com/docs/horizon" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Horizon</a>, <a href="https://laravel.com/docs/sanctum" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Sanctum</a>, <a href="https://laravel.com/docs/telescope" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Telescope</a>, and more. - </p> - </div> - </div> - </div> - </div> - - <div class="flex justify-center mt-16 px-0 sm:items-center sm:justify-between"> - <div class="text-center text-sm text-gray-500 dark:text-gray-400 sm:text-left"> - <div class="flex items-center gap-4"> - <a href="https://github.com/sponsors/taylorotwell" class="group inline-flex items-center hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500"> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="-mt-px mr-1 w-5 h-5 stroke-gray-400 dark:stroke-gray-600 group-hover:stroke-gray-600 dark:group-hover:stroke-gray-400"> - <path stroke-linecap="round" stroke-linejoin="round" d="M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z" /> - </svg> - Sponsor - </a> - </div> - </div> - - <div class="ml-4 text-center text-sm text-gray-500 dark:text-gray-400 sm:text-right sm:ml-0"> - Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) - </div> - </div> - </div> - </div> - </body> -</html> diff --git a/backend/routes/api.php b/backend/routes/api.php deleted file mode 100644 index 8bda76e..0000000 --- a/backend/routes/api.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -use App\Http\Controllers\UserController; -use Illuminate\Support\Facades\Route; - -/* -|-------------------------------------------------------------------------- -| API Routes -|-------------------------------------------------------------------------- -| -| Here is where you can register API routes for your application. These -| routes are loaded by the RouteServiceProvider and all of them will -| be assigned to the "api" middleware group. Make something great! -| -*/ - -Route::post('/user', [UserController::class, 'create']); diff --git a/backend/routes/channels.php b/backend/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/backend/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -use Illuminate\Support\Facades\Broadcast; - -/* -|-------------------------------------------------------------------------- -| Broadcast Channels -|-------------------------------------------------------------------------- -| -| Here you may register all of the event broadcasting channels that your -| application supports. The given channel authorization callbacks are -| used to check if an authenticated user can listen to the channel. -| -*/ - -Broadcast::channel('App.Models.User.{id}', function ($user, $id) { - return (int) $user->id === (int) $id; -}); diff --git a/backend/routes/console.php b/backend/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/backend/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -use Illuminate\Foundation\Inspiring; -use Illuminate\Support\Facades\Artisan; - -/* -|-------------------------------------------------------------------------- -| Console Routes -|-------------------------------------------------------------------------- -| -| This file is where you may define all of your Closure based console -| commands. Each Closure is bound to a command instance allowing a -| simple approach to interacting with each command's IO methods. -| -*/ - -Artisan::command('inspire', function () { - $this->comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/backend/routes/web.php b/backend/routes/web.php deleted file mode 100644 index df45f5b..0000000 --- a/backend/routes/web.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -use App\Models\User; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Route; - -/* -|-------------------------------------------------------------------------- -| Web Routes -|-------------------------------------------------------------------------- -| -| Here is where you can register web routes for your application. These -| routes are loaded by the RouteServiceProvider and all of them will -| be assigned to the "web" middleware group. Make something great! -| -*/ - -Route::get('/', function () { - return response("not allowed", 404); -}); - -Route::get("/test", function () { - return User::all(); -}); diff --git a/backend/storage/app/.gitignore b/backend/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/backend/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/backend/storage/app/public/.gitignore b/backend/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/backend/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/backend/storage/framework/.gitignore b/backend/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/backend/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/backend/storage/framework/cache/.gitignore b/backend/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/backend/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/backend/storage/framework/cache/data/.gitignore b/backend/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/backend/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/backend/storage/framework/sessions/.gitignore b/backend/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/backend/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/backend/storage/framework/testing/.gitignore b/backend/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/backend/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/backend/storage/framework/views/.gitignore b/backend/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/backend/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/backend/storage/logs/.gitignore b/backend/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/backend/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/backend/tests/CreatesApplication.php b/backend/tests/CreatesApplication.php deleted file mode 100644 index cc68301..0000000 --- a/backend/tests/CreatesApplication.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -namespace Tests; - -use Illuminate\Contracts\Console\Kernel; -use Illuminate\Foundation\Application; - -trait CreatesApplication -{ - /** - * Creates the application. - */ - public function createApplication(): Application - { - $app = require __DIR__.'/../bootstrap/app.php'; - - $app->make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/backend/tests/Feature/ExampleTest.php b/backend/tests/Feature/ExampleTest.php deleted file mode 100644 index 8364a84..0000000 --- a/backend/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -namespace Tests\Feature; - -// use Illuminate\Foundation\Testing\RefreshDatabase; -use Tests\TestCase; - -class ExampleTest extends TestCase -{ - /** - * A basic test example. - */ - public function test_the_application_returns_a_successful_response(): void - { - $response = $this->get('/'); - - $response->assertStatus(200); - } -} diff --git a/backend/tests/TestCase.php b/backend/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/backend/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -namespace Tests; - -use Illuminate\Foundation\Testing\TestCase as BaseTestCase; - -abstract class TestCase extends BaseTestCase -{ - use CreatesApplication; -} diff --git a/backend/tests/Unit/ExampleTest.php b/backend/tests/Unit/ExampleTest.php deleted file mode 100644 index 5773b0c..0000000 --- a/backend/tests/Unit/ExampleTest.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Tests\Unit; - -use PHPUnit\Framework\TestCase; - -class ExampleTest extends TestCase -{ - /** - * A basic test example. - */ - public function test_that_true_is_true(): void - { - $this->assertTrue(true); - } -} diff --git a/backend/vite.config.js b/backend/vite.config.js deleted file mode 100644 index 421b569..0000000 --- a/backend/vite.config.js +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from 'vite'; -import laravel from 'laravel-vite-plugin'; - -export default defineConfig({ - plugins: [ - laravel({ - input: ['resources/css/app.css', 'resources/js/app.js'], - refresh: true, - }), - ], -}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..76ceb48 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5576 @@ +{ + "name": "website", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "website", + "version": "0.0.1", + "dependencies": { + "dotenv": "^16.3.1", + "mariadb": "^3.2.0", + "sequelize": "^6.32.1", + "sqlite3": "^5.1.6" + }, + "devDependencies": { + "@sveltejs/adapter-node": "^1.3.1", + "@sveltejs/kit": "^1.20.4", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "autoprefixer": "^10.4.14", + "daisyui": "^3.5.0", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte": "^2.30.0", + "postcss": "^8.4.27", + "prettier": "^2.8.0", + "prettier-plugin-svelte": "^2.10.1", + "svelte": "^4.0.5", + "svelte-check": "^3.4.3", + "svelte-heros-v2": "^0.9.3", + "tailwindcss": "^3.3.3", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^4.4.2", + "vitest": "^0.34.1" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", + "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", + "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", + "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", + "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", + "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", + "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", + "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", + "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", + "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", + "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", + "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", + "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", + "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", + "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", + "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", + "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", + "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", + "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", + "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", + "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", + "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", + "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", + "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", + "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "optional": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.3.tgz", + "integrity": "sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", + "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz", + "integrity": "sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sveltejs/adapter-node": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-1.3.1.tgz", + "integrity": "sha512-A0VgRQDCDPzdLNoiAbcOxGw4zT1Mc+n1LwT1OmO350R7WxrEqdMUChPPOd1iMfIDWlP4ie6E2d/WQf5es2d4Zw==", + "dev": true, + "dependencies": { + "@rollup/plugin-commonjs": "^25.0.0", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.0.1", + "rollup": "^3.7.0" + }, + "peerDependencies": { + "@sveltejs/kit": "^1.0.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.4.tgz", + "integrity": "sha512-Opkqw1QXk4Cc25b/heJP2D7mX+OUBFAq4MXKfET58svTTxdeiHFKzmnuRsSF3nmxESqrLjqPAgHpib+knNGzRw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^2.4.1", + "@types/cookie": "^0.5.1", + "cookie": "^0.5.0", + "devalue": "^4.3.1", + "esm-env": "^1.0.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.0", + "mime": "^3.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^2.0.2", + "undici": "~5.22.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": "^16.14 || >=18" + }, + "peerDependencies": { + "svelte": "^3.54.0 || ^4.0.0-next.0", + "vite": "^4.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.3.tgz", + "integrity": "sha512-NY2h+B54KHZO3kDURTdARqthn6D4YSIebtfW75NvZ/fwyk4G+AJw3V/i0OBjyN4406Ht9yZcnNWMuRUFnDNNiA==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^1.0.3", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.1", + "svelte-hmr": "^0.15.2", + "vitefu": "^0.2.4" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.54.0 || ^4.0.0", + "vite": "^4.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.3.tgz", + "integrity": "sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.2.0", + "svelte": "^3.54.0 || ^4.0.0", + "vite": "^4.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/chai": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", + "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", + "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "dev": true + }, + "node_modules/@types/debug": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "node_modules/@types/node": { + "version": "20.4.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", + "integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==" + }, + "node_modules/@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@types/validator": { + "version": "13.11.1", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.1.tgz", + "integrity": "sha512-d/MUkJYdOeKycmm75Arql4M5+UuXmf4cHdHKsyw1GcvnNgL6s77UkgSgJ8TE/rI5PYsnwYq5jkcWBLuN/MpQ1A==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitest/expect": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.1.tgz", + "integrity": "sha512-q2CD8+XIsQ+tHwypnoCk8Mnv5e6afLFvinVGCq3/BOT4kQdVQmY6rRfyKkwcg635lbliLPqbunXZr+L1ssUWiQ==", + "dev": true, + "dependencies": { + "@vitest/spy": "0.34.1", + "@vitest/utils": "0.34.1", + "chai": "^4.3.7" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.1.tgz", + "integrity": "sha512-YfQMpYzDsYB7yqgmlxZ06NI4LurHWfrH7Wy3Pvf/z/vwUSgq1zLAb1lWcItCzQG+NVox+VvzlKQrYEXb47645g==", + "dev": true, + "dependencies": { + "@vitest/utils": "0.34.1", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.1.tgz", + "integrity": "sha512-0O9LfLU0114OqdF8lENlrLsnn024Tb1CsS9UwG0YMWY2oGTQfPtkW+B/7ieyv0X9R2Oijhi3caB1xgGgEgclSQ==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.1.tgz", + "integrity": "sha512-UT4WcI3EAPUNO8n6y9QoEqynGGEPmmRxC+cLzneFFXpmacivjHZsNbiKD88KUScv5DCHVDgdBsLD7O7s1enFcQ==", + "dev": true, + "dependencies": { + "tinyspy": "^2.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.1.tgz", + "integrity": "sha512-/ql9dsFi4iuEbiNcjNHQWXBum7aL8pyhxvfnD9gNtbjR9fUKAjxhj4AA3yfLXg6gJpMGGecvtF8Au2G9y3q47Q==", + "dev": true, + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "optional": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001518", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001518.tgz", + "integrity": "sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/code-red": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.3.tgz", + "integrity": "sha512-kVwJELqiILQyG5aeuyKFbdsI1fmQy1Cmf7dQ8eGmVuJoaRVdwey7WaMknr2ZFeVSYSKT0rExsa8EGw0aoI/1QQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.14", + "@types/estree": "^1.0.0", + "acorn": "^8.8.2", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-selector-tokenizer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", + "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/daisyui": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.5.0.tgz", + "integrity": "sha512-wSaeXwaYdMv4yURv9wj7kKQQN9Jyumfh/skIpZfCNkCb2jLf/so+iNKSM8l4rDN0TRvB5OccMlAvsf2UAtk2gg==", + "dev": true, + "dependencies": { + "colord": "^2.9", + "css-selector-tokenizer": "^0.8", + "postcss": "^8", + "postcss-js": "^4", + "tailwindcss": "^3" + }, + "engines": { + "node": ">=16.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/daisyui" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", + "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", + "dev": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dottie": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", + "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.478", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.478.tgz", + "integrity": "sha512-qjTA8djMXd+ruoODDFGnRCRBpID+AAfYWCyGtYTNhsuwxI19s8q19gbjKTwRS5z/LyVf5wICaIiPQGLekmbJbA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", + "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.17", + "@esbuild/android-arm64": "0.18.17", + "@esbuild/android-x64": "0.18.17", + "@esbuild/darwin-arm64": "0.18.17", + "@esbuild/darwin-x64": "0.18.17", + "@esbuild/freebsd-arm64": "0.18.17", + "@esbuild/freebsd-x64": "0.18.17", + "@esbuild/linux-arm": "0.18.17", + "@esbuild/linux-arm64": "0.18.17", + "@esbuild/linux-ia32": "0.18.17", + "@esbuild/linux-loong64": "0.18.17", + "@esbuild/linux-mips64el": "0.18.17", + "@esbuild/linux-ppc64": "0.18.17", + "@esbuild/linux-riscv64": "0.18.17", + "@esbuild/linux-s390x": "0.18.17", + "@esbuild/linux-x64": "0.18.17", + "@esbuild/netbsd-x64": "0.18.17", + "@esbuild/openbsd-x64": "0.18.17", + "@esbuild/sunos-x64": "0.18.17", + "@esbuild/win32-arm64": "0.18.17", + "@esbuild/win32-ia32": "0.18.17", + "@esbuild/win32-x64": "0.18.17" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", + "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.1", + "@eslint/js": "^8.46.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.2", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.9.0.tgz", + "integrity": "sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-svelte": { + "version": "2.32.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.32.4.tgz", + "integrity": "sha512-VJ12i2Iogug1jvhwxSlognnfGj76P5gks/V4pUD4SCSVQOp14u47MNP0zAG8AQR3LT0Fi1iUvIFnY4l9z5Rwbg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@jridgewell/sourcemap-codec": "^1.4.14", + "debug": "^4.3.1", + "esutils": "^2.0.3", + "known-css-properties": "^0.28.0", + "postcss": "^8.4.5", + "postcss-load-config": "^3.1.4", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.11", + "semver": "^7.5.3", + "svelte-eslint-parser": "^0.32.2" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0-0", + "svelte": "^3.37.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esm-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", + "dev": true + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "optional": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "optional": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "optional": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "optional": true + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-reference": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", + "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "devOptional": true + }, + "node_modules/jiti": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", + "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/known-css-properties": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", + "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz", + "integrity": "sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/mariadb": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.2.0.tgz", + "integrity": "sha512-IH2nidQat1IBMxP5gjuNxG6dADtz1PESEC6rKrcATen5v3ngFyZITjehyYiwNfz3zUNQupfYmVntz93M+Pz8pQ==", + "dependencies": { + "@types/geojson": "^7946.0.10", + "@types/node": "^17.0.45", + "denque": "^2.1.0", + "iconv-lite": "^0.6.3", + "lru-cache": "^7.14.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/mariadb/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/mariadb/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "optional": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mlly": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.0.tgz", + "integrity": "sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.1.2" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.43", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz", + "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, + "node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "optional": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/pg-connection-string": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", + "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "node_modules/postcss": { + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz", + "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + } + ], + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.19" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.10.1.tgz", + "integrity": "sha512-Wlq7Z5v2ueCubWo0TZzKc9XHcm7TDxqcuzRuGd0gcENfzfT4JZ9yDlCbEgxWgiPmLHkBjfOtpAWkcT28MCDpUQ==", + "dev": true, + "peerDependencies": { + "prettier": "^1.16.4 || ^2.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0" + } + }, + "node_modules/pretty-format": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", + "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "optional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-as-promised": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", + "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.0.tgz", + "integrity": "sha512-aOltLCrYZ0FhJDm7fCqwTjIUEVjWjcydKBV/Zeid6Mn8BWgDCUBBWT5beM5ieForYNo/1ZHuGJdka26kvQ3Gzg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sander/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize": { + "version": "6.32.1", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.32.1.tgz", + "integrity": "sha512-3Iv0jruv57Y0YvcxQW7BE56O7DC1BojcfIrqh6my+IQwde+9u/YnuYHzK+8kmZLhLvaziRT1eWu38nh9yVwn/g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], + "dependencies": { + "@types/debug": "^4.1.8", + "@types/validator": "^13.7.17", + "debug": "^4.3.4", + "dottie": "^2.0.4", + "inflection": "^1.13.4", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "moment-timezone": "^0.5.43", + "pg-connection-string": "^2.6.0", + "retry-as-promised": "^7.0.4", + "semver": "^7.5.1", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.9.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sirv": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "optional": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "optional": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sorcery": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", + "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.14", + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0" + }, + "bin": { + "sorcery": "bin/sorcery" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sqlite3": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", + "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^4.2.0", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "optional": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "node_modules/std-env": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", + "integrity": "sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==", + "dev": true + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.1.2.tgz", + "integrity": "sha512-/evA8U6CgOHe5ZD1C1W3va9iJG7mWflcCdghBORJaAhD2JzrVERJty/2gl0pIPrJYBGZwZycH6onYf+64XXF9g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^3.2.1", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.0", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-check": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.4.6.tgz", + "integrity": "sha512-OBlY8866Zh1zHQTkBMPS6psPi7o2umTUyj6JWm4SacnIHXpWFm658pG32m3dKvKFL49V4ntAkfFHKo4ztH07og==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^5.0.4", + "typescript": "^5.0.3" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0" + } + }, + "node_modules/svelte-eslint-parser": { + "version": "0.32.2", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.32.2.tgz", + "integrity": "sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==", + "dev": true, + "dependencies": { + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "postcss": "^8.4.25", + "postcss-scss": "^4.0.6" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "svelte": "^3.37.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/svelte-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/svelte-heros-v2": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/svelte-heros-v2/-/svelte-heros-v2-0.9.3.tgz", + "integrity": "sha512-g2nwoWDp8WhKuAlUWj3SufTYQbFjBaoaynMOStggZoIgaEBlSjF4Yh4GKYGTWF4izenOy1R3Kal453chtLmFUg==", + "dev": true, + "peerDependencies": { + "svelte": "^3.54.0 || ^4.0.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz", + "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0-next.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz", + "integrity": "sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.6", + "detect-indent": "^6.1.0", + "magic-string": "^0.27.0", + "sorcery": "^0.11.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 14.10.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0", + "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-preprocess/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/tailwindcss/node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/tar": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", + "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinybench": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", + "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", + "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.2.0.tgz", + "integrity": "sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==", + "dev": true + }, + "node_modules/undici": { + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", + "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "optional": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vite": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.7.tgz", + "integrity": "sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.26", + "rollup": "^3.25.2" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.1.tgz", + "integrity": "sha512-odAZAL9xFMuAg8aWd7nSPT+hU8u2r9gU3LRm9QKjxBEF2rRdWpMuqkrkjvyVQEdNFiBctqr2Gg4uJYizm5Le6w==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitefu": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", + "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.1.tgz", + "integrity": "sha512-G1PzuBEq9A75XSU88yO5G4vPT20UovbC/2osB2KEuV/FisSIIsw7m5y2xMdB7RsAGHAfg2lPmp2qKr3KWliVlQ==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.1", + "@vitest/runner": "0.34.1", + "@vitest/snapshot": "0.34.1", + "@vitest/spy": "0.34.1", + "@vitest/utils": "0.34.1", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.34.1", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*", + "playwright": "*", + "safaridriver": "*", + "webdriverio": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ce80a88 --- /dev/null +++ b/package.json @@ -0,0 +1,44 @@ +{ + "name": "website", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev --host", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "test": "vitest", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@sveltejs/adapter-node": "^1.3.1", + "@sveltejs/kit": "^1.20.4", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "autoprefixer": "^10.4.14", + "daisyui": "^3.5.0", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte": "^2.30.0", + "postcss": "^8.4.27", + "prettier": "^2.8.0", + "prettier-plugin-svelte": "^2.10.1", + "svelte": "^4.0.5", + "svelte-check": "^3.4.3", + "svelte-heros-v2": "^0.9.3", + "tailwindcss": "^3.3.3", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^4.4.2", + "vitest": "^0.34.1" + }, + "type": "module", + "dependencies": { + "dotenv": "^16.3.1", + "mariadb": "^3.2.0", + "sequelize": "^6.32.1", + "sqlite3": "^5.1.6" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..0f77216 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..1829fbd --- /dev/null +++ b/src/app.css @@ -0,0 +1,28 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + @font-face { + font-family: 'Minecraft'; + src: url('/fonts/MinecraftRegular.otf') format('opentype'); + } + + @font-face { + font-family: 'Roboto'; + src: url('/fonts/Roboto-Regular.ttf') format('truetype'); + } + + html { + @apply font-roboto; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + @apply font-minecraft; + } +} diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..f59b884 --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,12 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..41bc78e --- /dev/null +++ b/src/app.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <link rel="icon" href="%sveltekit.assets%/favicon.png" /> + <link rel="apple-touch-icon" href="%sveltekit.assets%/favicon.png" /> + <meta name="viewport" content="width=device-width" /> + %sveltekit.head% + </head> + <body data-sveltekit-preload-data="hover"> + <div style="display: contents">%sveltekit.body%</div> + </body> +</html> diff --git a/src/hooks.server.ts b/src/hooks.server.ts new file mode 100644 index 0000000..125fd7f --- /dev/null +++ b/src/hooks.server.ts @@ -0,0 +1,4 @@ +import { sequelize } from '$lib/server/database'; + +// make sure that the database and tables exist +await sequelize.sync(); diff --git a/src/lib/components/Countdown/Countdown.svelte b/src/lib/components/Countdown/Countdown.svelte new file mode 100644 index 0000000..8cae751 --- /dev/null +++ b/src/lib/components/Countdown/Countdown.svelte @@ -0,0 +1,61 @@ +<script lang="ts"> + import { onDestroy } from 'svelte'; + + // start date in milliseconds. if undefined, start will be Date.now + export let start: number | undefined = undefined; + // end date in milliseconds + export let end: number; + + function getUntil(): [number, number, number, number] { + let diff = (end - (start || Date.now())) / 1000; + + return [ + Math.floor(diff / (60 * 60 * 24)), + Math.floor((diff % (60 * 60 * 24)) / (60 * 60)), + Math.floor((diff % (60 * 60)) / 60), + Math.floor(diff % 60) + ]; + } + + let [days, hours, minutes, seconds] = getUntil(); + let intervalId = setInterval(() => { + [days, hours, minutes, seconds] = getUntil(); + if (start) start += 1000; + }, 1000); + + onDestroy(() => clearInterval(intervalId)); +</script> + +<div class="grid grid-flow-col gap-5 text-center auto-cols-max"> + <div class="flex flex-col p-2 bg-neutral rounded-box text-neutral-content"> + <span class="countdown font-mono text-5xl"> + <span style="--value:{days};" /> + </span> + Tage + </div> + <div class="flex flex-col p-2 bg-neutral rounded-box text-neutral-content"> + <span class="countdown font-mono text-5xl"> + <span style="--value:{hours};" /> + </span> + Stunden + </div> + <div class="flex flex-col p-2 bg-neutral rounded-box text-neutral-content"> + <span class="countdown font-mono text-5xl"> + <span style="--value:{minutes};" /> + </span> + Minuten + </div> + <div class="flex flex-col p-2 bg-neutral rounded-box text-neutral-content"> + <span class="countdown font-mono text-5xl"> + <span style="--value:{seconds};" /> + </span> + Sekunden + </div> +</div> + +<style> + /* Set a custom content for the countdown before selector as it only supports numbers up to 99 */ + .countdown > ::before { + content: '00\A 01\A 02\A 03\A 04\A 05\A 06\A 07\A 08\A 09\A 10\A 11\A 12\A 13\A 14\A 15\A 16\A 17\A 18\A 19\A 20\A 21\A 22\A 23\A 24\A 25\A 26\A 27\A 28\A 29\A 30\A 31\A 32\A 33\A 34\A 35\A 36\A 37\A 38\A 39\A 40\A 41\A 42\A 43\A 44\A 45\A 46\A 47\A 48\A 49\A 50\A 51\A 52\A 53\A 54\A 55\A 56\A 57\A 58\A 59\A 60\A 61\A 62\A 63\A 64\A 65\A 66\A 67\A 68\A 69\A 70\A 71\A 72\A 73\A 74\A 75\A 76\A 77\A 78\A 79\A 80\A 81\A 82\A 83\A 84\A 85\A 86\A 87\A 88\A 89\A 90\A 91\A 92\A 93\A 94\A 95\A 96\A 97\A 98\A 99\A 100\A 101\A 102\A 103\A 104\A 105\A 106\A 107\A 108\A 109\A 110\A 111\A 112\A 113\A 114\A 115\A 116\A 117\A 118\A 119\A 120\A 121\A 122\A 123\A 124\A 125\A 126\A 127\A 128\A 129\A 130\A 131\A 132\A 133\A 134\A 135\A 136\A 137\A 138\A 139\A 140\A 141\A 142\A 143\A 144\A 145\A 146\A 147\A 148\A 149\A 150\A 151\A 152\A 153\A 154\A 155\A 156\A 157\A 158\A 159\A 160\A 161\A 162\A 163\A 164\A 165\A 166\A 167\A 168\A 169\A 170\A 171\A 172\A 173\A 174\A 175\A 176\A 177\A 178\A 179\A 180\A 181\A 182\A 183\A 184\A 185\A 186\A 187\A 188\A 189\A 190\A 191\A 192\A 193\A 194\A 195\A 196\A 197\A 198\A 199\A 200\A 201\A 202\A 203\A 204\A 205\A 206\A 207\A 208\A 209\A 210\A 211\A 212\A 213\A 214\A 215\A 216\A 217\A 218\A 219\A 220\A 221\A 222\A 223\A 224\A 225\A 226\A 227\A 228\A 229\A 230\A 231\A 232\A 233\A 234\A 235\A 236\A 237\A 238\A 239\A 240\A 241\A 242\A 243\A 244\A 245\A 246\A 247\A 248\A 249\A 250\A 251\A 252\A 253\A 254\A 255\A 256\A 257\A 258\A 259\A 260\A 261\A 262\A 263\A 264\A 265\A 266\A 267\A 268\A 269\A 270\A 271\A 272\A 273\A 274\A 275\A 276\A 277\A 278\A 279\A 280\A 281\A 282\A 283\A 284\A 285\A 286\A 287\A 288\A 289\A 290\A 291\A 292\A 293\A 294\A 295\A 296\A 297\A 298\A 299\A 300\A 301\A 302\A 303\A 304\A 305\A 306\A 307\A 308\A 309\A 310\A 311\A 312\A 313\A 314\A 315\A 316\A 317\A 318\A 319\A 320\A 321\A 322\A 323\A 324\A 325\A 326\A 327\A 328\A 329\A 330\A 331\A 332\A 333\A 334\A 335\A 336\A 337\A 338\A 339\A 340\A 341\A 342\A 343\A 344\A 345\A 346\A 347\A 348\A 349\A 350\A 351\A 352\A 353\A 354\A 355\A 356\A 357\A 358\A 359\A 360\A 361\A 362\A 363\A 364\A'; + } +</style> diff --git a/src/lib/components/Input/Input.svelte b/src/lib/components/Input/Input.svelte new file mode 100644 index 0000000..196922d --- /dev/null +++ b/src/lib/components/Input/Input.svelte @@ -0,0 +1,72 @@ +<svelte:options accessors={true} /> + +<script lang="ts"> + import { IconSolid } from 'svelte-heros-v2'; + + export let id: string; + export let name: string | null = null; + export let type: string; + export let value: string | null = null; + export let required = false; + export let disabled = false; + + export let inputElement: HTMLInputElement | undefined = undefined; + + let initialType = type; +</script> + +<!-- the cursor-not-allowed class must be set here because a disabled button does not respect the 'cursor' css property --> +<div class={type === 'submit' && disabled ? 'cursor-not-allowed' : ''}> + {#if type === 'submit'} + <input class="btn" {id} type="submit" {value} {disabled} bind:this={inputElement} /> + {:else} + <div> + {#if $$slots.label} + <label class="label" for={id}> + <span class="label-text"> + <slot name="label" /> + {#if required} + <span class="text-red-700">*</span> + {/if} + </span> + </label> + {/if} + <div class="flex items-center"> + <input + class={type === 'checkbox' + ? 'checkbox' + : `input input-bordered w-[100%] sm:max-w-[16rem] ${ + initialType === 'password' ? 'pr-11' : '' + }`} + {id} + {name} + {type} + {value} + {required} + {disabled} + bind:this={inputElement} + /> + {#if initialType === 'password'} + <button + class="relative right-9" + type="button" + on:click={() => { + type = type === 'password' ? 'text' : 'password'; + }} + > + {#if type === 'password'} + <IconSolid name="eye-slash-solid" /> + {:else} + <IconSolid name="eye-solid" /> + {/if} + </button> + {/if} + </div> + {#if $$slots.notice} + <label class="label" for={id}> + <span class="label-text-alt"><slot name="notice" /></span> + </label> + {/if} + </div> + {/if} +</div> diff --git a/src/lib/components/Input/Select.svelte b/src/lib/components/Input/Select.svelte new file mode 100644 index 0000000..294dd7d --- /dev/null +++ b/src/lib/components/Input/Select.svelte @@ -0,0 +1,37 @@ +<script lang="ts"> + export let id: string; + export let name: string | null = null; + export let value: string; + export let label: string | null = null; + export let notice: string | null = null; + export let required = false; + export let disabled = false; +</script> + +<div> + {#if label} + <label class="label" for={id}> + <span class="label-text"> + {label} + {#if required} + <span class="text-red-700">*</span> + {/if} + </span> + </label> + {/if} + <select + class="input input-bordered w-[100%] sm:max-w-[16rem]" + {id} + {name} + {required} + {disabled} + bind:value + > + <slot /> + </select> + {#if notice} + <label class="label" for={id}> + <span class="label-text-alt">{notice}</span> + </label> + {/if} +</div> diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/src/lib/server/database.ts b/src/lib/server/database.ts new file mode 100644 index 0000000..eed5771 --- /dev/null +++ b/src/lib/server/database.ts @@ -0,0 +1,37 @@ +import { DataTypes, Sequelize } from 'sequelize'; +import { DATABASE_URI } from '$env/static/private'; +import { dev } from '$app/environment'; + +export const sequelize = new Sequelize(DATABASE_URI, { + // only log sql queries in dev mode + logging: dev ? console.log : false +}); + +export const User = sequelize.define('user', { + firstname: { + type: DataTypes.STRING, + allowNull: false + }, + lastname: { + type: DataTypes.STRING, + allowNull: false + }, + birthday: { + type: DataTypes.DATE, + allowNull: false + }, + telephone: DataTypes.STRING, + username: { + type: DataTypes.STRING, + allowNull: false + }, + playertype: { + type: DataTypes.ENUM('java', 'bedrock', 'cracked'), + allowNull: false + }, + password: DataTypes.TEXT, + uuid: { + type: DataTypes.UUIDV4, + allowNull: false + } +}); diff --git a/src/lib/server/minecraft.test.ts b/src/lib/server/minecraft.test.ts new file mode 100644 index 0000000..c1dafec --- /dev/null +++ b/src/lib/server/minecraft.test.ts @@ -0,0 +1,27 @@ +import { describe, expect, test } from 'vitest'; +import { getBedrockUuid, getCrackedUuid, getJavaUuid } from '$lib/server/minecraft'; + +describe('java username', () => { + test('is valid', async () => { + expect(getJavaUuid('bytedream')).resolves.toBe('9aa026cc-b5dc-4357-a319-ab668101af0d'); + }); + test('is invalid', async () => { + expect(getJavaUuid('57eoTQaLYchmETrTsWnNZXtZh')).rejects.toThrowError(); + }); +}); + +describe('bedrock username', () => { + test('is valid', async () => { + expect(getBedrockUuid('bytedream')).resolves.toBe('00000000-0000-0000-0009-01F5BF975D37'); + }); + test('is invalid', async () => { + expect(getBedrockUuid('57eoTQaLYchmETrTsWnNZXtZh')).rejects.toThrowError(); + }); +}); + +describe('cracked username', () => { + // every username can be converted to an uuid so every user id automatically valid + test('is valid', () => { + expect(getCrackedUuid('bytedream')).toBe('88de3863-bf47-30f9-a7f4-ab6134feb49a'); + }); +}); diff --git a/src/lib/server/minecraft.ts b/src/lib/server/minecraft.ts new file mode 100644 index 0000000..4212995 --- /dev/null +++ b/src/lib/server/minecraft.ts @@ -0,0 +1,78 @@ +import { createHash } from 'node:crypto'; + +export class UserNotFoundError extends Error { + constructor(username: string) { + super(`Ein Spieler mit dem Namen '${username}' konnte nicht gefunden werden`); + } +} + +export async function getJavaUuid(username: string): Promise<string> { + const response = await fetch(`https://api.mojang.com/users/profiles/minecraft/${username}`); + if (!response.ok) { + throw response.status < 500 + ? new UserNotFoundError(username) + : new Error(`mojang server error (${response.status}): ${await response.text()}`); + } + const json = await response.json(); + const id: string = json['id']; + // prettier-ignore + return `${id.substring(0, 8)}-${id.substring(8, 12)}-${id.substring(12, 16)}-${id.substring(16, 20)}-${id.substring(20)}`; +} + +// https://github.com/carlop3333/XUIDGrabber/blob/main/grabber.js +export async function getBedrockUuid(username: string): Promise<string> { + const initialPageResponse = await fetch('https://cxkes.me/xbox/xuid'); + const initialPageContent = await initialPageResponse.text(); + const token = /name="_token"\svalue="(?<token>\w+)"/.exec(initialPageContent)?.groups?.token; + if (token === undefined) throw new Error("couldn't grab token from xuid converter website"); + + const cookies = initialPageResponse.headers.get('set-cookie')?.split(' '); + if (cookies === undefined) + throw new Error("couldn't get response cookies from xuid converter website"); + else if (cookies.length < 11) throw new Error('xuid converter website sent unexpected cookies'); + + const requestBody = new URLSearchParams(); + requestBody.set('_token', token); + requestBody.set('gamertag', username); + + const resultPageResponse = await fetch('https://cxkes.me/xbox/xuid', { + method: 'post', + body: requestBody, + // prettier-ignore + headers: { + 'Host': 'www.cxkes.me', + 'Accept-Encoding': 'gzip, deflate,br', + 'Content-Length': Buffer.byteLength(requestBody.toString()).toString(), + 'Origin': 'https://www.cxkes.me', + 'DNT': '1', + 'Connection': 'keep-alive', + 'Referer': 'https://www.cxkes.me/xbox/xuid', + 'Cookie': `${cookies[0]} ${cookies[10].slice(0, cookies[10].length - 1)}`, + 'Upgrade-Insecure-Requests': '1', + 'Sec-Fectch-Dest': 'document', + 'Sec-Fetch-Mode': 'navigate', + 'Sec-Fetch-Site': 'same-origin', + 'Sec-Fetch-User': '?1', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0', + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8', + 'Accept-Language': 'es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3', + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + const resultPageContent = await resultPageResponse.text(); + let xuid: string | undefined; + if ((xuid = /id="xuidHex">(?<xuid>\w+)</.exec(resultPageContent)?.groups?.xuid) === undefined) { + throw new UserNotFoundError(username); + } + return `00000000-0000-0000-${xuid.substring(0, 4)}-${xuid.substring(4)}`; +} + +// https://gist.github.com/yushijinhun/69f68397c5bb5bee76e80d192295f6e0 +export function getCrackedUuid(username: string): string { + const data = createHash('md5').update(`OfflinePlayer:${username}`).digest('binary').split(''); + data[6] = String.fromCharCode((data[6].charCodeAt(0) & 0x0f) | 0x30); + data[8] = String.fromCharCode((data[8].charCodeAt(0) & 0x3f) | 0x80); + const uid = Buffer.from(data.join(''), 'ascii').toString('hex'); + // prettier-ignore + return `${uid.substring(0, 8)}-${uid.substring(8, 12)}-${uid.substring(12, 16)}-${uid.substring(16, 20)}-${uid.substring(20)}`; +} diff --git a/src/lib/stores.ts b/src/lib/stores.ts new file mode 100644 index 0000000..bcfcad4 --- /dev/null +++ b/src/lib/stores.ts @@ -0,0 +1,5 @@ +import { type Writable, writable } from 'svelte/store'; + +export const registered: Writable<{ + username: string; +} | null> = writable(null); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..594fa81 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,20 @@ +<script> + import '../app.css'; +</script> + +<nav class="navbar fixed top-0 bg-base-100 h-12 z-40"> + <div class="navbar-start h-full"> + <a class="h-full" href="/"> + <img class="rounded h-full" src="/img/craftattack-logo.webp" alt="Logo" /> + </a> + </div> + <div class="navbar-center flex space-x-20"> + <a class="link" href="/register">Anmelden</a> + <a class="link" href="/rules">Regeln</a> + </div> + <div class="navbar-end" /> +</nav> + +<main class="flex min-h-[calc(100vh-64px-16px)] mt-16 mb-4"> + <slot /> +</main> diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..44cb57f --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,12 @@ +<script lang="ts"> + import { PUBLIC_START_DATE } from '$env/static/public'; + import Timer from '$lib/components/Countdown/Countdown.svelte'; +</script> + +<svelte:head> + <title>Craftattack</title> +</svelte:head> + +<div class="w-full flex justify-center items-center"> + <Timer end={Date.parse(PUBLIC_START_DATE)} /> +</div> diff --git a/src/routes/+server.ts b/src/routes/+server.ts new file mode 100644 index 0000000..199760f --- /dev/null +++ b/src/routes/+server.ts @@ -0,0 +1,6 @@ +import type { RequestHandler } from '@sveltejs/kit'; +import { json } from '@sveltejs/kit'; + +export const POST = (() => { + return json({ scc: true }); +}) satisfies RequestHandler; diff --git a/src/routes/register/+layout.svelte b/src/routes/register/+layout.svelte new file mode 100644 index 0000000..e6e435a --- /dev/null +++ b/src/routes/register/+layout.svelte @@ -0,0 +1,3 @@ +<div class="flex justify-center w-full"> + <slot /> +</div> diff --git a/src/routes/register/+page.svelte b/src/routes/register/+page.svelte new file mode 100644 index 0000000..4b756f0 --- /dev/null +++ b/src/routes/register/+page.svelte @@ -0,0 +1,23 @@ +<script lang="ts"> + import { fly } from 'svelte/transition'; + import RegistrationComplete from './RegistrationComplete.svelte'; + import Register from './Register.svelte'; + + let registered = false; +</script> + +<svelte:head> + <title>Craftattack - Anmeldung</title> +</svelte:head> + +<div class="absolute top-12 grid card w-11/12 xl:w-2/3 2xl:w-1/2 p-6 shadow-lg overflow-hidden"> + {#if !registered} + <div class="col-[1] row-[1]" transition:fly={{ x: -200, duration: 300 }}> + <Register on:submit={() => (registered = true)} /> + </div> + {:else} + <div class="col-[1] row-[1]" transition:fly={{ x: 200, duration: 300 }}> + <RegistrationComplete on:close={() => (registered = false)} /> + </div> + {/if} +</div> diff --git a/src/routes/register/+server.ts b/src/routes/register/+server.ts new file mode 100644 index 0000000..f3836c5 --- /dev/null +++ b/src/routes/register/+server.ts @@ -0,0 +1,49 @@ +import { + getBedrockUuid, + getCrackedUuid, + getJavaUuid, + UserNotFoundError +} from '$lib/server/minecraft'; +import { error, type RequestHandler } from '@sveltejs/kit'; +import { User } from '$lib/server/database'; + +export const POST = (async ({ request }) => { + const data = await request.formData(); + + let uuid: string; + try { + // available playertypes are 'java', 'bedrock' and 'cracked' + switch (data.get('playertype')) { + case 'java': + uuid = await getJavaUuid(data.get('username') as string); + break; + case 'bedrock': + uuid = await getBedrockUuid(data.get('username') as string); + break; + case 'cracked': + uuid = getCrackedUuid(data.get('username') as string); + break; + default: + throw new Error(`invalid player type (${data.get('playertype')})`); + } + } catch (e) { + if (e instanceof UserNotFoundError) { + throw error(400, e.message); + } + console.error((e as Error).message); + return new Response(); + } + + await User.create({ + firstname: data.get('firstname'), + lastname: data.get('lastname'), + birthday: data.get('birthday'), + telephone: data.get('telephone'), + username: data.get('username'), + playertype: data.get('playertype'), + password: data.get('password'), + uuid: uuid + }); + + return new Response(); +}) satisfies RequestHandler; diff --git a/src/routes/register/Register.svelte b/src/routes/register/Register.svelte new file mode 100644 index 0000000..6ece409 --- /dev/null +++ b/src/routes/register/Register.svelte @@ -0,0 +1,221 @@ +<script lang="ts"> + import Select from '$lib/components/Input/Select.svelte'; + import Input from '$lib/components/Input/Input.svelte'; + import { createEventDispatcher, onMount } from 'svelte'; + + const dispatch = createEventDispatcher(); + + // eslint-disable-next-line @typescript-eslint/no-empty-function + let checkInputs = () => {}; + let playertype = 'java'; + let firstnameInput: HTMLInputElement; + let lastnameInput: HTMLInputElement; + let birthdayInput: HTMLInputElement; + let usernameInput: HTMLInputElement; + let privacyInput: HTMLInputElement; + let logsInput: HTMLInputElement; + let rulesInput: HTMLInputElement; + onMount(() => { + checkInputs = () => { + let allInputs = [ + firstnameInput, + lastnameInput, + birthdayInput, + usernameInput, + privacyInput, + logsInput, + rulesInput + ]; + if (!allInputs.every((v) => v.value || v.checked)) { + inputsInvalidMessage = 'Bitte fülle alle erforderlichen Felder aus'; + } else { + inputsInvalidMessage = null; + } + }; + }); + + async function sendRegister() { + // eslint-disable-next-line no-async-promise-executor + registerRequest = new Promise(async (resolve, reject) => { + const response = await fetch('/register', { + method: 'POST', + body: new FormData(document.forms[0]) + }); + if (response.ok) { + dispatch('submit', {}); + resolve(); + } else if (response.status < 500) { + reject(Error((await response.json()).message)); + } else { + reject(Error(`${response.statusText} (${response.status})`)); + } + }); + } + + let inputsInvalidMessage: string | null = 'Bitte fülle alle erforderlichen Felder aus'; + let registerRequest: Promise<void> | null = null; +</script> + +<h1 class="text-center text-3xl lg:text-5xl">Anmeldung</h1> +<form id="form" on:input={checkInputs} on:submit|preventDefault={sendRegister}> + <div class="divider">Persönliche Angaben</div> + <div class="mx-2 grid grid-cols-1 sm:grid-cols-2 gap-y-4"> + <Input + id="firstname" + name="firstname" + type="text" + required={true} + bind:inputElement={firstnameInput} + > + <span slot="label">Vorname</span> + </Input> + <Input + id="lastname" + name="lastname" + type="text" + required={true} + bind:inputElement={lastnameInput} + > + <span slot="label">Nachname</span> + </Input> + <Input + id="birthday" + name="birthday" + type="date" + required={true} + bind:inputElement={birthdayInput} + > + <span slot="label">Geburtstag</span> + <span slot="notice">Die Angabe hat keine Auswirkungen auf das Spielgeschehen</span> + </Input> + <Input id="telephone" name="telephone" type="tel"> + <span slot="label">Telefonnummer</span> + <p slot="notice"> + Diese nutzen wir, um Dich in der Whatsapp-Gruppe zuzuordnen und kontaktieren zu können. + <br /> + <b>Die Angabe ist freiwillig, hilft den Administratoren jedoch sehr!</b> + </p> + </Input> + </div> + <div class="divider">Spiel</div> + <div class="mx-2 grid grid-cols-1 sm:grid-cols-2 gap-y-4"> + <Input + id="username" + name="username" + type="text" + required={true} + bind:inputElement={usernameInput} + > + <span slot="label">Minecraft-Spielername</span> + </Input> + <Select + id="playertype" + name="playertype" + label="Edition" + bind:value={playertype} + required={true} + > + <option value="java">Java Edition</option> + <option value="bedrock">Bedrock Edition</option> + <option value="cracked">Java cracked</option> + </Select> + {#if playertype === 'cracked'} + <div class="sm:col-span-2"> + <Input id="password" name="password" type="password" required={true}> + <span slot="label">Passwort</span> + <span slot="notice"> + Da Du cracked spielst, musst Du ein Passwort festlegen, mit welchem Du Dich auf dem + Server authentifizierst! Das Passwort wird im Klartext gespeichert und ist in deinen + Clientlogs sowie in Serverlogs für Admins sichtbar. Verwende daher ein neues Passwort, + welches Du nirgends sonst verwendest! Merke Dir das Passwort gut, ohne kannst Du Dich + nicht auf dem Server einloggen + </span> + </Input> + </div> + {/if} + </div> + <div class="divider" /> + <div class="mx-2 grid gap-y-3 mb-6"> + <div class="flex gap-4"> + <Input + id="privacy" + name="privacy" + type="checkbox" + required={true} + bind:inputElement={privacyInput} + /> + <label for="privacy"> + <span> + Ich bin mit der Speicherung meiner in der Anmeldung angegebenen, persönlichen Daten + einverstanden. Siehe <a class="link" href="https://mhsl.eu/id.html">Datenschutz</a> + </span> + <span class="text-red-700">*</span> + </label> + </div> + <div class="flex gap-4"> + <Input id="logs" name="logs" type="checkbox" required={true} bind:inputElement={logsInput} /> + <label for="logs"> + <span> + Ich bin mit der Speicherung in Form von Logs aller meiner, beim Spielen anfallenden, + persönlichen Daten durch den Server einverstanden + </span> + <span class="text-red-700">*</span> + </label> + </div> + <div class="flex gap-4"> + <Input + id="rules" + name="rules" + type="checkbox" + required={true} + bind:inputElement={rulesInput} + /> + <label for="rules"> + Ich bin mit den <a class="link" href="/rules">Regeln</a> einverstanden und achte sie + <span class="text-red-700">*</span> + <br /> + <p class="text-[.75rem]"> + Dies betrifft jede Interaktion im Spiel und zugehörige Daten wie z.B. Chatnachrichten + welche vom Minecraft Client an den Server übermittelt werden + </p> + </label> + </div> + </div> + <div + class={inputsInvalidMessage !== null ? 'tooltip tooltip-top' : 'grid w-min'} + data-tip={inputsInvalidMessage} + > + <div class="row-[1] col-[1]"> + <Input + id="submit" + type="submit" + value="Anmeldung absenden" + disabled={inputsInvalidMessage !== null || registerRequest !== null} + /> + </div> + {#key registerRequest} + {#if registerRequest} + {#await registerRequest} + <span + class="relative top-[calc(50%-12px)] left-[calc(50%-12px)] row-[1] col-[1] loading loading-ring" + /> + {:catch error} + <dialog + class="modal" + on:close={() => setTimeout(() => (registerRequest = null), 200)} + open + > + <form method="dialog" class="modal-box"> + <button class="btn btn-sm btn-circle btn-ghost absolute right-2 top-2">✕</button> + <h3 class="font-bold text-lg">Error</h3> + <p class="py-4">{error.message}</p> + </form> + <form method="dialog" class="modal-backdrop bg-[rgba(0,0,0,.2)]"> + <button>close</button> + </form> + </dialog> + {/await} + {/if} + {/key} + </div> +</form> diff --git a/src/routes/register/RegistrationComplete.svelte b/src/routes/register/RegistrationComplete.svelte new file mode 100644 index 0000000..9e6dfe5 --- /dev/null +++ b/src/routes/register/RegistrationComplete.svelte @@ -0,0 +1,32 @@ +<script lang="ts"> + import { IconSolid } from 'svelte-heros-v2'; + import { createEventDispatcher } from 'svelte'; + import { PUBLIC_START_DATE } from '$env/static/public'; + + const dispatch = createEventDispatcher(); + + let startDayOptions: Intl.DateTimeFormatOptions = { + day: '2-digit', + month: 'long', + year: 'numeric' + }; + let startTimeOptions: Intl.DateTimeFormatOptions = { + hour: '2-digit', + minute: '2-digit' + }; +</script> + +<div class="flex items-center h-12 mb-2"> + <button class="sm:absolute btn btn-sm btn-square" on:click={() => dispatch('close')}> + <IconSolid name="chevron-left-solid" /> + </button> + <h1 class="text-center text-xl sm:text-3xl m-auto">Registrierung erfolgreich</h1> +</div> +<p> + <b>Du hast dich erfolgreich für Craftattack 6 registriert</b>. Spielstart ist am {new Date( + PUBLIC_START_DATE + ).toLocaleString('de-DE', startDayOptions)} um {new Date(PUBLIC_START_DATE).toLocaleString( + 'de-DE', + startTimeOptions + )} Uhr. +</p> diff --git a/src/routes/rules/+layout.svelte b/src/routes/rules/+layout.svelte new file mode 100644 index 0000000..ed86e57 --- /dev/null +++ b/src/routes/rules/+layout.svelte @@ -0,0 +1,3 @@ +<div class="mx-4 sm:mx-48"> + <slot /> +</div> diff --git a/src/routes/rules/+page.svelte b/src/routes/rules/+page.svelte new file mode 100644 index 0000000..6838b1b --- /dev/null +++ b/src/routes/rules/+page.svelte @@ -0,0 +1,121 @@ +<svelte:head> + <title>Craftattack - Regeln</title> +</svelte:head> + +<h1 class="text-3xl lg:text-5xl mb-4">CraftAttack 5 Regelwerk</h1> +<p> + Das Lesen der Regeln ist für alle Teilnehmer verpflichtend. Die Regeln sollen für einen + reibungslosen und strukturierte Ablauf des Projekts sorgen, weshalb das Lesen der Regeln ein + essenzieller Bestandteil für das Gelingen von CraftAttack 5 ist. Die Regeln sind wörtlich zu + verstehen und sind Grundlage für das Projekt. Zur Vereinfachung gehen sie nicht zu weit ins Detail + und deuten teils nur umfangreiche Themengebiete an. Entscheidungen werden, wenn von Spielern + angeregt, dann durch die Administratoren getroffen, die sich an den Regeln orientieren. +</p> +<ol class="p-[revert] list-decimal my-6"> + <li> + Oberste Priorität hat der respektvolle und tolerante Umgang der Spieler untereinander. Der + Spielspaß, der offene Umgang miteinander und die Interaktion aller steht im Vordergrund, weshalb + Drohungen, Belästigungen oder sonstige gegenüber anderen Spielern respektlose Aktivitäten + strengstens verboten sind und auch hart geahndet werden. + </li> + <li> + Selbstverständlich sind sämtliche Inhalte (Minecraft-Namen, Skins, Chat-Nachrichten, Links, + etc.) mit sexistischen, diskriminierenden, rassistischen, pornographischen oder illegalen + Inhalten nicht erlaubt. Außerdem ist es nicht gestattet, den Chat mit Nachrichten jeglicher Art + vollzuspammen. Des Weiteren sollte der MC-Name des Spielers, der bei der Anmeldung angegeben + wird, bis zum Ende des Projekts nicht geändert werden. Das Nutzen bzw. Anmelden von + Zweitaccounts ist nicht gestattet. + </li> + <li> + Jegliche Clientmodifications, die deutliche Vorteile gegenüber anderen Spielern erbringen, sind + nicht gestattet. Alle Spieler, die kein Minecraft Vanilla spielen, sind verpflichtet ihre + Clients oder Modifications dahingehend zu überprüfen, ob durch diese entscheidende Vorteile + erlangt werden können. Solche Modifications sind zu entfernen. Das Nutzen von simplen Mini-Maps + (Draufsicht) oder Cosmetics ist selbstverständlich erlaubt. Es liegt im Allgemeinen im Interesse + der Administratoren, dass Spieler es nicht übertreiben und sich keine Vorteile schaffen, die + gegenüber anderen ungerecht sind. Dabei setzen die Administratoren auch auf eine Selbstreflexion + jedes einzelnen. Im Zweifel sind Spieler dazu angehalten, einen Administrator zu kontaktieren, + der genauer Informationen übermitteln kann. + </li> + <li> + Das Erbauen und Betreiben lag-erzeugender Maschinen, Farmen (Zero-Tick-Farmen etc.) oder andere + Bauten, die den Spielfluss stören könnten, ist verboten. Im Zweifelsfall ist eine Anfrage bei + den Administratoren erwünscht. Bei beispielsweise Farmen oder allgemeinen Redstone Schaltung + sollten diese auch nur dann aktiviert werden, wenn nötig. Außerdem sollten überdimensional große + Villager-Baukomplexe nur in Absprache mit Administratoren errichtet und betreiben werden. + Selbstverständlich ist das Erbauen von Farmen ein essenzieller Bestandteil des Projekts und + stellt auch kein Problem dar, solange die oben genannten Bedingungen eingehalten werden. + </li> + <li> + Das Verkaufen von Items ist allgemein jedem Spieler überall gestattet. Jedoch bietet es sich an + und ist wünschenswert, die Shops aller Spieler in einem Shoppingdistrict gemeinsam anzusiedeln, + um die Interaktion zu fördern. Ein Shop muss sich innerhalb des ausgewiesenen Bereiches befinden + und muss ebenso über das dort bestehende Wegenetz erreichbar sein. Der Shoppingdistrict ist + ausschließlich zum Bauen von Shops vorgesehen. Mehrere Shops zu einem bestimmten Item sind + möglich und auch erwünscht. Diebstahl im Shoppingdistrict untersteht denselben Strafen wie + allgemeiner Diebstahl. Ein angemessener Abstand der privaten Strukturen vom Shoppingdisrict ist + einzuhalten. + </li> + <li> + Das Abstecken bestimmter Gebiete ist grundsätzlich erlaubt, jedoch sind unangemessen große + Grundstücke untersagt. Das maximale Maß ist im Einzelfall zu entscheiden. Die Grenzen bereits + abgesteckter Grundstücke sind unveränderlich. Im Fall von Inaktivität oder andere Beschwerden + beziehungsweise Verstöße ist ein Administrator zu kontaktieren. + </li> + <li> + Wie bereits angedeutet, ist das Ziel ein Umgang untereinander, der für keinen negative Aspekte + beinhaltet. So ist es beispielsweise nicht gestattet, andere zu bestehlen oder ohne Erlaubnis + Bauwerke anderer zu verändern. Dabei liegt natürlich eine gewisse Toleranzbereitschaft vor und + ein Spielraum, der allerdings nicht überschritten werden darf. Dies gilt sowohl für das + Bestehlen anderer als auch für Griefing (zerstören von Bauten anderer ohne Erlaubnis etc.). + Außerdem ist das Töten anderer ohne nachvollziehbaren Grund verboten. Natürlich ist auch hier + eine Bewertung jeder einzelnen Situation notwendig, weshalb eine Verallgemeinerung hier bewusst + nicht angeführt wird. Fest steht jedoch, dass klar zwischen einem Töten aus Spaß mit geringen + Folgen und einem mehrmaligen - ja sogar permanenten Töten anderer mit schlimmeren Folgen, + unterschieden wird. + </li> + <li> + Allgemein liegt es in der Hand der Administratoren einzelne Situation zu bewerten, Strafen zu + verhängen und Entscheidungen zu treffen. Ein internes Strikesystem der Administratoren sorgt für + eine Gleichberechtigung aller Spieler. Des Weiteren erfolgt eine Absprache unter den + Administratoren, um alle Sichtweisen miteinzubringen. Wichtig ist zusätzlich, dass alle + Entscheidungen der Administratoren im Sinne des Projekts getroffen werden. Den Entscheidungen + und Anweisungen der Administratoren ist stets Folge zu leisten, wenn diese als Administrator + fungieren. Im normalen Spielbetrieb sind sie normale Mitspieler ohne spielentscheidende + Sonderrechte. So ist es nicht ihre Aufgabe überall nach dem Rechten zu sehen, sondern + Ansprechpartner zu sein, um dann nach der Vorlegung eines Problems durch einen Geschädigten die + Administratorenrolle einzunehmen und dementsprechend zu handeln. In dem Feld ist einzutragen, + wobei die Regeln trotzdem bis zum Ende gelesen werden müssen. Allgemein gilt immer der + Grundsatz, dass ein Eingriff der Administratoren nur dann erfolgt, wenn dies die Spieler auch + fordern. Solange beide Parteien zufrieden sind, passiert natürlich auch nichts. Wenn also + beispielsweise zwei Spieler ein bewusstes pvp-Duell starten, zieht das logischer Weise keine + Konsequenzen nach sich. + </li> + <li> + Jedem Teilnehmer ist es möglich sich an den Support/das Administratoren-Team zu wenden. Zu den + Administratoren gehören die Spieler, die auf dem Server mit einem Admin-Tag versehen sind. Zwei + von diesen sind außerdem Administrator der WhatsApp-Gruppe. Eine Kontaktaufnahme ist direkt auf + dem Server im Chat oder auf dem Teamspeak: „mhsl.eu“ möglich. Außerdem können sie über WhatsApp + angeschrieben werden, wenn sich z.B. gerade kein Administrator auf dem Server befindet oder bei + anderen Rückfragen. Bei Unzufriedenheit, Meldung eines Regelverstoßen, Anregungen oder Fragen + steht das Administratoren-Team allen Spielern jederzeit zu Verfügung. + </li> + <li> + Konflikte sollen grundlegend zuerst auf einer Ebene zwischen den Spielern geschlichtet werden, + bevor ein Administrator kontaktiert wird. Jeder Regelverstoß zieht unterschiedliche Folgen nach + sich, die von Ermahnungen, über Tagesbänne bis zum permanenten Bann führen können. Diese + möglichen Konsequenzen sind von allen Teilnehmern zu akzeptieren. + </li> +</ol> +<p> + Alle aufgeführten Regeln und die damit in Verbindung stehende Angaben erfolgen ohne Gewähr auf + Vollständigkeit, Richtigkeit und Aktualität. Das Durchsetzen der Regeln liegt im Ermessen der + Administratoren, die vorher in Absprache mit dem Geschädigten eine der Situation angemessene + Maßnahmen getroffen haben. +</p> + +<style lang="postcss"> + li { + @apply mb-2; + } +</style> diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f12cd4effc036ff96d35bb661d3d591bebf284e1 GIT binary patch literal 3113 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 D7tOm3 literal 0 HcmV?d00001 diff --git a/static/fonts/MinecraftRegular.otf b/static/fonts/MinecraftRegular.otf new file mode 100644 index 0000000000000000000000000000000000000000..54f08ad42ae2c7e9eb4d46c7b621544e32cfc9a2 GIT binary patch literal 11016 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 literal 0 HcmV?d00001 diff --git a/static/fonts/Roboto-Regular.ttf b/static/fonts/Roboto-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ddf4bfacb396e97546364ccfeeb9c31dfaea4c25 GIT binary patch literal 168260 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≤FHXCuU9Qce=@vmZ{%9^5??OaVQJ8!4u8-w;yt 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 literal 0 HcmV?d00001 diff --git a/static/img/craftattack-logo.webp b/static/img/craftattack-logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..6eca57944c242169a1642f65e4dc72674a872c79 GIT binary patch literal 37202 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 literal 0 HcmV?d00001 diff --git a/svelte.config.js b/svelte.config.js new file mode 100644 index 0000000..2214c60 --- /dev/null +++ b/svelte.config.js @@ -0,0 +1,18 @@ +import adapter from '@sveltejs/adapter-node'; +import { vitePreprocess } from '@sveltejs/kit/vite'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter() + } +}; + +export default config; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..58f0a21 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,12 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{html,js,svelte,ts}'], + theme: { + extend: {}, + fontFamily: { + minecraft: ['Minecraft'], + roboto: ['Roboto'] + } + }, + plugins: [require('daisyui')] +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6ae0c8c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..c1c4797 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,9 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [sveltekit()], + test: { + include: ['src/**/*.{test,spec}.{ts,js}'] + } +});