From 8fd9a9ec2e02a5dceb9c6303334b6a1efd314d6c Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Tue, 19 Aug 2025 18:54:06 +0300 Subject: [PATCH 001/561] Add initial server-side project structure with laravel --- server/.editorconfig | 18 + server/.env.example | 65 + server/.gitattributes | 11 + server/.gitignore | 24 + server/README.md | 61 + server/app/Http/Controllers/Controller.php | 8 + server/app/Models/User.php | 48 + server/app/Providers/AppServiceProvider.php | 24 + server/artisan | 18 + server/bootstrap/app.php | 18 + server/bootstrap/cache/.gitignore | 2 + server/bootstrap/providers.php | 5 + server/composer.json | 76 + server/composer.lock | 8343 +++++++++++++++++ server/config/app.php | 126 + server/config/auth.php | 115 + server/config/cache.php | 108 + server/config/database.php | 174 + server/config/filesystems.php | 80 + server/config/logging.php | 132 + server/config/mail.php | 118 + server/config/queue.php | 112 + server/config/services.php | 38 + server/config/session.php | 217 + server/database/.gitignore | 1 + server/database/factories/UserFactory.php | 44 + .../0001_01_01_000000_create_users_table.php | 49 + .../0001_01_01_000001_create_cache_table.php | 35 + .../0001_01_01_000002_create_jobs_table.php | 57 + server/database/seeders/DatabaseSeeder.php | 23 + server/package.json | 17 + server/phpunit.xml | 34 + server/public/.htaccess | 25 + server/public/favicon.ico | 0 server/public/index.php | 20 + server/public/robots.txt | 2 + server/resources/css/app.css | 11 + server/resources/js/app.js | 1 + server/resources/js/bootstrap.js | 4 + server/resources/views/welcome.blade.php | 277 + server/routes/console.php | 8 + server/routes/web.php | 7 + server/storage/app/.gitignore | 4 + server/storage/app/private/.gitignore | 2 + server/storage/app/public/.gitignore | 2 + server/storage/framework/.gitignore | 9 + server/storage/framework/cache/.gitignore | 3 + .../storage/framework/cache/data/.gitignore | 2 + server/storage/framework/sessions/.gitignore | 2 + server/storage/framework/testing/.gitignore | 2 + server/storage/framework/views/.gitignore | 2 + server/storage/logs/.gitignore | 2 + server/tests/Feature/ExampleTest.php | 19 + server/tests/TestCase.php | 10 + server/tests/Unit/ExampleTest.php | 16 + server/vite.config.js | 13 + 56 files changed, 10644 insertions(+) create mode 100644 server/.editorconfig create mode 100644 server/.env.example create mode 100644 server/.gitattributes create mode 100644 server/.gitignore create mode 100644 server/README.md create mode 100644 server/app/Http/Controllers/Controller.php create mode 100644 server/app/Models/User.php create mode 100644 server/app/Providers/AppServiceProvider.php create mode 100644 server/artisan create mode 100644 server/bootstrap/app.php create mode 100644 server/bootstrap/cache/.gitignore create mode 100644 server/bootstrap/providers.php create mode 100644 server/composer.json create mode 100644 server/composer.lock create mode 100644 server/config/app.php create mode 100644 server/config/auth.php create mode 100644 server/config/cache.php create mode 100644 server/config/database.php create mode 100644 server/config/filesystems.php create mode 100644 server/config/logging.php create mode 100644 server/config/mail.php create mode 100644 server/config/queue.php create mode 100644 server/config/services.php create mode 100644 server/config/session.php create mode 100644 server/database/.gitignore create mode 100644 server/database/factories/UserFactory.php create mode 100644 server/database/migrations/0001_01_01_000000_create_users_table.php create mode 100644 server/database/migrations/0001_01_01_000001_create_cache_table.php create mode 100644 server/database/migrations/0001_01_01_000002_create_jobs_table.php create mode 100644 server/database/seeders/DatabaseSeeder.php create mode 100644 server/package.json create mode 100644 server/phpunit.xml create mode 100644 server/public/.htaccess create mode 100644 server/public/favicon.ico create mode 100644 server/public/index.php create mode 100644 server/public/robots.txt create mode 100644 server/resources/css/app.css create mode 100644 server/resources/js/app.js create mode 100644 server/resources/js/bootstrap.js create mode 100644 server/resources/views/welcome.blade.php create mode 100644 server/routes/console.php create mode 100644 server/routes/web.php create mode 100644 server/storage/app/.gitignore create mode 100644 server/storage/app/private/.gitignore create mode 100644 server/storage/app/public/.gitignore create mode 100644 server/storage/framework/.gitignore create mode 100644 server/storage/framework/cache/.gitignore create mode 100644 server/storage/framework/cache/data/.gitignore create mode 100644 server/storage/framework/sessions/.gitignore create mode 100644 server/storage/framework/testing/.gitignore create mode 100644 server/storage/framework/views/.gitignore create mode 100644 server/storage/logs/.gitignore create mode 100644 server/tests/Feature/ExampleTest.php create mode 100644 server/tests/TestCase.php create mode 100644 server/tests/Unit/ExampleTest.php create mode 100644 server/vite.config.js diff --git a/server/.editorconfig b/server/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/server/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/server/.env.example b/server/.env.example new file mode 100644 index 0000000..35db1dd --- /dev/null +++ b/server/.env.example @@ -0,0 +1,65 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +APP_LOCALE=en +APP_FALLBACK_LOCALE=en +APP_FAKER_LOCALE=en_US + +APP_MAINTENANCE_DRIVER=file +# APP_MAINTENANCE_STORE=database + +PHP_CLI_SERVER_WORKERS=4 + +BCRYPT_ROUNDS=12 + +LOG_CHANNEL=stack +LOG_STACK=single +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=sqlite +# DB_HOST=127.0.0.1 +# DB_PORT=3306 +# DB_DATABASE=laravel +# DB_USERNAME=root +# DB_PASSWORD= + +SESSION_DRIVER=database +SESSION_LIFETIME=120 +SESSION_ENCRYPT=false +SESSION_PATH=/ +SESSION_DOMAIN=null + +BROADCAST_CONNECTION=log +FILESYSTEM_DISK=local +QUEUE_CONNECTION=database + +CACHE_STORE=database +# CACHE_PREFIX= + +MEMCACHED_HOST=127.0.0.1 + +REDIS_CLIENT=phpredis +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_SCHEME=null +MAIL_HOST=127.0.0.1 +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=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 + +VITE_APP_NAME="${APP_NAME}" diff --git a/server/.gitattributes b/server/.gitattributes new file mode 100644 index 0000000..fcb21d3 --- /dev/null +++ b/server/.gitattributes @@ -0,0 +1,11 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore +.styleci.yml export-ignore diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 0000000..b71b1ea --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,24 @@ +*.log +.DS_Store +.env +.env.backup +.env.production +.phpactor.json +.phpunit.result.cache +/.fleet +/.idea +/.nova +/.phpunit.cache +/.vscode +/.zed +/auth.json +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/storage/pail +/vendor +Homestead.json +Homestead.yaml +Thumbs.db diff --git a/server/README.md b/server/README.md new file mode 100644 index 0000000..75c347a --- /dev/null +++ b/server/README.md @@ -0,0 +1,61 @@ +

Laravel Logo

+ +

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

+ +## About Laravel + +Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: + +- [Simple, fast routing engine](https://laravel.com/docs/routing). +- [Powerful dependency injection container](https://laravel.com/docs/container). +- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. +- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). +- Database agnostic [schema migrations](https://laravel.com/docs/migrations). +- [Robust background job processing](https://laravel.com/docs/queues). +- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). + +Laravel is accessible, powerful, and provides tools required for large, robust applications. + +## Learning Laravel + +Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. + +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 thousands of 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 Partners program](https://partners.laravel.com). + +### Premium Partners + +- **[Vehikl](https://vehikl.com)** +- **[Tighten Co.](https://tighten.co)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel)** +- **[DevSquad](https://devsquad.com/hire-laravel-developers)** +- **[Redberry](https://redberry.international/laravel-development)** +- **[Active Logic](https://activelogic.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/server/app/Http/Controllers/Controller.php b/server/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..8677cd5 --- /dev/null +++ b/server/app/Http/Controllers/Controller.php @@ -0,0 +1,8 @@ + */ + use HasFactory, Notifiable; + + /** + * The attributes that are mass assignable. + * + * @var list + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var list + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * Get the attributes that should be cast. + * + * @return array + */ + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + } +} diff --git a/server/app/Providers/AppServiceProvider.php b/server/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/server/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ +handleCommand(new ArgvInput); + +exit($status); diff --git a/server/bootstrap/app.php b/server/bootstrap/app.php new file mode 100644 index 0000000..c183276 --- /dev/null +++ b/server/bootstrap/app.php @@ -0,0 +1,18 @@ +withRouting( + web: __DIR__.'/../routes/web.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware): void { + // + }) + ->withExceptions(function (Exceptions $exceptions): void { + // + })->create(); diff --git a/server/bootstrap/cache/.gitignore b/server/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/server/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/server/bootstrap/providers.php b/server/bootstrap/providers.php new file mode 100644 index 0000000..38b258d --- /dev/null +++ b/server/bootstrap/providers.php @@ -0,0 +1,5 @@ +=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "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.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "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.1.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%2Finflector", + "type": "tidelift" + } + ], + "time": "2025-08-10T19:31:58+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "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.1" + }, + "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": "2024-02-05T11:56:58+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "8c784d071debd117328803d86b2097615b457500" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", + "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", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "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.4.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2024-10-09T13:47:03+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "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.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:45:45+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.9.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "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.9.3" + }, + "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": "2025-03-27T13:37:11+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "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.2.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": "2025-03-27T13:27:01+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "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.7.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-03-27T12:30:47+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/30e286560c137526eccd4ce21b2de477ab0676d2", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2025-02-03T10:55:03+00:00" + }, + { + "name": "laravel/framework", + "version": "v12.25.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "2ee2ba94ae60efd24c7a787cbb1a2f82f714bb20" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/2ee2ba94ae60efd24c7a787cbb1a2f82f714bb20", + "reference": "2ee2ba94ae60efd24c7a787cbb1a2f82f714bb20", + "shasum": "" + }, + "require": { + "brick/math": "^0.11|^0.12|^0.13", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.4", + "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.3", + "guzzlehttp/guzzle": "^7.8.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.3.0", + "laravel/serializable-closure": "^1.3|^2.0", + "league/commonmark": "^2.7", + "league/flysystem": "^3.25.1", + "league/flysystem-local": "^3.25.1", + "league/uri": "^7.5.1", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^3.8.4", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^7.2.0", + "symfony/error-handler": "^7.2.0", + "symfony/finder": "^7.2.0", + "symfony/http-foundation": "^7.2.0", + "symfony/http-kernel": "^7.2.0", + "symfony/mailer": "^7.2.0", + "symfony/mime": "^7.2.0", + "symfony/polyfill-php83": "^1.31", + "symfony/polyfill-php84": "^1.31", + "symfony/polyfill-php85": "^1.31", + "symfony/process": "^7.2.0", + "symfony/routing": "^7.2.0", + "symfony/uid": "^7.2.0", + "symfony/var-dumper": "^7.2.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.6.1", + "voku/portable-ascii": "^2.0.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/log-implementation": "1.0|2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "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", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.322.9", + "ext-gmp": "*", + "fakerphp/faker": "^1.24", + "guzzlehttp/promises": "^2.0.3", + "guzzlehttp/psr7": "^2.4", + "laravel/pint": "^1.18", + "league/flysystem-aws-s3-v3": "^3.25.1", + "league/flysystem-ftp": "^3.25.1", + "league/flysystem-path-prefixing": "^3.25.1", + "league/flysystem-read-only": "^3.25.1", + "league/flysystem-sftp-v3": "^3.25.1", + "mockery/mockery": "^1.6.10", + "orchestra/testbench-core": "^10.6.0", + "pda/pheanstalk": "^5.0.6|^7.0.0", + "php-http/discovery": "^1.15", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", + "predis/predis": "^2.3|^3.0", + "resend/resend-php": "^0.10.0", + "symfony/cache": "^7.2.0", + "symfony/http-client": "^7.2.0", + "symfony/psr-http-message-bridge": "^7.2.0", + "symfony/translation": "^7.2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.322.9).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "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|^6.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", + "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", + "mockery/mockery": "Required to use mocking (^1.6).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.5.3|^12.0.1).", + "predis/predis": "Required to use the predis connector (^2.3|^3.0).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "12.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/functions.php", + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Support/functions.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "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": "2025-08-18T22:20:52+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.3.6", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "86a8b692e8661d0fb308cec64f3d176821323077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/86a8b692e8661d0fb308cec64f3d176821323077", + "reference": "86a8b692e8661d0fb308cec64f3d176821323077", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "illuminate/collections": "^10.0|^11.0|^12.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.3.6" + }, + "time": "2025-07-07T14:17:42+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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": "2025-03-19T13:51:03+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.10.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." + }, + "type": "library", + "extra": { + "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.10.1" + }, + "time": "2025-01-27T14:24:01+00:00" + }, + { + "name": "league/commonmark", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", + "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.31.1", + "commonmark/commonmark.js": "0.31.1", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.8-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": "2025-07-20T12:47:49+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.30.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e", + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3|^2", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2|^2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "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.30.0" + }, + "time": "2025-06-25T13:29:59+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.30.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10", + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10", + "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": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0" + }, + "time": "2025-05-21T10:34:19+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-09-21T08:32:55+00:00" + }, + { + "name": "league/uri", + "version": "7.5.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "81fb5145d2644324614cc532b28efd0215bda430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.5", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.5.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:40:02+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:18:47+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.9.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "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", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "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.9.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2025-03-24T10:02:05+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.10.2", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24", + "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "<100.0", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3.12 || ^7.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.75.0", + "kylekatarnls/multi-tester": "^2.5.3", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.17", + "phpunit/phpunit": "^10.5.46", + "squizlabs/php_codesniffer": "^3.13.0" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, + "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/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/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": "2025-08-02T09:36:06+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.4" + }, + "require-dev": { + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-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.3.2" + }, + "time": "2024-10-06T23:10:23+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.8", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.5" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/tester": "^2.5", + "phpstan/phpstan-nette": "^2.0@stable", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "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.8" + }, + "time": "2025-08-06T21:43:34+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.6.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-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/v5.6.1" + }, + "time": "2025-08-13T20:13:15+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "dfa08f390e509967a15c22493dc0bac5733d9123" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dfa08f390e509967a15c22493dc0bac5733d9123", + "reference": "dfa08f390e509967a15c22493dc0bac5733d9123", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.2.6" + }, + "require-dev": { + "illuminate/console": "^11.44.7", + "laravel/pint": "^1.22.0", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0 || ^3.8.2", + "phpstan/phpstan": "^1.12.25", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.2.6", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "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/v2.3.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": "2025-05-08T08:14:37+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.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.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:41:07+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "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": "PSR-17: 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" + }, + "time": "2024-04-15T12:06:14+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.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "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.2" + }, + "time": "2024-09-11T13:17:53+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.12.10", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/6e80abe6f2257121f1eb9a4c55bf29d921025b22", + "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "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." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.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" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "https://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.10" + }, + "time": "2025-08-04T12:39:37+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.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "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.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.9.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "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.9.0" + }, + "time": "2025-06-25T14:20:11+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.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": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/console", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/5f360ebc65c55265a74d23d7fe27f957870158a1", + "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "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/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-30T17:13:41+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.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": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "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.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^6.4|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/webpack-encore-bundle": "^1.0|^2.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/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-07T08:17:57+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.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": "2025-04-22T09:11:45+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "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.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6877c122b3a6cc3695849622720054f6e6fa5fa6", + "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "symfony/clock": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "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/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-10T08:47:49+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "6ecc895559ec0097e221ed2fd5eb44d5fede083c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6ecc895559ec0097e221ed2fd5eb44d5fede083c", + "reference": "6ecc895559ec0097e221ed2fd5eb44d5fede083c", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^7.3", + "symfony/http-foundation": "^7.3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^7.1", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "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/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-31T10:45:04+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d43e84d9522345f96ad6283d5dfccc8c1cfc299b", + "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^7.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" + }, + "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/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:36:08+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" + }, + "type": "library", + "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/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-10T14:38:51+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T08:10:11+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "000df7860439609837bbe28670b0be15783b7fbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/000df7860439609837bbe28670b0be15783b7fbf", + "reference": "000df7860439609837bbe28670b0be15783b7fbf", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-02-20T12:04:08+00:00" + }, + { + "name": "symfony/polyfill-php85", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "6fedf31ce4e3648f4ff5ca58bfd53127d38f05fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/6fedf31ce4e3648f4ff5ca58bfd53127d38f05fd", + "reference": "6fedf31ce4e3648f4ff5ca58bfd53127d38f05fd", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-05-02T08:40:52+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.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": "2025-04-17T09:11:12+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" + }, + "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/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:36:08+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "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.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-25T09:37:31+00:00" + }, + { + "name": "symfony/string", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/42f505aff654e62ac7ac2ce21033818297ca89ca", + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-10T08:47:49+00:00" + }, + { + "name": "symfony/translation", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "81b48f4daa96272efcce9c7a6c4b58e629df3c90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/81b48f4daa96272efcce9c7a6c4b58e629df3c90", + "reference": "81b48f4daa96272efcce9c7a6c4b58e629df3c90", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "nikic/php-parser": "<5.0", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-30T17:31:46+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "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.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-27T08:32:26+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.3.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-27T19:55:54+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "53205bea27450dc5c65377518b3275e126d45e75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/53205bea27450dc5c65377518b3275e126d45e75", + "reference": "53205bea27450dc5c65377518b3275e126d45e75", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "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/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-29T20:02:46+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" + }, + "time": "2024-12-21T16:25:41+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.2", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.3", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-04-30T23:37:27+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "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": "https://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.3" + }, + "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": "2024-11-21T01:49:47+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.24.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" + }, + "time": "2024-11-21T13:46:39+00:00" + }, + { + "name": "filp/whoops", + "version": "2.18.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.18.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-08-08T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.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.1.1" + }, + "time": "2025-04-30T06:54:44+00:00" + }, + { + "name": "laravel/pail", + "version": "v1.2.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "8cc3d575c1f0e57eeb923f366a37528c50d2385a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/8cc3d575c1f0e57eeb923f366a37528c50d2385a", + "reference": "8cc3d575c1f0e57eeb923f366a37528c50d2385a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0|^12.0", + "illuminate/contracts": "^10.24|^11.0|^12.0", + "illuminate/log": "^10.24|^11.0|^12.0", + "illuminate/process": "^10.24|^11.0|^12.0", + "illuminate/support": "^10.24|^11.0|^12.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0|^12.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.13|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0", + "phpstan/phpstan": "^1.12.27", + "symfony/var-dumper": "^6.3|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Pail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", + "keywords": [ + "dev", + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2025-06-05T13:55:57+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/0345f3b05f136801af8c339f9d16ef29e6b4df8a", + "reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.82.2", + "illuminate/view": "^11.45.1", + "larastan/larastan": "^3.5.0", + "laravel-zero/framework": "^11.45.0", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^2.3.1", + "pestphp/pest": "^2.36.0" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "files": [ + "overrides/Runner/Parallel/ProcessFactory.php" + ], + "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": "2025-07-10T18:09:32+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.44.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "a09097bd2a8a38e23ac472fa6a6cf5b0d1c1d3fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/a09097bd2a8a38e23ac472fa6a6cf5b0d1c1d3fe", + "reference": "a09097bd2a8a38e23ac472fa6a6cf5b0d1c1d3fe", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "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": "2025-07-04T16:17:06+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.12", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" + }, + "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": "2024-05-16T03:13:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "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", + "phpspec/prophecy": "^1.10", + "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.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v8.8.2", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.18.1", + "nunomaduro/termwind": "^2.3.1", + "php": "^8.2.0", + "symfony/console": "^7.3.0" + }, + "conflict": { + "laravel/framework": "<11.44.2 || >=13.0.0", + "phpunit/phpunit": "<11.5.15 || >=13.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.8.3", + "larastan/larastan": "^3.4.2", + "laravel/framework": "^11.44.2 || ^12.18", + "laravel/pint": "^1.22.1", + "laravel/sail": "^1.43.1", + "laravel/sanctum": "^4.1.1", + "laravel/tinker": "^2.10.1", + "orchestra/testbench-core": "^9.12.0 || ^10.4", + "pestphp/pest": "^3.8.2", + "sebastian/environment": "^7.2.1 || ^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" + } + }, + "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", + "dev", + "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": "2025-06-25T02:12:12+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "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.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+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": "11.0.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "1a800a7446add2d79cc6b3c01c45381810367d76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1a800a7446add2d79cc6b3c01c45381810367d76", + "reference": "1a800a7446add2d79cc6b3c01c45381810367d76", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.4.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-text-template": "^4.0.1", + "sebastian/code-unit-reverse-lookup": "^4.0.1", + "sebastian/complexity": "^4.0.1", + "sebastian/environment": "^7.2.0", + "sebastian/lines-of-code": "^3.0.1", + "sebastian/version": "^5.0.2", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^11.5.2" + }, + "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": "11.0.x-dev" + } + }, + "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/show" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2025-06-18T08:56:18+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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", + "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/5.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-27T05:02:59+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "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", + "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", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:07:44+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:08:43+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "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", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:09:35+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "11.5.33", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "5965e9ff57546cb9137c0ff6aa78cb7442b05cf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5965e9ff57546cb9137c0ff6aa78cb7442b05cf6", + "reference": "5965e9ff57546cb9137c0ff6aa78cb7442b05cf6", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0.10", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-invoker": "^5.0.1", + "phpunit/php-text-template": "^4.0.1", + "phpunit/php-timer": "^7.0.1", + "sebastian/cli-parser": "^3.0.2", + "sebastian/code-unit": "^3.0.3", + "sebastian/comparator": "^6.3.2", + "sebastian/diff": "^6.0.2", + "sebastian/environment": "^7.2.1", + "sebastian/exporter": "^6.3.0", + "sebastian/global-state": "^7.0.2", + "sebastian/object-enumerator": "^6.0.1", + "sebastian/type": "^5.1.3", + "sebastian/version": "^5.0.2", + "staabm/side-effects-detector": "^1.0.5" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.33" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2025-08-16T05:19:02+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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 parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:41:36+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.5" + }, + "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": "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", + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-19T07:56:08+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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" + } + ], + "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", + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:45:54+00:00" + }, + { + "name": "sebastian/comparator", + "version": "6.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85c77556683e6eee4323e4c5468641ca0237e2e8", + "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.4" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2025-08-10T08:07:46+00:00" + }, + { + "name": "sebastian/complexity", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:49:50+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "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" + }, + { + "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/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:53:05+00:00" + }, + { + "name": "sebastian/environment", + "version": "7.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.2-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/7.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" + } + ], + "time": "2025-05-21T11:55:47+00:00" + }, + { + "name": "sebastian/exporter", + "version": "6.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/3473f61172093b2da7de1fb5782e1f24cc036dc3", + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-12-05T09:17:50+00:00" + }, + { + "name": "sebastian/global-state", + "version": "7.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.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": "https://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/7.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:57:36+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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 counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:58:38+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.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": "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", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:00:13+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.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" + } + ], + "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", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:01:32+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "6.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "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" + }, + { + "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", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-13T04:42:22+00:00" + }, + { + "name": "sebastian/type", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "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", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" + } + ], + "time": "2025-08-09T06:55:48+00:00" + }, + { + "name": "sebastian/version", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "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", + "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", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-09T05:16:32+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/b8d7d868da9eb0919e99c8830431ea087d6aae30", + "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-10T08:47:49+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "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.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.2" + }, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} diff --git a/server/config/app.php b/server/config/app.php new file mode 100644 index 0000000..423eed5 --- /dev/null +++ b/server/config/app.php @@ -0,0 +1,126 @@ + 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 + | the application so that it's available within Artisan commands. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. The timezone + | is set to "UTC" by default as it is suitable for most use cases. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by Laravel's translation / localization methods. This option can be + | set to any locale for which you plan to have translation strings. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), + + 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is utilized by Laravel's encryption services and should be set + | to a random, 32 character string to ensure that all encrypted values + | are secure. You should do this prior to deploying the application. + | + */ + + 'cipher' => 'AES-256-CBC', + + 'key' => env('APP_KEY'), + + 'previous_keys' => [ + ...array_filter( + explode(',', (string) env('APP_PREVIOUS_KEYS', '')) + ), + ], + + /* + |-------------------------------------------------------------------------- + | 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' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), + ], + +]; diff --git a/server/config/auth.php b/server/config/auth.php new file mode 100644 index 0000000..7d1eb0d --- /dev/null +++ b/server/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => env('AUTH_GUARD', 'web'), + 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | which utilizes session storage plus the Eloquent user provider. + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | If you have multiple user tables or models you may configure multiple + | providers to represent the model / table. These providers may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => env('AUTH_MODEL', App\Models\User::class), + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | These configuration options specify the behavior of Laravel's password + | reset functionality, including the table utilized for token storage + | and the user provider that is invoked to actually retrieve users. + | + | 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' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the number of seconds before a password confirmation + | window expires and users are asked to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), + +]; diff --git a/server/config/cache.php b/server/config/cache.php new file mode 100644 index 0000000..c2d927d --- /dev/null +++ b/server/config/cache.php @@ -0,0 +1,108 @@ + env('CACHE_STORE', 'database'), + + /* + |-------------------------------------------------------------------------- + | 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: "array", "database", "file", "memcached", + | "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_CACHE_CONNECTION'), + 'table' => env('DB_CACHE_TABLE', 'cache'), + 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), + 'lock_table' => env('DB_CACHE_LOCK_TABLE'), + ], + + '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' => env('REDIS_CACHE_CONNECTION', 'cache'), + 'lock_connection' => env('REDIS_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, and 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((string) env('APP_NAME', 'laravel')).'-cache-'), + +]; diff --git a/server/config/database.php b/server/config/database.php new file mode 100644 index 0000000..5b318f5 --- /dev/null +++ b/server/config/database.php @@ -0,0 +1,174 @@ + env('DB_CONNECTION', 'sqlite'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Below are all of the database connections defined for your application. + | An example configuration is provided for each database system which + | is supported by Laravel. You're free to add / remove connections. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DB_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + 'busy_timeout' => null, + 'journal_mode' => null, + 'synchronous' => null, + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_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'), + ]) : [], + ], + + 'mariadb' => [ + 'driver' => 'mariadb', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_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('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_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 on the database. + | + */ + + 'migrations' => [ + 'table' => 'migrations', + 'update_date_on_publish' => true, + ], + + /* + |-------------------------------------------------------------------------- + | 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 Memcached. You may define your connection settings here. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-database-'), + 'persistent' => env('REDIS_PERSISTENT', false), + ], + + '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/server/config/filesystems.php b/server/config/filesystems.php new file mode 100644 index 0000000..3d671bd --- /dev/null +++ b/server/config/filesystems.php @@ -0,0 +1,80 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. + | + | Supported drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app/private'), + 'serve' => true, + 'throw' => false, + 'report' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + 'report' => 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, + 'report' => 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/server/config/logging.php b/server/config/logging.php new file mode 100644 index 0000000..9e998a4 --- /dev/null +++ b/server/config/logging.php @@ -0,0 +1,132 @@ + 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' => env('LOG_DEPRECATIONS_TRACE', false), + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Laravel + | utilizes the Monolog PHP logging library, which includes a variety + | of powerful log handlers and formatters that you're free to use. + | + | Available drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", "custom", "stack" + | + */ + + 'channels' => [ + + 'stack' => [ + 'driver' => 'stack', + 'channels' => explode(',', (string) env('LOG_STACK', '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' => env('LOG_DAILY_DAYS', 14), + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'), + 'emoji' => env('LOG_SLACK_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, + 'handler_with' => [ + 'stream' => 'php://stderr', + ], + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => env('LOG_SYSLOG_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/server/config/mail.php b/server/config/mail.php new file mode 100644 index 0000000..522b284 --- /dev/null +++ b/server/config/mail.php @@ -0,0 +1,118 @@ + env('MAIL_MAILER', 'log'), + + /* + |-------------------------------------------------------------------------- + | 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 that can be used + | when delivering an email. You may specify which one you're using for + | your mailers below. You may also add additional mailers if needed. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "resend", "log", "array", + | "failover", "roundrobin" + | + */ + + 'mailers' => [ + + 'smtp' => [ + 'transport' => 'smtp', + 'scheme' => env('MAIL_SCHEME'), + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', '127.0.0.1'), + 'port' => env('MAIL_PORT', 2525), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'), + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'resend' => [ + 'transport' => 'resend', + ], + + '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', + ], + 'retry_after' => 60, + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + 'retry_after' => 60, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all emails 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 emails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + +]; diff --git a/server/config/queue.php b/server/config/queue.php new file mode 100644 index 0000000..116bd8d --- /dev/null +++ b/server/config/queue.php @@ -0,0 +1,112 @@ + env('QUEUE_CONNECTION', 'database'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection options for every queue backend + | used by your application. An example configuration is provided for + | each backend supported by Laravel. You're also free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_QUEUE_CONNECTION'), + 'table' => env('DB_QUEUE_TABLE', 'jobs'), + 'queue' => env('DB_QUEUE', 'default'), + 'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90), + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), + 'queue' => env('BEANSTALKD_QUEUE', 'default'), + 'retry_after' => (int) env('BEANSTALKD_QUEUE_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' => env('REDIS_QUEUE_CONNECTION', 'default'), + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => (int) env('REDIS_QUEUE_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', 'sqlite'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control how and where failed jobs are stored. Laravel ships with + | support for storing failed jobs in a simple file or in a database. + | + | Supported drivers: "database-uuids", "dynamodb", "file", "null" + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/server/config/services.php b/server/config/services.php new file mode 100644 index 0000000..6182e4b --- /dev/null +++ b/server/config/services.php @@ -0,0 +1,38 @@ + [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'resend' => [ + 'key' => env('RESEND_KEY'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'slack' => [ + 'notifications' => [ + 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), + 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), + ], + ], + +]; diff --git a/server/config/session.php b/server/config/session.php new file mode 100644 index 0000000..f715097 --- /dev/null +++ b/server/config/session.php @@ -0,0 +1,217 @@ + env('SESSION_DRIVER', 'database'), + + /* + |-------------------------------------------------------------------------- + | 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 expire immediately when the browser is closed then you may + | indicate that via the expire_on_close configuration option. + | + */ + + 'lifetime' => (int) env('SESSION_LIFETIME', 120), + + 'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false), + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it's stored. All encryption is performed + | automatically by Laravel and you may use the session like normal. + | + */ + + 'encrypt' => env('SESSION_ENCRYPT', false), + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When utilizing the "file" session driver, the session files are placed + | on disk. The default storage location is defined here; however, you + | are free to provide another location where they should be stored. + | + */ + + '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 to + | be used to store sessions. Of course, a sensible default is defined + | for you; however, you're welcome to change this to another table. + | + */ + + 'table' => env('SESSION_TABLE', 'sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using one of the framework's cache driven session backends, you may + | define the cache store which should be used to store the session data + | between requests. This must match one of your defined cache stores. + | + | Affects: "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 session cookie that is created by + | the framework. Typically, you should not need to change this value + | since doing so does not grant a meaningful security improvement. + | + */ + + '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're free to change this when necessary. + | + */ + + 'path' => env('SESSION_PATH', '/'), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | This value determines the domain and subdomains the session cookie is + | available to. By default, the cookie will be available to the root + | domain and all subdomains. Typically, this shouldn't be changed. + | + */ + + '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. It's unlikely you should disable this option. + | + */ + + 'http_only' => env('SESSION_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" to permit secure cross-site requests. + | + | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => env('SESSION_SAME_SITE', 'lax'), + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => env('SESSION_PARTITIONED_COOKIE', false), + +]; diff --git a/server/database/.gitignore b/server/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/server/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/server/database/factories/UserFactory.php b/server/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/server/database/factories/UserFactory.php @@ -0,0 +1,44 @@ + + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('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/server/database/migrations/0001_01_01_000000_create_users_table.php b/server/database/migrations/0001_01_01_000000_create_users_table.php new file mode 100644 index 0000000..05fb5d9 --- /dev/null +++ b/server/database/migrations/0001_01_01_000000_create_users_table.php @@ -0,0 +1,49 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + + Schema::create('password_reset_tokens', function (Blueprint $table) { + $table->string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + + Schema::create('sessions', function (Blueprint $table) { + $table->string('id')->primary(); + $table->foreignId('user_id')->nullable()->index(); + $table->string('ip_address', 45)->nullable(); + $table->text('user_agent')->nullable(); + $table->longText('payload'); + $table->integer('last_activity')->index(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + Schema::dropIfExists('password_reset_tokens'); + Schema::dropIfExists('sessions'); + } +}; diff --git a/server/database/migrations/0001_01_01_000001_create_cache_table.php b/server/database/migrations/0001_01_01_000001_create_cache_table.php new file mode 100644 index 0000000..b9c106b --- /dev/null +++ b/server/database/migrations/0001_01_01_000001_create_cache_table.php @@ -0,0 +1,35 @@ +string('key')->primary(); + $table->mediumText('value'); + $table->integer('expiration'); + }); + + Schema::create('cache_locks', function (Blueprint $table) { + $table->string('key')->primary(); + $table->string('owner'); + $table->integer('expiration'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cache'); + Schema::dropIfExists('cache_locks'); + } +}; diff --git a/server/database/migrations/0001_01_01_000002_create_jobs_table.php b/server/database/migrations/0001_01_01_000002_create_jobs_table.php new file mode 100644 index 0000000..425e705 --- /dev/null +++ b/server/database/migrations/0001_01_01_000002_create_jobs_table.php @@ -0,0 +1,57 @@ +id(); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + + Schema::create('job_batches', function (Blueprint $table) { + $table->string('id')->primary(); + $table->string('name'); + $table->integer('total_jobs'); + $table->integer('pending_jobs'); + $table->integer('failed_jobs'); + $table->longText('failed_job_ids'); + $table->mediumText('options')->nullable(); + $table->integer('cancelled_at')->nullable(); + $table->integer('created_at'); + $table->integer('finished_at')->nullable(); + }); + + 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('jobs'); + Schema::dropIfExists('job_batches'); + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/server/database/seeders/DatabaseSeeder.php b/server/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..d01a0ef --- /dev/null +++ b/server/database/seeders/DatabaseSeeder.php @@ -0,0 +1,23 @@ +create(); + + User::factory()->create([ + 'name' => 'Test User', + 'email' => 'test@example.com', + ]); + } +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 0000000..a5707d8 --- /dev/null +++ b/server/package.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "dev": "vite" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.0.0", + "axios": "^1.11.0", + "concurrently": "^9.0.1", + "laravel-vite-plugin": "^2.0.0", + "tailwindcss": "^4.0.0", + "vite": "^7.0.4" + } +} diff --git a/server/phpunit.xml b/server/phpunit.xml new file mode 100644 index 0000000..5fd5bcf --- /dev/null +++ b/server/phpunit.xml @@ -0,0 +1,34 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + + + diff --git a/server/public/.htaccess b/server/public/.htaccess new file mode 100644 index 0000000..b574a59 --- /dev/null +++ b/server/public/.htaccess @@ -0,0 +1,25 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Handle X-XSRF-Token Header + RewriteCond %{HTTP:x-xsrf-token} . + RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/server/public/favicon.ico b/server/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/server/public/index.php b/server/public/index.php new file mode 100644 index 0000000..ee8f07e --- /dev/null +++ b/server/public/index.php @@ -0,0 +1,20 @@ +handleRequest(Request::capture()); diff --git a/server/public/robots.txt b/server/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/server/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/server/resources/css/app.css b/server/resources/css/app.css new file mode 100644 index 0000000..3e6abea --- /dev/null +++ b/server/resources/css/app.css @@ -0,0 +1,11 @@ +@import 'tailwindcss'; + +@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; +@source '../../storage/framework/views/*.php'; +@source '../**/*.blade.php'; +@source '../**/*.js'; + +@theme { + --font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol', 'Noto Color Emoji'; +} diff --git a/server/resources/js/app.js b/server/resources/js/app.js new file mode 100644 index 0000000..e59d6a0 --- /dev/null +++ b/server/resources/js/app.js @@ -0,0 +1 @@ +import './bootstrap'; diff --git a/server/resources/js/bootstrap.js b/server/resources/js/bootstrap.js new file mode 100644 index 0000000..5f1390b --- /dev/null +++ b/server/resources/js/bootstrap.js @@ -0,0 +1,4 @@ +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; diff --git a/server/resources/views/welcome.blade.php b/server/resources/views/welcome.blade.php new file mode 100644 index 0000000..c893b80 --- /dev/null +++ b/server/resources/views/welcome.blade.php @@ -0,0 +1,277 @@ + + + + + + + Laravel + + + + + + + @if (file_exists(public_path('build/manifest.json')) || file_exists(public_path('hot'))) + @vite(['resources/css/app.css', 'resources/js/app.js']) + @else + + @endif + + +
+ @if (Route::has('login')) + + @endif +
+
+
+
+

Let's get started

+

Laravel has an incredibly rich ecosystem.
We suggest starting with the following.

+ + +
+
+ {{-- Laravel Logo --}} + + + + + + + + + + + {{-- Light Mode 12 SVG --}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- Dark Mode 12 SVG --}} + +
+
+
+
+ + @if (Route::has('login')) + + @endif + + diff --git a/server/routes/console.php b/server/routes/console.php new file mode 100644 index 0000000..3c9adf1 --- /dev/null +++ b/server/routes/console.php @@ -0,0 +1,8 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/server/routes/web.php b/server/routes/web.php new file mode 100644 index 0000000..86a06c5 --- /dev/null +++ b/server/routes/web.php @@ -0,0 +1,7 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/server/tests/TestCase.php b/server/tests/TestCase.php new file mode 100644 index 0000000..fe1ffc2 --- /dev/null +++ b/server/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/server/vite.config.js b/server/vite.config.js new file mode 100644 index 0000000..29fbfe9 --- /dev/null +++ b/server/vite.config.js @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; +import tailwindcss from '@tailwindcss/vite'; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + tailwindcss(), + ], +}); From 6238d25fe4c0db2d0771846f453566f37658e7df Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Tue, 19 Aug 2025 23:27:47 +0300 Subject: [PATCH 002/561] initialize Next.js project with Tailwind CSS. --- client/slotify/.gitignore | 41 + client/slotify/README.md | 36 + client/slotify/eslint.config.mjs | 16 + client/slotify/next.config.ts | 7 + client/slotify/package-lock.json | 5748 ++++++++++++++++++++++++++++ client/slotify/package.json | 27 + client/slotify/postcss.config.mjs | 5 + client/slotify/public/file.svg | 1 + client/slotify/public/globe.svg | 1 + client/slotify/public/next.svg | 1 + client/slotify/public/vercel.svg | 1 + client/slotify/public/window.svg | 1 + client/slotify/src/app/favicon.ico | Bin 0 -> 25931 bytes client/slotify/src/app/globals.css | 26 + client/slotify/src/app/layout.tsx | 34 + client/slotify/src/app/page.tsx | 103 + client/slotify/tsconfig.json | 27 + 17 files changed, 6075 insertions(+) create mode 100644 client/slotify/.gitignore create mode 100644 client/slotify/README.md create mode 100644 client/slotify/eslint.config.mjs create mode 100644 client/slotify/next.config.ts create mode 100644 client/slotify/package-lock.json create mode 100644 client/slotify/package.json create mode 100644 client/slotify/postcss.config.mjs create mode 100644 client/slotify/public/file.svg create mode 100644 client/slotify/public/globe.svg create mode 100644 client/slotify/public/next.svg create mode 100644 client/slotify/public/vercel.svg create mode 100644 client/slotify/public/window.svg create mode 100644 client/slotify/src/app/favicon.ico create mode 100644 client/slotify/src/app/globals.css create mode 100644 client/slotify/src/app/layout.tsx create mode 100644 client/slotify/src/app/page.tsx create mode 100644 client/slotify/tsconfig.json diff --git a/client/slotify/.gitignore b/client/slotify/.gitignore new file mode 100644 index 0000000..5ef6a52 --- /dev/null +++ b/client/slotify/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/client/slotify/README.md b/client/slotify/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/client/slotify/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/client/slotify/eslint.config.mjs b/client/slotify/eslint.config.mjs new file mode 100644 index 0000000..c85fb67 --- /dev/null +++ b/client/slotify/eslint.config.mjs @@ -0,0 +1,16 @@ +import { dirname } from "path"; +import { fileURLToPath } from "url"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [ + ...compat.extends("next/core-web-vitals", "next/typescript"), +]; + +export default eslintConfig; diff --git a/client/slotify/next.config.ts b/client/slotify/next.config.ts new file mode 100644 index 0000000..e9ffa30 --- /dev/null +++ b/client/slotify/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/client/slotify/package-lock.json b/client/slotify/package-lock.json new file mode 100644 index 0000000..23c02d6 --- /dev/null +++ b/client/slotify/package-lock.json @@ -0,0 +1,5748 @@ +{ + "name": "slotify", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "slotify", + "version": "0.1.0", + "dependencies": { + "next": "15.4.7", + "react": "19.1.0", + "react-dom": "19.1.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "15.4.7", + "tailwindcss": "^4", + "typescript": "^5" + } + }, + "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/@emnapi/core": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", + "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", + "dev": true, + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", + "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", + "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "dev": true, + "dependencies": { + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz", + "integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz", + "integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz", + "integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz", + "integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz", + "integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz", + "integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz", + "integrity": "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz", + "integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz", + "integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz", + "integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz", + "integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz", + "integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz", + "integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz", + "integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz", + "integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz", + "integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz", + "integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz", + "integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz", + "integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.4.4" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz", + "integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz", + "integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz", + "integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@next/env": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.4.7.tgz", + "integrity": "sha512-PrBIpO8oljZGTOe9HH0miix1w5MUiGJ/q83Jge03mHEE0E3pyqzAy2+l5G6aJDbXoobmxPJTVhbCuwlLtjSHwg==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.4.7.tgz", + "integrity": "sha512-asj3RRiEruRLVr+k2ZC4hll9/XBzegMpFMr8IIRpNUYypG86m/a76339X2WETl1C53A512w2INOc2KZV769KPA==", + "dev": true, + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.4.7.tgz", + "integrity": "sha512-2Dkb+VUTp9kHHkSqtws4fDl2Oxms29HcZBwFIda1X7Ztudzy7M6XF9HDS2dq85TmdN47VpuhjE+i6wgnIboVzQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.4.7.tgz", + "integrity": "sha512-qaMnEozKdWezlmh1OGDVFueFv2z9lWTcLvt7e39QA3YOvZHNpN2rLs/IQLwZaUiw2jSvxW07LxMCWtOqsWFNQg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.4.7.tgz", + "integrity": "sha512-ny7lODPE7a15Qms8LZiN9wjNWIeI+iAZOFDOnv2pcHStncUr7cr9lD5XF81mdhrBXLUP9yT9RzlmSWKIazWoDw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.4.7.tgz", + "integrity": "sha512-4SaCjlFR/2hGJqZLLWycccy1t+wBrE/vyJWnYaZJhUVHccpGLG5q0C+Xkw4iRzUIkE+/dr90MJRUym3s1+vO8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.4.7.tgz", + "integrity": "sha512-2uNXjxvONyRidg00VwvlTYDwC9EgCGNzPAPYbttIATZRxmOZ3hllk/YYESzHZb65eyZfBR5g9xgCZjRAl9YYGg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.4.7.tgz", + "integrity": "sha512-ceNbPjsFgLscYNGKSu4I6LYaadq2B8tcK116nVuInpHHdAWLWSwVK6CHNvCi0wVS9+TTArIFKJGsEyVD1H+4Kg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.4.7.tgz", + "integrity": "sha512-pZyxmY1iHlZJ04LUL7Css8bNvsYAMYOY9JRwFA3HZgpaNKsJSowD09Vg2R9734GxAcLJc2KDQHSCR91uD6/AAw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.4.7.tgz", + "integrity": "sha512-HjuwPJ7BeRzgl3KrjKqD2iDng0eQIpIReyhpF5r4yeAHFwWRuAhfW92rWv/r3qeQHEwHsLRzFDvMqRjyM5DI6A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "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/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.12.0.tgz", + "integrity": "sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.12.tgz", + "integrity": "sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ==", + "dev": true, + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.5.1", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.12" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.12.tgz", + "integrity": "sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.12", + "@tailwindcss/oxide-darwin-arm64": "4.1.12", + "@tailwindcss/oxide-darwin-x64": "4.1.12", + "@tailwindcss/oxide-freebsd-x64": "4.1.12", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.12", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.12", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.12", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.12", + "@tailwindcss/oxide-linux-x64-musl": "4.1.12", + "@tailwindcss/oxide-wasm32-wasi": "4.1.12", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.12", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.12" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.12.tgz", + "integrity": "sha512-oNY5pq+1gc4T6QVTsZKwZaGpBb2N1H1fsc1GD4o7yinFySqIuRZ2E4NvGasWc6PhYJwGK2+5YT1f9Tp80zUQZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.12.tgz", + "integrity": "sha512-cq1qmq2HEtDV9HvZlTtrj671mCdGB93bVY6J29mwCyaMYCP/JaUBXxrQQQm7Qn33AXXASPUb2HFZlWiiHWFytw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.12.tgz", + "integrity": "sha512-6UCsIeFUcBfpangqlXay9Ffty9XhFH1QuUFn0WV83W8lGdX8cD5/+2ONLluALJD5+yJ7k8mVtwy3zMZmzEfbLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.12.tgz", + "integrity": "sha512-JOH/f7j6+nYXIrHobRYCtoArJdMJh5zy5lr0FV0Qu47MID/vqJAY3r/OElPzx1C/wdT1uS7cPq+xdYYelny1ww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.12.tgz", + "integrity": "sha512-v4Ghvi9AU1SYgGr3/j38PD8PEe6bRfTnNSUE3YCMIRrrNigCFtHZ2TCm8142X8fcSqHBZBceDx+JlFJEfNg5zQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.12.tgz", + "integrity": "sha512-YP5s1LmetL9UsvVAKusHSyPlzSRqYyRB0f+Kl/xcYQSPLEw/BvGfxzbH+ihUciePDjiXwHh+p+qbSP3SlJw+6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.12.tgz", + "integrity": "sha512-V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.12.tgz", + "integrity": "sha512-xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.12.tgz", + "integrity": "sha512-ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.12.tgz", + "integrity": "sha512-4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEBg==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.5", + "@emnapi/runtime": "^1.4.5", + "@emnapi/wasi-threads": "^1.0.4", + "@napi-rs/wasm-runtime": "^0.2.12", + "@tybys/wasm-util": "^0.10.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.12.tgz", + "integrity": "sha512-iGLyD/cVP724+FGtMWslhcFyg4xyYyM+5F4hGvKA7eifPkXHRAUDFaimu53fpNg9X8dfP75pXx/zFt/jlNF+lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.12.tgz", + "integrity": "sha512-NKIh5rzw6CpEodv/++r0hGLlfgT/gFN+5WNdZtvh6wpU2BpGNgdjvj6H2oFc8nCM839QM1YOhjpgbAONUb4IxA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.12.tgz", + "integrity": "sha512-5PpLYhCAwf9SJEeIsSmCDLgyVfdBhdBpzX1OJ87anT9IVR0Z9pjM0FNixCAUAHGnMBGB8K99SwAheXrT0Kh6QQ==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.12", + "@tailwindcss/oxide": "4.1.12", + "postcss": "^8.4.41", + "tailwindcss": "4.1.12" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", + "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.19.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.11.tgz", + "integrity": "sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==", + "dev": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.1.10", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.10.tgz", + "integrity": "sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==", + "dev": true, + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.7.tgz", + "integrity": "sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==", + "dev": true, + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.40.0.tgz", + "integrity": "sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/type-utils": "8.40.0", + "@typescript-eslint/utils": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.40.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.40.0.tgz", + "integrity": "sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.40.0.tgz", + "integrity": "sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==", + "dev": true, + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.40.0", + "@typescript-eslint/types": "^8.40.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.40.0.tgz", + "integrity": "sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.40.0.tgz", + "integrity": "sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.40.0.tgz", + "integrity": "sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/utils": "8.40.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.40.0.tgz", + "integrity": "sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.40.0.tgz", + "integrity": "sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/project-service": "8.40.0", + "@typescript-eslint/tsconfig-utils": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "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.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.40.0.tgz", + "integrity": "sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.40.0.tgz", + "integrity": "sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.40.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "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/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-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/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.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/caniuse-lite": { + "version": "1.0.30001735", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", + "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", + "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/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/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.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==", + "devOptional": 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==", + "devOptional": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "9.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", + "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.33.0", + "@eslint/plugin-kit": "^0.3.5", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-next": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.4.7.tgz", + "integrity": "sha512-tkKKNVJKI4zMIgTpvG2x6mmdhuOdgXUL3AaSPHwxLQkvzi4Yryqvk6B0R5Z4gkpe7FKopz3ZmlpePH3NTHy3gA==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "15.4.7", + "@rushstack/eslint-patch": "^1.10.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^5.0.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "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/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/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/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "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": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "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": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": 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-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "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==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "optional": true + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "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-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jiti": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", + "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "dev": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "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-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "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/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "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/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "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.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/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "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.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dev": true, + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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/napi-postinstall": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.3.tgz", + "integrity": "sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==", + "dev": true, + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "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/next": { + "version": "15.4.7", + "resolved": "https://registry.npmjs.org/next/-/next-15.4.7.tgz", + "integrity": "sha512-OcqRugwF7n7mC8OSYjvsZhhG1AYSvulor1EIUsIkbbEbf1qoE5EbH36Swj8WhF4cHqmDgkiam3z1c1W0J1Wifg==", + "dependencies": { + "@next/env": "15.4.7", + "@swc/helpers": "0.5.15", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.4.7", + "@next/swc-darwin-x64": "15.4.7", + "@next/swc-linux-arm64-gnu": "15.4.7", + "@next/swc-linux-arm64-musl": "15.4.7", + "@next/swc-linux-x64-gnu": "15.4.7", + "@next/swc-linux-x64-musl": "15.4.7", + "@next/swc-win32-arm64-msvc": "15.4.7", + "@next/swc-win32-x64-msvc": "15.4.7", + "sharp": "^0.34.3" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "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/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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-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/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "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/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "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.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "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": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "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/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "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/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sharp": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz", + "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.4", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.3", + "@img/sharp-darwin-x64": "0.34.3", + "@img/sharp-libvips-darwin-arm64": "1.2.0", + "@img/sharp-libvips-darwin-x64": "1.2.0", + "@img/sharp-libvips-linux-arm": "1.2.0", + "@img/sharp-libvips-linux-arm64": "1.2.0", + "@img/sharp-libvips-linux-ppc64": "1.2.0", + "@img/sharp-libvips-linux-s390x": "1.2.0", + "@img/sharp-libvips-linux-x64": "1.2.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0", + "@img/sharp-libvips-linuxmusl-x64": "1.2.0", + "@img/sharp-linux-arm": "0.34.3", + "@img/sharp-linux-arm64": "0.34.3", + "@img/sharp-linux-ppc64": "0.34.3", + "@img/sharp-linux-s390x": "0.34.3", + "@img/sharp-linux-x64": "0.34.3", + "@img/sharp-linuxmusl-arm64": "0.34.3", + "@img/sharp-linuxmusl-x64": "0.34.3", + "@img/sharp-wasm32": "0.34.3", + "@img/sharp-win32-arm64": "0.34.3", + "@img/sharp-win32-ia32": "0.34.3", + "@img/sharp-win32-x64": "0.34.3" + } + }, + "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/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "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/tailwindcss": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.12.tgz", + "integrity": "sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "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/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "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/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "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/client/slotify/package.json b/client/slotify/package.json new file mode 100644 index 0000000..e7481e1 --- /dev/null +++ b/client/slotify/package.json @@ -0,0 +1,27 @@ +{ + "name": "slotify", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "react": "19.1.0", + "react-dom": "19.1.0", + "next": "15.4.7" + }, + "devDependencies": { + "typescript": "^5", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "@tailwindcss/postcss": "^4", + "tailwindcss": "^4", + "eslint": "^9", + "eslint-config-next": "15.4.7", + "@eslint/eslintrc": "^3" + } +} diff --git a/client/slotify/postcss.config.mjs b/client/slotify/postcss.config.mjs new file mode 100644 index 0000000..c7bcb4b --- /dev/null +++ b/client/slotify/postcss.config.mjs @@ -0,0 +1,5 @@ +const config = { + plugins: ["@tailwindcss/postcss"], +}; + +export default config; diff --git a/client/slotify/public/file.svg b/client/slotify/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/client/slotify/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/slotify/public/globe.svg b/client/slotify/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/client/slotify/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/slotify/public/next.svg b/client/slotify/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/client/slotify/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/slotify/public/vercel.svg b/client/slotify/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/client/slotify/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/slotify/public/window.svg b/client/slotify/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/client/slotify/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/slotify/src/app/favicon.ico b/client/slotify/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/client/slotify/src/app/globals.css b/client/slotify/src/app/globals.css new file mode 100644 index 0000000..a2dc41e --- /dev/null +++ b/client/slotify/src/app/globals.css @@ -0,0 +1,26 @@ +@import "tailwindcss"; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + background: var(--background); + color: var(--foreground); + font-family: Arial, Helvetica, sans-serif; +} diff --git a/client/slotify/src/app/layout.tsx b/client/slotify/src/app/layout.tsx new file mode 100644 index 0000000..f7fa87e --- /dev/null +++ b/client/slotify/src/app/layout.tsx @@ -0,0 +1,34 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/client/slotify/src/app/page.tsx b/client/slotify/src/app/page.tsx new file mode 100644 index 0000000..a932894 --- /dev/null +++ b/client/slotify/src/app/page.tsx @@ -0,0 +1,103 @@ +import Image from "next/image"; + +export default function Home() { + return ( +
+
+ Next.js logo +
    +
  1. + Get started by editing{" "} + + src/app/page.tsx + + . +
  2. +
  3. + Save and see your changes instantly. +
  4. +
+ + +
+ +
+ ); +} diff --git a/client/slotify/tsconfig.json b/client/slotify/tsconfig.json new file mode 100644 index 0000000..c133409 --- /dev/null +++ b/client/slotify/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} From 0c4924f731aa7c0536f9e6459f3aaff86f62e409 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 20 Aug 2025 14:58:08 +0300 Subject: [PATCH 003/561] Add Dockerfile for PHP with Laravel setup --- docker-compose.yml | 0 server/Dockerfile | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 docker-compose.yml create mode 100644 server/Dockerfile diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e69de29 diff --git a/server/Dockerfile b/server/Dockerfile new file mode 100644 index 0000000..44c65c5 --- /dev/null +++ b/server/Dockerfile @@ -0,0 +1,29 @@ +# Use official PHP 8.2 FPM image +FROM php:8.2-fpm + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + git \ + unzip \ + libpq-dev \ + libonig-dev \ + curl \ + npm \ + && docker-php-ext-install pdo_pgsql mbstring + +# Set working directory inside container +WORKDIR /var/www/html + +# Copy composer files and install dependencies +COPY composer.json composer.lock ./ +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install + +# Copy the rest of your Laravel app +COPY . . + +# Expose port for Laravel dev server +EXPOSE 8000 + +# Start Laravel dev server +CMD php artisan serve --host=0.0.0.0 --port=8000 From 4864d49734a9ca9f812774ea467fce660b974cf7 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 20 Aug 2025 14:59:20 +0300 Subject: [PATCH 004/561] Add Dockerfile for Next.js application setup --- client/slotify/Dockerfile | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 client/slotify/Dockerfile diff --git a/client/slotify/Dockerfile b/client/slotify/Dockerfile new file mode 100644 index 0000000..ed14129 --- /dev/null +++ b/client/slotify/Dockerfile @@ -0,0 +1,20 @@ +# Use official Node.js 20 image +FROM node:20 + +# Set working directory inside container +WORKDIR /app + +# Copy package.json and package-lock.json +COPY package*.json ./ + +# Install dependencies +RUN npm install + +# Copy the rest of the app code +COPY . . + +# Expose Next.js dev port +EXPOSE 3000 + +# Start Next.js dev server with hot reload +CMD ["npm", "run", "dev"] From 69b259758e6e6daeb812643a70601360020f6e24 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 20 Aug 2025 15:00:03 +0300 Subject: [PATCH 005/561] Add docker-compose configuration for backend, frontend, and database services --- docker-compose.yml | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index e69de29..89299c4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -0,0 +1,44 @@ +version: '3.9' + +services: + backend: + build: ./backend + container_name: slotify-backend + volumes: + - ./backend:/var/www/html # Mount code for live reload + ports: + - "8000:8000" # Laravel dev server port + depends_on: + - db + environment: + DB_CONNECTION: pgsql + DB_HOST: db + DB_PORT: 5432 + DB_DATABASE: slotify + DB_USERNAME: postgres + DB_PASSWORD: yourpassword + + frontend: + build: ./frontend + container_name: slotify-frontend + volumes: + - ./frontend:/app # Mount code for live reload + ports: + - "3000:3000" # Next.js dev server port + environment: + NEXT_PUBLIC_API_URL: http://localhost:8000 + + db: + image: postgres:17 + container_name: slotify-db + environment: + POSTGRES_DB: slotify + POSTGRES_USER: postgres + POSTGRES_PASSWORD: yourpassword + ports: + - "5432:5432" + volumes: + - pgdata:/var/lib/postgresql/data + +volumes: + pgdata: From 04345e4980b9e68405f1975c8e1c50ee16d477dc Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 20 Aug 2025 15:52:43 +0300 Subject: [PATCH 006/561] moved next project directly into client folder --- client/{slotify => }/.gitignore | 0 client/{slotify => }/Dockerfile | 0 client/{slotify => }/README.md | 0 client/{slotify => }/eslint.config.mjs | 0 client/{slotify => }/next.config.ts | 0 client/{slotify => }/package-lock.json | 0 client/{slotify => }/package.json | 0 client/{slotify => }/postcss.config.mjs | 0 client/{slotify => }/public/file.svg | 0 client/{slotify => }/public/globe.svg | 0 client/{slotify => }/public/next.svg | 0 client/{slotify => }/public/vercel.svg | 0 client/{slotify => }/public/window.svg | 0 client/{slotify => }/src/app/favicon.ico | Bin client/{slotify => }/src/app/globals.css | 0 client/{slotify => }/src/app/layout.tsx | 0 client/{slotify => }/src/app/page.tsx | 0 client/{slotify => }/tsconfig.json | 0 docker-compose.yml | 8 ++++---- 19 files changed, 4 insertions(+), 4 deletions(-) rename client/{slotify => }/.gitignore (100%) rename client/{slotify => }/Dockerfile (100%) rename client/{slotify => }/README.md (100%) rename client/{slotify => }/eslint.config.mjs (100%) rename client/{slotify => }/next.config.ts (100%) rename client/{slotify => }/package-lock.json (100%) rename client/{slotify => }/package.json (100%) rename client/{slotify => }/postcss.config.mjs (100%) rename client/{slotify => }/public/file.svg (100%) rename client/{slotify => }/public/globe.svg (100%) rename client/{slotify => }/public/next.svg (100%) rename client/{slotify => }/public/vercel.svg (100%) rename client/{slotify => }/public/window.svg (100%) rename client/{slotify => }/src/app/favicon.ico (100%) rename client/{slotify => }/src/app/globals.css (100%) rename client/{slotify => }/src/app/layout.tsx (100%) rename client/{slotify => }/src/app/page.tsx (100%) rename client/{slotify => }/tsconfig.json (100%) diff --git a/client/slotify/.gitignore b/client/.gitignore similarity index 100% rename from client/slotify/.gitignore rename to client/.gitignore diff --git a/client/slotify/Dockerfile b/client/Dockerfile similarity index 100% rename from client/slotify/Dockerfile rename to client/Dockerfile diff --git a/client/slotify/README.md b/client/README.md similarity index 100% rename from client/slotify/README.md rename to client/README.md diff --git a/client/slotify/eslint.config.mjs b/client/eslint.config.mjs similarity index 100% rename from client/slotify/eslint.config.mjs rename to client/eslint.config.mjs diff --git a/client/slotify/next.config.ts b/client/next.config.ts similarity index 100% rename from client/slotify/next.config.ts rename to client/next.config.ts diff --git a/client/slotify/package-lock.json b/client/package-lock.json similarity index 100% rename from client/slotify/package-lock.json rename to client/package-lock.json diff --git a/client/slotify/package.json b/client/package.json similarity index 100% rename from client/slotify/package.json rename to client/package.json diff --git a/client/slotify/postcss.config.mjs b/client/postcss.config.mjs similarity index 100% rename from client/slotify/postcss.config.mjs rename to client/postcss.config.mjs diff --git a/client/slotify/public/file.svg b/client/public/file.svg similarity index 100% rename from client/slotify/public/file.svg rename to client/public/file.svg diff --git a/client/slotify/public/globe.svg b/client/public/globe.svg similarity index 100% rename from client/slotify/public/globe.svg rename to client/public/globe.svg diff --git a/client/slotify/public/next.svg b/client/public/next.svg similarity index 100% rename from client/slotify/public/next.svg rename to client/public/next.svg diff --git a/client/slotify/public/vercel.svg b/client/public/vercel.svg similarity index 100% rename from client/slotify/public/vercel.svg rename to client/public/vercel.svg diff --git a/client/slotify/public/window.svg b/client/public/window.svg similarity index 100% rename from client/slotify/public/window.svg rename to client/public/window.svg diff --git a/client/slotify/src/app/favicon.ico b/client/src/app/favicon.ico similarity index 100% rename from client/slotify/src/app/favicon.ico rename to client/src/app/favicon.ico diff --git a/client/slotify/src/app/globals.css b/client/src/app/globals.css similarity index 100% rename from client/slotify/src/app/globals.css rename to client/src/app/globals.css diff --git a/client/slotify/src/app/layout.tsx b/client/src/app/layout.tsx similarity index 100% rename from client/slotify/src/app/layout.tsx rename to client/src/app/layout.tsx diff --git a/client/slotify/src/app/page.tsx b/client/src/app/page.tsx similarity index 100% rename from client/slotify/src/app/page.tsx rename to client/src/app/page.tsx diff --git a/client/slotify/tsconfig.json b/client/tsconfig.json similarity index 100% rename from client/slotify/tsconfig.json rename to client/tsconfig.json diff --git a/docker-compose.yml b/docker-compose.yml index 89299c4..48640b9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,10 +2,10 @@ version: '3.9' services: backend: - build: ./backend + build: ./server container_name: slotify-backend volumes: - - ./backend:/var/www/html # Mount code for live reload + - ./server:/var/www/html # Mount code for live reload ports: - "8000:8000" # Laravel dev server port depends_on: @@ -19,10 +19,10 @@ services: DB_PASSWORD: yourpassword frontend: - build: ./frontend + build: ./client container_name: slotify-frontend volumes: - - ./frontend:/app # Mount code for live reload + - ./client:/app # Mount code for live reload ports: - "3000:3000" # Next.js dev server port environment: From 05717b1ee514bdfabeb4407708a5510bb399eea9 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 20 Aug 2025 16:47:15 +0300 Subject: [PATCH 007/561] Update .gitignore and Docker configurations for environment variables --- .gitignore | 3 ++- docker-compose.yml | 6 +++--- server/Dockerfile | 9 +++++---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 1795c8d..1e77674 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.history \ No newline at end of file +.history +.env \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 48640b9..702300d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,9 +32,9 @@ services: image: postgres:17 container_name: slotify-db environment: - POSTGRES_DB: slotify - POSTGRES_USER: postgres - POSTGRES_PASSWORD: yourpassword + POSTGRES_DB: ${POSTGRES_DB} + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} ports: - "5432:5432" volumes: diff --git a/server/Dockerfile b/server/Dockerfile index 44c65c5..8b3e5d1 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -14,13 +14,14 @@ RUN apt-get update && apt-get install -y \ # Set working directory inside container WORKDIR /var/www/html -# Copy composer files and install dependencies +# Copy composer files COPY composer.json composer.lock ./ -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer -RUN composer install - # Copy the rest of your Laravel app COPY . . +# Install Composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +# Install dependencies and run artisan commands now that artisan exists +RUN composer install && php artisan config:clear # Expose port for Laravel dev server EXPOSE 8000 From bb0de8e9bf4d81f9c17794d0cc4fe9847d24b8a6 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 20 Aug 2025 17:19:36 +0300 Subject: [PATCH 008/561] Refactor database environment variables in docker-compose.yml --- docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 702300d..9a9d17f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,9 +14,9 @@ services: DB_CONNECTION: pgsql DB_HOST: db DB_PORT: 5432 - DB_DATABASE: slotify - DB_USERNAME: postgres - DB_PASSWORD: yourpassword + DB_DATABASE: ${POSTGRES_DB} + DB_USERNAME: ${POSTGRES_USER} + DB_PASSWORD: ${POSTGRES_PASSWORD} frontend: build: ./client From 22644bcf16746726644848d0a0a99adf015a5a43 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 20 Aug 2025 21:56:00 +0300 Subject: [PATCH 009/561] chore: update client dependencies and improve docker setup --- client/.dockerignore | 10 + client/Dockerfile | 7 +- client/package-lock.json | 651 +++++++++++++++++++++++++++++++++++---- client/package.json | 15 +- docker-compose.yml | 3 +- server/.dockerignore | 15 + 6 files changed, 636 insertions(+), 65 deletions(-) create mode 100644 client/.dockerignore create mode 100644 server/.dockerignore diff --git a/client/.dockerignore b/client/.dockerignore new file mode 100644 index 0000000..c6d71ea --- /dev/null +++ b/client/.dockerignore @@ -0,0 +1,10 @@ +node_modules +npm-debug.log +*.log +.env +.next +out +dist +.DS_Store +coverage +*.local diff --git a/client/Dockerfile b/client/Dockerfile index ed14129..9f7f264 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -5,10 +5,13 @@ FROM node:20 WORKDIR /app # Copy package.json and package-lock.json -COPY package*.json ./ +COPY package.json package-lock.json ./ # Install dependencies -RUN npm install +RUN npm install && npm rebuild lightningcss + +# Debug: List node_modules/.bin and installed packages +RUN ls -l node_modules/.bin && npm list --depth=0 # Copy the rest of the app code COPY . . diff --git a/client/package-lock.json b/client/package-lock.json index 23c02d6..04fe38d 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -8,7 +8,10 @@ "name": "slotify", "version": "0.1.0", "dependencies": { + "autoprefixer": "^10.4.21", + "lightningcss": "^1.30.1", "next": "15.4.7", + "postcss": "^8.5.6", "react": "19.1.0", "react-dom": "19.1.0" }, @@ -29,6 +32,7 @@ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -41,6 +45,7 @@ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@emnapi/wasi-threads": "1.0.4", @@ -51,6 +56,7 @@ "version": "1.4.5", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" @@ -61,6 +67,7 @@ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" @@ -71,6 +78,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -89,6 +97,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -101,6 +110,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -110,6 +120,7 @@ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", @@ -124,6 +135,7 @@ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -133,6 +145,7 @@ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, @@ -145,6 +158,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -168,6 +182,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -180,6 +195,7 @@ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -189,6 +205,7 @@ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@eslint/core": "^0.15.2", "levn": "^0.4.1" @@ -202,6 +219,7 @@ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18.0" } @@ -211,6 +229,7 @@ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" @@ -224,6 +243,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -237,6 +257,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -250,6 +271,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -265,6 +287,7 @@ "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -286,6 +309,7 @@ "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -307,6 +331,7 @@ "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "darwin" @@ -322,6 +347,7 @@ "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "darwin" @@ -337,6 +363,7 @@ "cpu": [ "arm" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -352,6 +379,7 @@ "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -367,6 +395,7 @@ "cpu": [ "ppc64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -382,6 +411,7 @@ "cpu": [ "s390x" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -397,6 +427,7 @@ "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -412,6 +443,7 @@ "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -427,6 +459,7 @@ "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -442,6 +475,7 @@ "cpu": [ "arm" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -463,6 +497,7 @@ "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -484,6 +519,7 @@ "cpu": [ "ppc64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -505,6 +541,7 @@ "cpu": [ "s390x" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -526,6 +563,7 @@ "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -547,6 +585,7 @@ "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -568,6 +607,7 @@ "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -589,6 +629,7 @@ "cpu": [ "wasm32" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { "@emnapi/runtime": "^1.4.4" @@ -607,6 +648,7 @@ "cpu": [ "arm64" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ "win32" @@ -625,6 +667,7 @@ "cpu": [ "ia32" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ "win32" @@ -643,6 +686,7 @@ "cpu": [ "x64" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ "win32" @@ -659,6 +703,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.4" }, @@ -671,6 +716,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" @@ -681,6 +727,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -691,6 +738,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -699,13 +747,15 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.30", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -716,6 +766,7 @@ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@emnapi/core": "^1.4.3", @@ -726,13 +777,15 @@ "node_modules/@next/env": { "version": "15.4.7", "resolved": "https://registry.npmjs.org/@next/env/-/env-15.4.7.tgz", - "integrity": "sha512-PrBIpO8oljZGTOe9HH0miix1w5MUiGJ/q83Jge03mHEE0E3pyqzAy2+l5G6aJDbXoobmxPJTVhbCuwlLtjSHwg==" + "integrity": "sha512-PrBIpO8oljZGTOe9HH0miix1w5MUiGJ/q83Jge03mHEE0E3pyqzAy2+l5G6aJDbXoobmxPJTVhbCuwlLtjSHwg==", + "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { "version": "15.4.7", "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.4.7.tgz", "integrity": "sha512-asj3RRiEruRLVr+k2ZC4hll9/XBzegMpFMr8IIRpNUYypG86m/a76339X2WETl1C53A512w2INOc2KZV769KPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-glob": "3.3.1" } @@ -744,6 +797,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -759,6 +813,7 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -774,6 +829,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -789,6 +845,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -804,6 +861,7 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -819,6 +877,7 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -834,6 +893,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -849,6 +909,7 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -862,6 +923,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -875,6 +937,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -884,6 +947,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -897,6 +961,7 @@ "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.4.0" } @@ -905,18 +970,21 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@rushstack/eslint-patch": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.12.0.tgz", "integrity": "sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@swc/helpers": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.0" } @@ -926,6 +994,7 @@ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.12.tgz", "integrity": "sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", @@ -942,6 +1011,7 @@ "integrity": "sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" @@ -972,6 +1042,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -988,6 +1059,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1004,6 +1076,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1020,6 +1093,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1036,6 +1110,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1052,6 +1127,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1068,6 +1144,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1084,6 +1161,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1100,6 +1178,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1124,6 +1203,7 @@ "wasm32" ], "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@emnapi/core": "^1.4.5", @@ -1145,6 +1225,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1161,6 +1242,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1174,6 +1256,7 @@ "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.12.tgz", "integrity": "sha512-5PpLYhCAwf9SJEeIsSmCDLgyVfdBhdBpzX1OJ87anT9IVR0Z9pjM0FNixCAUAHGnMBGB8K99SwAheXrT0Kh6QQ==", "dev": true, + "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.12", @@ -1187,6 +1270,7 @@ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" @@ -1196,25 +1280,29 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "20.19.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.11.tgz", "integrity": "sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } @@ -1224,6 +1312,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.10.tgz", "integrity": "sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==", "dev": true, + "license": "MIT", "dependencies": { "csstype": "^3.0.2" } @@ -1233,6 +1322,7 @@ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.7.tgz", "integrity": "sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==", "dev": true, + "license": "MIT", "peerDependencies": { "@types/react": "^19.0.0" } @@ -1242,6 +1332,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.40.0.tgz", "integrity": "sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.40.0", @@ -1271,6 +1362,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -1280,6 +1372,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.40.0.tgz", "integrity": "sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/scope-manager": "8.40.0", "@typescript-eslint/types": "8.40.0", @@ -1304,6 +1397,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.40.0.tgz", "integrity": "sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.40.0", "@typescript-eslint/types": "^8.40.0", @@ -1325,6 +1419,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.40.0.tgz", "integrity": "sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.40.0", "@typescript-eslint/visitor-keys": "8.40.0" @@ -1342,6 +1437,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.40.0.tgz", "integrity": "sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -1358,6 +1454,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.40.0.tgz", "integrity": "sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.40.0", "@typescript-eslint/typescript-estree": "8.40.0", @@ -1382,6 +1479,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.40.0.tgz", "integrity": "sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -1395,6 +1493,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.40.0.tgz", "integrity": "sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/project-service": "8.40.0", "@typescript-eslint/tsconfig-utils": "8.40.0", @@ -1423,6 +1522,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -1432,6 +1532,7 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1448,6 +1549,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1460,6 +1562,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1475,6 +1578,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.40.0.tgz", "integrity": "sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.40.0", @@ -1498,6 +1602,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.40.0.tgz", "integrity": "sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.40.0", "eslint-visitor-keys": "^4.2.1" @@ -1518,6 +1623,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1531,6 +1637,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1544,6 +1651,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1557,6 +1665,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1570,6 +1679,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1583,6 +1693,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1596,6 +1707,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1609,6 +1721,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1622,6 +1735,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1635,6 +1749,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1648,6 +1763,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1661,6 +1777,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1674,6 +1791,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1687,6 +1805,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1700,6 +1819,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1713,6 +1833,7 @@ "wasm32" ], "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@napi-rs/wasm-runtime": "^0.2.11" @@ -1729,6 +1850,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1742,6 +1864,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1755,6 +1878,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1765,6 +1889,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1777,6 +1902,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -1786,6 +1912,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1802,6 +1929,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1816,13 +1944,15 @@ "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 + "dev": true, + "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -1832,6 +1962,7 @@ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" @@ -1848,6 +1979,7 @@ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", @@ -1870,6 +2002,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -1890,6 +2023,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", @@ -1911,6 +2045,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -1929,6 +2064,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -1947,6 +2083,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -1963,6 +2100,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", @@ -1983,22 +2121,62 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/async-function": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -2014,6 +2192,7 @@ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", "dev": true, + "license": "MPL-2.0", "engines": { "node": ">=4" } @@ -2023,6 +2202,7 @@ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -2031,13 +2211,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2048,6 +2230,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -2055,11 +2238,44 @@ "node": ">=8" } }, + "node_modules/browserslist": { + "version": "4.25.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz", + "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001735", + "electron-to-chromium": "^1.5.204", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", @@ -2078,6 +2294,7 @@ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -2091,6 +2308,7 @@ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -2107,6 +2325,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2128,13 +2347,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "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, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2151,6 +2372,7 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } @@ -2158,12 +2380,14 @@ "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", "optional": true, "dependencies": { "color-convert": "^2.0.1", @@ -2178,6 +2402,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "devOptional": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2189,12 +2414,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/color-string": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", "optional": true, "dependencies": { "color-name": "^1.0.0", @@ -2205,13 +2432,15 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2225,19 +2454,22 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -2255,6 +2487,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -2272,6 +2505,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -2289,6 +2523,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -2305,13 +2540,15 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2329,6 +2566,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -2345,7 +2583,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", - "devOptional": true, + "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -2355,6 +2593,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -2367,6 +2606,7 @@ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -2376,17 +2616,25 @@ "node": ">= 0.4" } }, + "node_modules/electron-to-chromium": { + "version": "1.5.207", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.207.tgz", + "integrity": "sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw==", + "license": "ISC" + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/enhanced-resolve": { "version": "5.18.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -2400,6 +2648,7 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", @@ -2468,6 +2717,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2477,6 +2727,7 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2486,6 +2737,7 @@ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -2513,6 +2765,7 @@ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -2525,6 +2778,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", @@ -2540,6 +2794,7 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -2552,6 +2807,7 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", @@ -2564,11 +2820,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2581,6 +2847,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -2641,6 +2908,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.4.7.tgz", "integrity": "sha512-tkKKNVJKI4zMIgTpvG2x6mmdhuOdgXUL3AaSPHwxLQkvzi4Yryqvk6B0R5Z4gkpe7FKopz3ZmlpePH3NTHy3gA==", "dev": true, + "license": "MIT", "dependencies": { "@next/eslint-plugin-next": "15.4.7", "@rushstack/eslint-patch": "^1.10.3", @@ -2668,6 +2936,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -2679,6 +2948,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -2688,6 +2958,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", "dev": true, + "license": "ISC", "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.4.0", @@ -2722,6 +2993,7 @@ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -2739,6 +3011,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -2748,6 +3021,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, + "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -2781,6 +3055,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -2790,6 +3065,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2799,6 +3075,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, + "license": "MIT", "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", @@ -2828,6 +3105,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", @@ -2860,6 +3138,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2872,6 +3151,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -2889,6 +3169,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2898,6 +3179,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -2914,6 +3196,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -2926,6 +3209,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", @@ -2943,6 +3227,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -2955,6 +3240,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -2967,6 +3253,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -2976,6 +3263,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -2984,13 +3272,15 @@ "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3007,6 +3297,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3018,19 +3309,22 @@ "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -3040,6 +3334,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^4.0.0" }, @@ -3052,6 +3347,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3064,6 +3360,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3080,6 +3377,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" @@ -3092,13 +3390,15 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.2.7" }, @@ -3109,11 +3409,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3123,6 +3437,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -3143,6 +3458,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3152,6 +3468,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -3176,6 +3493,7 @@ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -3189,6 +3507,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -3206,6 +3525,7 @@ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -3218,6 +3538,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -3230,6 +3551,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -3242,6 +3564,7 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -3258,6 +3581,7 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3269,19 +3593,22 @@ "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==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3294,6 +3621,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3303,6 +3631,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -3315,6 +3644,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" }, @@ -3330,6 +3660,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3342,6 +3673,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -3357,6 +3689,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -3369,6 +3702,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -3378,6 +3712,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3394,6 +3729,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -3403,6 +3739,7 @@ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", @@ -3417,6 +3754,7 @@ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -3433,6 +3771,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT", "optional": true }, "node_modules/is-async-function": { @@ -3440,6 +3779,7 @@ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, + "license": "MIT", "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", @@ -3459,6 +3799,7 @@ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" }, @@ -3474,6 +3815,7 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -3490,6 +3832,7 @@ "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.7.1" } @@ -3499,6 +3842,7 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3511,6 +3855,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -3526,6 +3871,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", @@ -3543,6 +3889,7 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -3559,6 +3906,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3568,6 +3916,7 @@ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -3583,6 +3932,7 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", @@ -3601,6 +3951,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -3613,6 +3964,7 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3625,6 +3977,7 @@ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3637,6 +3990,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -3646,6 +4000,7 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -3662,6 +4017,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", @@ -3680,6 +4036,7 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3692,6 +4049,7 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -3707,6 +4065,7 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -3723,6 +4082,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", @@ -3740,6 +4100,7 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" }, @@ -3755,6 +4116,7 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3767,6 +4129,7 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -3782,6 +4145,7 @@ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" @@ -3797,19 +4161,22 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", @@ -3827,6 +4194,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", "dev": true, + "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -3835,13 +4203,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3853,25 +4223,29 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -3884,6 +4258,7 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -3899,6 +4274,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -3907,13 +4283,15 @@ "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/language-tags": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, + "license": "MIT", "dependencies": { "language-subtag-registry": "^0.3.20" }, @@ -3926,6 +4304,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -3938,7 +4317,7 @@ "version": "1.30.1", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", - "dev": true, + "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" }, @@ -3969,7 +4348,7 @@ "cpu": [ "arm64" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "darwin" @@ -3989,7 +4368,7 @@ "cpu": [ "x64" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "darwin" @@ -4009,7 +4388,7 @@ "cpu": [ "x64" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "freebsd" @@ -4029,7 +4408,7 @@ "cpu": [ "arm" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -4049,7 +4428,7 @@ "cpu": [ "arm64" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -4069,7 +4448,7 @@ "cpu": [ "arm64" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -4089,7 +4468,7 @@ "cpu": [ "x64" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -4109,7 +4488,7 @@ "cpu": [ "x64" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -4129,7 +4508,7 @@ "cpu": [ "arm64" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "win32" @@ -4149,7 +4528,7 @@ "cpu": [ "x64" ], - "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "win32" @@ -4167,6 +4546,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -4181,13 +4561,15 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -4200,6 +4582,7 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -4209,6 +4592,7 @@ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4218,6 +4602,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -4227,6 +4612,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -4240,6 +4626,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4252,6 +4639,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4261,6 +4649,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -4270,6 +4659,7 @@ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.1.2" }, @@ -4282,6 +4672,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -4296,7 +4687,8 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.11", @@ -4308,6 +4700,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -4320,6 +4713,7 @@ "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.3.tgz", "integrity": "sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==", "dev": true, + "license": "MIT", "bin": { "napi-postinstall": "lib/cli.js" }, @@ -4334,12 +4728,14 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/next": { "version": "15.4.7", "resolved": "https://registry.npmjs.org/next/-/next-15.4.7.tgz", "integrity": "sha512-OcqRugwF7n7mC8OSYjvsZhhG1AYSvulor1EIUsIkbbEbf1qoE5EbH36Swj8WhF4cHqmDgkiam3z1c1W0J1Wifg==", + "license": "MIT", "dependencies": { "@next/env": "15.4.7", "@swc/helpers": "0.5.15", @@ -4405,6 +4801,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -4414,11 +4811,27 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4428,6 +4841,7 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4440,6 +4854,7 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4449,6 +4864,7 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -4469,6 +4885,7 @@ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", @@ -4484,6 +4901,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4502,6 +4920,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4516,6 +4935,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -4534,6 +4954,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -4551,6 +4972,7 @@ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", @@ -4568,6 +4990,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -4583,6 +5006,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -4598,6 +5022,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -4610,6 +5035,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4619,6 +5045,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4627,18 +5054,21 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -4651,6 +5081,7 @@ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4659,7 +5090,6 @@ "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4674,6 +5104,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -4683,11 +5114,18 @@ "node": "^10 || ^12 || >=14" } }, + "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==", + "license": "MIT" + }, "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, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -4697,6 +5135,7 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -4708,6 +5147,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4730,12 +5170,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/react": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4744,6 +5186,7 @@ "version": "19.1.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", "dependencies": { "scheduler": "^0.26.0" }, @@ -4755,13 +5198,15 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -4784,6 +5229,7 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -4804,6 +5250,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -4824,6 +5271,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -4833,6 +5281,7 @@ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -4842,6 +5291,7 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -4866,6 +5316,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -4875,6 +5326,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -4894,6 +5346,7 @@ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" @@ -4910,6 +5363,7 @@ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -4925,13 +5379,15 @@ "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==" + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" }, "node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "devOptional": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4944,6 +5400,7 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -4961,6 +5418,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -4976,6 +5434,7 @@ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", @@ -4990,6 +5449,7 @@ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz", "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==", "hasInstallScript": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "color": "^4.2.3", @@ -5032,6 +5492,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -5044,6 +5505,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5053,6 +5515,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -5072,6 +5535,7 @@ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -5088,6 +5552,7 @@ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -5106,6 +5571,7 @@ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -5124,6 +5590,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", "optional": true, "dependencies": { "is-arrayish": "^0.3.1" @@ -5133,6 +5600,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -5141,13 +5609,15 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stop-iteration-iterator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" @@ -5161,6 +5631,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5175,6 +5646,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -5202,6 +5674,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -5212,6 +5685,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -5233,6 +5707,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -5251,6 +5726,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5268,6 +5744,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -5277,6 +5754,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -5288,6 +5766,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", "dependencies": { "client-only": "0.0.1" }, @@ -5311,6 +5790,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5323,6 +5803,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5334,13 +5815,15 @@ "version": "4.1.12", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.12.tgz", "integrity": "sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tapable": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5350,6 +5833,7 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", "dev": true, + "license": "ISC", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", @@ -5367,6 +5851,7 @@ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "dev": true, + "license": "MIT", "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" @@ -5383,6 +5868,7 @@ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" }, @@ -5400,6 +5886,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -5412,6 +5899,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -5424,6 +5912,7 @@ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.12" }, @@ -5436,6 +5925,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -5446,13 +5936,15 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "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, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -5465,6 +5957,7 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -5479,6 +5972,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", @@ -5498,6 +5992,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -5519,6 +6014,7 @@ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -5539,6 +6035,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5552,6 +6049,7 @@ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", @@ -5569,7 +6067,8 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unrs-resolver": { "version": "1.11.1", @@ -5577,6 +6076,7 @@ "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "napi-postinstall": "^0.3.0" }, @@ -5605,11 +6105,42 @@ "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "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, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -5619,6 +6150,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -5634,6 +6166,7 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", @@ -5653,6 +6186,7 @@ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", @@ -5680,6 +6214,7 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -5698,6 +6233,7 @@ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -5719,6 +6255,7 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5728,6 +6265,7 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } @@ -5737,6 +6275,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/client/package.json b/client/package.json index e7481e1..ec623e0 100644 --- a/client/package.json +++ b/client/package.json @@ -9,19 +9,22 @@ "lint": "next lint" }, "dependencies": { + "autoprefixer": "^10.4.21", + "lightningcss": "^1.30.1", + "next": "15.4.7", + "postcss": "^8.5.6", "react": "19.1.0", - "react-dom": "19.1.0", - "next": "15.4.7" + "react-dom": "19.1.0" }, "devDependencies": { - "typescript": "^5", + "@eslint/eslintrc": "^3", + "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "@tailwindcss/postcss": "^4", - "tailwindcss": "^4", "eslint": "^9", "eslint-config-next": "15.4.7", - "@eslint/eslintrc": "^3" + "tailwindcss": "^4", + "typescript": "^5" } } diff --git a/docker-compose.yml b/docker-compose.yml index 9a9d17f..91259f2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,7 +22,8 @@ services: build: ./client container_name: slotify-frontend volumes: - - ./client:/app # Mount code for live reload + - ./client:/app # Mount project files + - /app/node_modules # Keep container's node_modules ports: - "3000:3000" # Next.js dev server port environment: diff --git a/server/.dockerignore b/server/.dockerignore new file mode 100644 index 0000000..7671f58 --- /dev/null +++ b/server/.dockerignore @@ -0,0 +1,15 @@ +node_modules +npm-debug.log +*.log +.env +vendor +.DS_Store +node_modules +npm-debug.log +vendor +.env +*.log +.DS_Store +.git +.gitignore +.vscode From 5a755568e747cca7bccc0a3d7c38fed3e5e2d91d Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 20 Aug 2025 23:46:03 +0300 Subject: [PATCH 010/561] Add n8n service configuration and environment variables to docker-compose --- .env.n8n | 6 ++++++ docker-compose.yml | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 .env.n8n diff --git a/.env.n8n b/.env.n8n new file mode 100644 index 0000000..3050eca --- /dev/null +++ b/.env.n8n @@ -0,0 +1,6 @@ +8N_BASIC_AUTH_ACTIVE=true +N8N_BASIC_AUTH_USER=admin +N8N_BASIC_AUTH_PASSWORD=changeme +N8N_HOST=localhost +N8N_PORT=5678 +N8N_PROTOCOL=http diff --git a/docker-compose.yml b/docker-compose.yml index 91259f2..2592fa3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,4 @@ version: '3.9' - services: backend: build: ./server @@ -25,7 +24,7 @@ services: - ./client:/app # Mount project files - /app/node_modules # Keep container's node_modules ports: - - "3000:3000" # Next.js dev server port + - "3000:3000" # Next.js dev server port environment: NEXT_PUBLIC_API_URL: http://localhost:8000 @@ -41,5 +40,17 @@ services: volumes: - pgdata:/var/lib/postgresql/data + n8n: + image: n8nio/n8n + container_name: n8n + ports: + - "5678:5678" + env_file: + - .env + volumes: + - n8n_data:/home/node/.n8n + restart: unless-stopped + volumes: pgdata: + n8n_data: From 7d0c8caf2048c67d60d94530ee3f710f3d66cc60 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 20 Aug 2025 23:49:31 +0300 Subject: [PATCH 011/561] Add .env.example file with n8n configuration and credentials --- .env.example | 12 ++++++++++++ .env.n8n | 6 ------ 2 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 .env.example delete mode 100644 .env.n8n diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..68a8e97 --- /dev/null +++ b/.env.example @@ -0,0 +1,12 @@ +# Main environment example for Docker Compose and n8n +POSTGRES_DB=slotifydb +POSTGRES_USER=postgres +POSTGRES_PASSWORD=postgres + +# n8n credentials and config +N8N_BASIC_AUTH_ACTIVE=true +N8N_BASIC_AUTH_USER=admin +N8N_BASIC_AUTH_PASSWORD=changeme +N8N_HOST=localhost +N8N_PORT=5678 +N8N_PROTOCOL=http diff --git a/.env.n8n b/.env.n8n deleted file mode 100644 index 3050eca..0000000 --- a/.env.n8n +++ /dev/null @@ -1,6 +0,0 @@ -8N_BASIC_AUTH_ACTIVE=true -N8N_BASIC_AUTH_USER=admin -N8N_BASIC_AUTH_PASSWORD=changeme -N8N_HOST=localhost -N8N_PORT=5678 -N8N_PROTOCOL=http From 25cbf530604b8a54b370e63c89b7b4782e5ad609 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Thu, 21 Aug 2025 15:44:13 +0300 Subject: [PATCH 012/561] Add migration for users table with necessary fields --- .../2025_08_21_124140_create_users_table.php | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 server/database/migrations/2025_08_21_124140_create_users_table.php diff --git a/server/database/migrations/2025_08_21_124140_create_users_table.php b/server/database/migrations/2025_08_21_124140_create_users_table.php new file mode 100644 index 0000000..3fe4833 --- /dev/null +++ b/server/database/migrations/2025_08_21_124140_create_users_table.php @@ -0,0 +1,31 @@ +id(); // Primary key + $table->string('name'); + $table->string('email')->unique(); + $table->string('password'); + $table->string('phone')->nullable(); + $table->boolean('is_active')->default(true); // Active/inactive + $table->timestampsTz(); // created_at, updated_at with timezone + }); + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; From 684938bbafb92e3b4fcd277212a777848415569f Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Thu, 21 Aug 2025 16:21:22 +0300 Subject: [PATCH 013/561] Add roles migration with enum for role names --- .../2025_08_21_124140_create_users_table.php | 23 ++++++--------- .../2025_08_21_124914_create_roles_table.php | 28 +++++++++++++++++++ 2 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 server/database/migrations/2025_08_21_124914_create_roles_table.php diff --git a/server/database/migrations/2025_08_21_124140_create_users_table.php b/server/database/migrations/2025_08_21_124140_create_users_table.php index 3fe4833..dd30f7c 100644 --- a/server/database/migrations/2025_08_21_124140_create_users_table.php +++ b/server/database/migrations/2025_08_21_124140_create_users_table.php @@ -6,24 +6,19 @@ return new class extends Migration { - /** - * Run the migrations. - */ public function up(): void { Schema::create('users', function (Blueprint $table) { - $table->id(); // Primary key - $table->string('name'); - $table->string('email')->unique(); - $table->string('password'); - $table->string('phone')->nullable(); - $table->boolean('is_active')->default(true); // Active/inactive - $table->timestampsTz(); // created_at, updated_at with timezone - }); + $table->id(); + $table->string('name'); + $table->string('email')->unique(); + $table->string('password'); + $table->string('phone')->nullable(); + $table->boolean('is_active')->default(true); + $table->timestampsTz(); + }); + } - /** - * Reverse the migrations. - */ public function down(): void { Schema::dropIfExists('users'); diff --git a/server/database/migrations/2025_08_21_124914_create_roles_table.php b/server/database/migrations/2025_08_21_124914_create_roles_table.php new file mode 100644 index 0000000..9f11be1 --- /dev/null +++ b/server/database/migrations/2025_08_21_124914_create_roles_table.php @@ -0,0 +1,28 @@ +id(); + $table->enum('name', ['super_admin', 'business_owner', 'client']); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('roles'); + } +}; From d903a182673940b269f89553b00382ae0a9dbbb3 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Thu, 21 Aug 2025 16:24:14 +0300 Subject: [PATCH 014/561] Add migration for role_user table with foreign key constraints --- ...25_08_21_130000_create_role_user_table.php | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 server/database/migrations/2025_08_21_130000_create_role_user_table.php diff --git a/server/database/migrations/2025_08_21_130000_create_role_user_table.php b/server/database/migrations/2025_08_21_130000_create_role_user_table.php new file mode 100644 index 0000000..dd1c682 --- /dev/null +++ b/server/database/migrations/2025_08_21_130000_create_role_user_table.php @@ -0,0 +1,30 @@ +id(); + $table->foreignId('user_id')->constrained()->onDelete('cascade'); + $table->foreignId('role_id')->constrained()->onDelete('cascade'); + $table->timestamps(); + $table->unique(['user_id', 'role_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('role_user'); + } +}; From a4e2b5982fcc10a341597fd590162b886d6cfad7 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Thu, 21 Aug 2025 16:47:45 +0300 Subject: [PATCH 015/561] Add feature tests for role_user, roles, and users tables to verify expected columns --- .../Database/RoleUserTableFeatureTest.php | 23 +++++++++++++++++++ .../Database/RolesTableFeatureTest.php | 23 +++++++++++++++++++ .../Database/UsersTableFeatureTest.php | 23 +++++++++++++++++++ server/tests/Feature/ExampleTest.php | 19 --------------- 4 files changed, 69 insertions(+), 19 deletions(-) create mode 100644 server/tests/Feature/Database/RoleUserTableFeatureTest.php create mode 100644 server/tests/Feature/Database/RolesTableFeatureTest.php create mode 100644 server/tests/Feature/Database/UsersTableFeatureTest.php delete mode 100644 server/tests/Feature/ExampleTest.php diff --git a/server/tests/Feature/Database/RoleUserTableFeatureTest.php b/server/tests/Feature/Database/RoleUserTableFeatureTest.php new file mode 100644 index 0000000..379e646 --- /dev/null +++ b/server/tests/Feature/Database/RoleUserTableFeatureTest.php @@ -0,0 +1,23 @@ +assertTrue( + Schema::hasColumns('role_user', [ + 'id', 'user_id', 'role_id', 'created_at', 'updated_at' + ]), + 'Role_User table does not have expected columns.' + ); + } +} diff --git a/server/tests/Feature/Database/RolesTableFeatureTest.php b/server/tests/Feature/Database/RolesTableFeatureTest.php new file mode 100644 index 0000000..0d0584a --- /dev/null +++ b/server/tests/Feature/Database/RolesTableFeatureTest.php @@ -0,0 +1,23 @@ +assertTrue( + Schema::hasColumns('roles', [ + 'id', 'name', 'created_at', 'updated_at' + ]), + 'Roles table does not have expected columns.' + ); + } +} diff --git a/server/tests/Feature/Database/UsersTableFeatureTest.php b/server/tests/Feature/Database/UsersTableFeatureTest.php new file mode 100644 index 0000000..c6dcb70 --- /dev/null +++ b/server/tests/Feature/Database/UsersTableFeatureTest.php @@ -0,0 +1,23 @@ +assertTrue( + Schema::hasColumns('users', [ + 'id', 'name', 'email', 'password', 'phone', 'is_active', 'created_at', 'updated_at' + ]), + 'Users table does not have expected columns.' + ); + } +} diff --git a/server/tests/Feature/ExampleTest.php b/server/tests/Feature/ExampleTest.php deleted file mode 100644 index 8364a84..0000000 --- a/server/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} From 4736b3609c1a1eef9db7f8883a17f7d1ea355f33 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Thu, 21 Aug 2025 17:03:45 +0300 Subject: [PATCH 016/561] added email_verified_at column and correcting timestamps method in user table --- .../migrations/2025_08_21_124140_create_users_table.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/database/migrations/2025_08_21_124140_create_users_table.php b/server/database/migrations/2025_08_21_124140_create_users_table.php index dd30f7c..28f42d4 100644 --- a/server/database/migrations/2025_08_21_124140_create_users_table.php +++ b/server/database/migrations/2025_08_21_124140_create_users_table.php @@ -12,10 +12,12 @@ public function up(): void $table->id(); $table->string('name'); $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->string('phone')->nullable(); $table->boolean('is_active')->default(true); - $table->timestampsTz(); + $table->rememberToken(); + $table->timestamps(); }); } From 12cf7e1c1fea08a6b9465bb35c41df52cfadb88f Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Thu, 21 Aug 2025 17:05:52 +0300 Subject: [PATCH 017/561] Refactor users migration: add is_active column and remove duplicate migration file --- .../0001_01_01_000000_create_users_table.php | 2 ++ .../2025_08_21_124140_create_users_table.php | 28 ------------------- 2 files changed, 2 insertions(+), 28 deletions(-) delete mode 100644 server/database/migrations/2025_08_21_124140_create_users_table.php diff --git a/server/database/migrations/0001_01_01_000000_create_users_table.php b/server/database/migrations/0001_01_01_000000_create_users_table.php index 05fb5d9..84ed19a 100644 --- a/server/database/migrations/0001_01_01_000000_create_users_table.php +++ b/server/database/migrations/0001_01_01_000000_create_users_table.php @@ -17,6 +17,8 @@ public function up(): void $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); + $table->string('phone')->nullable(); + $table->boolean('is_active')->default(true); $table->rememberToken(); $table->timestamps(); }); diff --git a/server/database/migrations/2025_08_21_124140_create_users_table.php b/server/database/migrations/2025_08_21_124140_create_users_table.php deleted file mode 100644 index 28f42d4..0000000 --- a/server/database/migrations/2025_08_21_124140_create_users_table.php +++ /dev/null @@ -1,28 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->string('phone')->nullable(); - $table->boolean('is_active')->default(true); - $table->rememberToken(); - $table->timestamps(); - }); - } - - public function down(): void - { - Schema::dropIfExists('users'); - } -}; From 70281e326b4dbb6150514a408b9d34b7dbbe4924 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 12:12:46 +0300 Subject: [PATCH 018/561] Add CI pipeline for backend and frontend --- .github/workflows/ci.yml | 75 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f6ca800 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,75 @@ +name: CI Pipeline + +on: + push: + branches: + - main + - dev + - feature/** + pull_request: + branches: + - main + - dev + +jobs: + backend: + name: Laravel Backend + runs-on: ubuntu-latest + defaults: + run: + working-directory: server + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: "8.2" + extensions: mbstring, bcmath, intl, pdo_mysql + coverage: none + + - name: Install dependencies + run: composer install --no-progress --prefer-dist --optimize-autoloader + + - name: Copy env + run: cp .env.example .env + + - name: Generate app key + run: php artisan key:generate + + - name: Run migrations + run: php artisan migrate --env=testing --force + env: + DB_CONNECTION: sqlite + DB_DATABASE: ":memory:" + + - name: Run tests + run: php artisan test + + frontend: + name: React Frontend + runs-on: ubuntu-latest + defaults: + run: + working-directory: client + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install dependencies + run: npm install + + - name: Run lint + run: npm run lint --if-present + + - name: Run tests + run: npm test -- --watchAll=false + + - name: Build project + run: npm run build From b17cc08e4fc0d79b8fb07a67731664e3ac45f068 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 12:26:34 +0300 Subject: [PATCH 019/561] Refactor CI pipeline to include change filtering for backend and frontend jobs --- .github/workflows/ci.yml | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f6ca800..4418677 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,64 +12,75 @@ on: - dev jobs: + changes: + runs-on: ubuntu-latest + outputs: + backend: ${{ steps.filter.outputs.backend }} + frontend: ${{ steps.filter.outputs.frontend }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Filter changes + id: filter + uses: dorny/paths-filter@v3 + with: + filters: | + backend: + - 'server/**' + frontend: + - 'client/**' + backend: - name: Laravel Backend + name: Backend runs-on: ubuntu-latest + needs: changes + if: needs.changes.outputs.backend == 'true' defaults: run: working-directory: server steps: - name: Checkout code uses: actions/checkout@v4 - - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: "8.2" extensions: mbstring, bcmath, intl, pdo_mysql coverage: none - - name: Install dependencies run: composer install --no-progress --prefer-dist --optimize-autoloader - - name: Copy env run: cp .env.example .env - - name: Generate app key run: php artisan key:generate - - name: Run migrations run: php artisan migrate --env=testing --force env: DB_CONNECTION: sqlite DB_DATABASE: ":memory:" - - name: Run tests run: php artisan test frontend: - name: React Frontend + name: Frontend runs-on: ubuntu-latest + needs: changes + if: needs.changes.outputs.frontend == 'true' defaults: run: working-directory: client steps: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20" - - name: Install dependencies run: npm install - - name: Run lint run: npm run lint --if-present - - name: Run tests run: npm test -- --watchAll=false - - name: Build project run: npm run build From fa941df9a77c7940136fb9d2f5f60ef55ff4a0c0 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 12:30:00 +0300 Subject: [PATCH 020/561] fix: correct formatting in package.json scripts section --- client/package.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/package.json b/client/package.json index ec623e0..ef05551 100644 --- a/client/package.json +++ b/client/package.json @@ -3,10 +3,11 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "test": "echo \"No tests yet\" && exit 0" }, "dependencies": { "autoprefixer": "^10.4.21", From f123ef2912190b18be3de8f0e497a55e2153f1f2 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 15:08:56 +0300 Subject: [PATCH 021/561] feat: add laravel/sanctum dependency for API authentication --- server/composer.json | 1 + server/composer.lock | 66 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/server/composer.json b/server/composer.json index 9013567..88f78ef 100644 --- a/server/composer.json +++ b/server/composer.json @@ -8,6 +8,7 @@ "require": { "php": "^8.2", "laravel/framework": "^12.0", + "laravel/sanctum": "^4.2", "laravel/tinker": "^2.10.1" }, "require-dev": { diff --git a/server/composer.lock b/server/composer.lock index 45f65f8..f8c3b82 100644 --- a/server/composer.lock +++ b/server/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "88970a0117c062eed55fa8728fc43833", + "content-hash": "9e8009f62639975c287d610dda66cb45", "packages": [ { "name": "brick/math", @@ -1329,6 +1329,70 @@ }, "time": "2025-07-07T14:17:42+00:00" }, + { + "name": "laravel/sanctum", + "version": "v4.2.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "fd6df4f79f48a72992e8d29a9c0ee25422a0d677" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/fd6df4f79f48a72992e8d29a9c0ee25422a0d677", + "reference": "fd6df4f79f48a72992e8d29a9c0ee25422a0d677", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^11.0|^12.0", + "illuminate/contracts": "^11.0|^12.0", + "illuminate/database": "^11.0|^12.0", + "illuminate/support": "^11.0|^12.0", + "php": "^8.2", + "symfony/console": "^7.0" + }, + "require-dev": { + "mockery/mockery": "^1.6", + "orchestra/testbench": "^9.0|^10.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "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": "2025-07-09T19:45:24+00:00" + }, { "name": "laravel/serializable-closure", "version": "v2.0.4", From 769fe7082c23c643b67165cc87bf03312c29c9c3 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 15:10:05 +0300 Subject: [PATCH 022/561] feat: add HasApiTokens trait to User model for API authentication --- server/app/Models/User.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/app/Models/User.php b/server/app/Models/User.php index 749c7b7..234cbb5 100644 --- a/server/app/Models/User.php +++ b/server/app/Models/User.php @@ -3,6 +3,7 @@ namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; +use Laravel\Sanctum\HasApiTokens; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; @@ -10,7 +11,7 @@ class User extends Authenticatable { /** @use HasFactory<\Database\Factories\UserFactory> */ - use HasFactory, Notifiable; + use HasApiTokens, HasFactory, Notifiable; /** * The attributes that are mass assignable. From 75b9a5a2cd2b29d6814e0b32ae15f4a8bc217cc3 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 15:22:25 +0300 Subject: [PATCH 023/561] implement LoginRequest and RegisterRequest --- .../app/Http/Controllers/AuthController.php | 10 +++++++++ .../Requests/AuthRequests/LoginRequest.php | 21 ++++++++++++++++++ .../Requests/AuthRequests/RegisterRequest.php | 22 +++++++++++++++++++ server/app/Services/AuthService.php | 8 +++++++ 4 files changed, 61 insertions(+) create mode 100644 server/app/Http/Controllers/AuthController.php create mode 100644 server/app/Http/Requests/AuthRequests/LoginRequest.php create mode 100644 server/app/Http/Requests/AuthRequests/RegisterRequest.php create mode 100644 server/app/Services/AuthService.php diff --git a/server/app/Http/Controllers/AuthController.php b/server/app/Http/Controllers/AuthController.php new file mode 100644 index 0000000..bffe3a2 --- /dev/null +++ b/server/app/Http/Controllers/AuthController.php @@ -0,0 +1,10 @@ + 'required|string|email', + 'password' => 'required|string', + ]; + } +} diff --git a/server/app/Http/Requests/AuthRequests/RegisterRequest.php b/server/app/Http/Requests/AuthRequests/RegisterRequest.php new file mode 100644 index 0000000..a98268a --- /dev/null +++ b/server/app/Http/Requests/AuthRequests/RegisterRequest.php @@ -0,0 +1,22 @@ + 'required|string|max:255', + 'email' => 'required|string|email|max:255|unique:users,email', + 'password' => 'required|string|min:8|confirmed', + ]; + } +} diff --git a/server/app/Services/AuthService.php b/server/app/Services/AuthService.php new file mode 100644 index 0000000..a68ef0f --- /dev/null +++ b/server/app/Services/AuthService.php @@ -0,0 +1,8 @@ + Date: Sat, 23 Aug 2025 15:31:34 +0300 Subject: [PATCH 024/561] feat: add AuthTest for user registration and login functionality --- server/tests/Feature/AuthTest.php | 67 +++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 server/tests/Feature/AuthTest.php diff --git a/server/tests/Feature/AuthTest.php b/server/tests/Feature/AuthTest.php new file mode 100644 index 0000000..bc65e26 --- /dev/null +++ b/server/tests/Feature/AuthTest.php @@ -0,0 +1,67 @@ +postJson('/api/register', [ + 'name' => 'Test User', + 'email' => 'test' . Str::random(5) . '@example.com', + 'password' => 'password123', + 'password_confirmation' => 'password123', + ]); + + $response->assertStatus(201) + ->assertJsonStructure(['user', 'token']); + } + + public function test_user_can_login() + { + $user = User::factory()->create([ + 'password' => bcrypt('password123'), + ]); + + $response = $this->postJson('/api/login', [ + 'email' => $user->email, + 'password' => 'password123', + ]); + + $response->assertStatus(200) + ->assertJsonStructure(['user', 'token']); + } + + public function test_authenticated_user_can_get_profile() + { + $user = User::factory()->create(); + $token = $user->createToken('test')->plainTextToken; + + $response = $this->withHeader('Authorization', 'Bearer ' . $token) + ->getJson('/api/me'); + + $response->assertStatus(200) + ->assertJsonStructure(['id', 'name', 'email', 'created_at', 'updated_at']); + } + + public function test_user_cannot_login_with_invalid_credentials() + { + $user = User::factory()->create([ + 'password' => bcrypt('password123'), + ]); + + $response = $this->postJson('/api/login', [ + 'email' => $user->email, + 'password' => 'wrongpassword', + ]); + + $response->assertStatus(422); + } +} From 092a4744d416833427bc896836923280535e01d2 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 15:38:54 +0300 Subject: [PATCH 025/561] feat: create UserResource for transforming user data into JSON format --- server/app/Http/Resources/UserResource.php | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 server/app/Http/Resources/UserResource.php diff --git a/server/app/Http/Resources/UserResource.php b/server/app/Http/Resources/UserResource.php new file mode 100644 index 0000000..914e89b --- /dev/null +++ b/server/app/Http/Resources/UserResource.php @@ -0,0 +1,25 @@ + + */ + public function toArray($request) + { + return [ + 'id' => $this->id, + 'name' => $this->name, + 'email' => $this->email, + 'created_at' => $this->created_at, + 'updated_at' => $this->updated_at, + ]; + } +} From 33a89446ba57be02bca7fed9e656e3478d32116f Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 16:15:06 +0300 Subject: [PATCH 026/561] feat: implement authentication methods in AuthController for user registration, login, logout, and retrieving user info --- .../app/Http/Controllers/AuthController.php | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/server/app/Http/Controllers/AuthController.php b/server/app/Http/Controllers/AuthController.php index bffe3a2..4c3cd57 100644 --- a/server/app/Http/Controllers/AuthController.php +++ b/server/app/Http/Controllers/AuthController.php @@ -2,9 +2,60 @@ namespace App\Http\Controllers; +use App\Http\Requests\RegisterRequest; +use App\Http\Requests\LoginRequest; +use App\Http\Resources\UserResource; +use App\Models\User; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; + +use function PHPSTORM_META\map; class AuthController extends Controller { - // + public function register(RegisterRequest $request){ + $user = User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password'=> Hash::make($request->password), + + + ]); + + $token = $user->createToken('auth_token')->plainTextToken; + + return response()->json([ + 'user' => new UserResource($user), + 'token' => $token, + ], 201); + } + + public function login(LoginRequest $request){ + $user = User::where('email', $request->email)->first(); + + if(! $user || !Hash::check($request->password, $user->password)){ + return response()->json(['message'=>'Invalid Credentials '], 422); + } + + $token = $user->createToken('auth_token')->plainTextToken; + + return response()->json([ + 'user'=> new UserResource($user), + 'token'=> $token, + ]); + + } + + public function logout(Request $request) + { + $request->user()->currentAccessToken()->delete(); + + return response()->json(['message' => 'Logged out successfully']); + } + + public function me(Request $request) + { + return new UserResource($request->user()); + } } From 8574d36cebed76cc55858ba6d9c3defdb8f11005 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 16:18:31 +0300 Subject: [PATCH 027/561] add API guard configuration using Sanctum for authentication --- server/config/auth.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/config/auth.php b/server/config/auth.php index 7d1eb0d..47c067e 100644 --- a/server/config/auth.php +++ b/server/config/auth.php @@ -40,6 +40,10 @@ 'driver' => 'session', 'provider' => 'users', ], + 'api' => [ + 'driver' => 'sanctum', + 'provider' => 'users', + ] ], /* From 00716e2efdaf406804d8f9bdedcc545ede97d8eb Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 16:20:04 +0300 Subject: [PATCH 028/561] implement register, login, logout, and me methods in AuthService for user authentication --- server/app/Services/AuthService.php | 34 ++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/server/app/Services/AuthService.php b/server/app/Services/AuthService.php index a68ef0f..ce4d338 100644 --- a/server/app/Services/AuthService.php +++ b/server/app/Services/AuthService.php @@ -2,7 +2,39 @@ namespace App\Services; +use App\Models\User; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Auth; + class AuthService { + public function register(array $data) + { + $user = User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + ]); + $token = $user->createToken('auth_token')->plainTextToken; + return compact('user', 'token'); + } + + public function login(array $data) + { + $user = User::where('email', $data['email'])->first(); + if (! $user || ! Hash::check($data['password'], $user->password)) { + return null; + } + $token = $user->createToken('auth_token')->plainTextToken; + return compact('user', 'token'); + } + + public function logout($user) + { + $user->currentAccessToken()->delete(); + } - + public function me($user) + { + return $user; + } } \ No newline at end of file From 10d17e83657d2f0c7ce1bff0a186ba5a94cb8a19 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 23 Aug 2025 17:39:15 +0300 Subject: [PATCH 029/561] feat: refactor AuthController to use AuthService for authentication methods and add API routes for login, logout, and user profile --- .../app/Http/Controllers/AuthController.php | 82 +++++++++--------- server/app/Http/Requests/LoginRequest.php | 21 +++++ server/app/Http/Requests/RegisterRequest.php | 22 +++++ server/app/Http/Resources/UserResource.php | 1 + server/bootstrap/app.php | 1 + server/config/sanctum.php | 84 +++++++++++++++++++ ...42_create_personal_access_tokens_table.php | 33 ++++++++ server/routes/api.php | 14 ++++ server/tests/Feature/AuthTest.php | 8 +- 9 files changed, 219 insertions(+), 47 deletions(-) create mode 100644 server/app/Http/Requests/LoginRequest.php create mode 100644 server/app/Http/Requests/RegisterRequest.php create mode 100644 server/config/sanctum.php create mode 100644 server/database/migrations/2025_08_23_133842_create_personal_access_tokens_table.php create mode 100644 server/routes/api.php diff --git a/server/app/Http/Controllers/AuthController.php b/server/app/Http/Controllers/AuthController.php index 4c3cd57..cd30f8e 100644 --- a/server/app/Http/Controllers/AuthController.php +++ b/server/app/Http/Controllers/AuthController.php @@ -12,50 +12,46 @@ use function PHPSTORM_META\map; +use App\Services\AuthService; + class AuthController extends Controller { - public function register(RegisterRequest $request){ - $user = User::create([ - 'name' => $request->name, - 'email' => $request->email, - 'password'=> Hash::make($request->password), - - - ]); - - $token = $user->createToken('auth_token')->plainTextToken; - - return response()->json([ - 'user' => new UserResource($user), - 'token' => $token, - ], 201); - } - - public function login(LoginRequest $request){ - $user = User::where('email', $request->email)->first(); - - if(! $user || !Hash::check($request->password, $user->password)){ - return response()->json(['message'=>'Invalid Credentials '], 422); - } - - $token = $user->createToken('auth_token')->plainTextToken; - - return response()->json([ - 'user'=> new UserResource($user), - 'token'=> $token, - ]); - - } - - public function logout(Request $request) - { - $request->user()->currentAccessToken()->delete(); - - return response()->json(['message' => 'Logged out successfully']); - } - - public function me(Request $request) - { - return new UserResource($request->user()); + protected $authService; + + public function __construct(AuthService $authService) + { + $this->authService = $authService; + } + + public function register(RegisterRequest $request) + { + $result = $this->authService->register($request->validated()); + return response()->json([ + 'user' => new UserResource($result['user']), + 'token' => $result['token'], + ], 201); + } + + public function login(LoginRequest $request) + { + $result = $this->authService->login($request->validated()); + if (! $result) { + return response()->json(['message' => 'Invalid Credentials'], 422); } + return response()->json([ + 'user' => new UserResource($result['user']), + 'token' => $result['token'], + ]); + } + + public function logout(Request $request) + { + $this->authService->logout($request->user()); + return response()->json(['message' => 'Logged out successfully']); + } + + public function me(Request $request) + { + return new UserResource($this->authService->me($request->user())); + } } diff --git a/server/app/Http/Requests/LoginRequest.php b/server/app/Http/Requests/LoginRequest.php new file mode 100644 index 0000000..3b31503 --- /dev/null +++ b/server/app/Http/Requests/LoginRequest.php @@ -0,0 +1,21 @@ + ['required', 'email'], + 'password' => ['required', 'string'], + ]; + } +} diff --git a/server/app/Http/Requests/RegisterRequest.php b/server/app/Http/Requests/RegisterRequest.php new file mode 100644 index 0000000..edb0229 --- /dev/null +++ b/server/app/Http/Requests/RegisterRequest.php @@ -0,0 +1,22 @@ + ['required', 'string', 'max:255'], + 'email' => ['required', 'email', 'unique:users,email'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + ]; + } +} diff --git a/server/app/Http/Resources/UserResource.php b/server/app/Http/Resources/UserResource.php index 914e89b..ffad8a0 100644 --- a/server/app/Http/Resources/UserResource.php +++ b/server/app/Http/Resources/UserResource.php @@ -6,6 +6,7 @@ class UserResource extends JsonResource { + public static $wrap = null; /** * Transform the resource into an array. * diff --git a/server/bootstrap/app.php b/server/bootstrap/app.php index c183276..c3928c5 100644 --- a/server/bootstrap/app.php +++ b/server/bootstrap/app.php @@ -7,6 +7,7 @@ return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', + api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) diff --git a/server/config/sanctum.php b/server/config/sanctum.php new file mode 100644 index 0000000..44527d6 --- /dev/null +++ b/server/config/sanctum.php @@ -0,0 +1,84 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort(), + // Sanctum::currentRequestHost(), + ))), + + /* + |-------------------------------------------------------------------------- + | 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. This will override any values set in the token's + | "expires_at" attribute, but first-party sessions are not affected. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Token Prefix + |-------------------------------------------------------------------------- + | + | Sanctum can prefix new tokens in order to take advantage of numerous + | security scanning initiatives maintained by open source platforms + | that notify developers if they commit tokens into repositories. + | + | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning + | + */ + + 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), + + /* + |-------------------------------------------------------------------------- + | 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' => [ + 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, + 'encrypt_cookies' => Illuminate\Cookie\Middleware\EncryptCookies::class, + 'validate_csrf_token' => Illuminate\Foundation\Http\Middleware\ValidateCsrfToken::class, + ], + +]; diff --git a/server/database/migrations/2025_08_23_133842_create_personal_access_tokens_table.php b/server/database/migrations/2025_08_23_133842_create_personal_access_tokens_table.php new file mode 100644 index 0000000..40ff706 --- /dev/null +++ b/server/database/migrations/2025_08_23_133842_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->text('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable()->index(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/server/routes/api.php b/server/routes/api.php new file mode 100644 index 0000000..4d9080f --- /dev/null +++ b/server/routes/api.php @@ -0,0 +1,14 @@ +group(function () { + Route::post('/register', [AuthController::class, 'register']); + Route::post('/login', [AuthController::class, 'login']); + + Route::middleware('auth:sanctum')->group(function () { + Route::post('/logout', [AuthController::class, 'logout']); + Route::get('/me', [AuthController::class, 'me']); + }); +}); diff --git a/server/tests/Feature/AuthTest.php b/server/tests/Feature/AuthTest.php index bc65e26..615b7de 100644 --- a/server/tests/Feature/AuthTest.php +++ b/server/tests/Feature/AuthTest.php @@ -13,7 +13,7 @@ class AuthTest extends TestCase public function test_user_can_register() { - $response = $this->postJson('/api/register', [ + $response = $this->postJson('/api/v1/register', [ 'name' => 'Test User', 'email' => 'test' . Str::random(5) . '@example.com', 'password' => 'password123', @@ -30,7 +30,7 @@ public function test_user_can_login() 'password' => bcrypt('password123'), ]); - $response = $this->postJson('/api/login', [ + $response = $this->postJson('/api/v1/login', [ 'email' => $user->email, 'password' => 'password123', ]); @@ -45,7 +45,7 @@ public function test_authenticated_user_can_get_profile() $token = $user->createToken('test')->plainTextToken; $response = $this->withHeader('Authorization', 'Bearer ' . $token) - ->getJson('/api/me'); + ->getJson('/api/v1/me'); $response->assertStatus(200) ->assertJsonStructure(['id', 'name', 'email', 'created_at', 'updated_at']); @@ -57,7 +57,7 @@ public function test_user_cannot_login_with_invalid_credentials() 'password' => bcrypt('password123'), ]); - $response = $this->postJson('/api/login', [ + $response = $this->postJson('/api/v1/login', [ 'email' => $user->email, 'password' => 'wrongpassword', ]); From a65958166d13982f32d093d3628b0c867156ea3d Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sun, 24 Aug 2025 22:03:57 +0300 Subject: [PATCH 030/561] style: update color variables in globals.css for consistency --- client/src/app/globals.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/app/globals.css b/client/src/app/globals.css index a2dc41e..ac1c182 100644 --- a/client/src/app/globals.css +++ b/client/src/app/globals.css @@ -3,6 +3,10 @@ :root { --background: #ffffff; --foreground: #171717; + --color-primary: #072949; + --color-secondary: #DEECF9; + --color-black: #000000; + --color-white: #ffffff; } @theme inline { From f792c8ae9b0ecd27376865de20797b3dff625afa Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 11:59:52 +0300 Subject: [PATCH 031/561] style: enhance global styles for consistency and readability --- client/src/app/globals.css | 46 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/client/src/app/globals.css b/client/src/app/globals.css index ac1c182..770ee00 100644 --- a/client/src/app/globals.css +++ b/client/src/app/globals.css @@ -1,5 +1,46 @@ +/* Modern CSS Reset */ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html, body { + height: 100%; +} + +body { + min-height: 100vh; + line-height: 1.5; + background: var(--color-white); + color: var(--color-black); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +img, picture, video, canvas, svg { + display: block; + max-width: 100%; +} + +input, button, textarea, select { + font: inherit; +} + +a { + color: inherit; + text-decoration: none; +} + +button { + background: none; + border: none; + cursor: pointer; +} @import "tailwindcss"; +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap'); + :root { --background: #ffffff; --foreground: #171717; @@ -9,6 +50,8 @@ --color-white: #ffffff; } + + @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); @@ -23,8 +66,7 @@ } } -body { background: var(--background); color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; + font-family: 'Poppins', sans-serif; } From e1df8a562aea1f20c0e1472667a48f1e3559442f Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 13:08:06 +0300 Subject: [PATCH 032/561] feat: implement sign-in page with form and button components --- client/public/file.svg | 1 - client/public/globe.svg | 1 - client/public/next.svg | 1 - client/public/vercel.svg | 1 - client/public/window.svg | 1 - client/src/app/auth/page.tsx | 88 ++++++++++++++++++++++++++++++++ client/src/app/globals.css | 2 +- client/src/components/Button.tsx | 16 ++++++ client/src/components/Input.tsx | 19 +++++++ 9 files changed, 124 insertions(+), 6 deletions(-) delete mode 100644 client/public/file.svg delete mode 100644 client/public/globe.svg delete mode 100644 client/public/next.svg delete mode 100644 client/public/vercel.svg delete mode 100644 client/public/window.svg create mode 100644 client/src/app/auth/page.tsx create mode 100644 client/src/components/Button.tsx create mode 100644 client/src/components/Input.tsx diff --git a/client/public/file.svg b/client/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/client/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/public/globe.svg b/client/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/client/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/public/next.svg b/client/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/client/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/public/vercel.svg b/client/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/client/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/public/window.svg b/client/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/client/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/src/app/auth/page.tsx b/client/src/app/auth/page.tsx new file mode 100644 index 0000000..c72df29 --- /dev/null +++ b/client/src/app/auth/page.tsx @@ -0,0 +1,88 @@ +import React from "react"; + +export default function SignInPage() { + return ( +
+ {/* Left Side - Auth Form */} +
+
+
+ {/* Replace with your logo SVG or image */} + 📅 +
+ + SLOTIFY + +
+

+ Welcome back! Please sign in to your account +

+
+
+ + +
+
+ + +
+ +
+
+
+ Or continue with +
+
+ +
+ + + Forgot password? + +
+
+ Don't have an account?{" "} + + Sign up + +
+
+ {/* Right Side - Illustration & Text */} +
+
+ {/* Replace with your calendar SVG or image */} + 📅 +
+

+ Streamline Your Scheduling +

+

+ Manage appointments, bookings, and time slots with our intuitive + platform designed for modern businesses. +

+
+
+ ); +} diff --git a/client/src/app/globals.css b/client/src/app/globals.css index 770ee00..383197c 100644 --- a/client/src/app/globals.css +++ b/client/src/app/globals.css @@ -69,4 +69,4 @@ button { background: var(--background); color: var(--foreground); font-family: 'Poppins', sans-serif; -} + diff --git a/client/src/components/Button.tsx b/client/src/components/Button.tsx new file mode 100644 index 0000000..39e6749 --- /dev/null +++ b/client/src/components/Button.tsx @@ -0,0 +1,16 @@ +import React from "react"; + +type ButtonProps = React.ButtonHTMLAttributes & { + children: React.ReactNode; +}; + +export default function Button({ children, ...props }: ButtonProps) { + return ( + + ); +} diff --git a/client/src/components/Input.tsx b/client/src/components/Input.tsx new file mode 100644 index 0000000..6a5d59e --- /dev/null +++ b/client/src/components/Input.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +type InputProps = React.InputHTMLAttributes & { + label?: string; +}; + +export default function Input({ label, ...props }: InputProps) { + return ( +
+ {label && ( + + )} + +
+ ); +} From 271807cf7f4f7075c27500fec7d32c182b518967 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 13:09:14 +0300 Subject: [PATCH 033/561] feat: replace email and password inputs with reusable components --- client/src/app/auth/page.tsx | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/client/src/app/auth/page.tsx b/client/src/app/auth/page.tsx index c72df29..f356539 100644 --- a/client/src/app/auth/page.tsx +++ b/client/src/app/auth/page.tsx @@ -1,4 +1,6 @@ import React from "react"; +import Input from "@/components/Input"; +import Button from "@/components/Button"; export default function SignInPage() { return ( @@ -18,28 +20,13 @@ export default function SignInPage() { Welcome back! Please sign in to your account
-
- - -
-
- - -
- + + +
From 574f83df84725f451b4e5d8e8f67fa1abbd058be Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 13:12:25 +0300 Subject: [PATCH 034/561] feat: redirect home page to authentication route --- client/src/app/page.tsx | 103 ++-------------------------------------- 1 file changed, 3 insertions(+), 100 deletions(-) diff --git a/client/src/app/page.tsx b/client/src/app/page.tsx index a932894..44c449c 100644 --- a/client/src/app/page.tsx +++ b/client/src/app/page.tsx @@ -1,103 +1,6 @@ -import Image from "next/image"; +import { redirect } from "next/navigation"; export default function Home() { - return ( -
-
- Next.js logo -
    -
  1. - Get started by editing{" "} - - src/app/page.tsx - - . -
  2. -
  3. - Save and see your changes instantly. -
  4. -
- - -
- -
- ); + redirect("/auth"); + return null; } From e54dfdb31ee90971dfc1fb53ff0d4c574a1fb545 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 13:19:58 +0300 Subject: [PATCH 035/561] Add logos to public folder --- client/public/icons/calender.svg | 3 +++ client/public/logos/Dark-noText.svg | 9 +++++++++ client/public/logos/dark-text.svg | 9 +++++++++ client/public/logos/light-noText.svg | 9 +++++++++ client/public/logos/light-text.svg | 9 +++++++++ 5 files changed, 39 insertions(+) create mode 100644 client/public/icons/calender.svg create mode 100644 client/public/logos/Dark-noText.svg create mode 100644 client/public/logos/dark-text.svg create mode 100644 client/public/logos/light-noText.svg create mode 100644 client/public/logos/light-text.svg diff --git a/client/public/icons/calender.svg b/client/public/icons/calender.svg new file mode 100644 index 0000000..75f38d1 --- /dev/null +++ b/client/public/icons/calender.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/public/logos/Dark-noText.svg b/client/public/logos/Dark-noText.svg new file mode 100644 index 0000000..05fb907 --- /dev/null +++ b/client/public/logos/Dark-noText.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/client/public/logos/dark-text.svg b/client/public/logos/dark-text.svg new file mode 100644 index 0000000..88b1baa --- /dev/null +++ b/client/public/logos/dark-text.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/client/public/logos/light-noText.svg b/client/public/logos/light-noText.svg new file mode 100644 index 0000000..745d019 --- /dev/null +++ b/client/public/logos/light-noText.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/client/public/logos/light-text.svg b/client/public/logos/light-text.svg new file mode 100644 index 0000000..4437eb3 --- /dev/null +++ b/client/public/logos/light-text.svg @@ -0,0 +1,9 @@ + + + + + + + + + From 702a8373e5fd487e422c404fc1727c87da336ecd Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 14:04:25 +0300 Subject: [PATCH 036/561] feat: replace placeholder logo with actual Slotify logo and update calendar icon --- client/src/app/auth/page.tsx | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/client/src/app/auth/page.tsx b/client/src/app/auth/page.tsx index f356539..c416d1f 100644 --- a/client/src/app/auth/page.tsx +++ b/client/src/app/auth/page.tsx @@ -1,6 +1,7 @@ import React from "react"; import Input from "@/components/Input"; import Button from "@/components/Button"; +import Image from "next/image"; export default function SignInPage() { return ( @@ -8,9 +9,13 @@ export default function SignInPage() { {/* Left Side - Auth Form */}
-
- {/* Replace with your logo SVG or image */} - 📅 +
+ Slotify Logo
SLOTIFY @@ -50,7 +55,7 @@ export default function SignInPage() {
- Don't have an account?{" "} + Don't have an account?{" "} Sign up @@ -58,10 +63,15 @@ export default function SignInPage() {
{/* Right Side - Illustration & Text */}
-
- {/* Replace with your calendar SVG or image */} - 📅 +
+ Calendar Icon
+

Streamline Your Scheduling

From fd40fc2cdaa5393cda893cc5fd45fdc2591cc45e Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 17:10:45 +0300 Subject: [PATCH 037/561] feat: enhance sign-in page with additional components and improved styling --- client/src/app/auth/page.tsx | 36 ++++++++------------ client/src/components/Button.tsx | 2 +- client/src/components/Checkbox.tsx | 18 ++++++++++ client/src/components/Divider.tsx | 13 +++++++ client/src/components/ForgotPasswordLink.tsx | 12 +++++++ client/src/components/GoogleButton.tsx | 11 ++++++ client/src/components/Input.tsx | 2 +- 7 files changed, 70 insertions(+), 24 deletions(-) create mode 100644 client/src/components/Checkbox.tsx create mode 100644 client/src/components/Divider.tsx create mode 100644 client/src/components/ForgotPasswordLink.tsx create mode 100644 client/src/components/GoogleButton.tsx diff --git a/client/src/app/auth/page.tsx b/client/src/app/auth/page.tsx index c416d1f..0b5d632 100644 --- a/client/src/app/auth/page.tsx +++ b/client/src/app/auth/page.tsx @@ -1,6 +1,11 @@ import React from "react"; + import Input from "@/components/Input"; import Button from "@/components/Button"; +import Checkbox from "@/components/Checkbox"; +import Divider from "@/components/Divider"; +import ForgotPasswordLink from "@/components/ForgotPasswordLink"; +import GoogleButton from "@/components/GoogleButton"; import Image from "next/image"; export default function SignInPage() { @@ -24,35 +29,22 @@ export default function SignInPage() {

Welcome back! Please sign in to your account

-
+ - +
+ +
-
-
- Or continue with -
-
- -
- - - Forgot password? - + Or continue with + +
+ +
Don't have an account?{" "} diff --git a/client/src/components/Button.tsx b/client/src/components/Button.tsx index 39e6749..c5675ae 100644 --- a/client/src/components/Button.tsx +++ b/client/src/components/Button.tsx @@ -7,7 +7,7 @@ type ButtonProps = React.ButtonHTMLAttributes & { export default function Button({ children, ...props }: ButtonProps) { return ( + ); +} diff --git a/client/src/components/Input.tsx b/client/src/components/Input.tsx index 6a5d59e..eb64204 100644 --- a/client/src/components/Input.tsx +++ b/client/src/components/Input.tsx @@ -11,7 +11,7 @@ export default function Input({ label, ...props }: InputProps) { )}
From bebaaba177b07f1a15b18e8b134b90777da03106 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 17:13:22 +0300 Subject: [PATCH 038/561] feat: implement form validation and submission logic in sign-in page --- client/src/app/auth/page.tsx | 76 ++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 4 deletions(-) diff --git a/client/src/app/auth/page.tsx b/client/src/app/auth/page.tsx index 0b5d632..91e1473 100644 --- a/client/src/app/auth/page.tsx +++ b/client/src/app/auth/page.tsx @@ -1,3 +1,4 @@ +"use client"; import React from "react"; import Input from "@/components/Input"; @@ -9,6 +10,44 @@ import GoogleButton from "@/components/GoogleButton"; import Image from "next/image"; export default function SignInPage() { + const [email, setEmail] = React.useState(""); + const [password, setPassword] = React.useState(""); + const [remember, setRemember] = React.useState(false); + const [errors, setErrors] = React.useState<{ + email?: string; + password?: string; + }>({}); + const [submitting, setSubmitting] = React.useState(false); + + function validate() { + const newErrors: { email?: string; password?: string } = {}; + if (!email) { + newErrors.email = "Email is required."; + } else if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) { + newErrors.email = "Invalid email address."; + } + if (!password) { + newErrors.password = "Password is required."; + } else if (password.length < 6) { + newErrors.password = "Password must be at least 6 characters."; + } + return newErrors; + } + + function handleSubmit(e: React.FormEvent) { + e.preventDefault(); + const validationErrors = validate(); + setErrors(validationErrors); + if (Object.keys(validationErrors).length === 0) { + setSubmitting(true); + // TODO: Add actual sign-in logic here + setTimeout(() => { + setSubmitting(false); + alert("Signed in successfully (demo)"); + }, 1000); + } + } + return (
{/* Left Side - Auth Form */} @@ -29,21 +68,50 @@ export default function SignInPage() {

Welcome back! Please sign in to your account

-
- + + setEmail(e.target.value)} + autoComplete="email" + disabled={submitting} + /> + {errors.email && ( +
{errors.email}
+ )} setPassword(e.target.value)} + autoComplete="current-password" + disabled={submitting} /> + {errors.password && ( +
{errors.password}
+ )}
- +
Or continue with
- + setRemember(e.target.checked)} + disabled={submitting} + />
From a91c99072f14156ac333d58228b0461fc0920d92 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 19:09:18 +0300 Subject: [PATCH 039/561] refactor: remove duplicate components and consolidate shared components into a single directory --- client/src/app/auth/login.tsx | 151 ++++++++++++++++++ client/src/app/auth/page.tsx | 145 ----------------- client/src/app/auth/signup.tsx | 3 + client/src/components/ForgotPasswordLink.tsx | 12 -- client/src/components/GoogleButton.tsx | 11 -- client/src/components/{ => shared}/Button.tsx | 2 +- .../src/components/{ => shared}/Checkbox.tsx | 4 +- .../src/components/{ => shared}/Divider.tsx | 6 +- client/src/components/{ => shared}/Input.tsx | 4 +- client/src/shared/Button.tsx | 17 ++ client/src/shared/Checkbox.tsx | 19 +++ client/src/shared/Divider.tsx | 16 ++ client/src/shared/Input.tsx | 20 +++ 13 files changed, 235 insertions(+), 175 deletions(-) create mode 100644 client/src/app/auth/login.tsx create mode 100644 client/src/app/auth/signup.tsx delete mode 100644 client/src/components/ForgotPasswordLink.tsx delete mode 100644 client/src/components/GoogleButton.tsx rename client/src/components/{ => shared}/Button.tsx (66%) rename client/src/components/{ => shared}/Checkbox.tsx (80%) rename client/src/components/{ => shared}/Divider.tsx (59%) rename client/src/components/{ => shared}/Input.tsx (56%) create mode 100644 client/src/shared/Button.tsx create mode 100644 client/src/shared/Checkbox.tsx create mode 100644 client/src/shared/Divider.tsx create mode 100644 client/src/shared/Input.tsx diff --git a/client/src/app/auth/login.tsx b/client/src/app/auth/login.tsx new file mode 100644 index 0000000..e4207d2 --- /dev/null +++ b/client/src/app/auth/login.tsx @@ -0,0 +1,151 @@ +"use client"; +import React from "react"; + +import Input from "@/components/shared/Input"; +import Button from "@/components/shared/Button"; +// Login page for Slotify +import Divider from "@/components/shared/Divider"; +import Checkbox from "@/components/shared/Checkbox"; +import Image from "next/image"; + +export default function LoginPage() { + const [email, setEmail] = React.useState(""); + const [password, setPassword] = React.useState(""); + const [remember, setRemember] = React.useState(false); + const [errors, setErrors] = React.useState<{ + email?: string; + password?: string; + }>({}); + const [submitting, setSubmitting] = React.useState(false); + + function validate() { + const newErrors: { email?: string; password?: string } = {}; + if (!email) { + newErrors.email = "Email is required."; + } else if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) { + newErrors.email = "Invalid email address."; + } + if (!password) { + newErrors.password = "Password is required."; + } else if (password.length < 6) { + newErrors.password = "Password must be at least 6 characters."; + } + return newErrors; + } + + function handleSubmit(e: React.FormEvent) { + e.preventDefault(); + const validationErrors = validate(); + setErrors(validationErrors); + if (Object.keys(validationErrors).length === 0) { + setSubmitting(true); + // TODO: Add actual sign-in logic here + setTimeout(() => { + setSubmitting(false); + alert("Signed in successfully (demo)"); + }, 1000); + } + } + + return ( +
+ {/* Left Side - Auth Form */} +
+
+
+ Slotify Logo +
+ + SLOTIFY + +
+

+ Welcome back! Please sign in to your account +

+
+ setEmail(e.target.value)} + autoComplete="email" + disabled={submitting} + /> + {errors.email && ( +
{errors.email}
+ )} + setPassword(e.target.value)} + autoComplete="current-password" + disabled={submitting} + /> + {errors.password && ( +
{errors.password}
+ )} +
+ +
+
+ Or continue with +
+
+ ) => + setRemember(e.target.checked) + } + disabled={submitting} + /> + + Forgot password? + +
+
+ Don't have an account?{" "} + + Sign up + +
+
+ {/* Right Side - Illustration & Text */} +
+
+ Calendar Icon +
+
+

+ Streamline Your Scheduling +

+

+ Manage appointments, bookings, and time slots with our intuitive + platform designed for modern businesses. +

+
+
+ ); +} diff --git a/client/src/app/auth/page.tsx b/client/src/app/auth/page.tsx index 91e1473..e69de29 100644 --- a/client/src/app/auth/page.tsx +++ b/client/src/app/auth/page.tsx @@ -1,145 +0,0 @@ -"use client"; -import React from "react"; - -import Input from "@/components/Input"; -import Button from "@/components/Button"; -import Checkbox from "@/components/Checkbox"; -import Divider from "@/components/Divider"; -import ForgotPasswordLink from "@/components/ForgotPasswordLink"; -import GoogleButton from "@/components/GoogleButton"; -import Image from "next/image"; - -export default function SignInPage() { - const [email, setEmail] = React.useState(""); - const [password, setPassword] = React.useState(""); - const [remember, setRemember] = React.useState(false); - const [errors, setErrors] = React.useState<{ - email?: string; - password?: string; - }>({}); - const [submitting, setSubmitting] = React.useState(false); - - function validate() { - const newErrors: { email?: string; password?: string } = {}; - if (!email) { - newErrors.email = "Email is required."; - } else if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) { - newErrors.email = "Invalid email address."; - } - if (!password) { - newErrors.password = "Password is required."; - } else if (password.length < 6) { - newErrors.password = "Password must be at least 6 characters."; - } - return newErrors; - } - - function handleSubmit(e: React.FormEvent) { - e.preventDefault(); - const validationErrors = validate(); - setErrors(validationErrors); - if (Object.keys(validationErrors).length === 0) { - setSubmitting(true); - // TODO: Add actual sign-in logic here - setTimeout(() => { - setSubmitting(false); - alert("Signed in successfully (demo)"); - }, 1000); - } - } - - return ( -
- {/* Left Side - Auth Form */} -
-
-
- Slotify Logo -
- - SLOTIFY - -
-

- Welcome back! Please sign in to your account -

-
- setEmail(e.target.value)} - autoComplete="email" - disabled={submitting} - /> - {errors.email && ( -
{errors.email}
- )} - setPassword(e.target.value)} - autoComplete="current-password" - disabled={submitting} - /> - {errors.password && ( -
{errors.password}
- )} -
- -
-
- Or continue with - -
- setRemember(e.target.checked)} - disabled={submitting} - /> - -
-
- Don't have an account?{" "} - - Sign up - -
-
- {/* Right Side - Illustration & Text */} -
-
- Calendar Icon -
-
-

- Streamline Your Scheduling -

-

- Manage appointments, bookings, and time slots with our intuitive - platform designed for modern businesses. -

-
-
- ); -} diff --git a/client/src/app/auth/signup.tsx b/client/src/app/auth/signup.tsx new file mode 100644 index 0000000..99b658d --- /dev/null +++ b/client/src/app/auth/signup.tsx @@ -0,0 +1,3 @@ +export default function SignupPage() { + return
; +} diff --git a/client/src/components/ForgotPasswordLink.tsx b/client/src/components/ForgotPasswordLink.tsx deleted file mode 100644 index 0fcfaab..0000000 --- a/client/src/components/ForgotPasswordLink.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; - -export default function ForgotPasswordLink() { - return ( - - Forgot password? - - ); -} diff --git a/client/src/components/GoogleButton.tsx b/client/src/components/GoogleButton.tsx deleted file mode 100644 index 5616fa2..0000000 --- a/client/src/components/GoogleButton.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from "react"; - -export default function GoogleButton() { - return ( - - ); -} diff --git a/client/src/components/Button.tsx b/client/src/components/shared/Button.tsx similarity index 66% rename from client/src/components/Button.tsx rename to client/src/components/shared/Button.tsx index c5675ae..641f8ee 100644 --- a/client/src/components/Button.tsx +++ b/client/src/components/shared/Button.tsx @@ -7,7 +7,7 @@ type ButtonProps = React.ButtonHTMLAttributes & { export default function Button({ children, ...props }: ButtonProps) { return ( + ); +} +// Duplicate file, remove from src/shared. Use components/shared instead. diff --git a/client/src/shared/Checkbox.tsx b/client/src/shared/Checkbox.tsx new file mode 100644 index 0000000..c113944 --- /dev/null +++ b/client/src/shared/Checkbox.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +type CheckboxProps = React.InputHTMLAttributes & { + label: string; +}; + +export default function Checkbox({ label, ...props }: CheckboxProps) { + return ( + + ); +} +// Duplicate file, remove from src/shared. Use components/shared instead. diff --git a/client/src/shared/Divider.tsx b/client/src/shared/Divider.tsx new file mode 100644 index 0000000..8fc5582 --- /dev/null +++ b/client/src/shared/Divider.tsx @@ -0,0 +1,16 @@ +import React from "react"; + +export default function Divider({ children }: { children?: React.ReactNode }) { + return ( +
+
+ {children && ( + + {children} + + )} +
+
+ ); +} +// Duplicate file, remove from src/shared. Use components/shared instead. diff --git a/client/src/shared/Input.tsx b/client/src/shared/Input.tsx new file mode 100644 index 0000000..04ad60b --- /dev/null +++ b/client/src/shared/Input.tsx @@ -0,0 +1,20 @@ +import React from "react"; + +type InputProps = React.InputHTMLAttributes & { + label?: string; +}; + +export default function Input({ label, ...props }: InputProps) { + return ( +
+ {label && ( + + )} + +
+ ); +} +// Duplicate file, remove from src/shared. Use components/shared instead. From 7e4eb429af40e10819b28eb560e25b15000d9eb0 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Mon, 25 Aug 2025 21:47:31 +0300 Subject: [PATCH 040/561] refactor: remove unused authentication components and consolidate shared components --- client/src/app/auth/login.tsx | 151 ------------------ client/src/app/auth/login/Logo.module.css | 23 +++ client/src/app/auth/login/page.tsx | 92 +++++++++++ client/src/app/auth/page.tsx | 6 + client/src/app/auth/signup.tsx | 3 - client/src/app/auth/signup/page.tsx | 7 + .../src/components/Button/Button.module.css | 21 +++ client/src/components/Button/index.tsx | 14 ++ client/src/components/shared/Button.tsx | 16 -- .../shared/{Input.tsx => Input/index.tsx} | 6 +- client/src/components/shared/Input/styles.css | 19 +++ client/src/shared/Button.tsx | 17 -- client/src/shared/Checkbox.tsx | 19 --- client/src/shared/Divider.tsx | 16 -- client/src/shared/Input.tsx | 20 --- 15 files changed, 184 insertions(+), 246 deletions(-) delete mode 100644 client/src/app/auth/login.tsx create mode 100644 client/src/app/auth/login/Logo.module.css create mode 100644 client/src/app/auth/login/page.tsx delete mode 100644 client/src/app/auth/signup.tsx create mode 100644 client/src/app/auth/signup/page.tsx create mode 100644 client/src/components/Button/Button.module.css create mode 100644 client/src/components/Button/index.tsx delete mode 100644 client/src/components/shared/Button.tsx rename client/src/components/shared/{Input.tsx => Input/index.tsx} (51%) create mode 100644 client/src/components/shared/Input/styles.css delete mode 100644 client/src/shared/Button.tsx delete mode 100644 client/src/shared/Checkbox.tsx delete mode 100644 client/src/shared/Divider.tsx delete mode 100644 client/src/shared/Input.tsx diff --git a/client/src/app/auth/login.tsx b/client/src/app/auth/login.tsx deleted file mode 100644 index e4207d2..0000000 --- a/client/src/app/auth/login.tsx +++ /dev/null @@ -1,151 +0,0 @@ -"use client"; -import React from "react"; - -import Input from "@/components/shared/Input"; -import Button from "@/components/shared/Button"; -// Login page for Slotify -import Divider from "@/components/shared/Divider"; -import Checkbox from "@/components/shared/Checkbox"; -import Image from "next/image"; - -export default function LoginPage() { - const [email, setEmail] = React.useState(""); - const [password, setPassword] = React.useState(""); - const [remember, setRemember] = React.useState(false); - const [errors, setErrors] = React.useState<{ - email?: string; - password?: string; - }>({}); - const [submitting, setSubmitting] = React.useState(false); - - function validate() { - const newErrors: { email?: string; password?: string } = {}; - if (!email) { - newErrors.email = "Email is required."; - } else if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) { - newErrors.email = "Invalid email address."; - } - if (!password) { - newErrors.password = "Password is required."; - } else if (password.length < 6) { - newErrors.password = "Password must be at least 6 characters."; - } - return newErrors; - } - - function handleSubmit(e: React.FormEvent) { - e.preventDefault(); - const validationErrors = validate(); - setErrors(validationErrors); - if (Object.keys(validationErrors).length === 0) { - setSubmitting(true); - // TODO: Add actual sign-in logic here - setTimeout(() => { - setSubmitting(false); - alert("Signed in successfully (demo)"); - }, 1000); - } - } - - return ( -
- {/* Left Side - Auth Form */} -
-
-
- Slotify Logo -
- - SLOTIFY - -
-

- Welcome back! Please sign in to your account -

-
- setEmail(e.target.value)} - autoComplete="email" - disabled={submitting} - /> - {errors.email && ( -
{errors.email}
- )} - setPassword(e.target.value)} - autoComplete="current-password" - disabled={submitting} - /> - {errors.password && ( -
{errors.password}
- )} -
- -
-
- Or continue with -
-
- ) => - setRemember(e.target.checked) - } - disabled={submitting} - /> - - Forgot password? - -
-
- Don't have an account?{" "} - - Sign up - -
-
- {/* Right Side - Illustration & Text */} -
-
- Calendar Icon -
-
-

- Streamline Your Scheduling -

-

- Manage appointments, bookings, and time slots with our intuitive - platform designed for modern businesses. -

-
-
- ); -} diff --git a/client/src/app/auth/login/Logo.module.css b/client/src/app/auth/login/Logo.module.css new file mode 100644 index 0000000..cce3179 --- /dev/null +++ b/client/src/app/auth/login/Logo.module.css @@ -0,0 +1,23 @@ +.logoContainer { + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 1.5rem; + margin-top: 2.5rem; +} +.logoCircle { + width: 112px; + height: 112px; + border-radius: 50%; + background: var(--color-primary); + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 1rem; +} +.slotifyText { + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.15em; + color: var(--color-primary); +} diff --git a/client/src/app/auth/login/page.tsx b/client/src/app/auth/login/page.tsx new file mode 100644 index 0000000..b1d28a3 --- /dev/null +++ b/client/src/app/auth/login/page.tsx @@ -0,0 +1,92 @@ +import Image from "next/image"; +import Input from "@/components/shared/Input"; +import Button from "@/components/Button"; +import Checkbox from "@/components/shared/Checkbox"; +import Divider from "@/components/shared/Divider"; + +export default function LoginPage() { + return ( +
+
+ {/* Left Side - Form */} +
+ {/* Logo */} +
+
+ Slotify Logo +
+ + SLOTIFY + +
+ {/* Welcome Text */} +
+

+ Welcome back! Please sign in to your account +

+
+ {/* Form */} +
+ + + +
+ {/* Divider */} + Or continue with + {/* Google Button */} + + {/* Options Row */} + + {/* Sign up link */} +
+ + Don't have an account?{" "} + + Sign up + + +
+
+ {/* Right Side - Illustration */} +
+ Calendar Icon +

+ Streamline Your Scheduling +

+

+ Manage appointments, bookings, and time slots with our intuitive + platform designed for modern businesses. +

+
+
+
+ ); +} diff --git a/client/src/app/auth/page.tsx b/client/src/app/auth/page.tsx index e69de29..fc685b7 100644 --- a/client/src/app/auth/page.tsx +++ b/client/src/app/auth/page.tsx @@ -0,0 +1,6 @@ +import { redirect } from "next/navigation"; + +export default function AuthPage() { + redirect("/auth/login"); + return null; +} diff --git a/client/src/app/auth/signup.tsx b/client/src/app/auth/signup.tsx deleted file mode 100644 index 99b658d..0000000 --- a/client/src/app/auth/signup.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function SignupPage() { - return
; -} diff --git a/client/src/app/auth/signup/page.tsx b/client/src/app/auth/signup/page.tsx new file mode 100644 index 0000000..a72ec73 --- /dev/null +++ b/client/src/app/auth/signup/page.tsx @@ -0,0 +1,7 @@ +export default function SignupPage() { + return ( +
+
Signup Page
+
+ ); +} diff --git a/client/src/components/Button/Button.module.css b/client/src/components/Button/Button.module.css new file mode 100644 index 0000000..0e285b5 --- /dev/null +++ b/client/src/components/Button/Button.module.css @@ -0,0 +1,21 @@ +.slotify-btn { + width: 100%; + background: var(--color-primary); + color: #fff; + padding: 0.75rem 0; + border-radius: 0.5rem; + font-weight: bold; + font-size: 1rem; + transition: all 0.2s; + box-shadow: 0 1px 2px 0 rgb(16 24 40 / 5%); + border: none; + cursor: pointer; +} +.slotify-btn:hover { + background: var(--color-secondary); + color: var(--color-primary); +} +.slotify-btn:focus { + outline: none; + box-shadow: 0 0 0 2px var(--color-secondary); +} diff --git a/client/src/components/Button/index.tsx b/client/src/components/Button/index.tsx new file mode 100644 index 0000000..3f5e8ca --- /dev/null +++ b/client/src/components/Button/index.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import styles from "./Button.module.css"; + +type ButtonProps = React.ButtonHTMLAttributes & { + children: React.ReactNode; +}; + +export default function Button({ children, ...props }: ButtonProps) { + return ( + + ); +} diff --git a/client/src/components/shared/Button.tsx b/client/src/components/shared/Button.tsx deleted file mode 100644 index 641f8ee..0000000 --- a/client/src/components/shared/Button.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -type ButtonProps = React.ButtonHTMLAttributes & { - children: React.ReactNode; -}; - -export default function Button({ children, ...props }: ButtonProps) { - return ( - - ); -} diff --git a/client/src/components/shared/Input.tsx b/client/src/components/shared/Input/index.tsx similarity index 51% rename from client/src/components/shared/Input.tsx rename to client/src/components/shared/Input/index.tsx index f844e3e..a4ed110 100644 --- a/client/src/components/shared/Input.tsx +++ b/client/src/components/shared/Input/index.tsx @@ -1,4 +1,5 @@ import React from "react"; +import "./styles.css"; type InputProps = React.InputHTMLAttributes & { label?: string; @@ -10,10 +11,7 @@ export default function Input({ label, ...props }: InputProps) { {label && ( )} - +
); } diff --git a/client/src/components/shared/Input/styles.css b/client/src/components/shared/Input/styles.css new file mode 100644 index 0000000..1fd9b5b --- /dev/null +++ b/client/src/components/shared/Input/styles.css @@ -0,0 +1,19 @@ +/* Custom input style for login form */ +.slotify-input { + width: 100%; + border: 2px solid #0a2940; /* dark blue */ + border-radius: 8px; + padding: 0.75rem 1rem; + font-size: 1.125rem; + color: #0a2940; + background: #fff; + outline: none; + transition: border-color 0.2s; +} +.slotify-input:focus { + border-color: #1e4d6b; /* secondary blue or accent */ +} +.slotify-input::placeholder { + color: #0a2940; + opacity: 1; +} diff --git a/client/src/shared/Button.tsx b/client/src/shared/Button.tsx deleted file mode 100644 index 1bb1ce1..0000000 --- a/client/src/shared/Button.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; - -type ButtonProps = React.ButtonHTMLAttributes & { - children: React.ReactNode; -}; - -export default function Button({ children, ...props }: ButtonProps) { - return ( - - ); -} -// Duplicate file, remove from src/shared. Use components/shared instead. diff --git a/client/src/shared/Checkbox.tsx b/client/src/shared/Checkbox.tsx deleted file mode 100644 index c113944..0000000 --- a/client/src/shared/Checkbox.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -type CheckboxProps = React.InputHTMLAttributes & { - label: string; -}; - -export default function Checkbox({ label, ...props }: CheckboxProps) { - return ( - - ); -} -// Duplicate file, remove from src/shared. Use components/shared instead. diff --git a/client/src/shared/Divider.tsx b/client/src/shared/Divider.tsx deleted file mode 100644 index 8fc5582..0000000 --- a/client/src/shared/Divider.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -export default function Divider({ children }: { children?: React.ReactNode }) { - return ( -
-
- {children && ( - - {children} - - )} -
-
- ); -} -// Duplicate file, remove from src/shared. Use components/shared instead. diff --git a/client/src/shared/Input.tsx b/client/src/shared/Input.tsx deleted file mode 100644 index 04ad60b..0000000 --- a/client/src/shared/Input.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; - -type InputProps = React.InputHTMLAttributes & { - label?: string; -}; - -export default function Input({ label, ...props }: InputProps) { - return ( -
- {label && ( - - )} - -
- ); -} -// Duplicate file, remove from src/shared. Use components/shared instead. From 369cccfb3ff2d68341ccf6f2749ac6556c70772a Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Tue, 26 Aug 2025 00:10:46 +0300 Subject: [PATCH 041/561] improved styling, and responsive design --- client/src/app/auth/login/Logo.module.css | 23 ---- client/src/app/auth/login/page.module.css | 68 ++++++++++++ client/src/app/auth/login/page.tsx | 104 +++++++++++++----- client/src/app/globals.css | 9 +- client/src/components/shared/Checkbox.tsx | 4 +- client/src/components/shared/Input/styles.css | 3 +- 6 files changed, 153 insertions(+), 58 deletions(-) delete mode 100644 client/src/app/auth/login/Logo.module.css create mode 100644 client/src/app/auth/login/page.module.css diff --git a/client/src/app/auth/login/Logo.module.css b/client/src/app/auth/login/Logo.module.css deleted file mode 100644 index cce3179..0000000 --- a/client/src/app/auth/login/Logo.module.css +++ /dev/null @@ -1,23 +0,0 @@ -.logoContainer { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1.5rem; - margin-top: 2.5rem; -} -.logoCircle { - width: 112px; - height: 112px; - border-radius: 50%; - background: var(--color-primary); - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 1rem; -} -.slotifyText { - font-size: 0.75rem; - font-weight: 600; - letter-spacing: 0.15em; - color: var(--color-primary); -} diff --git a/client/src/app/auth/login/page.module.css b/client/src/app/auth/login/page.module.css new file mode 100644 index 0000000..b22e224 --- /dev/null +++ b/client/src/app/auth/login/page.module.css @@ -0,0 +1,68 @@ +.googleBtn { + width: 100%; + max-width: 28rem; + border: 2px solid var(--color-primary); + border-radius: 0.5rem; + padding: 0.5rem 0; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + font-size: 1.125rem; + color: var(--color-primary); + background: var(--color-white); + margin-bottom: 0.5rem; + transition: background 0.2s, color 0.2s, border-color 0.2s; + cursor: pointer; +} +.googleBtn:hover { + background: var(--color-secondary); + border-color: var(--color-secondary); + color: var(--color-primary); +} +.googleIcon { + margin-right: 0.5rem; + font-size: 1.25rem; +} +.calendarIcon { + margin-bottom: 3.5rem; +} +.loginPage { + width: 100vw; + height: 100vh; + display: flex; + background: var(--color-secondary); +} +.loginCard { + display: flex; + flex: 1; + background: var(--color-white); + border-radius: 0; + overflow: hidden; + box-shadow: 0 4px 24px 0 rgb(16 24 40 / 10%); +} +.leftCol { + display: flex; + flex-direction: column; + flex: 1; + align-items: center; + justify-content: center; + padding: 2rem 3rem; +} +.logoContainer { + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 1.5rem; + margin-top: 2.5rem; +} +.logoCircle { + width: 112px; + height: 112px; + border-radius: 50%; + background: var(--color-primary); + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 1rem; +} diff --git a/client/src/app/auth/login/page.tsx b/client/src/app/auth/login/page.tsx index b1d28a3..2df2102 100644 --- a/client/src/app/auth/login/page.tsx +++ b/client/src/app/auth/login/page.tsx @@ -1,18 +1,49 @@ import Image from "next/image"; + +import React, { useState } from "react"; import Input from "@/components/shared/Input"; import Button from "@/components/Button"; import Checkbox from "@/components/shared/Checkbox"; import Divider from "@/components/shared/Divider"; +import styles from "./page.module.css"; export default function LoginPage() { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [remember, setRemember] = useState(false); + const [error, setError] = useState(""); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(""); + // Simple validation + if (!email || !password) { + setError("Please enter both email and password."); + return; + } + setLoading(true); + // Simulate async login (replace with real API call) + setTimeout(() => { + setLoading(false); + if (email !== "test@example.com" || password !== "password") { + setError("Invalid credentials. Please try again."); + } else { + setError(""); + // Redirect or do something on success + alert("Login successful!"); + } + }, 1000); + }; + return ( -
-
+
+
{/* Left Side - Form */} -
+
{/* Logo */} -
-
+
+
Slotify Logo
- - SLOTIFY - + SLOTIFY
{/* Welcome Text */}
@@ -31,42 +60,65 @@ export default function LoginPage() {

{/* Form */} -
+ setEmail(e.target.value)} required /> setPassword(e.target.value)} required /> - + {error && ( +
{error}
+ )} +
{/* Divider */} Or continue with {/* Google Button */} - {/* Options Row */} - - {/* Sign up link */} -
- - Don't have an account?{" "} - - Sign up +
{/* Right Side - Illustration */} @@ -76,7 +128,7 @@ export default function LoginPage() { alt="Calendar Icon" width={120} height={120} - className="mb-8" + className={styles.calendarIcon} />

Streamline Your Scheduling diff --git a/client/src/app/globals.css b/client/src/app/globals.css index 383197c..e2e6694 100644 --- a/client/src/app/globals.css +++ b/client/src/app/globals.css @@ -9,11 +9,13 @@ html, body { height: 100%; } + body { min-height: 100vh; line-height: 1.5; background: var(--color-white); color: var(--color-black); + font-family: 'Poppins', sans-serif !important; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -52,12 +54,7 @@ button { -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); -} + @media (prefers-color-scheme: dark) { :root { diff --git a/client/src/components/shared/Checkbox.tsx b/client/src/components/shared/Checkbox.tsx index 4ad3e36..e0b3466 100644 --- a/client/src/components/shared/Checkbox.tsx +++ b/client/src/components/shared/Checkbox.tsx @@ -6,10 +6,10 @@ type CheckboxProps = React.InputHTMLAttributes & { export default function Checkbox({ label, ...props }: CheckboxProps) { return ( -

- Don't have an account?{" "} + Don't have an account?{" "} Sign up diff --git a/client/src/app/auth/signup/page.tsx b/client/src/app/auth/signup/page.tsx index a72ec73..ebebcd0 100644 --- a/client/src/app/auth/signup/page.tsx +++ b/client/src/app/auth/signup/page.tsx @@ -1,7 +1,142 @@ +"use client"; +import React, { useState } from "react"; +import Input from "@/components/shared/Input"; +import Checkbox from "@/components/shared/Checkbox"; +import Button from "@/components/Button"; +import Image from "next/image"; + export default function SignupPage() { + const [fullName, setFullName] = useState(""); + const [email, setEmail] = useState(""); + const [businessName, setBusinessName] = useState(""); + const [password, setPassword] = useState(""); + const [confirmPassword, setConfirmPassword] = useState(""); + const [agree, setAgree] = useState(false); + const [error, setError] = useState(""); + const [loading, setLoading] = useState(false); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + setError(""); + if (!fullName || !email || !businessName || !password || !confirmPassword) { + setError("Please fill in all fields."); + return; + } + if (password !== confirmPassword) { + setError("Passwords do not match."); + return; + } + if (!agree) { + setError("You must agree to the Terms of Services and privacy policy."); + return; + } + setLoading(true); + setTimeout(() => { + setLoading(false); + alert("Account created!"); + }, 1000); + }; + return ( -
-
Signup Page
+
+ {/* Left Side */} +
+
+ Presentation +
+

+ Join Thousands of Businesses +

+

+ Start managing your appointments more efficiently and grow your + business with our powerful scheduling tools. +

+
+ {/* Right Side */} +
+
+ Slotify Logo + SLOTIFY +
+

+ Create your account and start scheduling +

+
+ setFullName(e.target.value)} + placeholder="John Doe" + required + /> + setEmail(e.target.value)} + placeholder="Enter your email" + type="email" + required + /> + setBusinessName(e.target.value)} + placeholder="Enter your Business Name" + required + /> + setPassword(e.target.value)} + placeholder="Create a password" + type="password" + required + /> + setConfirmPassword(e.target.value)} + placeholder="Confirm your password" + type="password" + required + /> +
+ setAgree(e.target.checked)} + /> +
+ {error && ( +
{error}
+ )} + +
+
+ Already have an account?{" "} + + Sign in + +
+
); } From 3afdd4c53427da8a7b74cd398eb607cc9241e9ac Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Tue, 26 Aug 2025 18:40:58 +0300 Subject: [PATCH 043/561] feat: enhance authentication pages with improved styling, form handling, and SVG icons --- client/public/icons/signup.svg | 17 +- client/src/app/auth/AuthCommon.module.css | 0 client/src/app/auth/login/page.tsx | 9 +- client/src/app/auth/signin/page.module.css | 68 ++++++++ client/src/app/auth/signin/page.tsx | 146 ++++++++++++++++++ client/src/app/auth/signup/page.module.css | 69 +++++++++ client/src/app/auth/signup/page.tsx | 70 ++++----- client/src/components/Button/index.tsx | 11 +- client/src/components/shared/Input/styles.css | 4 +- 9 files changed, 347 insertions(+), 47 deletions(-) create mode 100644 client/src/app/auth/AuthCommon.module.css create mode 100644 client/src/app/auth/signin/page.module.css create mode 100644 client/src/app/auth/signin/page.tsx create mode 100644 client/src/app/auth/signup/page.module.css diff --git a/client/public/icons/signup.svg b/client/public/icons/signup.svg index b627a99..6dc67ac 100644 --- a/client/public/icons/signup.svg +++ b/client/public/icons/signup.svg @@ -1,3 +1,16 @@ - - + + + + + + + + + + + + + + + diff --git a/client/src/app/auth/AuthCommon.module.css b/client/src/app/auth/AuthCommon.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/src/app/auth/login/page.tsx b/client/src/app/auth/login/page.tsx index bba4a9a..b2f19ea 100644 --- a/client/src/app/auth/login/page.tsx +++ b/client/src/app/auth/login/page.tsx @@ -1,5 +1,6 @@ "use client"; import Image from "next/image"; +import Link from "next/link"; import React, { useState } from "react"; import Input from "@/components/shared/Input"; @@ -105,19 +106,19 @@ export default function LoginPage() { checked={remember} onChange={(e) => setRemember(e.target.checked)} /> - Forgot password? - +
Don't have an account?{" "} - + Sign up - +
diff --git a/client/src/app/auth/signin/page.module.css b/client/src/app/auth/signin/page.module.css new file mode 100644 index 0000000..65b4776 --- /dev/null +++ b/client/src/app/auth/signin/page.module.css @@ -0,0 +1,68 @@ + .googleBtn { + width: 100%; + max-width: 28rem; + border: 2px solid var(--color-primary); + border-radius: 0.5rem; + padding: 0.5rem 0; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + font-size: 1.125rem; + color: var(--color-primary); + background: var(--color-white); + margin-bottom: 0.5rem; + transition: background 0.2s, color 0.2s, border-color 0.2s; + cursor: pointer; +} + .googleBtn:hover { + background: var(--color-secondary); + border-color: var(--color-secondary); + color: var(--color-primary); +} + .googleIcon { + margin-right: 0.5rem; + font-size: 1.25rem; +} + .calendarIcon { + margin-bottom: 3.5rem; +} + .loginPage { + width: 100vw; + height: 100vh; + display: flex; + background: var(--color-secondary); +} + .loginCard { + display: flex; + flex: 1; + background: var(--color-white); + border-radius: 0; + overflow: hidden; + box-shadow: 0 4px 24px 0 rgb(16 24 40 / 10%); +} + .leftCol { + display: flex; + flex-direction: column; + flex: 1; + align-items: center; + justify-content: center; + padding: 2rem 3rem; +} + .logoContainer { + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 1.5rem; + margin-top: 2.5rem; +} + .logoCircle { + width: 112px; + height: 112px; + border-radius: 50%; + background: var(--color-primary); + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 1rem; +} diff --git a/client/src/app/auth/signin/page.tsx b/client/src/app/auth/signin/page.tsx new file mode 100644 index 0000000..2df284b --- /dev/null +++ b/client/src/app/auth/signin/page.tsx @@ -0,0 +1,146 @@ +"use client"; +import Image from "next/image"; +import Link from "next/link"; + +import React, { useState } from "react"; +import Input from "@/components/shared/Input"; +import Button from "@/components/Button"; +import Checkbox from "@/components/shared/Checkbox"; +import Divider from "@/components/shared/Divider"; +import styles from "./page.module.css"; + +export default function SigninPage() { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [remember, setRemember] = useState(false); + const [error, setError] = useState(""); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(""); + // Simple validation + if (!email || !password) { + setError("Please enter both email and password."); + return; + } + setLoading(true); + // Simulate async login (replace with real API call) + setTimeout(() => { + setLoading(false); + if (email !== "test@example.com" || password !== "password") { + setError("Invalid credentials. Please try again."); + } else { + setError(""); + // Redirect or do something on success + alert("Login successful!"); + } + }, 1000); + }; + + return ( +
+
+ {/* Left Side - Form */} +
+ {/* Logo */} +
+
+ Slotify Logo +
+ SLOTIFY +
+ {/* Welcome Text */} +
+

+ Welcome back! Please sign in to your account +

+
+ {/* Form */} +
+ setEmail(e.target.value)} + required + /> + setPassword(e.target.value)} + required + /> + {error && ( +
{error}
+ )} + +
+ {/* Divider */} + Or continue with + {/* Google Button */} + + {/* Options Row */} +
+
+ setRemember(e.target.checked)} + /> + + Forgot password? + +
+
+ + Don't have an account?{" "} + + Sign up + + +
+
+
+ {/* Right Side - Illustration */} +
+ Calendar Icon +

+ Streamline Your Scheduling +

+

+ Manage appointments, bookings, and time slots with our intuitive + platform designed for modern businesses. +

+
+
+
+ ); +} diff --git a/client/src/app/auth/signup/page.module.css b/client/src/app/auth/signup/page.module.css new file mode 100644 index 0000000..1759489 --- /dev/null +++ b/client/src/app/auth/signup/page.module.css @@ -0,0 +1,69 @@ +/* Signup Page Custom Styles */ +.signupPage { + height: 100vh; + display: flex; + overflow: hidden; +} +.signupLeft { + flex: 1; + background: #0a2940; + color: #fff; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 2rem; +} +.signupRight { + flex: 1; + background: #fff; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 2rem; +} +.signupLogo { + margin-bottom: 2rem; + display: flex; + flex-direction: column; + align-items: center; +} +.signupTitle { + font-size: 1.25rem; + font-weight: 600; + margin-bottom: 0.5rem; + text-align: center; +} +.signupDesc { + text-align: center; + color: rgba(255, 255, 255, 0.85); + max-width: 400px; + font-size: 1.15rem; + margin-bottom: 2.5rem; +} +.signupForm { + width: 100%; + max-width: 400px; + display: flex; + flex-direction: column; + gap: 1rem; +} +.signupError { + color: #e53e3e; + text-align: center; + font-size: 0.95rem; + margin-top: 0.5rem; +} +.signupFooter { + margin-top: 2rem; + text-align: center; + font-size: 0.95rem; + color: #666; +} +.signupLink { + font-weight: bold; + color: #0a2940; + text-decoration: underline; + cursor: pointer; +} diff --git a/client/src/app/auth/signup/page.tsx b/client/src/app/auth/signup/page.tsx index ebebcd0..479b3bd 100644 --- a/client/src/app/auth/signup/page.tsx +++ b/client/src/app/auth/signup/page.tsx @@ -4,6 +4,8 @@ import Input from "@/components/shared/Input"; import Checkbox from "@/components/shared/Checkbox"; import Button from "@/components/Button"; import Image from "next/image"; +import Link from "next/link"; +import styles from "./page.module.css"; export default function SignupPage() { const [fullName, setFullName] = useState(""); @@ -38,43 +40,40 @@ export default function SignupPage() { }; return ( -
- {/* Left Side */} -
-
+
+ {/* Left Side - Info */} +
+
Presentation
-

- Join Thousands of Businesses -

-

+

Join Thousands of Businesses

+

Start managing your appointments more efficiently and grow your business with our powerful scheduling tools.

- {/* Right Side */} -
-
- Slotify Logo - SLOTIFY + {/* Right Side - Logo & Form */} +
+
+
+ Slotify Logo +
+ SLOTIFY
-

+

Create your account and start scheduling

-
+ -
+
setAgree(e.target.checked)} />
- {error && ( -
{error}
- )} + {error &&
{error}
} -
- Already have an account?{" "} - - Sign in - +
+ + Already have an account?{" "} + + Sign in + +
diff --git a/client/src/components/Button/index.tsx b/client/src/components/Button/index.tsx index 3f5e8ca..6c79946 100644 --- a/client/src/components/Button/index.tsx +++ b/client/src/components/Button/index.tsx @@ -5,9 +5,16 @@ type ButtonProps = React.ButtonHTMLAttributes & { children: React.ReactNode; }; -export default function Button({ children, ...props }: ButtonProps) { +export default function Button({ + children, + className = "", + ...props +}: ButtonProps) { return ( - ); diff --git a/client/src/components/shared/Input/styles.css b/client/src/components/shared/Input/styles.css index adc42a6..e86ac57 100644 --- a/client/src/components/shared/Input/styles.css +++ b/client/src/components/shared/Input/styles.css @@ -3,8 +3,8 @@ width: 100%; border: 2px solid #0a2940; /* dark blue */ border-radius: 8px; - padding: 0.75rem 1rem; - font-size: 1.125rem; + padding: 0.35rem 0.6rem; + font-size: 0.92rem; color: #0a2940; background: #fff; outline: none; From b4e826cd210f676916196cc3c48e32f1ca1ec92c Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Tue, 26 Aug 2025 22:48:08 +0300 Subject: [PATCH 044/561] feat: add axios API client with interceptors for error handling --- client/package-lock.json | 124 ++++++++++++++++++++++++++++++++++----- client/package.json | 12 ++-- client/src/lib/api.ts | 19 ++++++ 3 files changed, 136 insertions(+), 19 deletions(-) create mode 100644 client/src/lib/api.ts diff --git a/client/package-lock.json b/client/package-lock.json index 04fe38d..c6d2938 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "autoprefixer": "^10.4.21", + "axios": "^1.11.0", "lightningcss": "^1.30.1", "next": "15.4.7", "postcss": "^8.5.6", @@ -18,6 +19,7 @@ "devDependencies": { "@eslint/eslintrc": "^3", "@tailwindcss/postcss": "^4", + "@types/axios": "^0.9.36", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", @@ -1276,6 +1278,13 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/axios": { + "version": "0.9.36", + "resolved": "https://registry.npmjs.org/@types/axios/-/axios-0.9.36.tgz", + "integrity": "sha512-NLOpedx9o+rxo/X5ChbdiX6mS1atE4WHmEEIcR9NLenRVa5HoVjAvjafwU3FPTqnZEstpoqCaW7fagqSoTDNeg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -2134,6 +2143,12 @@ "node": ">= 0.4" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/autoprefixer": { "version": "10.4.21", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", @@ -2197,6 +2212,17 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", @@ -2293,7 +2319,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -2428,6 +2453,18 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2579,6 +2616,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/detect-libc": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", @@ -2605,7 +2651,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -2716,7 +2761,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -2726,7 +2770,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -2764,7 +2807,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -2777,7 +2819,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -3393,6 +3434,26 @@ "dev": true, "license": "ISC" }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", @@ -3409,6 +3470,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -3426,7 +3503,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3467,7 +3543,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -3492,7 +3567,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -3580,7 +3654,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3659,7 +3732,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3672,7 +3744,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -3688,7 +3759,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -4591,7 +4661,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4621,6 +4690,27 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -5142,6 +5232,12 @@ "react-is": "^16.13.1" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", diff --git a/client/package.json b/client/package.json index ef05551..e1ec824 100644 --- a/client/package.json +++ b/client/package.json @@ -3,14 +3,15 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint", - "test": "echo \"No tests yet\" && exit 0" + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "test": "echo \"No tests yet\" && exit 0" }, "dependencies": { "autoprefixer": "^10.4.21", + "axios": "^1.11.0", "lightningcss": "^1.30.1", "next": "15.4.7", "postcss": "^8.5.6", @@ -20,6 +21,7 @@ "devDependencies": { "@eslint/eslintrc": "^3", "@tailwindcss/postcss": "^4", + "@types/axios": "^0.9.36", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", diff --git a/client/src/lib/api.ts b/client/src/lib/api.ts new file mode 100644 index 0000000..6b6b015 --- /dev/null +++ b/client/src/lib/api.ts @@ -0,0 +1,19 @@ +import axios from 'axios'; + +const api = axios.create({ + baseURL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000/api', + withCredentials: true, // For cookies/auth + headers: { + 'Content-Type': 'application/json', + }, +}); + +// Add interceptors for auth/error handling +api.interceptors.response.use( + response => response, + error => { + return Promise.reject(error); + } +); + +export default api; From 147cd9b5bc2586044d56741af2e6627ed11b55a3 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Tue, 26 Aug 2025 23:30:59 +0300 Subject: [PATCH 045/561] feat: add Google authentication routes to API for user login and callback handling --- server/config/services.php | 7 +++++++ server/routes/api.php | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/server/config/services.php b/server/config/services.php index 6182e4b..dbdbc1d 100644 --- a/server/config/services.php +++ b/server/config/services.php @@ -35,4 +35,11 @@ ], ], + 'google' => [ + 'client_id' => env('GOOGLE_CLIENT_ID'), + 'client_secret' => env('GOOGLE_CLIENT_SECRET'), + 'redirect' => env('GOOGLE_REDIRECT_URI'), +], + + ]; diff --git a/server/routes/api.php b/server/routes/api.php index 4d9080f..795353d 100644 --- a/server/routes/api.php +++ b/server/routes/api.php @@ -7,6 +7,10 @@ Route::post('/register', [AuthController::class, 'register']); Route::post('/login', [AuthController::class, 'login']); + // Google Auth routes + Route::get('/auth/google', [AuthController::class, 'redirectToGoogle']); + Route::get('/auth/google/callback', [AuthController::class, 'handleGoogleCallback']); + Route::middleware('auth:sanctum')->group(function () { Route::post('/logout', [AuthController::class, 'logout']); Route::get('/me', [AuthController::class, 'me']); From 9bb25b7b369353343605294fa817ef81c48d9191 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Tue, 26 Aug 2025 23:40:18 +0300 Subject: [PATCH 046/561] feat: add Google authentication methods in AuthController and update dependencies --- .../app/Http/Controllers/AuthController.php | 26 +- server/composer.json | 1 + server/composer.lock | 440 +++++++++++++++++- 3 files changed, 461 insertions(+), 6 deletions(-) diff --git a/server/app/Http/Controllers/AuthController.php b/server/app/Http/Controllers/AuthController.php index cd30f8e..4cf9b75 100644 --- a/server/app/Http/Controllers/AuthController.php +++ b/server/app/Http/Controllers/AuthController.php @@ -1,7 +1,5 @@ authService->me($request->user())); } + + public function redirectToGoogle() + { + return Socialite::driver('google')->redirect(); + } + + public function handleGoogleCallback() + { + $googleUser = Socialite::driver('google')->user(); + $user = User::firstOrCreate( + ['email' => $googleUser->getEmail()], + ['name' => $googleUser->getName()] + ); + // Issue Sanctum token + $token = $user->createToken('auth_token')->plainTextToken; + return response()->json([ + 'user' => new UserResource($user), + 'token' => $token, + ]); + } } diff --git a/server/composer.json b/server/composer.json index 88f78ef..f1fe939 100644 --- a/server/composer.json +++ b/server/composer.json @@ -9,6 +9,7 @@ "php": "^8.2", "laravel/framework": "^12.0", "laravel/sanctum": "^4.2", + "laravel/socialite": "^5.23", "laravel/tinker": "^2.10.1" }, "require-dev": { diff --git a/server/composer.lock b/server/composer.lock index f8c3b82..0229b05 100644 --- a/server/composer.lock +++ b/server/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9e8009f62639975c287d610dda66cb45", + "content-hash": "8320dc82786444e29d0e7648bd026571", "packages": [ { "name": "brick/math", @@ -509,6 +509,69 @@ ], "time": "2025-03-06T22:45:56+00:00" }, + { + "name": "firebase/php-jwt", + "version": "v6.11.1", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.4", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psr/cache": "^2.0||^3.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.11.1" + }, + "time": "2025-04-09T20:32:01+00:00" + }, { "name": "fruitcake/php-cors", "version": "v1.3.0", @@ -1454,6 +1517,78 @@ }, "time": "2025-03-19T13:51:03+00:00" }, + { + "name": "laravel/socialite", + "version": "v5.23.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/socialite.git", + "reference": "e9e0fc83b9d8d71c8385a5da20e5b95ca6234cf5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/socialite/zipball/e9e0fc83b9d8d71c8385a5da20e5b95ca6234cf5", + "reference": "e9e0fc83b9d8d71c8385a5da20e5b95ca6234cf5", + "shasum": "" + }, + "require": { + "ext-json": "*", + "firebase/php-jwt": "^6.4", + "guzzlehttp/guzzle": "^6.0|^7.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "league/oauth1-client": "^1.11", + "php": "^7.2|^8.0", + "phpseclib/phpseclib": "^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0|^10.0", + "phpstan/phpstan": "^1.12.23", + "phpunit/phpunit": "^8.0|^9.3|^10.4|^11.5" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Socialite": "Laravel\\Socialite\\Facades\\Socialite" + }, + "providers": [ + "Laravel\\Socialite\\SocialiteServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Socialite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", + "homepage": "https://laravel.com", + "keywords": [ + "laravel", + "oauth" + ], + "support": { + "issues": "https://github.com/laravel/socialite/issues", + "source": "https://github.com/laravel/socialite" + }, + "time": "2025-07-23T14:16:08+00:00" + }, { "name": "laravel/tinker", "version": "v2.10.1", @@ -1897,6 +2032,82 @@ ], "time": "2024-09-21T08:32:55+00:00" }, + { + "name": "league/oauth1-client", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth1-client.git", + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/f9c94b088837eb1aae1ad7c4f23eb65cc6993055", + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", + "guzzlehttp/psr7": "^1.7|^2.0", + "php": ">=7.1||>=8.0" + }, + "require-dev": { + "ext-simplexml": "*", + "friendsofphp/php-cs-fixer": "^2.17", + "mockery/mockery": "^1.3.3", + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5||9.5" + }, + "suggest": { + "ext-simplexml": "For decoding XML-based responses." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev", + "dev-develop": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\OAuth1\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Corlett", + "email": "bencorlett@me.com", + "homepage": "http://www.webcomm.com.au", + "role": "Developer" + } + ], + "description": "OAuth 1.0 Client Library", + "keywords": [ + "Authentication", + "SSO", + "authorization", + "bitbucket", + "identity", + "idp", + "oauth", + "oauth1", + "single sign on", + "trello", + "tumblr", + "twitter" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth1-client/issues", + "source": "https://github.com/thephpleague/oauth1-client/tree/v1.11.0" + }, + "time": "2024-12-10T19:59:05+00:00" + }, { "name": "league/uri", "version": "7.5.1", @@ -2575,6 +2786,123 @@ ], "time": "2025-05-08T08:14:37+00:00" }, + { + "name": "paragonie/constant_time_encoding", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "df1e7fde177501eee2037dd159cf04f5f301a512" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512", + "reference": "df1e7fde177501eee2037dd159cf04f5f301a512", + "shasum": "" + }, + "require": { + "php": "^8" + }, + "require-dev": { + "phpunit/phpunit": "^9", + "vimeo/psalm": "^4|^5" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2024-05-08T12:36:18+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.3", @@ -2650,6 +2978,116 @@ ], "time": "2024-07-20T21:41:07+00:00" }, + { + "name": "phpseclib/phpseclib", + "version": "3.0.46", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", + "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "^1|^2|^3", + "paragonie/random_compat": "^1.4|^2.0|^9.99.99", + "php": ">=5.6.1" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "suggest": { + "ext-dom": "Install the DOM extension to load XML formatted public keys.", + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." + }, + "type": "library", + "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib3\\": "phpseclib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.46" + }, + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], + "time": "2025-06-26T16:29:55+00:00" + }, { "name": "psr/clock", "version": "1.0.0", From 4900302918e24b0b8ddbfffde0e0599df0c5f040 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 00:01:26 +0300 Subject: [PATCH 047/561] feat: implement Google login functionality in AuthService and update AuthController --- server/app/Http/Controllers/AuthController.php | 11 +++-------- server/app/Services/AuthService.php | 9 +++++++++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/server/app/Http/Controllers/AuthController.php b/server/app/Http/Controllers/AuthController.php index 4cf9b75..b246f6a 100644 --- a/server/app/Http/Controllers/AuthController.php +++ b/server/app/Http/Controllers/AuthController.php @@ -59,15 +59,10 @@ public function redirectToGoogle() public function handleGoogleCallback() { $googleUser = Socialite::driver('google')->user(); - $user = User::firstOrCreate( - ['email' => $googleUser->getEmail()], - ['name' => $googleUser->getName()] - ); - // Issue Sanctum token - $token = $user->createToken('auth_token')->plainTextToken; + $result = $this->authService->loginWithGoogle($googleUser); return response()->json([ - 'user' => new UserResource($user), - 'token' => $token, + 'user' => new UserResource($result['user']), + 'token' => $result['token'], ]); } } diff --git a/server/app/Services/AuthService.php b/server/app/Services/AuthService.php index ce4d338..179ede9 100644 --- a/server/app/Services/AuthService.php +++ b/server/app/Services/AuthService.php @@ -7,6 +7,15 @@ use Illuminate\Support\Facades\Auth; class AuthService { + public function loginWithGoogle($googleUser) + { + $user = User::firstOrCreate( + ['email' => $googleUser->getEmail()], + ['name' => $googleUser->getName()] + ); + $token = $user->createToken('auth_token')->plainTextToken; + return compact('user', 'token'); + } public function register(array $data) { $user = User::create([ From c12d426998f45ff2b5d60379b891bb64b4ef6db7 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 00:04:36 +0300 Subject: [PATCH 048/561] feat: enhance Google authentication error handling in handleGoogleCallback method --- server/app/Http/Controllers/AuthController.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/server/app/Http/Controllers/AuthController.php b/server/app/Http/Controllers/AuthController.php index b246f6a..67fe49b 100644 --- a/server/app/Http/Controllers/AuthController.php +++ b/server/app/Http/Controllers/AuthController.php @@ -58,7 +58,16 @@ public function redirectToGoogle() public function handleGoogleCallback() { - $googleUser = Socialite::driver('google')->user(); + try { + $googleUser = Socialite::driver('google')->user(); + } catch (\Exception $e) { + return response()->json(['error' => 'Google authentication failed.'], 401); + } + + if (! $googleUser || ! $googleUser->getEmail()) { + return response()->json(['error' => 'No email returned from Google.'], 422); + } + $result = $this->authService->loginWithGoogle($googleUser); return response()->json([ 'user' => new UserResource($result['user']), From 0ab407f3a078ce0987eeb5ea7704af1f4dc6e334 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 00:15:21 +0300 Subject: [PATCH 049/561] feat: add CORS configuration file and middleware for handling cross-origin requests --- server/bootstrap/app.php | 9 ++++++--- server/config/cors.php | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 server/config/cors.php diff --git a/server/bootstrap/app.php b/server/bootstrap/app.php index c3928c5..51c6de9 100644 --- a/server/bootstrap/app.php +++ b/server/bootstrap/app.php @@ -11,9 +11,12 @@ commands: __DIR__.'/../routes/console.php', health: '/up', ) - ->withMiddleware(function (Middleware $middleware): void { - // - }) + ->withMiddleware(function (Middleware $middleware): void { + $middleware->use([ + \Illuminate\Http\Middleware\HandleCors::class, + ]); + }) + ->withExceptions(function (Exceptions $exceptions): void { // })->create(); diff --git a/server/config/cors.php b/server/config/cors.php new file mode 100644 index 0000000..acc3ae7 --- /dev/null +++ b/server/config/cors.php @@ -0,0 +1,31 @@ + [ + 'api/*', + 'sanctum/csrf-cookie', + 'auth/*', + 'oauth/*', + 'login', + 'logout', + 'register', + ], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => [ + 'http://localhost:3000', // Next.js frontend in dev + 'https://myapp.com', // production frontend + ], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => true, +]; From cd62214d344124c7a41e4f498b05993183c2340f Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 13:23:55 +0300 Subject: [PATCH 050/561] feat: implement Google OAuth flow with callback handling and redirect logic --- client/src/app/auth/google/callback/page.tsx | 29 ++++ client/src/app/auth/login/page.module.css | 68 --------- client/src/app/auth/login/page.tsx | 146 ------------------- client/src/app/auth/signin/page.tsx | 7 + 4 files changed, 36 insertions(+), 214 deletions(-) create mode 100644 client/src/app/auth/google/callback/page.tsx delete mode 100644 client/src/app/auth/login/page.module.css delete mode 100644 client/src/app/auth/login/page.tsx diff --git a/client/src/app/auth/google/callback/page.tsx b/client/src/app/auth/google/callback/page.tsx new file mode 100644 index 0000000..cb6eca6 --- /dev/null +++ b/client/src/app/auth/google/callback/page.tsx @@ -0,0 +1,29 @@ +"use client"; +import { useEffect } from "react"; +import { useRouter } from "next/navigation"; + +export default function GoogleCallbackPage() { + const router = useRouter(); + + useEffect(() => { + // After Google OAuth, the backend should redirect here with token/user info + // This example assumes the backend redirects with query params: ?token=...&user=... + // Adjust parsing as needed for your backend's actual response + const params = new URLSearchParams(window.location.search); + const token = params.get("token"); + // Optionally, parse user info if provided + // const user = params.get("user"); + + if (token) { + // Store token (localStorage, cookie, or context) + localStorage.setItem("auth_token", token); + // Redirect to dashboard or home + router.replace("/dashboard"); + } else { + // Handle error or fallback + router.replace("/auth/signin?error=google_auth_failed"); + } + }, [router]); + + return
Signing you in with Google...
; +} diff --git a/client/src/app/auth/login/page.module.css b/client/src/app/auth/login/page.module.css deleted file mode 100644 index b22e224..0000000 --- a/client/src/app/auth/login/page.module.css +++ /dev/null @@ -1,68 +0,0 @@ -.googleBtn { - width: 100%; - max-width: 28rem; - border: 2px solid var(--color-primary); - border-radius: 0.5rem; - padding: 0.5rem 0; - display: flex; - align-items: center; - justify-content: center; - font-weight: bold; - font-size: 1.125rem; - color: var(--color-primary); - background: var(--color-white); - margin-bottom: 0.5rem; - transition: background 0.2s, color 0.2s, border-color 0.2s; - cursor: pointer; -} -.googleBtn:hover { - background: var(--color-secondary); - border-color: var(--color-secondary); - color: var(--color-primary); -} -.googleIcon { - margin-right: 0.5rem; - font-size: 1.25rem; -} -.calendarIcon { - margin-bottom: 3.5rem; -} -.loginPage { - width: 100vw; - height: 100vh; - display: flex; - background: var(--color-secondary); -} -.loginCard { - display: flex; - flex: 1; - background: var(--color-white); - border-radius: 0; - overflow: hidden; - box-shadow: 0 4px 24px 0 rgb(16 24 40 / 10%); -} -.leftCol { - display: flex; - flex-direction: column; - flex: 1; - align-items: center; - justify-content: center; - padding: 2rem 3rem; -} -.logoContainer { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1.5rem; - margin-top: 2.5rem; -} -.logoCircle { - width: 112px; - height: 112px; - border-radius: 50%; - background: var(--color-primary); - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 1rem; -} diff --git a/client/src/app/auth/login/page.tsx b/client/src/app/auth/login/page.tsx deleted file mode 100644 index b2f19ea..0000000 --- a/client/src/app/auth/login/page.tsx +++ /dev/null @@ -1,146 +0,0 @@ -"use client"; -import Image from "next/image"; -import Link from "next/link"; - -import React, { useState } from "react"; -import Input from "@/components/shared/Input"; -import Button from "@/components/Button"; -import Checkbox from "@/components/shared/Checkbox"; -import Divider from "@/components/shared/Divider"; -import styles from "./page.module.css"; - -export default function LoginPage() { - const [email, setEmail] = useState(""); - const [password, setPassword] = useState(""); - const [remember, setRemember] = useState(false); - const [error, setError] = useState(""); - const [loading, setLoading] = useState(false); - - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - setError(""); - // Simple validation - if (!email || !password) { - setError("Please enter both email and password."); - return; - } - setLoading(true); - // Simulate async login (replace with real API call) - setTimeout(() => { - setLoading(false); - if (email !== "test@example.com" || password !== "password") { - setError("Invalid credentials. Please try again."); - } else { - setError(""); - // Redirect or do something on success - alert("Login successful!"); - } - }, 1000); - }; - - return ( -
-
- {/* Left Side - Form */} -
- {/* Logo */} -
-
- Slotify Logo -
- SLOTIFY -
- {/* Welcome Text */} -
-

- Welcome back! Please sign in to your account -

-
- {/* Form */} -
- setEmail(e.target.value)} - required - /> - setPassword(e.target.value)} - required - /> - {error && ( -
{error}
- )} - -
- {/* Divider */} - Or continue with - {/* Google Button */} - - {/* Options Row */} -
-
- setRemember(e.target.checked)} - /> - - Forgot password? - -
-
- - Don't have an account?{" "} - - Sign up - - -
-
-
- {/* Right Side - Illustration */} -
- Calendar Icon -

- Streamline Your Scheduling -

-

- Manage appointments, bookings, and time slots with our intuitive - platform designed for modern businesses. -

-
-
-
- ); -} diff --git a/client/src/app/auth/signin/page.tsx b/client/src/app/auth/signin/page.tsx index 2df284b..cdb5bb3 100644 --- a/client/src/app/auth/signin/page.tsx +++ b/client/src/app/auth/signin/page.tsx @@ -95,6 +95,13 @@ export default function SigninPage() { From 2746fb788b546c96458638122d0bcf2f80dd872f Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 13:40:46 +0300 Subject: [PATCH 051/561] feat: add EnsureFrontendRequestsAreStateful middleware and create initial auth component files --- client/src/app/auth/AuthCommon.module.css | 0 client/src/app/auth/login/page.tsx | 0 client/src/app/auth/signin/page.module.css | 0 client/src/app/auth/signin/page.tsx | 0 client/src/app/auth/signup/page.module.css | 0 client/src/app/auth/signup/page.tsx | 0 client/src/components/Button/index.tsx | 0 client/src/components/shared/Input/styles.css | 0 server/bootstrap/app.php | 1 + 9 files changed, 1 insertion(+) create mode 100644 client/src/app/auth/AuthCommon.module.css create mode 100644 client/src/app/auth/login/page.tsx create mode 100644 client/src/app/auth/signin/page.module.css create mode 100644 client/src/app/auth/signin/page.tsx create mode 100644 client/src/app/auth/signup/page.module.css create mode 100644 client/src/app/auth/signup/page.tsx create mode 100644 client/src/components/Button/index.tsx create mode 100644 client/src/components/shared/Input/styles.css diff --git a/client/src/app/auth/AuthCommon.module.css b/client/src/app/auth/AuthCommon.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/src/app/auth/login/page.tsx b/client/src/app/auth/login/page.tsx new file mode 100644 index 0000000..e69de29 diff --git a/client/src/app/auth/signin/page.module.css b/client/src/app/auth/signin/page.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/src/app/auth/signin/page.tsx b/client/src/app/auth/signin/page.tsx new file mode 100644 index 0000000..e69de29 diff --git a/client/src/app/auth/signup/page.module.css b/client/src/app/auth/signup/page.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/src/app/auth/signup/page.tsx b/client/src/app/auth/signup/page.tsx new file mode 100644 index 0000000..e69de29 diff --git a/client/src/components/Button/index.tsx b/client/src/components/Button/index.tsx new file mode 100644 index 0000000..e69de29 diff --git a/client/src/components/shared/Input/styles.css b/client/src/components/shared/Input/styles.css new file mode 100644 index 0000000..e69de29 diff --git a/server/bootstrap/app.php b/server/bootstrap/app.php index 51c6de9..228994a 100644 --- a/server/bootstrap/app.php +++ b/server/bootstrap/app.php @@ -14,6 +14,7 @@ ->withMiddleware(function (Middleware $middleware): void { $middleware->use([ \Illuminate\Http\Middleware\HandleCors::class, + \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, ]); }) From 014435a829213fdb9e503a9758e080f04ced9546 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 13:45:43 +0300 Subject: [PATCH 052/561] feat(auth): switch to cookie-based authentication and redirect after login/OAuth --- server/app/Http/Controllers/AuthController.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/server/app/Http/Controllers/AuthController.php b/server/app/Http/Controllers/AuthController.php index 67fe49b..5074c37 100644 --- a/server/app/Http/Controllers/AuthController.php +++ b/server/app/Http/Controllers/AuthController.php @@ -34,9 +34,11 @@ public function login(LoginRequest $request) if (! $result) { return response()->json(['message' => 'Invalid Credentials'], 422); } + // Log the user in using session/cookie + Auth::login($result['user']); + // Redirect to frontend dashboard or return success return response()->json([ - 'user' => new UserResource($result['user']), - 'token' => $result['token'], + 'user' => new UserResource($result['user']) ]); } @@ -61,17 +63,17 @@ public function handleGoogleCallback() try { $googleUser = Socialite::driver('google')->user(); } catch (\Exception $e) { - return response()->json(['error' => 'Google authentication failed.'], 401); + return redirect('http://localhost:3000/auth/signin?error=google_auth_failed'); } if (! $googleUser || ! $googleUser->getEmail()) { - return response()->json(['error' => 'No email returned from Google.'], 422); + return redirect('http://localhost:3000/auth/signin?error=google_no_email'); } $result = $this->authService->loginWithGoogle($googleUser); - return response()->json([ - 'user' => new UserResource($result['user']), - 'token' => $result['token'], - ]); + // Log the user in using session/cookie + Auth::login($result['user']); + // Redirect to frontend dashboard + return redirect('http://localhost:3000/auth/google/callback'); } } From 3bcc6e2c1c4bbb716a875b412b6a37e63398376b Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 13:57:59 +0300 Subject: [PATCH 053/561] fix(tests): update assertions to match API response structure for user registration and login --- server/tests/Feature/AuthTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/tests/Feature/AuthTest.php b/server/tests/Feature/AuthTest.php index 615b7de..36f202f 100644 --- a/server/tests/Feature/AuthTest.php +++ b/server/tests/Feature/AuthTest.php @@ -21,7 +21,7 @@ public function test_user_can_register() ]); $response->assertStatus(201) - ->assertJsonStructure(['user', 'token']); + ->assertJsonStructure(['user']); } public function test_user_can_login() @@ -36,7 +36,7 @@ public function test_user_can_login() ]); $response->assertStatus(200) - ->assertJsonStructure(['user', 'token']); + ->assertJsonStructure(['user']); } public function test_authenticated_user_can_get_profile() From 8ec0be522a308cd024216555b967454cff0e71ef Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 14:14:18 +0300 Subject: [PATCH 054/561] chore(auth): remove unused login page component --- client/src/app/auth/login/page.tsx | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 client/src/app/auth/login/page.tsx diff --git a/client/src/app/auth/login/page.tsx b/client/src/app/auth/login/page.tsx deleted file mode 100644 index e69de29..0000000 From f80226c23e1671447bc86f7a79fe119318b5e177 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 14:19:31 +0300 Subject: [PATCH 055/561] feat(auth): create initial Sign In page component --- client/src/app/auth/signin/page.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/app/auth/signin/page.tsx b/client/src/app/auth/signin/page.tsx index e69de29..7f2f724 100644 --- a/client/src/app/auth/signin/page.tsx +++ b/client/src/app/auth/signin/page.tsx @@ -0,0 +1,3 @@ +export default function SigninPage() { + return
Sign In Page
; +} From 932646fff71d51cdb5668a074cfe18e250c733b0 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 14:24:14 +0300 Subject: [PATCH 056/561] feat(auth): add initial Signup page component --- client/src/app/auth/signup/page.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/app/auth/signup/page.tsx b/client/src/app/auth/signup/page.tsx index e69de29..a762fdf 100644 --- a/client/src/app/auth/signup/page.tsx +++ b/client/src/app/auth/signup/page.tsx @@ -0,0 +1,3 @@ +export default function SignupPage() { + return
Sign Up Page
; +} From 71065451dda340ad65e22babf51bd6ec4e07375f Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 14:56:34 +0300 Subject: [PATCH 057/561] feat(auth): add CSRF cookie utility function for authentication requests --- client/src/lib/api.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/src/lib/api.ts b/client/src/lib/api.ts index 6b6b015..73931d4 100644 --- a/client/src/lib/api.ts +++ b/client/src/lib/api.ts @@ -1,3 +1,10 @@ +// Utility to get CSRF cookie before auth requests +export async function csrf() { + await axios.get( + (process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:8000') + '/sanctum/csrf-cookie', + { withCredentials: true } + ); +} import axios from 'axios'; const api = axios.create({ From 234758a6c556416dcb9dc6eac50bb6a9a8880262 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 14:59:08 +0300 Subject: [PATCH 058/561] feat(auth): implement async login and registration with API calls --- client/src/app/auth/signin/page.tsx | 21 ++++++++++----------- client/src/app/auth/signup/page.tsx | 19 ++++++++++++++++--- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/client/src/app/auth/signin/page.tsx b/client/src/app/auth/signin/page.tsx index cdb5bb3..daee5e7 100644 --- a/client/src/app/auth/signin/page.tsx +++ b/client/src/app/auth/signin/page.tsx @@ -3,6 +3,7 @@ import Image from "next/image"; import Link from "next/link"; import React, { useState } from "react"; +import api, { csrf } from "@/lib/api"; import Input from "@/components/shared/Input"; import Button from "@/components/Button"; import Checkbox from "@/components/shared/Checkbox"; @@ -19,23 +20,21 @@ export default function SigninPage() { const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(""); - // Simple validation if (!email || !password) { setError("Please enter both email and password."); return; } setLoading(true); - // Simulate async login (replace with real API call) - setTimeout(() => { + try { + await csrf(); + await api.post("/v1/login", { email, password }); setLoading(false); - if (email !== "test@example.com" || password !== "password") { - setError("Invalid credentials. Please try again."); - } else { - setError(""); - // Redirect or do something on success - alert("Login successful!"); - } - }, 1000); + alert("Login successful!"); + // Optionally redirect to dashboard + } catch (err: any) { + setLoading(false); + setError(err?.response?.data?.message || "Login failed."); + } }; return ( diff --git a/client/src/app/auth/signup/page.tsx b/client/src/app/auth/signup/page.tsx index 479b3bd..69e1e54 100644 --- a/client/src/app/auth/signup/page.tsx +++ b/client/src/app/auth/signup/page.tsx @@ -1,5 +1,6 @@ "use client"; import React, { useState } from "react"; +import api, { csrf } from "@/lib/api"; import Input from "@/components/shared/Input"; import Checkbox from "@/components/shared/Checkbox"; import Button from "@/components/Button"; @@ -17,7 +18,7 @@ export default function SignupPage() { const [error, setError] = useState(""); const [loading, setLoading] = useState(false); - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(""); if (!fullName || !email || !businessName || !password || !confirmPassword) { @@ -33,10 +34,22 @@ export default function SignupPage() { return; } setLoading(true); - setTimeout(() => { + try { + await csrf(); + await api.post("/v1/register", { + name: fullName, + email, + business_name: businessName, + password, + password_confirmation: confirmPassword, + }); setLoading(false); alert("Account created!"); - }, 1000); + // Optionally redirect to signin or dashboard + } catch (err: any) { + setLoading(false); + setError(err?.response?.data?.message || "Registration failed."); + } }; return ( From eb73ea91fcff1036c3e617c57dbd3db3bcf0058e Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Wed, 27 Aug 2025 21:44:36 +0300 Subject: [PATCH 059/561] feat(auth): integrate js-cookie for CSRF token handling and update Dockerfile for dependency management --- client/Dockerfile | 7 +- client/package-lock.json | 182 ++++++++++++++++++++++----------------- client/package.json | 2 + client/src/lib/api.ts | 11 +++ docker-compose.yml | 2 +- server/routes/web.php | 3 + 6 files changed, 123 insertions(+), 84 deletions(-) diff --git a/client/Dockerfile b/client/Dockerfile index 9f7f264..3b7ac99 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -8,14 +8,15 @@ WORKDIR /app COPY package.json package-lock.json ./ # Install dependencies -RUN npm install && npm rebuild lightningcss -# Debug: List node_modules/.bin and installed packages -RUN ls -l node_modules/.bin && npm list --depth=0 +RUN npm install # Copy the rest of the app code COPY . . +# Rebuild lightningcss native binary for container platform +RUN npm rebuild lightningcss --force + # Expose Next.js dev port EXPOSE 3000 diff --git a/client/package-lock.json b/client/package-lock.json index c6d2938..9d463a1 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "autoprefixer": "^10.4.21", "axios": "^1.11.0", + "js-cookie": "^3.0.5", "lightningcss": "^1.30.1", "next": "15.4.7", "postcss": "^8.5.6", @@ -20,6 +21,7 @@ "@eslint/eslintrc": "^3", "@tailwindcss/postcss": "^4", "@types/axios": "^0.9.36", + "@types/js-cookie": "^3.0.6", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", @@ -180,9 +182,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", - "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", + "version": "9.34.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz", + "integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==", "dev": true, "license": "MIT", "engines": { @@ -1292,6 +1294,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1317,9 +1326,9 @@ } }, "node_modules/@types/react": { - "version": "19.1.10", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.10.tgz", - "integrity": "sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==", + "version": "19.1.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.11.tgz", + "integrity": "sha512-lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1327,9 +1336,9 @@ } }, "node_modules/@types/react-dom": { - "version": "19.1.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.7.tgz", - "integrity": "sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==", + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.8.tgz", + "integrity": "sha512-xG7xaBMJCpcK0RpN8jDbAACQo54ycO6h4dSSmgv8+fu6ZIAdANkx/WsawASUjVXYfy+J9AbUpRMNNEsXCDfDBQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1337,17 +1346,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.40.0.tgz", - "integrity": "sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.41.0.tgz", + "integrity": "sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.40.0", - "@typescript-eslint/type-utils": "8.40.0", - "@typescript-eslint/utils": "8.40.0", - "@typescript-eslint/visitor-keys": "8.40.0", + "@typescript-eslint/scope-manager": "8.41.0", + "@typescript-eslint/type-utils": "8.41.0", + "@typescript-eslint/utils": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -1361,7 +1370,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.40.0", + "@typescript-eslint/parser": "^8.41.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -1377,16 +1386,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.40.0.tgz", - "integrity": "sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.41.0.tgz", + "integrity": "sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.40.0", - "@typescript-eslint/types": "8.40.0", - "@typescript-eslint/typescript-estree": "8.40.0", - "@typescript-eslint/visitor-keys": "8.40.0", + "@typescript-eslint/scope-manager": "8.41.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0", "debug": "^4.3.4" }, "engines": { @@ -1402,14 +1411,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.40.0.tgz", - "integrity": "sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.41.0.tgz", + "integrity": "sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.40.0", - "@typescript-eslint/types": "^8.40.0", + "@typescript-eslint/tsconfig-utils": "^8.41.0", + "@typescript-eslint/types": "^8.41.0", "debug": "^4.3.4" }, "engines": { @@ -1424,14 +1433,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.40.0.tgz", - "integrity": "sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.41.0.tgz", + "integrity": "sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.40.0", - "@typescript-eslint/visitor-keys": "8.40.0" + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1442,9 +1451,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.40.0.tgz", - "integrity": "sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.41.0.tgz", + "integrity": "sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==", "dev": true, "license": "MIT", "engines": { @@ -1459,15 +1468,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.40.0.tgz", - "integrity": "sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.41.0.tgz", + "integrity": "sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.40.0", - "@typescript-eslint/typescript-estree": "8.40.0", - "@typescript-eslint/utils": "8.40.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0", + "@typescript-eslint/utils": "8.41.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -1484,9 +1493,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.40.0.tgz", - "integrity": "sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.41.0.tgz", + "integrity": "sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==", "dev": true, "license": "MIT", "engines": { @@ -1498,16 +1507,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.40.0.tgz", - "integrity": "sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.41.0.tgz", + "integrity": "sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.40.0", - "@typescript-eslint/tsconfig-utils": "8.40.0", - "@typescript-eslint/types": "8.40.0", - "@typescript-eslint/visitor-keys": "8.40.0", + "@typescript-eslint/project-service": "8.41.0", + "@typescript-eslint/tsconfig-utils": "8.41.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -1583,16 +1592,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.40.0.tgz", - "integrity": "sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.41.0.tgz", + "integrity": "sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.40.0", - "@typescript-eslint/types": "8.40.0", - "@typescript-eslint/typescript-estree": "8.40.0" + "@typescript-eslint/scope-manager": "8.41.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1607,13 +1616,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.40.0.tgz", - "integrity": "sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.41.0.tgz", + "integrity": "sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/types": "8.41.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -2356,9 +2365,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001735", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", - "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", + "version": "1.0.30001737", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001737.tgz", + "integrity": "sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==", "funding": [ { "type": "opencollective", @@ -2662,9 +2671,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.207", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.207.tgz", - "integrity": "sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw==", + "version": "1.5.209", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.209.tgz", + "integrity": "sha512-Xoz0uMrim9ZETCQt8UgM5FxQF9+imA7PBpokoGcZloA1uw2LeHzTlip5cb5KOAsXZLjh/moN2vReN3ZjJmjI9A==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -2884,9 +2893,9 @@ } }, "node_modules/eslint": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", - "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", + "version": "9.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.34.0.tgz", + "integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==", "dev": true, "license": "MIT", "dependencies": { @@ -2896,7 +2905,7 @@ "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.33.0", + "@eslint/js": "9.34.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -4269,6 +4278,15 @@ "jiti": "lib/jiti-cli.mjs" } }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4648,13 +4666,13 @@ } }, "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "version": "0.30.18", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.18.tgz", + "integrity": "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/math-intrinsics": { @@ -5915,13 +5933,17 @@ "license": "MIT" }, "node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", + "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", "dev": true, "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/tar": { diff --git a/client/package.json b/client/package.json index e1ec824..27bfa3a 100644 --- a/client/package.json +++ b/client/package.json @@ -12,6 +12,7 @@ "dependencies": { "autoprefixer": "^10.4.21", "axios": "^1.11.0", + "js-cookie": "^3.0.5", "lightningcss": "^1.30.1", "next": "15.4.7", "postcss": "^8.5.6", @@ -22,6 +23,7 @@ "@eslint/eslintrc": "^3", "@tailwindcss/postcss": "^4", "@types/axios": "^0.9.36", + "@types/js-cookie": "^3.0.6", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", diff --git a/client/src/lib/api.ts b/client/src/lib/api.ts index 73931d4..45701aa 100644 --- a/client/src/lib/api.ts +++ b/client/src/lib/api.ts @@ -6,6 +6,7 @@ export async function csrf() { ); } import axios from 'axios'; +import Cookies from 'js-cookie'; const api = axios.create({ baseURL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000/api', @@ -15,6 +16,16 @@ const api = axios.create({ }, }); +// Add interceptor to set X-XSRF-TOKEN header from cookie +api.interceptors.request.use(config => { + const xsrfToken = Cookies.get('XSRF-TOKEN'); + if (!config.headers) config.headers = {}; + if (xsrfToken) { + config.headers['X-XSRF-TOKEN'] = xsrfToken; + } + return config; +}); + // Add interceptors for auth/error handling api.interceptors.response.use( response => response, diff --git a/docker-compose.yml b/docker-compose.yml index 2592fa3..6035435 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,7 +22,7 @@ services: container_name: slotify-frontend volumes: - ./client:/app # Mount project files - - /app/node_modules # Keep container's node_modules + # - /app/node_modules # Removed to avoid overwriting container's node_modules ports: - "3000:3000" # Next.js dev server port environment: diff --git a/server/routes/web.php b/server/routes/web.php index 86a06c5..18461c9 100644 --- a/server/routes/web.php +++ b/server/routes/web.php @@ -2,6 +2,9 @@ use Illuminate\Support\Facades\Route; +use App\Http\Controllers\AuthController; + Route::get('/', function () { return view('welcome'); }); + From 481eefa0764987d6d865fd07a798ab18d3d5e6d0 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 10:35:56 +0300 Subject: [PATCH 060/561] feat(auth): refactor authentication components and implement Signin/Signup forms --- client/src/app/auth/AuthCommon.module.css | 0 client/src/app/auth/components/SigninForm.tsx | 67 ++++++++ client/src/app/auth/components/SignupForm.tsx | 95 +++++++++++ .../app/auth/containers/SigninContainer.tsx | 126 +++++++++++++++ .../app/auth/containers/SignupContainer.tsx | 117 ++++++++++++++ client/src/app/auth/signin/page.tsx | 150 +----------------- client/src/app/auth/signup/page.tsx | 150 +----------------- 7 files changed, 409 insertions(+), 296 deletions(-) delete mode 100644 client/src/app/auth/AuthCommon.module.css create mode 100644 client/src/app/auth/components/SigninForm.tsx create mode 100644 client/src/app/auth/components/SignupForm.tsx create mode 100644 client/src/app/auth/containers/SigninContainer.tsx create mode 100644 client/src/app/auth/containers/SignupContainer.tsx diff --git a/client/src/app/auth/AuthCommon.module.css b/client/src/app/auth/AuthCommon.module.css deleted file mode 100644 index e69de29..0000000 diff --git a/client/src/app/auth/components/SigninForm.tsx b/client/src/app/auth/components/SigninForm.tsx new file mode 100644 index 0000000..e9e5c07 --- /dev/null +++ b/client/src/app/auth/components/SigninForm.tsx @@ -0,0 +1,67 @@ +import React from "react"; +import Input from "@/components/shared/Input"; +import Button from "@/components/Button"; +import Checkbox from "@/components/shared/Checkbox"; +import Divider from "@/components/shared/Divider"; +import styles from "../signin/page.module.css"; + +interface SigninFormProps { + email: string; + password: string; + remember: boolean; + error: string; + loading: boolean; + onEmailChange: (e: React.ChangeEvent) => void; + onPasswordChange: (e: React.ChangeEvent) => void; + onRememberChange: (e: React.ChangeEvent) => void; + onSubmit: (e: React.FormEvent) => void; +} + +const SigninForm: React.FC = ({ + email, + password, + remember, + error, + loading, + onEmailChange, + onPasswordChange, + onRememberChange, + onSubmit, +}) => ( +
+ + + {error &&
{error}
} + + Or continue with + {/* Google Button and other options can be added here if needed */} +
+
+ + {/* Forgot password link can be added here */} +
+
+
+); + +export default SigninForm; diff --git a/client/src/app/auth/components/SignupForm.tsx b/client/src/app/auth/components/SignupForm.tsx new file mode 100644 index 0000000..78ed32a --- /dev/null +++ b/client/src/app/auth/components/SignupForm.tsx @@ -0,0 +1,95 @@ +import React from "react"; +import Input from "@/components/shared/Input"; +import Checkbox from "@/components/shared/Checkbox"; +import Button from "@/components/Button"; +import styles from "../signup/page.module.css"; + +interface SignupFormProps { + fullName: string; + email: string; + businessName: string; + password: string; + confirmPassword: string; + agree: boolean; + error: string; + loading: boolean; + onFullNameChange: (e: React.ChangeEvent) => void; + onEmailChange: (e: React.ChangeEvent) => void; + onBusinessNameChange: (e: React.ChangeEvent) => void; + onPasswordChange: (e: React.ChangeEvent) => void; + onConfirmPasswordChange: (e: React.ChangeEvent) => void; + onAgreeChange: (e: React.ChangeEvent) => void; + onSubmit: (e: React.FormEvent) => void; +} + +const SignupForm: React.FC = ({ + fullName, + email, + businessName, + password, + confirmPassword, + agree, + error, + loading, + onFullNameChange, + onEmailChange, + onBusinessNameChange, + onPasswordChange, + onConfirmPasswordChange, + onAgreeChange, + onSubmit, +}) => ( +
+ + + + + +
+ +
+ {error &&
{error}
} + +
+); + +export default SignupForm; diff --git a/client/src/app/auth/containers/SigninContainer.tsx b/client/src/app/auth/containers/SigninContainer.tsx new file mode 100644 index 0000000..b801c3c --- /dev/null +++ b/client/src/app/auth/containers/SigninContainer.tsx @@ -0,0 +1,126 @@ +"use client"; +import React, { useState } from "react"; +import api, { csrf } from "@/lib/api"; +import SigninForm from "../components/SigninForm"; +import Link from "next/link"; +import Image from "next/image"; +import styles from "../signin/page.module.css"; + +const SigninContainer: React.FC = () => { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [remember, setRemember] = useState(false); + const [error, setError] = useState(""); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(""); + if (!email || !password) { + setError("Please enter both email and password."); + return; + } + setLoading(true); + try { + await csrf(); + await api.post("/v1/login", { email, password }); + setLoading(false); + alert("Login successful!"); + // Optionally redirect to dashboard + } catch (err: any) { + setLoading(false); + setError(err?.response?.data?.message || "Login failed."); + } + }; + + return ( +
+
+ {/* Left Side - Form */} +
+ {/* Logo */} +
+
+ Slotify Logo +
+ SLOTIFY +
+ {/* Welcome Text */} +
+

+ Welcome back! Please sign in to your account +

+
+ {/* Form */} + setEmail(e.target.value)} + onPasswordChange={(e) => setPassword(e.target.value)} + onRememberChange={(e) => setRemember(e.target.checked)} + onSubmit={handleSubmit} + /> + {/* Divider and Google Button */} + + {/* Options Row */} +
+
+ + Forgot password? + +
+
+ + Don't have an account?{" "} + + Sign up + + +
+
+
+ {/* Right Side - Illustration */} +
+ Calendar Icon +

+ Streamline Your Scheduling +

+

+ Manage appointments, bookings, and time slots with our intuitive + platform designed for modern businesses. +

+
+
+
+ ); +}; + +export default SigninContainer; diff --git a/client/src/app/auth/containers/SignupContainer.tsx b/client/src/app/auth/containers/SignupContainer.tsx new file mode 100644 index 0000000..5932f3a --- /dev/null +++ b/client/src/app/auth/containers/SignupContainer.tsx @@ -0,0 +1,117 @@ +"use client"; +import React, { useState } from "react"; +import api, { csrf } from "@/lib/api"; +import SignupForm from "../components/SignupForm"; +import Link from "next/link"; +import Image from "next/image"; +import styles from "../signup/page.module.css"; + +const SignupContainer: React.FC = () => { + const [fullName, setFullName] = useState(""); + const [email, setEmail] = useState(""); + const [businessName, setBusinessName] = useState(""); + const [password, setPassword] = useState(""); + const [confirmPassword, setConfirmPassword] = useState(""); + const [agree, setAgree] = useState(false); + const [error, setError] = useState(""); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(""); + if (!fullName || !email || !businessName || !password || !confirmPassword) { + setError("Please fill in all fields."); + return; + } + if (password !== confirmPassword) { + setError("Passwords do not match."); + return; + } + if (!agree) { + setError("You must agree to the Terms of Services and privacy policy."); + return; + } + setLoading(true); + try { + await csrf(); + await api.post("/v1/register", { + name: fullName, + email, + business_name: businessName, + password, + password_confirmation: confirmPassword, + }); + setLoading(false); + alert("Account created!"); + // Optionally redirect to signin or dashboard + } catch (err: any) { + setLoading(false); + setError(err?.response?.data?.message || "Registration failed."); + } + }; + + return ( +
+ {/* Left Side - Info */} +
+
+ Signup +
+

Join Thousands of Businesses

+

+ Start managing your appointments more efficiently and grow your + business with our powerful scheduling tools. +

+
+ {/* Right Side - Logo & Form */} +
+
+
+ Slotify Logo +
+ SLOTIFY +
+

+ Create your account and start scheduling +

+ setFullName(e.target.value)} + onEmailChange={(e) => setEmail(e.target.value)} + onBusinessNameChange={(e) => setBusinessName(e.target.value)} + onPasswordChange={(e) => setPassword(e.target.value)} + onConfirmPasswordChange={(e) => setConfirmPassword(e.target.value)} + onAgreeChange={(e) => setAgree(e.target.checked)} + onSubmit={handleSubmit} + /> +
+ + Already have an account?{" "} + + Sign in + + +
+
+
+ ); +}; + +export default SignupContainer; diff --git a/client/src/app/auth/signin/page.tsx b/client/src/app/auth/signin/page.tsx index daee5e7..abf5ef9 100644 --- a/client/src/app/auth/signin/page.tsx +++ b/client/src/app/auth/signin/page.tsx @@ -1,152 +1,6 @@ "use client"; -import Image from "next/image"; -import Link from "next/link"; - -import React, { useState } from "react"; -import api, { csrf } from "@/lib/api"; -import Input from "@/components/shared/Input"; -import Button from "@/components/Button"; -import Checkbox from "@/components/shared/Checkbox"; -import Divider from "@/components/shared/Divider"; -import styles from "./page.module.css"; +import SigninContainer from "../containers/SigninContainer"; export default function SigninPage() { - const [email, setEmail] = useState(""); - const [password, setPassword] = useState(""); - const [remember, setRemember] = useState(false); - const [error, setError] = useState(""); - const [loading, setLoading] = useState(false); - - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - setError(""); - if (!email || !password) { - setError("Please enter both email and password."); - return; - } - setLoading(true); - try { - await csrf(); - await api.post("/v1/login", { email, password }); - setLoading(false); - alert("Login successful!"); - // Optionally redirect to dashboard - } catch (err: any) { - setLoading(false); - setError(err?.response?.data?.message || "Login failed."); - } - }; - - return ( -
-
- {/* Left Side - Form */} -
- {/* Logo */} -
-
- Slotify Logo -
- SLOTIFY -
- {/* Welcome Text */} -
-

- Welcome back! Please sign in to your account -

-
- {/* Form */} -
- setEmail(e.target.value)} - required - /> - setPassword(e.target.value)} - required - /> - {error && ( -
{error}
- )} - -
- {/* Divider */} - Or continue with - {/* Google Button */} - - {/* Options Row */} -
-
- setRemember(e.target.checked)} - /> - - Forgot password? - -
-
- - Don't have an account?{" "} - - Sign up - - -
-
-
- {/* Right Side - Illustration */} -
- Calendar Icon -

- Streamline Your Scheduling -

-

- Manage appointments, bookings, and time slots with our intuitive - platform designed for modern businesses. -

-
-
-
- ); + return ; } diff --git a/client/src/app/auth/signup/page.tsx b/client/src/app/auth/signup/page.tsx index 69e1e54..0a9c281 100644 --- a/client/src/app/auth/signup/page.tsx +++ b/client/src/app/auth/signup/page.tsx @@ -1,151 +1,5 @@ -"use client"; -import React, { useState } from "react"; -import api, { csrf } from "@/lib/api"; -import Input from "@/components/shared/Input"; -import Checkbox from "@/components/shared/Checkbox"; -import Button from "@/components/Button"; -import Image from "next/image"; -import Link from "next/link"; -import styles from "./page.module.css"; +import SignupContainer from "../containers/SignupContainer"; export default function SignupPage() { - const [fullName, setFullName] = useState(""); - const [email, setEmail] = useState(""); - const [businessName, setBusinessName] = useState(""); - const [password, setPassword] = useState(""); - const [confirmPassword, setConfirmPassword] = useState(""); - const [agree, setAgree] = useState(false); - const [error, setError] = useState(""); - const [loading, setLoading] = useState(false); - - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - setError(""); - if (!fullName || !email || !businessName || !password || !confirmPassword) { - setError("Please fill in all fields."); - return; - } - if (password !== confirmPassword) { - setError("Passwords do not match."); - return; - } - if (!agree) { - setError("You must agree to the Terms of Services and privacy policy."); - return; - } - setLoading(true); - try { - await csrf(); - await api.post("/v1/register", { - name: fullName, - email, - business_name: businessName, - password, - password_confirmation: confirmPassword, - }); - setLoading(false); - alert("Account created!"); - // Optionally redirect to signin or dashboard - } catch (err: any) { - setLoading(false); - setError(err?.response?.data?.message || "Registration failed."); - } - }; - - return ( -
- {/* Left Side - Info */} -
-
- Signup -
-

Join Thousands of Businesses

-

- Start managing your appointments more efficiently and grow your - business with our powerful scheduling tools. -

-
- {/* Right Side - Logo & Form */} -
-
-
- Slotify Logo -
- SLOTIFY -
-

- Create your account and start scheduling -

-
- setFullName(e.target.value)} - placeholder="John Doe" - required - /> - setEmail(e.target.value)} - placeholder="Enter your email" - type="email" - required - /> - setBusinessName(e.target.value)} - placeholder="Enter your Business Name" - required - /> - setPassword(e.target.value)} - placeholder="Create a password" - type="password" - required - /> - setConfirmPassword(e.target.value)} - placeholder="Confirm your password" - type="password" - required - /> -
- setAgree(e.target.checked)} - /> -
- {error &&
{error}
} - -
-
- - Already have an account?{" "} - - Sign in - - -
-
-
- ); + return ; } From 68267d38cddb95add931080cfb91a8e6071337e8 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 10:46:01 +0300 Subject: [PATCH 061/561] feat(auth): add error handling utility for improved error messages in Signin and Signup containers --- client/src/app/auth/components/SigninForm.tsx | 1 - .../app/auth/containers/SigninContainer.tsx | 5 ++-- .../app/auth/containers/SignupContainer.tsx | 5 ++-- client/src/utils/errorMessage.ts | 25 +++++++++++++++++++ 4 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 client/src/utils/errorMessage.ts diff --git a/client/src/app/auth/components/SigninForm.tsx b/client/src/app/auth/components/SigninForm.tsx index e9e5c07..a2fa07c 100644 --- a/client/src/app/auth/components/SigninForm.tsx +++ b/client/src/app/auth/components/SigninForm.tsx @@ -3,7 +3,6 @@ import Input from "@/components/shared/Input"; import Button from "@/components/Button"; import Checkbox from "@/components/shared/Checkbox"; import Divider from "@/components/shared/Divider"; -import styles from "../signin/page.module.css"; interface SigninFormProps { email: string; diff --git a/client/src/app/auth/containers/SigninContainer.tsx b/client/src/app/auth/containers/SigninContainer.tsx index b801c3c..016872e 100644 --- a/client/src/app/auth/containers/SigninContainer.tsx +++ b/client/src/app/auth/containers/SigninContainer.tsx @@ -1,6 +1,7 @@ "use client"; import React, { useState } from "react"; import api, { csrf } from "@/lib/api"; +import { getErrorMessage } from "@/utils/errorMessage"; import SigninForm from "../components/SigninForm"; import Link from "next/link"; import Image from "next/image"; @@ -27,9 +28,9 @@ const SigninContainer: React.FC = () => { setLoading(false); alert("Login successful!"); // Optionally redirect to dashboard - } catch (err: any) { + } catch (err: unknown) { setLoading(false); - setError(err?.response?.data?.message || "Login failed."); + setError(getErrorMessage(err, "Login failed.")); } }; diff --git a/client/src/app/auth/containers/SignupContainer.tsx b/client/src/app/auth/containers/SignupContainer.tsx index 5932f3a..04ff143 100644 --- a/client/src/app/auth/containers/SignupContainer.tsx +++ b/client/src/app/auth/containers/SignupContainer.tsx @@ -1,6 +1,7 @@ "use client"; import React, { useState } from "react"; import api, { csrf } from "@/lib/api"; +import { getErrorMessage } from "@/utils/errorMessage"; import SignupForm from "../components/SignupForm"; import Link from "next/link"; import Image from "next/image"; @@ -44,9 +45,9 @@ const SignupContainer: React.FC = () => { setLoading(false); alert("Account created!"); // Optionally redirect to signin or dashboard - } catch (err: any) { + } catch (err: unknown) { setLoading(false); - setError(err?.response?.data?.message || "Registration failed."); + setError(getErrorMessage(err, "Registration failed.")); } }; diff --git a/client/src/utils/errorMessage.ts b/client/src/utils/errorMessage.ts new file mode 100644 index 0000000..761ce3f --- /dev/null +++ b/client/src/utils/errorMessage.ts @@ -0,0 +1,25 @@ + +/** + * Safely extracts an error message from an unknown error object (e.g., Axios or fetch error). + * Falls back to a default message if not found. + */ +export function getErrorMessage(err: unknown, fallback = "An error occurred"): string { + if ( + err && + typeof err === "object" && + "response" in err && + err.response && + typeof err.response === "object" && + "data" in err.response && + err.response.data && + typeof err.response.data === "object" && + "message" in err.response.data && + typeof err.response.data.message === "string" + ) { + return err.response.data.message; + } + if (err instanceof Error && err.message) { + return err.message; + } + return fallback; +} From 75616a37a9488d2cf780419648ea42206dd2a21e Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 14:21:44 +0300 Subject: [PATCH 062/561] feat(migration): create businesses table with necessary fields and constraints --- ...5_08_29_112013_create_businesses_table.php | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 server/database/migrations/2025_08_29_112013_create_businesses_table.php diff --git a/server/database/migrations/2025_08_29_112013_create_businesses_table.php b/server/database/migrations/2025_08_29_112013_create_businesses_table.php new file mode 100644 index 0000000..952f0f5 --- /dev/null +++ b/server/database/migrations/2025_08_29_112013_create_businesses_table.php @@ -0,0 +1,33 @@ +id(); + $table->string('name'); + $table->string('industry'); + $table->string('contact_email'); + $table->string('contact_phone')->nullable(); + $table->string('address'); + $table->enum('brand_voice', ['formal', 'friendly', 'playful']); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('businesses'); + } +}; From 8d5652b2313000be968140b87a8c6ce748689ad4 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 14:34:24 +0300 Subject: [PATCH 063/561] feat(migration): create services table with necessary fields and constraints --- ...025_08_29_112232_create_services_table.php | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 server/database/migrations/2025_08_29_112232_create_services_table.php diff --git a/server/database/migrations/2025_08_29_112232_create_services_table.php b/server/database/migrations/2025_08_29_112232_create_services_table.php new file mode 100644 index 0000000..b0faa8d --- /dev/null +++ b/server/database/migrations/2025_08_29_112232_create_services_table.php @@ -0,0 +1,32 @@ +id(); + $table->foreignId('business_id')->constrained('businesses')->onDelete('cascade'); + $table->string('name'); + $table->integer('duration_minutes'); + $table->decimal('price', 8, 2); + $table->text('description')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('services'); + } +}; From 88bdd3cd13a323d95e2032c8d63d45f935d3c1ec Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 14:34:29 +0300 Subject: [PATCH 064/561] feat(migration): create resources table with necessary fields and constraints --- ...25_08_29_112425_create_resources_table.php | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 server/database/migrations/2025_08_29_112425_create_resources_table.php diff --git a/server/database/migrations/2025_08_29_112425_create_resources_table.php b/server/database/migrations/2025_08_29_112425_create_resources_table.php new file mode 100644 index 0000000..550a0f8 --- /dev/null +++ b/server/database/migrations/2025_08_29_112425_create_resources_table.php @@ -0,0 +1,31 @@ +id(); + $table->foreignId('business_id')->constrained('businesses')->onDelete('cascade'); + $table->enum('type', ['staff', 'room', 'equipment']); + $table->string('name'); + $table->json('availability')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('resources'); + } +}; From f5474a7dfbb0f532cd3df7f9b7760823d4993d58 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 14:34:34 +0300 Subject: [PATCH 065/561] feat(migration): create booking_rules table with necessary fields and constraints --- ...8_29_112428_create_booking_rules_table.php | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 server/database/migrations/2025_08_29_112428_create_booking_rules_table.php diff --git a/server/database/migrations/2025_08_29_112428_create_booking_rules_table.php b/server/database/migrations/2025_08_29_112428_create_booking_rules_table.php new file mode 100644 index 0000000..e4e87df --- /dev/null +++ b/server/database/migrations/2025_08_29_112428_create_booking_rules_table.php @@ -0,0 +1,31 @@ +id(); + $table->foreignId('business_id')->constrained('businesses')->onDelete('cascade'); + $table->json('hours_of_operation'); + $table->integer('buffer_time_minutes')->nullable(); + $table->string('cancellation_policy')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('booking_rules'); + } +}; From 5f83e025c73af5e0c01a145dc5274212b1eb9c1d Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 14:34:39 +0300 Subject: [PATCH 066/561] feat(migration): create communication_channels table with necessary fields and constraints --- ...32_create_communication_channels_table.php | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 server/database/migrations/2025_08_29_112432_create_communication_channels_table.php diff --git a/server/database/migrations/2025_08_29_112432_create_communication_channels_table.php b/server/database/migrations/2025_08_29_112432_create_communication_channels_table.php new file mode 100644 index 0000000..cdf7ff6 --- /dev/null +++ b/server/database/migrations/2025_08_29_112432_create_communication_channels_table.php @@ -0,0 +1,33 @@ +id(); + $table->foreignId('business_id')->constrained('businesses')->onDelete('cascade'); + $table->enum('channel_type', ['whatsapp', 'sms', 'email']); + $table->string('api_key')->nullable(); + $table->string('token')->nullable(); + $table->string('phone_number')->nullable(); + $table->string('email')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('communication_channels'); + } +}; From 024e79e8267be7deddb1619a4ea4c3bc7acfb9c3 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 14:34:45 +0300 Subject: [PATCH 067/561] feat(migration): create bookings table with necessary fields and constraints --- ...025_08_29_112439_create_bookings_table.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 server/database/migrations/2025_08_29_112439_create_bookings_table.php diff --git a/server/database/migrations/2025_08_29_112439_create_bookings_table.php b/server/database/migrations/2025_08_29_112439_create_bookings_table.php new file mode 100644 index 0000000..3cb1df4 --- /dev/null +++ b/server/database/migrations/2025_08_29_112439_create_bookings_table.php @@ -0,0 +1,34 @@ +id(); + $table->foreignId('business_id')->constrained('businesses')->onDelete('cascade'); + $table->foreignId('client_id')->constrained('clients')->onDelete('cascade'); + $table->foreignId('service_id')->constrained('services')->onDelete('cascade'); + $table->foreignId('resource_id')->nullable()->constrained('resources')->onDelete('set null'); + $table->dateTime('start_time'); + $table->dateTime('end_time'); + $table->enum('status', ['confirmed', 'cancelled', 'completed', 'no_show']); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('bookings'); + } +}; From 7da3befd39be7e51ed7bd54812d35d926c974b4c Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 14:34:49 +0300 Subject: [PATCH 068/561] feat(migration): create clients table with necessary fields and constraints --- ...2025_08_29_112436_create_clients_table.php | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 server/database/migrations/2025_08_29_112436_create_clients_table.php diff --git a/server/database/migrations/2025_08_29_112436_create_clients_table.php b/server/database/migrations/2025_08_29_112436_create_clients_table.php new file mode 100644 index 0000000..d15546e --- /dev/null +++ b/server/database/migrations/2025_08_29_112436_create_clients_table.php @@ -0,0 +1,32 @@ +id(); + $table->foreignId('business_id')->constrained('businesses')->onDelete('cascade'); + $table->string('name'); + $table->string('phone')->nullable(); + $table->string('email')->nullable(); + $table->integer('no_show_count')->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('clients'); + } +}; From 66621dce500405626e0c03f86cfe03498998051b Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 14:36:38 +0300 Subject: [PATCH 069/561] feat(migration): create controllers and models for Booking, BookingRule, Business, Client, CommunicationChannel, Resource, and Service --- server/app/Http/Controllers/BookingController.php | 10 ++++++++++ server/app/Http/Controllers/BookingRuleController.php | 10 ++++++++++ server/app/Http/Controllers/BusinessController.php | 10 ++++++++++ server/app/Http/Controllers/ClientController.php | 10 ++++++++++ .../Controllers/CommunicationChannelController.php | 10 ++++++++++ server/app/Http/Controllers/ResourceController.php | 10 ++++++++++ server/app/Http/Controllers/ServiceController.php | 10 ++++++++++ server/app/Models/Booking.php | 10 ++++++++++ server/app/Models/BookingRule.php | 10 ++++++++++ server/app/Models/Business.php | 10 ++++++++++ server/app/Models/Client.php | 10 ++++++++++ server/app/Models/CommunicationChannel.php | 10 ++++++++++ server/app/Models/Resource.php | 10 ++++++++++ server/app/Models/Service.php | 10 ++++++++++ 14 files changed, 140 insertions(+) create mode 100644 server/app/Http/Controllers/BookingController.php create mode 100644 server/app/Http/Controllers/BookingRuleController.php create mode 100644 server/app/Http/Controllers/BusinessController.php create mode 100644 server/app/Http/Controllers/ClientController.php create mode 100644 server/app/Http/Controllers/CommunicationChannelController.php create mode 100644 server/app/Http/Controllers/ResourceController.php create mode 100644 server/app/Http/Controllers/ServiceController.php create mode 100644 server/app/Models/Booking.php create mode 100644 server/app/Models/BookingRule.php create mode 100644 server/app/Models/Business.php create mode 100644 server/app/Models/Client.php create mode 100644 server/app/Models/CommunicationChannel.php create mode 100644 server/app/Models/Resource.php create mode 100644 server/app/Models/Service.php diff --git a/server/app/Http/Controllers/BookingController.php b/server/app/Http/Controllers/BookingController.php new file mode 100644 index 0000000..e9836b0 --- /dev/null +++ b/server/app/Http/Controllers/BookingController.php @@ -0,0 +1,10 @@ + Date: Fri, 29 Aug 2025 14:59:41 +0300 Subject: [PATCH 070/561] feat(model): define Business model with relationships to services, resources, booking rules, communication channels, clients, and bookings --- server/app/Models/Business.php | 39 +++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/server/app/Models/Business.php b/server/app/Models/Business.php index 6efc92b..5871a2c 100644 --- a/server/app/Models/Business.php +++ b/server/app/Models/Business.php @@ -6,5 +6,42 @@ class Business extends Model { - // + protected $fillable = [ + 'name', + 'industry', + 'contact_email', + 'contact_phone', + 'address', + 'brand_voice', + ]; + + public function services() + { + return $this->hasMany(Service::class); + } + + public function resources() + { + return $this->hasMany(Resource::class); + } + + public function bookingRules() + { + return $this->hasOne(BookingRule::class); + } + + public function communicationChannels() + { + return $this->hasMany(CommunicationChannel::class); + } + + public function clients() + { + return $this->hasMany(Client::class); + } + + public function bookings() + { + return $this->hasMany(Booking::class); + } } From 7413a62e7c6522eabb26ac2da6af7dc76c924eb0 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 15:00:05 +0300 Subject: [PATCH 071/561] feat(model): implement Service model with fillable attributes and relationships to Business and Booking --- server/app/Models/Service.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/server/app/Models/Service.php b/server/app/Models/Service.php index 4fbdb8b..a98c62f 100644 --- a/server/app/Models/Service.php +++ b/server/app/Models/Service.php @@ -6,5 +6,21 @@ class Service extends Model { - // + protected $fillable = [ + 'business_id', + 'name', + 'duration_minutes', + 'price', + 'description', + ]; + + public function business() + { + return $this->belongsTo(Business::class); + } + + public function bookings() + { + return $this->hasMany(Booking::class); + } } From d84cf43d6dc23789064e39e2d5290bdaed87b79c Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 15:01:13 +0300 Subject: [PATCH 072/561] feat(model): define Resource model with fillable attributes and relationships to Business and Booking --- server/app/Models/Resource.php | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/server/app/Models/Resource.php b/server/app/Models/Resource.php index 37357fe..6e5f5dd 100644 --- a/server/app/Models/Resource.php +++ b/server/app/Models/Resource.php @@ -6,5 +6,24 @@ class Resource extends Model { - // + protected $fillable = [ + 'business_id', + 'type', + 'name', + 'availability', + ]; + + protected $casts = [ + 'availability' => 'array', + ]; + + public function business() + { + return $this->belongsTo(Business::class); + } + + public function bookings() + { + return $this->hasMany(Booking::class); + } } From 25797feee0612b467f51ab796c763e5f6d23c156 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 15:01:44 +0300 Subject: [PATCH 073/561] feat(model): define BookingRule model with fillable attributes and relationship to Business --- server/app/Models/BookingRule.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/server/app/Models/BookingRule.php b/server/app/Models/BookingRule.php index 12e987e..ff781bd 100644 --- a/server/app/Models/BookingRule.php +++ b/server/app/Models/BookingRule.php @@ -6,5 +6,19 @@ class BookingRule extends Model { - // + protected $fillable = [ + 'business_id', + 'hours_of_operation', + 'buffer_time_minutes', + 'cancellation_policy', + ]; + + protected $casts = [ + 'hours_of_operation' => 'array', + ]; + + public function business() + { + return $this->belongsTo(Business::class); + } } From 53bf630bebbf736ca9bc9e4c07fe7e67172ddb45 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 15:03:27 +0300 Subject: [PATCH 074/561] feat(model): define CommunicationChannel model with fillable attributes and relationship to Business --- server/app/Models/CommunicationChannel.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/server/app/Models/CommunicationChannel.php b/server/app/Models/CommunicationChannel.php index 321839f..3878ca5 100644 --- a/server/app/Models/CommunicationChannel.php +++ b/server/app/Models/CommunicationChannel.php @@ -6,5 +6,17 @@ class CommunicationChannel extends Model { - // + protected $fillable = [ + 'business_id', + 'channel_type', + 'api_key', + 'token', + 'phone_number', + 'email', + ]; + + public function business() + { + return $this->belongsTo(Business::class); + } } From 45865310ca5f8ec54051a1df6871224e94baf8c5 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 15:03:53 +0300 Subject: [PATCH 075/561] feat(model): define Client model with fillable attributes and relationships to Business and Booking --- server/app/Models/Client.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/server/app/Models/Client.php b/server/app/Models/Client.php index 36bf29e..1efb6ca 100644 --- a/server/app/Models/Client.php +++ b/server/app/Models/Client.php @@ -6,5 +6,21 @@ class Client extends Model { - // + protected $fillable = [ + 'business_id', + 'name', + 'phone', + 'email', + 'no_show_count', + ]; + + public function business() + { + return $this->belongsTo(Business::class); + } + + public function bookings() + { + return $this->hasMany(Booking::class); + } } From 320e1f217165879dbb74f2e3f802f50bd5b59635 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 15:04:24 +0300 Subject: [PATCH 076/561] feat(model): implement Booking model with fillable attributes and relationships to Business, Client, Service, and Resource --- server/app/Models/Booking.php | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/server/app/Models/Booking.php b/server/app/Models/Booking.php index 1a65ddb..7a46966 100644 --- a/server/app/Models/Booking.php +++ b/server/app/Models/Booking.php @@ -6,5 +6,33 @@ class Booking extends Model { - // + protected $fillable = [ + 'business_id', + 'client_id', + 'service_id', + 'resource_id', + 'start_time', + 'end_time', + 'status', + ]; + + public function business() + { + return $this->belongsTo(Business::class); + } + + public function client() + { + return $this->belongsTo(Client::class); + } + + public function service() + { + return $this->belongsTo(Service::class); + } + + public function resource() + { + return $this->belongsTo(Resource::class); + } } From 66e6d9e21df6b239d520a3a4f257e397adbd8ce6 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 19:13:09 +0300 Subject: [PATCH 077/561] feat(routes): add business profile setup route to authenticated group --- server/routes/api.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/routes/api.php b/server/routes/api.php index 795353d..1d74864 100644 --- a/server/routes/api.php +++ b/server/routes/api.php @@ -12,7 +12,10 @@ Route::get('/auth/google/callback', [AuthController::class, 'handleGoogleCallback']); Route::middleware('auth:sanctum')->group(function () { - Route::post('/logout', [AuthController::class, 'logout']); - Route::get('/me', [AuthController::class, 'me']); + Route::post('/logout', [AuthController::class, 'logout']); + Route::get('/me', [AuthController::class, 'me']); + + // Business Profile setup + Route::post('/business-profile', [\App\Http\Controllers\BusinessController::class, 'storeOrUpdate']); }); }); From 37cfd64381636d2b477e41eb11e176c30851a471 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 19:18:41 +0300 Subject: [PATCH 078/561] feat(controller): implement storeOrUpdate method for business creation and updating --- .../Http/Controllers/BusinessController.php | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/server/app/Http/Controllers/BusinessController.php b/server/app/Http/Controllers/BusinessController.php index dbc74e8..bc7289b 100644 --- a/server/app/Http/Controllers/BusinessController.php +++ b/server/app/Http/Controllers/BusinessController.php @@ -6,5 +6,33 @@ class BusinessController extends Controller { - // + public function storeOrUpdate(Request $request) + { + $validated = $request->validate([ + 'name' => 'required|string|max:255', + 'industry' => 'required|string|max:255', + 'contact_email' => 'required|email|max:255', + 'contact_phone' => 'nullable|string|max:255', + 'address' => 'required|string|max:255', + 'brand_voice' => 'required|in:formal,friendly,playful', + 'working_hours' => 'required|array', + ]); + + $user = $request->user(); + + // You may want to link business to user, adjust as needed + $business = $user->business ?? new \App\Models\Business(); + $business->fill($validated); + $business->save(); + + // Save working hours in booking_rules + $business->bookingRules()->updateOrCreate( + ['business_id' => $business->id], + [ + 'hours_of_operation' => $validated['working_hours'], + ] + ); + + return response()->json(['success' => true, 'business' => $business->load('bookingRules')]); + } } From 0582655471bfb5458efff8d7a8905c82e15e06e1 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 19:21:42 +0300 Subject: [PATCH 079/561] feat(request): create StoreBusinessProfileRequest with validation rules for business profile --- .../Requests/StoreBusinessProfileRequest.php | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 server/app/Http/Requests/StoreBusinessProfileRequest.php diff --git a/server/app/Http/Requests/StoreBusinessProfileRequest.php b/server/app/Http/Requests/StoreBusinessProfileRequest.php new file mode 100644 index 0000000..9b45fe3 --- /dev/null +++ b/server/app/Http/Requests/StoreBusinessProfileRequest.php @@ -0,0 +1,57 @@ +|string> + */ + public function rules(): array + { + return [ + // Business fields + 'name' => 'required|string|max:255', + 'industry' => 'required|string|max:255', + 'contact_email' => 'required|email|max:255', + 'contact_phone' => 'nullable|string|max:255', + 'address' => 'required|string|max:255', + 'brand_voice' => 'required|in:formal,friendly,playful', + + // Working hours (booking_rules) + 'working_hours' => 'required|array', + 'working_hours.mon' => 'required|array', + 'working_hours.tue' => 'required|array', + 'working_hours.wed' => 'required|array', + 'working_hours.thu' => 'required|array', + 'working_hours.fri' => 'required|array', + 'working_hours.sat' => 'nullable|array', + 'working_hours.sun' => 'nullable|array', + + // Services (optional, for future steps) + 'services' => 'array', + 'services.*.name' => 'required_with:services|string|max:255', + 'services.*.duration_minutes' => 'required_with:services|integer|min:1', + 'services.*.price' => 'required_with:services|numeric|min:0', + 'services.*.description' => 'nullable|string', + + // Resources (optional, for future steps) + 'resources' => 'array', + 'resources.*.type' => 'required_with:resources|in:staff,room,equipment', + 'resources.*.name' => 'required_with:resources|string|max:255', + 'resources.*.availability' => 'nullable|array', + ]; + } +} From a42630bcc7d851b6ae9d791efefcef8674472a53 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 19:24:59 +0300 Subject: [PATCH 080/561] feat(service): implement BusinessService for handling business profile storage and updates --- .../Http/Controllers/BusinessController.php | 38 ++++--------- server/app/Services/BusinessService.php | 55 +++++++++++++++++++ 2 files changed, 67 insertions(+), 26 deletions(-) create mode 100644 server/app/Services/BusinessService.php diff --git a/server/app/Http/Controllers/BusinessController.php b/server/app/Http/Controllers/BusinessController.php index bc7289b..2136bc3 100644 --- a/server/app/Http/Controllers/BusinessController.php +++ b/server/app/Http/Controllers/BusinessController.php @@ -2,37 +2,23 @@ namespace App\Http\Controllers; -use Illuminate\Http\Request; +use App\Http\Requests\StoreBusinessProfileRequest; +use App\Services\BusinessService; class BusinessController extends Controller { - public function storeOrUpdate(Request $request) + protected $businessService; + + public function __construct(BusinessService $businessService) { - $validated = $request->validate([ - 'name' => 'required|string|max:255', - 'industry' => 'required|string|max:255', - 'contact_email' => 'required|email|max:255', - 'contact_phone' => 'nullable|string|max:255', - 'address' => 'required|string|max:255', - 'brand_voice' => 'required|in:formal,friendly,playful', - 'working_hours' => 'required|array', - ]); + $this->businessService = $businessService; + } + public function storeOrUpdate(StoreBusinessProfileRequest $request) + { + $validated = $request->validated(); $user = $request->user(); - - // You may want to link business to user, adjust as needed - $business = $user->business ?? new \App\Models\Business(); - $business->fill($validated); - $business->save(); - - // Save working hours in booking_rules - $business->bookingRules()->updateOrCreate( - ['business_id' => $business->id], - [ - 'hours_of_operation' => $validated['working_hours'], - ] - ); - - return response()->json(['success' => true, 'business' => $business->load('bookingRules')]); + $business = $this->businessService->storeOrUpdate($user, $validated); + return response()->json(['success' => true, 'business' => $business->load(['bookingRules', 'services', 'resources'])]); } } diff --git a/server/app/Services/BusinessService.php b/server/app/Services/BusinessService.php new file mode 100644 index 0000000..0b13107 --- /dev/null +++ b/server/app/Services/BusinessService.php @@ -0,0 +1,55 @@ +business ?? new Business(); + $business->fill($validated); + $business->save(); + + // Save working hours in booking_rules + $business->bookingRules()->updateOrCreate( + ['business_id' => $business->id], + [ + 'hours_of_operation' => $validated['working_hours'], + ] + ); + + // Save services if provided + if (!empty($validated['services'])) { + foreach ($validated['services'] as $service) { + $business->services()->updateOrCreate( + ['name' => $service['name']], + [ + 'duration_minutes' => $service['duration_minutes'], + 'price' => $service['price'], + 'description' => $service['description'] ?? null, + ] + ); + } + } + + // Save resources if provided + if (!empty($validated['resources'])) { + foreach ($validated['resources'] as $resource) { + $business->resources()->updateOrCreate( + ['name' => $resource['name']], + [ + 'type' => $resource['type'], + 'availability' => $resource['availability'] ?? null, + ] + ); + } + } + }); + return $business; + } +} From c46f2b3146a63f2e20565257fa154fe9c81cc055 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 19:32:16 +0300 Subject: [PATCH 081/561] refactor(auth): move LoginRequest and RegisterRequest to AuthRequests namespace --- .../app/Http/Controllers/AuthController.php | 4 ++-- .../Requests/AuthRequests/LoginRequest.php | 2 +- .../Requests/AuthRequests/RegisterRequest.php | 2 +- server/app/Http/Requests/LoginRequest.php | 21 ------------------ server/app/Http/Requests/RegisterRequest.php | 22 ------------------- 5 files changed, 4 insertions(+), 47 deletions(-) delete mode 100644 server/app/Http/Requests/LoginRequest.php delete mode 100644 server/app/Http/Requests/RegisterRequest.php diff --git a/server/app/Http/Controllers/AuthController.php b/server/app/Http/Controllers/AuthController.php index 5074c37..99665bf 100644 --- a/server/app/Http/Controllers/AuthController.php +++ b/server/app/Http/Controllers/AuthController.php @@ -1,7 +1,7 @@ ['required', 'email'], - 'password' => ['required', 'string'], - ]; - } -} diff --git a/server/app/Http/Requests/RegisterRequest.php b/server/app/Http/Requests/RegisterRequest.php deleted file mode 100644 index edb0229..0000000 --- a/server/app/Http/Requests/RegisterRequest.php +++ /dev/null @@ -1,22 +0,0 @@ - ['required', 'string', 'max:255'], - 'email' => ['required', 'email', 'unique:users,email'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]; - } -} From dc7dc71e7096ef22af09e910816a2c3d21085ec8 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Fri, 29 Aug 2025 19:40:45 +0300 Subject: [PATCH 082/561] test: add BusinessControllerTest with validation and transaction rollback tests --- .../tests/Feature/BusinessControllerTest.php | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 server/tests/Feature/BusinessControllerTest.php diff --git a/server/tests/Feature/BusinessControllerTest.php b/server/tests/Feature/BusinessControllerTest.php new file mode 100644 index 0000000..096bd1c --- /dev/null +++ b/server/tests/Feature/BusinessControllerTest.php @@ -0,0 +1,110 @@ +postJson('/api/v1/business-profile', []); + $response->assertStatus(401); + } + + public function test_validation_errors_for_missing_fields() + { + $user = User::factory()->create(); + $response = $this->actingAs($user)->postJson('/api/v1/business-profile', []); + $response->assertStatus(422); + $response->assertJsonValidationErrors(['name', 'industry', 'contact_email', 'address', 'brand_voice', 'working_hours']); + } + + public function test_successful_business_profile_creation() + { + $user = User::factory()->create(); + $payload = [ + 'name' => 'Test Business', + 'industry' => 'IT', + 'contact_email' => 'test@business.com', + 'contact_phone' => '123456789', + 'address' => '123 Main St', + 'brand_voice' => 'formal', + 'working_hours' => [ + 'mon' => ['09:00', '17:00'], + 'tue' => ['09:00', '17:00'], + 'wed' => ['09:00', '17:00'], + 'thu' => ['09:00', '17:00'], + 'fri' => ['09:00', '17:00'], + 'sat' => [], + 'sun' => [], + ], + 'services' => [ + [ + 'name' => 'Consulting', + 'duration_minutes' => 60, + 'price' => 100, + 'description' => 'Business consulting', + ] + ], + 'resources' => [ + [ + 'type' => 'staff', + 'name' => 'John Doe', + 'availability' => ['mon' => ['09:00', '17:00']], + ] + ] + ]; + $response = $this->actingAs($user)->postJson('/api/v1/business-profile', $payload); + $response->assertStatus(200); + $response->assertJson(['success' => true]); + $this->assertDatabaseHas('businesses', ['name' => 'Test Business']); + $this->assertDatabaseHas('services', ['name' => 'Consulting']); + $this->assertDatabaseHas('resources', ['name' => 'John Doe']); + $business = \App\Models\Business::where('name', 'Test Business')->first(); + $this->assertDatabaseHas('booking_rules', ['business_id' => $business->id]); + } + + public function test_transaction_rollback_on_error() + { + $user = User::factory()->create(); + $payload = [ + 'name' => 'Test Business', + 'industry' => 'IT', + 'contact_email' => 'test@business.com', + 'contact_phone' => '123456789', + 'address' => '123 Main St', + 'brand_voice' => 'formal', + 'working_hours' => [ + 'mon' => ['09:00', '17:00'], + 'tue' => ['09:00', '17:00'], + 'wed' => ['09:00', '17:00'], + 'thu' => ['09:00', '17:00'], + 'fri' => ['09:00', '17:00'], + 'sat' => [], + 'sun' => [], + ], + 'services' => [ + [ + 'name' => 'Consulting', + 'duration_minutes' => 60, + 'price' => 100, + 'description' => 'Business consulting', + ], + [ + 'name' => 'Duplicate', + 'duration_minutes' => null, // This will cause validation error + 'price' => 100, + ] + ], + ]; + $response = $this->actingAs($user)->postJson('/api/v1/business-profile', $payload); + $response->assertStatus(422); + $this->assertDatabaseMissing('businesses', ['name' => 'Test Business']); + $this->assertDatabaseMissing('services', ['name' => 'Consulting']); + } +} From 78e737e8bf74fb44bb45de9d85b02854b3308f80 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 30 Aug 2025 13:12:07 +0300 Subject: [PATCH 083/561] fix(controller): enhance login response and add error handling for storeOrUpdate method --- server/app/Http/Controllers/AuthController.php | 5 ++--- server/app/Http/Controllers/BusinessController.php | 6 +++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/server/app/Http/Controllers/AuthController.php b/server/app/Http/Controllers/AuthController.php index 99665bf..1e513d7 100644 --- a/server/app/Http/Controllers/AuthController.php +++ b/server/app/Http/Controllers/AuthController.php @@ -34,11 +34,10 @@ public function login(LoginRequest $request) if (! $result) { return response()->json(['message' => 'Invalid Credentials'], 422); } - // Log the user in using session/cookie Auth::login($result['user']); - // Redirect to frontend dashboard or return success return response()->json([ - 'user' => new UserResource($result['user']) + 'user' => new UserResource($result['user']), + 'token' => $result['token'], ]); } diff --git a/server/app/Http/Controllers/BusinessController.php b/server/app/Http/Controllers/BusinessController.php index 2136bc3..535c602 100644 --- a/server/app/Http/Controllers/BusinessController.php +++ b/server/app/Http/Controllers/BusinessController.php @@ -19,6 +19,10 @@ public function storeOrUpdate(StoreBusinessProfileRequest $request) $validated = $request->validated(); $user = $request->user(); $business = $this->businessService->storeOrUpdate($user, $validated); - return response()->json(['success' => true, 'business' => $business->load(['bookingRules', 'services', 'resources'])]); + if ($business) { + return response()->json(['success' => true, 'business' => $business->load(['bookingRules', 'services', 'resources'])]); + } else { + return response()->json(['success' => false, 'message' => 'Business not found or could not be created.'], 404); + } } } From 73a03d65b54843afb8ec9fa166875face868016b Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 30 Aug 2025 13:21:57 +0300 Subject: [PATCH 084/561] feat(page): create BusinessSetupPage component for business profile setup --- client/src/app/business-setup/page.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 client/src/app/business-setup/page.tsx diff --git a/client/src/app/business-setup/page.tsx b/client/src/app/business-setup/page.tsx new file mode 100644 index 0000000..3a4b4d6 --- /dev/null +++ b/client/src/app/business-setup/page.tsx @@ -0,0 +1,12 @@ +import React from "react"; + +const BusinessSetupPage = () => { + return ( +
+

Business Setup

+ {/* Business Profile form and setup steps will go here */} +
+ ); +}; + +export default BusinessSetupPage; From f27bc832b2f96a4d79cac76a3b7b24acd50f7720 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 30 Aug 2025 13:23:18 +0300 Subject: [PATCH 085/561] feat(page): enhance BusinessSetupPage with form inputs for business profile setup --- client/src/app/business-setup/page.tsx | 193 ++++++++++++++++++++++++- 1 file changed, 189 insertions(+), 4 deletions(-) diff --git a/client/src/app/business-setup/page.tsx b/client/src/app/business-setup/page.tsx index 3a4b4d6..554c789 100644 --- a/client/src/app/business-setup/page.tsx +++ b/client/src/app/business-setup/page.tsx @@ -1,10 +1,195 @@ -import React from "react"; +import React, { useState } from "react"; +import Input from "@/components/shared/Input"; +import Button from "@/components/Button"; + +const industries = [ + "IT", + "Healthcare", + "Education", + "Retail", + "Finance", + "Other", +]; +const timezones = [ + "UTC", + "America/New_York", + "Europe/London", + "Asia/Dubai", + "Asia/Tokyo", +]; +const days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; + +const defaultWorkingHours = [ + { open: "09:00", close: "17:00", closed: false }, + { open: "09:00", close: "17:00", closed: false }, + { open: "09:00", close: "17:00", closed: false }, + { open: "09:00", close: "17:00", closed: false }, + { open: "09:00", close: "17:00", closed: false }, + { open: "09:00", close: "15:00", closed: false }, + { open: "", close: "", closed: true }, +]; const BusinessSetupPage = () => { + const [form, setForm] = useState({ + name: "", + industry: "", + address: "", + email: "", + timezone: "", + workingHours: defaultWorkingHours, + }); + + const handleChange = ( + e: React.ChangeEvent + ) => { + const { name, value } = e.target; + setForm((prev) => ({ ...prev, [name]: value })); + }; + + const handleWorkingHourChange = + (idx: number, field: "open" | "close") => + (e: React.ChangeEvent) => { + const value = e.target.value; + setForm((prev) => { + const wh = [...prev.workingHours]; + wh[idx][field] = value; + return { ...prev, workingHours: wh }; + }); + }; + + const handleClosedToggle = (idx: number) => () => { + setForm((prev) => { + const wh = [...prev.workingHours]; + wh[idx].closed = !wh[idx].closed; + if (wh[idx].closed) { + wh[idx].open = ""; + wh[idx].close = ""; + } else { + wh[idx].open = "09:00"; + wh[idx].close = idx === 5 ? "15:00" : "17:00"; + } + return { ...prev, workingHours: wh }; + }); + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + // TODO: API call to submit form + alert("Business profile submitted! (API integration pending)"); + }; + return ( -
-

Business Setup

- {/* Business Profile form and setup steps will go here */} +
+

Business Profile

+
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ +
+ {days.map((day, idx) => ( +
+ {day} + + + +
+ ))} +
+
+
+ + +
+
); }; From 4c36527d1a8f4ffa7cb1eb12182932d95b482bc1 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 30 Aug 2025 13:27:55 +0300 Subject: [PATCH 086/561] feat(page): enhance BusinessSetupPage layout with stepper and sidebar for improved navigation --- client/src/app/business-setup/page.tsx | 298 ++++++++++++++++--------- 1 file changed, 196 insertions(+), 102 deletions(-) diff --git a/client/src/app/business-setup/page.tsx b/client/src/app/business-setup/page.tsx index 554c789..8db6736 100644 --- a/client/src/app/business-setup/page.tsx +++ b/client/src/app/business-setup/page.tsx @@ -78,118 +78,212 @@ const BusinessSetupPage = () => { alert("Business profile submitted! (API integration pending)"); }; + // Stepper and sidebar data + const steps = [ + { label: "Business Profile" }, + { label: "Services & Resources" }, + { label: "Booking Rules" }, + { label: "Communication" }, + { label: "AI Workflow" }, + { label: "Analytics" }, + ]; + const currentStep = 0; // For now, hardcoded to first step + return ( -
-

Business Profile

-
-
- + {/* Header */} +
+
+ Slotify Logo -
- - -
+ Slotify
- -
- -
- - -
-
-
- -
- {days.map((day, idx) => ( -
- {day} + + + + +
+ {/* Stepper */} +
+
+
+ {steps.map((step, idx) => ( + +
+
+ {idx + 1} +
+ + {step.label.split(" ")[0]} + +
+ {idx < steps.length - 1 && ( +
+ )} + + ))} +
+ + Step {currentStep + 1} of {steps.length} + +
+ {/* Business Profile Form */} +

Business Profile

+ +
+
+ + +
+
+ +
- +
+ + +
+
+
+ +
+ {days.map((day, idx) => ( +
+ {day} + + + +
+ ))} +
- ))} +
+ + +
+
-
-
- - -
- +
+
); }; From c1fa4006d4fe3ef18b24c4542572e84fb1a67c15 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sat, 30 Aug 2025 14:03:39 +0300 Subject: [PATCH 087/561] Implement code changes to enhance functionality and improve performance --- .../app/business-setup/components/Stepper.tsx | 38 + .../components/WorkingHoursForm.tsx | 66 + client/src/app/business-setup/page.module.css | 251 + client/src/app/business-setup/page.tsx | 377 +- client/structure.txt | 23583 ++++++++++++++++ 5 files changed, 24128 insertions(+), 187 deletions(-) create mode 100644 client/src/app/business-setup/components/Stepper.tsx create mode 100644 client/src/app/business-setup/components/WorkingHoursForm.tsx create mode 100644 client/src/app/business-setup/page.module.css create mode 100644 client/structure.txt diff --git a/client/src/app/business-setup/components/Stepper.tsx b/client/src/app/business-setup/components/Stepper.tsx new file mode 100644 index 0000000..5e7f7f0 --- /dev/null +++ b/client/src/app/business-setup/components/Stepper.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import styles from "../page.module.css"; + +interface Step { + label: string; + icon: string; +} + +interface StepperProps { + steps: Step[]; + currentStep: number; +} + +const Stepper: React.FC = ({ steps, currentStep }) => ( +
+ {steps.map((step, idx) => ( + +
+
+ {idx + 1} +
+
{step.label.split(" ")[0]}
+
+ {idx < steps.length - 1 &&
} + + ))} +
+ Step {currentStep + 1} of {steps.length} +
+
+); + +export default Stepper; diff --git a/client/src/app/business-setup/components/WorkingHoursForm.tsx b/client/src/app/business-setup/components/WorkingHoursForm.tsx new file mode 100644 index 0000000..107e5c5 --- /dev/null +++ b/client/src/app/business-setup/components/WorkingHoursForm.tsx @@ -0,0 +1,66 @@ +import React from "react"; +import Input from "@/components/shared/Input"; +import styles from "../page.module.css"; + +interface WorkingHour { + open: string; + close: string; + closed: boolean; +} + +interface WorkingHoursFormProps { + days: string[]; + workingHours: WorkingHour[]; + onOpenChange: ( + idx: number, + field: "open" | "close" + ) => (e: React.ChangeEvent) => void; + onClosedToggle: (idx: number) => () => void; +} + +const WorkingHoursForm: React.FC = ({ + days, + workingHours, + onOpenChange, + onClosedToggle, +}) => ( +
+ {days.map((day, idx) => ( +
+ {day} + + + +
+ ))} +
+); + +export default WorkingHoursForm; diff --git a/client/src/app/business-setup/page.module.css b/client/src/app/business-setup/page.module.css new file mode 100644 index 0000000..04313f9 --- /dev/null +++ b/client/src/app/business-setup/page.module.css @@ -0,0 +1,251 @@ +.container { + display: flex; + min-height: 100vh; + background: #f7f9fb; +} + +.sidebar { + width: 260px; + background: #0a2940; + border-radius: 16px; + margin-top: 40px; + margin-left: 32px; + padding: 32px 0 32px 0; + display: flex; + flex-direction: column; + align-items: center; + box-shadow: 0 2px 8px 0 rgba(16, 24, 40, 0.05); +} + +.sidebarTitle { + color: #fff; + font-size: 1.15rem; + font-weight: 600; + margin-bottom: 32px; + letter-spacing: 0.01em; +} + +.sidebarSteps { + width: 100%; + display: flex; + flex-direction: column; + gap: 8px; +} + +.sidebarStep { + display: flex; + align-items: center; + gap: 12px; + padding: 12px 24px; + border-radius: 8px; + color: #fff; + font-weight: 500; + font-size: 1rem; + cursor: pointer; + transition: background 0.2s; +} + +.sidebarStepInactive { + background: transparent; + color: #b3c2d1; +} + +.sidebarStepActive { + background: #fff; + color: #0a2940; +} + +.main { + flex: 1; + margin: 40px 32px 0 32px; +} + +.stepper { + display: flex; + align-items: center; + margin-bottom: 32px; + gap: 0; +} + +.step { + display: flex; + flex-direction: column; + align-items: center; + min-width: 80px; +} + +.stepCircle { + width: 32px; + height: 32px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-weight: 700; + font-size: 1.1rem; + border: 2px solid #b3c2d1; + background: #fff; + color: #0a2940; + margin-bottom: 4px; +} + +.stepCircleActive { + background: #0a2940; + color: #fff; + border-color: #0a2940; +} + +.stepLabel { + font-size: 0.85rem; + color: #7a8ca3; + text-align: center; + margin-top: 2px; +} + +.stepConnector { + flex: 1; + height: 2px; + background: #b3c2d1; + margin: 0 8px; +} + +.formCard { + background: #fff; + border-radius: 16px; + box-shadow: 0 2px 8px 0 rgba(16, 24, 40, 0.05); + padding: 40px 32px 32px 32px; + max-width: 900px; +} + +.formTitle { + font-size: 1.5rem; + font-weight: 700; + color: #0a2940; + margin-bottom: 8px; + display: flex; + align-items: center; + gap: 12px; +} + +.formSubtitle { + font-size: 1rem; + color: #7a8ca3; + margin-bottom: 32px; +} + +.grid2 { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 24px; +} + +.grid1 { + display: grid; + grid-template-columns: 1fr; + gap: 24px; +} + +.workingHours { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 8px; + margin-top: 8px; +} + +.workingDay { + display: flex; + flex-direction: column; + align-items: center; + background: #f7f9fb; + border-radius: 8px; + padding: 8px 0; +} + +.workingDayClosed { + opacity: 0.5; +} + +.workingLabel { + font-size: 0.85rem; + font-weight: 600; + margin-bottom: 4px; + color: #0a2940; +} + +.workingInput { + width: 60px; + margin-bottom: 4px; +} + +.closedBtn { + font-size: 0.8rem; + padding: 2px 8px; + border-radius: 6px; + border: 1px solid #b3c2d1; + background: #fff; + color: #0a2940; + cursor: pointer; + margin-top: 2px; + transition: background 0.2s; +} + +.closedBtnActive { + background: #e6eef5; + color: #b3c2d1; +} + +.actions { + display: flex; + justify-content: flex-end; + gap: 16px; + margin-top: 32px; +} + +.backBtn { + background: #e6eef5; + color: #0a2940; + border: none; + border-radius: 8px; + padding: 10px 32px; + font-weight: 600; + font-size: 1rem; + cursor: pointer; + transition: background 0.2s; +} + +.nextBtn { + background: #0a2940; + color: #fff; + border: none; + border-radius: 8px; + padding: 10px 32px; + font-weight: 600; + font-size: 1rem; + cursor: pointer; + transition: background 0.2s; +} + +.nextBtn:disabled { + opacity: 0.6; + cursor: not-allowed; +} + +@media (max-width: 900px) { + .container { + flex-direction: column; + } + .sidebar { + width: 100%; + margin: 0 0 24px 0; + border-radius: 12px; + } + .main { + margin: 0 16px; + } + .formCard { + padding: 24px 12px; + } + .workingHours { + grid-template-columns: repeat(2, 1fr); + } +} diff --git a/client/src/app/business-setup/page.tsx b/client/src/app/business-setup/page.tsx index 8db6736..72fca96 100644 --- a/client/src/app/business-setup/page.tsx +++ b/client/src/app/business-setup/page.tsx @@ -1,6 +1,11 @@ +"use client"; + import React, { useState } from "react"; import Input from "@/components/shared/Input"; import Button from "@/components/Button"; +import styles from "./page.module.css"; +import Stepper from "./components/Stepper"; +import WorkingHoursForm from "./components/WorkingHoursForm"; const industries = [ "IT", @@ -30,6 +35,14 @@ const defaultWorkingHours = [ ]; const BusinessSetupPage = () => { + const steps = [ + { label: "Business Profile", icon: "\u{1F4C4}" }, + { label: "Services & Resources", icon: "\u{1F4CB}" }, + { label: "Booking Rules", icon: "\u{2692}" }, + { label: "Communication", icon: "\u{1F4E7}" }, + { label: "AI Workflow", icon: "\u{1F916}" }, + { label: "Analytics", icon: "\u{1F4CA}" }, + ]; const [form, setForm] = useState({ name: "", industry: "", @@ -72,130 +85,114 @@ const BusinessSetupPage = () => { }); }; + const currentStep = 0; + const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); - // TODO: API call to submit form - alert("Business profile submitted! (API integration pending)"); + // TODO: handle form submission }; - // Stepper and sidebar data - const steps = [ - { label: "Business Profile" }, - { label: "Services & Resources" }, - { label: "Booking Rules" }, - { label: "Communication" }, - { label: "AI Workflow" }, - { label: "Analytics" }, - ]; - const currentStep = 0; // For now, hardcoded to first step - return ( -
- {/* Header */} -
-
- Slotify Logo - Slotify -
-

Setup your booking platform

-
- -
- {/* Sidebar */} - +
+ {/* Sidebar */} + -
- {/* Stepper */} -
-
-
- {steps.map((step, idx) => ( - -
-
- {idx + 1} -
- - {step.label.split(" ")[0]} - -
- {idx < steps.length - 1 && ( -
- )} - - ))} +
+ {/* Stepper */} +
+ {steps.map((step, idx) => ( + +
+
+ {idx + 1} +
+
+ {step.label.split(" ")[0]} +
- - Step {currentStep + 1} of {steps.length} - -
- {/* Business Profile Form */} -

Business Profile

-
-
- + )} + + ))} +
+ Step {currentStep + 1} of {steps.length} +
+
+ + {/* Form Card */} +
+
+ + 📄 + + Business Profile +
+
+ Tell us about your business and setup basic information +
+ +
+ +
+ + - - {industries.map((ind) => ( - - ))} - -
+ > + + {industries.map((ind) => ( + + ))} +
+
+
{ placeholder="Enter your complete business address" required /> -
- -
- - -
-
+
+
+
-
- {days.map((day, idx) => ( -
- {day} - - - -
+
-
- - +
+
+ +
+ {days.map((day, idx) => ( +
+ {day} + + + +
+ ))}
- -
-
+
+
+ + +
+ +
); diff --git a/client/structure.txt b/client/structure.txt new file mode 100644 index 0000000..0ef2bae --- /dev/null +++ b/client/structure.txt @@ -0,0 +1,23583 @@ +Folder PATH listing for volume Windows +Volume serial number is 0A0A-BFBC +C:. + .dockerignore + .env + .gitignore + Dockerfile + eslint.config.mjs + next-env.d.ts + next.config.ts + package-lock.json + package.json + postcss.config.mjs + README.md + structure.txt + tsconfig.json + tsconfig.tsbuildinfo + ++---.next + app-build-manifest.json + build-manifest.json + fallback-build-manifest.json + package.json + prerender-manifest.json + react-loadable-manifest.json + routes-manifest.json + trace + + +---cache + .previewinfo + .rscinfo + .tsbuildinfo + chrome-devtools-workspace-uuid + config.json + + +---eslint + .cache_1x9adu9 + + +---swc + +---plugins + +---v7_linux_x86_64_17.0.0 + +---v7_windows_x86_64_17.0.0 + +---webpack + +---client-development + 0.pack.gz + 1.pack.gz + 10.pack.gz + 11.pack.gz + 12.pack.gz + 13.pack.gz + 14.pack.gz + 15.pack.gz + 16.pack.gz + 2.pack.gz + 3.pack.gz + 4.pack.gz + 5.pack.gz + 6.pack.gz + 7.pack.gz + 8.pack.gz + 9.pack.gz + index.pack.gz + index.pack.gz.old + + +---client-development-fallback + 0.pack.gz + index.pack.gz + index.pack.gz.old + + +---client-production + 0.pack + 1.pack + 2.pack + index.pack + index.pack.old + + +---edge-server-production + 0.pack + index.pack + + +---server-development + 0.pack.gz + 1.pack.gz + 10.pack.gz + 11.pack.gz + 12.pack.gz + 13.pack.gz + 14.pack.gz + 15.pack.gz + 16.pack.gz + 17.pack.gz + 18.pack.gz + 19.pack.gz + 2.pack.gz + 20.pack.gz + 21.pack.gz + 3.pack.gz + 4.pack.gz + 5.pack.gz + 6.pack.gz + 7.pack.gz + 8.pack.gz + 9.pack.gz + index.pack.gz + index.pack.gz.old + + +---server-production + 0.pack + index.pack + + +---server + app-paths-manifest.json + interception-route-rewrite-manifest.js + middleware-build-manifest.js + middleware-manifest.json + middleware-react-loadable-manifest.js + next-font-manifest.js + next-font-manifest.json + pages-manifest.json + server-reference-manifest.js + server-reference-manifest.json + webpack-runtime.js + _error.js + + +---app + +---business-setup + page.js + page_client-reference-manifest.js + + +---_not-found + page.js + page_client-reference-manifest.js + + +---pages + _app.js + _document.js + _error.js + + +---vendor-chunks + @swc.js + next.js + + +---static + +---chunks + app-pages-internals.js + main-app.js + main.js + polyfills.js + react-refresh.js + webpack.js + _app-pages-browser_node_modules_next_dist_client_dev_noop-turbopack-hmr_js.js + _error.js + _pages-dir-browser_node_modules_next_dist_pages__app_js.js + _pages-dir-browser_node_modules_next_dist_pages__error_js.js + + +---app + layout.js + + +---business-setup + page.js + + +---_not-found + page.js + + +---fallback + amp.js + main-app.js + main.js + react-refresh.js + webpack.js + _app-pages-browser_node_modules_next_dist_client_dev_noop-turbopack-hmr_js.js + _pages-dir-browser_node_modules_next_dist_pages__app_js.js + _pages-dir-browser_node_modules_next_dist_pages__error_js.js + + +---pages + _app.js + _error.js + + +---pages + _app.js + _error.js + + +---css + +---app + layout.css + + +---business-setup + page.css + + +---development + _buildManifest.js + _ssgManifest.js + + +---media + 569ce4b8f30dc480-s.p.woff2 + 747892c23ea88013-s.woff2 + 8d697b304b401681-s.woff2 + 93f479601ee12b01-s.p.woff2 + 9610d9e46709d722-s.woff2 + ba015fad6dcf6784-s.woff2 + + +---webpack + 0563815a1c8636ec.webpack.hot-update.json + 05fb3cd3b7fa6d97.webpack.hot-update.json + 07bc6e96a2e1e32c.webpack.hot-update.json + 07de1fa9ba7c11c4.webpack.hot-update.json + 14d8831e88450f93.webpack.hot-update.json + 191b7a946625333c.webpack.hot-update.json + 21725fbf64b92a06.webpack.hot-update.json + 250b7f1d3f36edf7.webpack.hot-update.json + 252eb3fed3ca881d.webpack.hot-update.json + 28c12cf2d9948d56.webpack.hot-update.json + 30a52b53dd0d1d57.webpack.hot-update.json + 31940e80ddad3a05.webpack.hot-update.json + 3cee5109b8c3399f.webpack.hot-update.json + 3e99e19eee21b42b.webpack.hot-update.json + 422aefaa63df6231.webpack.hot-update.json + 4d0eb17fdab5e23a.webpack.hot-update.json + 4e5edaf21f91ad56.webpack.hot-update.json + 4f636de935e2d59c.webpack.hot-update.json + 50a07021f2c5e375.webpack.hot-update.json + 51ce555190d9fef6.webpack.hot-update.json + 53a6ea931209bd67.webpack.hot-update.json + 548403c9a6c976f3.webpack.hot-update.json + 5bc52c8d301273a3.webpack.hot-update.json + 5f891421be471cbb.webpack.hot-update.json + 633457081244afec._.hot-update.json + 66c874cd1073b2aa.webpack.hot-update.json + 686d5985290a3bed.webpack.hot-update.json + 6c736b990688b1d7.webpack.hot-update.json + 72a5712543501ed0.webpack.hot-update.json + 73f014cda843b203.webpack.hot-update.json + 7acf67c06a2068c8.webpack.hot-update.json + 7b6182e8926d66cb.webpack.hot-update.json + 876d941728cbc2dd.webpack.hot-update.json + 87ee867188a7dde4.webpack.hot-update.json + 88cc3c67cf5ab9fe.webpack.hot-update.json + 8faf07c7ea249432.webpack.hot-update.json + 92ab1324e81cdd9a.webpack.hot-update.json + 973623b6d77a024c.webpack.hot-update.json + 9998976d7eae22c2.webpack.hot-update.json + 9f1f09c0b68e89c2.webpack.hot-update.json + a01c47505855d53d.webpack.hot-update.json + aa8771c0966f2c27.webpack.hot-update.json + af0c93402b3a10e8.webpack.hot-update.json + b3c24fa37d47b1ca.webpack.hot-update.json + ba88cbe1ac14292c.webpack.hot-update.json + bf944974e19b39e7.webpack.hot-update.json + c0e4704868d24208.webpack.hot-update.json + c5c37983950a1e73.webpack.hot-update.json + c6e3744374eb3fe9.webpack.hot-update.json + d1984cd9f010cc36.webpack.hot-update.json + e7c74837c2df85ad.webpack.hot-update.json + e87b39ee668a2205.webpack.hot-update.json + f16c7314247e9564.webpack.hot-update.json + f2597fc66ba645da.webpack.hot-update.json + f4a9a6a12609ab58.webpack.hot-update.json + fcbbacde941b6c1a.webpack.hot-update.json + main.4f636de935e2d59c.hot-update.js + main.c0e4704868d24208.hot-update.js + webpack.0563815a1c8636ec.hot-update.js + webpack.05fb3cd3b7fa6d97.hot-update.js + webpack.07bc6e96a2e1e32c.hot-update.js + webpack.07de1fa9ba7c11c4.hot-update.js + webpack.14d8831e88450f93.hot-update.js + webpack.191b7a946625333c.hot-update.js + webpack.21725fbf64b92a06.hot-update.js + webpack.250b7f1d3f36edf7.hot-update.js + webpack.252eb3fed3ca881d.hot-update.js + webpack.28c12cf2d9948d56.hot-update.js + webpack.30a52b53dd0d1d57.hot-update.js + webpack.31940e80ddad3a05.hot-update.js + webpack.3cee5109b8c3399f.hot-update.js + webpack.3e99e19eee21b42b.hot-update.js + webpack.422aefaa63df6231.hot-update.js + webpack.4d0eb17fdab5e23a.hot-update.js + webpack.4e5edaf21f91ad56.hot-update.js + webpack.4f636de935e2d59c.hot-update.js + webpack.50a07021f2c5e375.hot-update.js + webpack.51ce555190d9fef6.hot-update.js + webpack.53a6ea931209bd67.hot-update.js + webpack.548403c9a6c976f3.hot-update.js + webpack.5bc52c8d301273a3.hot-update.js + webpack.5f891421be471cbb.hot-update.js + webpack.66c874cd1073b2aa.hot-update.js + webpack.686d5985290a3bed.hot-update.js + webpack.6c736b990688b1d7.hot-update.js + webpack.72a5712543501ed0.hot-update.js + webpack.73f014cda843b203.hot-update.js + webpack.7acf67c06a2068c8.hot-update.js + webpack.7b6182e8926d66cb.hot-update.js + webpack.876d941728cbc2dd.hot-update.js + webpack.87ee867188a7dde4.hot-update.js + webpack.88cc3c67cf5ab9fe.hot-update.js + webpack.8faf07c7ea249432.hot-update.js + webpack.92ab1324e81cdd9a.hot-update.js + webpack.973623b6d77a024c.hot-update.js + webpack.9998976d7eae22c2.hot-update.js + webpack.9f1f09c0b68e89c2.hot-update.js + webpack.a01c47505855d53d.hot-update.js + webpack.aa8771c0966f2c27.hot-update.js + webpack.af0c93402b3a10e8.hot-update.js + webpack.b3c24fa37d47b1ca.hot-update.js + webpack.ba88cbe1ac14292c.hot-update.js + webpack.bf944974e19b39e7.hot-update.js + webpack.c0e4704868d24208.hot-update.js + webpack.c5c37983950a1e73.hot-update.js + webpack.c6e3744374eb3fe9.hot-update.js + webpack.d1984cd9f010cc36.hot-update.js + webpack.e7c74837c2df85ad.hot-update.js + webpack.e87b39ee668a2205.hot-update.js + webpack.f16c7314247e9564.hot-update.js + webpack.f2597fc66ba645da.hot-update.js + webpack.f4a9a6a12609ab58.hot-update.js + webpack.fcbbacde941b6c1a.hot-update.js + + +---app + layout.0563815a1c8636ec.hot-update.js + layout.05fb3cd3b7fa6d97.hot-update.js + layout.07bc6e96a2e1e32c.hot-update.js + layout.07de1fa9ba7c11c4.hot-update.js + layout.14d8831e88450f93.hot-update.js + layout.191b7a946625333c.hot-update.js + layout.21725fbf64b92a06.hot-update.js + layout.250b7f1d3f36edf7.hot-update.js + layout.28c12cf2d9948d56.hot-update.js + layout.30a52b53dd0d1d57.hot-update.js + layout.31940e80ddad3a05.hot-update.js + layout.3cee5109b8c3399f.hot-update.js + layout.3e99e19eee21b42b.hot-update.js + layout.422aefaa63df6231.hot-update.js + layout.4d0eb17fdab5e23a.hot-update.js + layout.4e5edaf21f91ad56.hot-update.js + layout.4f636de935e2d59c.hot-update.js + layout.50a07021f2c5e375.hot-update.js + layout.51ce555190d9fef6.hot-update.js + layout.53a6ea931209bd67.hot-update.js + layout.548403c9a6c976f3.hot-update.js + layout.5bc52c8d301273a3.hot-update.js + layout.5f891421be471cbb.hot-update.js + layout.66c874cd1073b2aa.hot-update.js + layout.686d5985290a3bed.hot-update.js + layout.6c736b990688b1d7.hot-update.js + layout.72a5712543501ed0.hot-update.js + layout.73f014cda843b203.hot-update.js + layout.7acf67c06a2068c8.hot-update.js + layout.7b6182e8926d66cb.hot-update.js + layout.876d941728cbc2dd.hot-update.js + layout.87ee867188a7dde4.hot-update.js + layout.88cc3c67cf5ab9fe.hot-update.js + layout.8faf07c7ea249432.hot-update.js + layout.92ab1324e81cdd9a.hot-update.js + layout.973623b6d77a024c.hot-update.js + layout.9998976d7eae22c2.hot-update.js + layout.a01c47505855d53d.hot-update.js + layout.aa8771c0966f2c27.hot-update.js + layout.af0c93402b3a10e8.hot-update.js + layout.ba88cbe1ac14292c.hot-update.js + layout.bf944974e19b39e7.hot-update.js + layout.c5c37983950a1e73.hot-update.js + layout.c6e3744374eb3fe9.hot-update.js + layout.d1984cd9f010cc36.hot-update.js + layout.e87b39ee668a2205.hot-update.js + layout.f16c7314247e9564.hot-update.js + layout.f2597fc66ba645da.hot-update.js + layout.f4a9a6a12609ab58.hot-update.js + layout.fcbbacde941b6c1a.hot-update.js + + +---business-setup + page.07bc6e96a2e1e32c.hot-update.js + page.252eb3fed3ca881d.hot-update.js + page.28c12cf2d9948d56.hot-update.js + page.30a52b53dd0d1d57.hot-update.js + page.31940e80ddad3a05.hot-update.js + page.50a07021f2c5e375.hot-update.js + page.f4a9a6a12609ab58.hot-update.js + + +---types + cache-life.d.ts + package.json + + +---app + layout.ts + + +---business-setup + page.ts + ++---node_modules + .package-lock.json + + +---.bin + acorn + acorn.cmd + acorn.ps1 + autoprefixer + autoprefixer.cmd + autoprefixer.ps1 + browserslist + browserslist.cmd + browserslist.ps1 + eslint + eslint.cmd + eslint.ps1 + jiti + jiti.cmd + jiti.ps1 + js-yaml + js-yaml.cmd + js-yaml.ps1 + json5 + json5.cmd + json5.ps1 + loose-envify + loose-envify.cmd + loose-envify.ps1 + mkdirp + mkdirp.cmd + mkdirp.ps1 + nanoid + nanoid.cmd + nanoid.ps1 + napi-postinstall + napi-postinstall.cmd + napi-postinstall.ps1 + next + next.cmd + next.ps1 + node-which + node-which.cmd + node-which.ps1 + resolve + resolve.cmd + resolve.ps1 + semver + semver.cmd + semver.ps1 + tsc + tsc.cmd + tsc.ps1 + tsserver + tsserver.cmd + tsserver.ps1 + update-browserslist-db + update-browserslist-db.cmd + update-browserslist-db.ps1 + + +---@alloc + +---quick-lru + index.d.ts + index.js + license + package.json + readme.md + + +---@emnapi + +---core + index.js + LICENSE + package.json + README.md + + +---dist + emnapi-core.cjs.js + emnapi-core.cjs.min.d.ts + emnapi-core.cjs.min.js + emnapi-core.d.mts + emnapi-core.d.ts + emnapi-core.esm-bundler.js + emnapi-core.js + emnapi-core.min.d.mts + emnapi-core.min.js + emnapi-core.min.mjs + emnapi-core.mjs + + +---runtime + index.js + LICENSE + package.json + README.md + + +---dist + emnapi.cjs.js + emnapi.cjs.min.d.ts + emnapi.cjs.min.js + emnapi.d.mts + emnapi.d.ts + emnapi.esm-bundler.js + emnapi.iife.d.ts + emnapi.iife.js + emnapi.js + emnapi.min.d.mts + emnapi.min.js + emnapi.min.mjs + emnapi.mjs + + +---wasi-threads + index.js + LICENSE + package.json + README.md + + +---dist + wasi-threads.cjs.js + wasi-threads.cjs.min.d.ts + wasi-threads.cjs.min.js + wasi-threads.d.mts + wasi-threads.d.ts + wasi-threads.esm-bundler.js + wasi-threads.js + wasi-threads.min.d.mts + wasi-threads.min.js + wasi-threads.min.mjs + wasi-threads.mjs + + +---@eslint + +---config-array + LICENSE + package.json + README.md + + +---dist + +---cjs + index.cjs + index.d.cts + types.ts + + +---std__path + posix.cjs + windows.cjs + + +---esm + index.d.ts + index.js + types.d.ts + types.ts + + +---std__path + posix.js + windows.js + + +---config-helpers + LICENSE + package.json + README.md + + +---dist + +---cjs + index.cjs + index.d.cts + types.cts + + +---esm + index.d.ts + index.js + types.d.ts + types.ts + + +---core + LICENSE + package.json + README.md + + +---dist + +---cjs + types.d.cts + + +---esm + types.d.ts + + +---eslintrc + LICENSE + package.json + README.md + universal.js + + +---conf + config-schema.js + environments.js + + +---dist + eslintrc-universal.cjs + eslintrc-universal.cjs.map + eslintrc.cjs + eslintrc.cjs.map + eslintrc.d.cts + + +---lib + cascading-config-array-factory.js + config-array-factory.js + flat-compat.js + index-universal.js + index.js + + +---config-array + config-array.js + config-dependency.js + extracted-config.js + ignore-pattern.js + index.js + override-tester.js + + +---shared + ajv.js + config-ops.js + config-validator.js + deep-merge-arrays.js + deprecation-warnings.js + naming.js + relative-module-resolver.js + types.js + + +---types + index.d.ts + + +---js + LICENSE + package.json + README.md + + +---src + index.js + + +---configs + eslint-all.js + eslint-recommended.js + + +---types + index.d.ts + + +---object-schema + LICENSE + package.json + README.md + + +---dist + +---cjs + index.cjs + index.d.cts + types.ts + + +---esm + index.d.ts + index.js + types.d.ts + types.ts + + +---plugin-kit + LICENSE + package.json + README.md + + +---dist + +---cjs + index.cjs + index.d.cts + types.cts + + +---esm + index.d.ts + index.js + types.d.ts + types.ts + + +---@eslint-community + +---eslint-utils + index.d.mts + index.d.ts + index.js + index.js.map + index.mjs + index.mjs.map + LICENSE + package.json + README.md + + +---node_modules + +---eslint-visitor-keys + LICENSE + package.json + README.md + + +---dist + eslint-visitor-keys.cjs + eslint-visitor-keys.d.cts + index.d.ts + visitor-keys.d.ts + + +---lib + index.js + visitor-keys.js + + +---regexpp + index.d.ts + index.js + index.js.map + index.mjs + index.mjs.map + LICENSE + package.json + README.md + + +---@humanfs + +---core + LICENSE + package.json + README.md + + +---dist + errors.d.ts + fsx.d.ts + hfs.d.ts + index.d.ts + path.d.ts + + +---src + errors.js + hfs.js + index.js + path.js + + +---node + LICENSE + package.json + README.md + + +---dist + index.d.ts + node-fsx.d.ts + node-hfs.d.ts + + +---node_modules + +---@humanwhocodes + +---retry + LICENSE + package.json + README.md + + +---dist + retrier.cjs + retrier.d.cts + retrier.d.ts + retrier.js + retrier.min.js + retrier.mjs + + +---src + index.js + node-hfs.js + + +---@humanwhocodes + +---module-importer + CHANGELOG.md + LICENSE + package.json + README.md + + +---dist + module-importer.cjs + module-importer.d.cts + module-importer.d.ts + module-importer.js + + +---src + module-importer.cjs + module-importer.js + + +---retry + LICENSE + package.json + README.md + + +---dist + retrier.cjs + retrier.d.cts + retrier.d.ts + retrier.js + retrier.min.js + retrier.mjs + + +---@img + +---sharp-win32-x64 + LICENSE + package.json + README.md + versions.json + + +---lib + libvips-42.dll + libvips-cpp-8.17.1.dll + sharp-win32-x64.node + + +---@isaacs + +---fs-minipass + LICENSE + package.json + README.md + + +---dist + +---commonjs + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---esm + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---@jridgewell + +---gen-mapping + LICENSE + package.json + README.md + + +---dist + gen-mapping.mjs + gen-mapping.mjs.map + gen-mapping.umd.js + gen-mapping.umd.js.map + + +---types + gen-mapping.d.ts + set-array.d.ts + sourcemap-segment.d.ts + types.d.ts + + +---src + gen-mapping.ts + set-array.ts + sourcemap-segment.ts + types.ts + + +---types + gen-mapping.d.cts + gen-mapping.d.cts.map + gen-mapping.d.mts + gen-mapping.d.mts.map + set-array.d.cts + set-array.d.cts.map + set-array.d.mts + set-array.d.mts.map + sourcemap-segment.d.cts + sourcemap-segment.d.cts.map + sourcemap-segment.d.mts + sourcemap-segment.d.mts.map + types.d.cts + types.d.cts.map + types.d.mts + types.d.mts.map + + +---remapping + LICENSE + package.json + README.md + + +---dist + remapping.mjs + remapping.mjs.map + remapping.umd.js + remapping.umd.js.map + + +---src + build-source-map-tree.ts + remapping.ts + source-map-tree.ts + source-map.ts + types.ts + + +---types + build-source-map-tree.d.cts + build-source-map-tree.d.cts.map + build-source-map-tree.d.mts + build-source-map-tree.d.mts.map + remapping.d.cts + remapping.d.cts.map + remapping.d.mts + remapping.d.mts.map + source-map-tree.d.cts + source-map-tree.d.cts.map + source-map-tree.d.mts + source-map-tree.d.mts.map + source-map.d.cts + source-map.d.cts.map + source-map.d.mts + source-map.d.mts.map + types.d.cts + types.d.cts.map + types.d.mts + types.d.mts.map + + +---resolve-uri + LICENSE + package.json + README.md + + +---dist + resolve-uri.mjs + resolve-uri.mjs.map + resolve-uri.umd.js + resolve-uri.umd.js.map + + +---types + resolve-uri.d.ts + + +---sourcemap-codec + LICENSE + package.json + README.md + + +---dist + sourcemap-codec.mjs + sourcemap-codec.mjs.map + sourcemap-codec.umd.js + sourcemap-codec.umd.js.map + + +---src + scopes.ts + sourcemap-codec.ts + strings.ts + vlq.ts + + +---types + scopes.d.cts + scopes.d.cts.map + scopes.d.mts + scopes.d.mts.map + sourcemap-codec.d.cts + sourcemap-codec.d.cts.map + sourcemap-codec.d.mts + sourcemap-codec.d.mts.map + strings.d.cts + strings.d.cts.map + strings.d.mts + strings.d.mts.map + vlq.d.cts + vlq.d.cts.map + vlq.d.mts + vlq.d.mts.map + + +---trace-mapping + LICENSE + package.json + README.md + + +---dist + trace-mapping.mjs + trace-mapping.mjs.map + trace-mapping.umd.js + trace-mapping.umd.js.map + + +---src + binary-search.ts + by-source.ts + flatten-map.ts + resolve.ts + sort.ts + sourcemap-segment.ts + strip-filename.ts + trace-mapping.ts + types.ts + + +---types + binary-search.d.cts + binary-search.d.cts.map + binary-search.d.mts + binary-search.d.mts.map + by-source.d.cts + by-source.d.cts.map + by-source.d.mts + by-source.d.mts.map + flatten-map.d.cts + flatten-map.d.cts.map + flatten-map.d.mts + flatten-map.d.mts.map + resolve.d.cts + resolve.d.cts.map + resolve.d.mts + resolve.d.mts.map + sort.d.cts + sort.d.cts.map + sort.d.mts + sort.d.mts.map + sourcemap-segment.d.cts + sourcemap-segment.d.cts.map + sourcemap-segment.d.mts + sourcemap-segment.d.mts.map + strip-filename.d.cts + strip-filename.d.cts.map + strip-filename.d.mts + strip-filename.d.mts.map + trace-mapping.d.cts + trace-mapping.d.cts.map + trace-mapping.d.mts + trace-mapping.d.mts.map + types.d.cts + types.d.cts.map + types.d.mts + types.d.mts.map + + +---@napi-rs + +---wasm-runtime + fs-proxy.cjs + LICENSE + package.json + runtime.cjs + + +---dist + fs.js + runtime.js + + +---@next + +---env + package.json + README.md + + +---dist + index.d.ts + index.js + + +---eslint-plugin-next + package.json + README.md + + +---dist + index.d.ts + index.js + + +---rules + google-font-display.d.ts + google-font-display.js + google-font-preconnect.d.ts + google-font-preconnect.js + inline-script-id.d.ts + inline-script-id.js + next-script-for-ga.d.ts + next-script-for-ga.js + no-assign-module-variable.d.ts + no-assign-module-variable.js + no-async-client-component.d.ts + no-async-client-component.js + no-before-interactive-script-outside-document.d.ts + no-before-interactive-script-outside-document.js + no-css-tags.d.ts + no-css-tags.js + no-document-import-in-page.d.ts + no-document-import-in-page.js + no-duplicate-head.d.ts + no-duplicate-head.js + no-head-element.d.ts + no-head-element.js + no-head-import-in-document.d.ts + no-head-import-in-document.js + no-html-link-for-pages.d.ts + no-html-link-for-pages.js + no-img-element.d.ts + no-img-element.js + no-page-custom-font.d.ts + no-page-custom-font.js + no-script-component-in-head.d.ts + no-script-component-in-head.js + no-styled-jsx-in-document.d.ts + no-styled-jsx-in-document.js + no-sync-scripts.d.ts + no-sync-scripts.js + no-title-in-document-head.d.ts + no-title-in-document-head.js + no-typos.d.ts + no-typos.js + no-unwanted-polyfillio.d.ts + no-unwanted-polyfillio.js + + +---utils + define-rule.d.ts + define-rule.js + get-root-dirs.d.ts + get-root-dirs.js + node-attributes.d.ts + node-attributes.js + url.d.ts + url.js + + +---swc-win32-x64-msvc + next-swc.win32-x64-msvc.node + package.json + README.md + + +---@nodelib + +---fs.scandir + LICENSE + package.json + README.md + + +---out + constants.d.ts + constants.js + index.d.ts + index.js + settings.d.ts + settings.js + + +---adapters + fs.d.ts + fs.js + + +---providers + async.d.ts + async.js + common.d.ts + common.js + sync.d.ts + sync.js + + +---types + index.d.ts + index.js + + +---utils + fs.d.ts + fs.js + index.d.ts + index.js + + +---fs.stat + LICENSE + package.json + README.md + + +---out + index.d.ts + index.js + settings.d.ts + settings.js + + +---adapters + fs.d.ts + fs.js + + +---providers + async.d.ts + async.js + sync.d.ts + sync.js + + +---types + index.d.ts + index.js + + +---fs.walk + LICENSE + package.json + README.md + + +---out + index.d.ts + index.js + settings.d.ts + settings.js + + +---providers + async.d.ts + async.js + index.d.ts + index.js + stream.d.ts + stream.js + sync.d.ts + sync.js + + +---readers + async.d.ts + async.js + common.d.ts + common.js + reader.d.ts + reader.js + sync.d.ts + sync.js + + +---types + index.d.ts + index.js + + +---@nolyfill + +---is-core-module + index.d.ts + index.js + LICENSE + package.json + + +---@rtsao + +---scc + index.d.ts + index.js + index.js.flow + LICENSE + package.json + README.md + + +---@rushstack + +---eslint-patch + .eslintrc.js + CHANGELOG.json + CHANGELOG.md + custom-config-package-names.js + eslint-bulk-suppressions.js + LICENSE + modern-module-resolution.js + package.json + README.md + + +---lib + custom-config-package-names.d.ts + custom-config-package-names.d.ts.map + custom-config-package-names.js + custom-config-package-names.js.map + modern-module-resolution.d.ts + modern-module-resolution.d.ts.map + modern-module-resolution.js + modern-module-resolution.js.map + usage.d.ts + usage.d.ts.map + usage.js + usage.js.map + _patch-base.d.ts + _patch-base.d.ts.map + _patch-base.js + _patch-base.js.map + + +---eslint-bulk-suppressions + ast-guards.d.ts + ast-guards.d.ts.map + ast-guards.js + ast-guards.js.map + bulk-suppressions-file.d.ts + bulk-suppressions-file.d.ts.map + bulk-suppressions-file.js + bulk-suppressions-file.js.map + bulk-suppressions-patch.d.ts + bulk-suppressions-patch.d.ts.map + bulk-suppressions-patch.js + bulk-suppressions-patch.js.map + constants.d.ts + constants.d.ts.map + constants.js + constants.js.map + generate-patched-file.d.ts + generate-patched-file.d.ts.map + generate-patched-file.js + generate-patched-file.js.map + index.d.ts + index.d.ts.map + index.js + index.js.map + path-utils.d.ts + path-utils.d.ts.map + path-utils.js + path-utils.js.map + + +---cli + prune.d.ts + prune.d.ts.map + prune.js + prune.js.map + runEslint.d.ts + runEslint.d.ts.map + runEslint.js + runEslint.js.map + start.d.ts + start.d.ts.map + start.js + start.js.map + suppress.d.ts + suppress.d.ts.map + suppress.js + suppress.js.map + + +---utils + get-eslint-cli.d.ts + get-eslint-cli.d.ts.map + get-eslint-cli.js + get-eslint-cli.js.map + is-correct-cwd.d.ts + is-correct-cwd.d.ts.map + is-correct-cwd.js + is-correct-cwd.js.map + print-help.d.ts + print-help.d.ts.map + print-help.js + print-help.js.map + wrap-words-to-lines.d.ts + wrap-words-to-lines.d.ts.map + wrap-words-to-lines.js + wrap-words-to-lines.js.map + + +---exports + eslint-bulk.d.ts + eslint-bulk.d.ts.map + eslint-bulk.js + eslint-bulk.js.map + + +---@swc + +---helpers + LICENSE + package.json + + +---cjs + index.cjs + _apply_decorated_descriptor.cjs + _apply_decs_2203_r.cjs + _array_like_to_array.cjs + _array_without_holes.cjs + _array_with_holes.cjs + _assert_this_initialized.cjs + _async_generator.cjs + _async_generator_delegate.cjs + _async_iterator.cjs + _async_to_generator.cjs + _await_async_generator.cjs + _await_value.cjs + _call_super.cjs + _check_private_redeclaration.cjs + _class_apply_descriptor_destructure.cjs + _class_apply_descriptor_get.cjs + _class_apply_descriptor_set.cjs + _class_apply_descriptor_update.cjs + _class_call_check.cjs + _class_check_private_static_access.cjs + _class_check_private_static_field_descriptor.cjs + _class_extract_field_descriptor.cjs + _class_name_tdz_error.cjs + _class_private_field_destructure.cjs + _class_private_field_get.cjs + _class_private_field_init.cjs + _class_private_field_loose_base.cjs + _class_private_field_loose_key.cjs + _class_private_field_set.cjs + _class_private_field_update.cjs + _class_private_method_get.cjs + _class_private_method_init.cjs + _class_private_method_set.cjs + _class_static_private_field_destructure.cjs + _class_static_private_field_spec_get.cjs + _class_static_private_field_spec_set.cjs + _class_static_private_field_update.cjs + _class_static_private_method_get.cjs + _construct.cjs + _create_class.cjs + _create_for_of_iterator_helper_loose.cjs + _create_super.cjs + _decorate.cjs + _defaults.cjs + _define_enumerable_properties.cjs + _define_property.cjs + _dispose.cjs + _export_star.cjs + _extends.cjs + _get.cjs + _get_prototype_of.cjs + _identity.cjs + _inherits.cjs + _inherits_loose.cjs + _initializer_define_property.cjs + _initializer_warning_helper.cjs + _instanceof.cjs + _interop_require_default.cjs + _interop_require_wildcard.cjs + _is_native_function.cjs + _is_native_reflect_construct.cjs + _iterable_to_array.cjs + _iterable_to_array_limit.cjs + _iterable_to_array_limit_loose.cjs + _jsx.cjs + _new_arrow_check.cjs + _non_iterable_rest.cjs + _non_iterable_spread.cjs + _object_destructuring_empty.cjs + _object_spread.cjs + _object_spread_props.cjs + _object_without_properties.cjs + _object_without_properties_loose.cjs + _possible_constructor_return.cjs + _read_only_error.cjs + _set.cjs + _set_prototype_of.cjs + _skip_first_generator_next.cjs + _sliced_to_array.cjs + _sliced_to_array_loose.cjs + _super_prop_base.cjs + _tagged_template_literal.cjs + _tagged_template_literal_loose.cjs + _throw.cjs + _to_array.cjs + _to_consumable_array.cjs + _to_primitive.cjs + _to_property_key.cjs + _ts_add_disposable_resource.cjs + _ts_decorate.cjs + _ts_dispose_resources.cjs + _ts_generator.cjs + _ts_metadata.cjs + _ts_param.cjs + _ts_values.cjs + _type_of.cjs + _unsupported_iterable_to_array.cjs + _update.cjs + _using.cjs + _using_ctx.cjs + _wrap_async_generator.cjs + _wrap_native_super.cjs + _write_only_error.cjs + + +---esm + index.js + _apply_decorated_descriptor.js + _apply_decs_2203_r.js + _array_like_to_array.js + _array_without_holes.js + _array_with_holes.js + _assert_this_initialized.js + _async_generator.js + _async_generator_delegate.js + _async_iterator.js + _async_to_generator.js + _await_async_generator.js + _await_value.js + _call_super.js + _check_private_redeclaration.js + _class_apply_descriptor_destructure.js + _class_apply_descriptor_get.js + _class_apply_descriptor_set.js + _class_apply_descriptor_update.js + _class_call_check.js + _class_check_private_static_access.js + _class_check_private_static_field_descriptor.js + _class_extract_field_descriptor.js + _class_name_tdz_error.js + _class_private_field_destructure.js + _class_private_field_get.js + _class_private_field_init.js + _class_private_field_loose_base.js + _class_private_field_loose_key.js + _class_private_field_set.js + _class_private_field_update.js + _class_private_method_get.js + _class_private_method_init.js + _class_private_method_set.js + _class_static_private_field_destructure.js + _class_static_private_field_spec_get.js + _class_static_private_field_spec_set.js + _class_static_private_field_update.js + _class_static_private_method_get.js + _construct.js + _create_class.js + _create_for_of_iterator_helper_loose.js + _create_super.js + _decorate.js + _defaults.js + _define_enumerable_properties.js + _define_property.js + _dispose.js + _export_star.js + _extends.js + _get.js + _get_prototype_of.js + _identity.js + _inherits.js + _inherits_loose.js + _initializer_define_property.js + _initializer_warning_helper.js + _instanceof.js + _interop_require_default.js + _interop_require_wildcard.js + _is_native_function.js + _is_native_reflect_construct.js + _iterable_to_array.js + _iterable_to_array_limit.js + _iterable_to_array_limit_loose.js + _jsx.js + _new_arrow_check.js + _non_iterable_rest.js + _non_iterable_spread.js + _object_destructuring_empty.js + _object_spread.js + _object_spread_props.js + _object_without_properties.js + _object_without_properties_loose.js + _possible_constructor_return.js + _read_only_error.js + _set.js + _set_prototype_of.js + _skip_first_generator_next.js + _sliced_to_array.js + _sliced_to_array_loose.js + _super_prop_base.js + _tagged_template_literal.js + _tagged_template_literal_loose.js + _throw.js + _to_array.js + _to_consumable_array.js + _to_primitive.js + _to_property_key.js + _ts_add_disposable_resource.js + _ts_decorate.js + _ts_dispose_resources.js + _ts_generator.js + _ts_metadata.js + _ts_param.js + _ts_values.js + _type_of.js + _unsupported_iterable_to_array.js + _update.js + _using.js + _using_ctx.js + _wrap_async_generator.js + _wrap_native_super.js + _write_only_error.js + + +---scripts + ast_grep.js + build.js + errors.js + utils.js + + +---src + index.mjs + _apply_decorated_descriptor.mjs + _apply_decs_2203_r.mjs + _array_like_to_array.mjs + _array_without_holes.mjs + _array_with_holes.mjs + _assert_this_initialized.mjs + _async_generator.mjs + _async_generator_delegate.mjs + _async_iterator.mjs + _async_to_generator.mjs + _await_async_generator.mjs + _await_value.mjs + _call_super.mjs + _check_private_redeclaration.mjs + _class_apply_descriptor_destructure.mjs + _class_apply_descriptor_get.mjs + _class_apply_descriptor_set.mjs + _class_apply_descriptor_update.mjs + _class_call_check.mjs + _class_check_private_static_access.mjs + _class_check_private_static_field_descriptor.mjs + _class_extract_field_descriptor.mjs + _class_name_tdz_error.mjs + _class_private_field_destructure.mjs + _class_private_field_get.mjs + _class_private_field_init.mjs + _class_private_field_loose_base.mjs + _class_private_field_loose_key.mjs + _class_private_field_set.mjs + _class_private_field_update.mjs + _class_private_method_get.mjs + _class_private_method_init.mjs + _class_private_method_set.mjs + _class_static_private_field_destructure.mjs + _class_static_private_field_spec_get.mjs + _class_static_private_field_spec_set.mjs + _class_static_private_field_update.mjs + _class_static_private_method_get.mjs + _construct.mjs + _create_class.mjs + _create_for_of_iterator_helper_loose.mjs + _create_super.mjs + _decorate.mjs + _defaults.mjs + _define_enumerable_properties.mjs + _define_property.mjs + _dispose.mjs + _export_star.mjs + _extends.mjs + _get.mjs + _get_prototype_of.mjs + _identity.mjs + _inherits.mjs + _inherits_loose.mjs + _initializer_define_property.mjs + _initializer_warning_helper.mjs + _instanceof.mjs + _interop_require_default.mjs + _interop_require_wildcard.mjs + _is_native_function.mjs + _is_native_reflect_construct.mjs + _iterable_to_array.mjs + _iterable_to_array_limit.mjs + _iterable_to_array_limit_loose.mjs + _jsx.mjs + _new_arrow_check.mjs + _non_iterable_rest.mjs + _non_iterable_spread.mjs + _object_destructuring_empty.mjs + _object_spread.mjs + _object_spread_props.mjs + _object_without_properties.mjs + _object_without_properties_loose.mjs + _possible_constructor_return.mjs + _read_only_error.mjs + _set.mjs + _set_prototype_of.mjs + _skip_first_generator_next.mjs + _sliced_to_array.mjs + _sliced_to_array_loose.mjs + _super_prop_base.mjs + _tagged_template_literal.mjs + _tagged_template_literal_loose.mjs + _throw.mjs + _to_array.mjs + _to_consumable_array.mjs + _to_primitive.mjs + _to_property_key.mjs + _ts_add_disposable_resource.mjs + _ts_decorate.mjs + _ts_dispose_resources.mjs + _ts_generator.mjs + _ts_metadata.mjs + _ts_param.mjs + _ts_values.mjs + _type_of.mjs + _unsupported_iterable_to_array.mjs + _update.mjs + _using.mjs + _using_ctx.mjs + _wrap_async_generator.mjs + _wrap_native_super.mjs + _write_only_error.mjs + + +---_ + +---index + package.json + + +---_apply_decorated_descriptor + package.json + + +---_apply_decs_2203_r + package.json + + +---_array_like_to_array + package.json + + +---_array_without_holes + package.json + + +---_array_with_holes + package.json + + +---_assert_this_initialized + package.json + + +---_async_generator + package.json + + +---_async_generator_delegate + package.json + + +---_async_iterator + package.json + + +---_async_to_generator + package.json + + +---_await_async_generator + package.json + + +---_await_value + package.json + + +---_call_super + package.json + + +---_check_private_redeclaration + package.json + + +---_class_apply_descriptor_destructure + package.json + + +---_class_apply_descriptor_get + package.json + + +---_class_apply_descriptor_set + package.json + + +---_class_apply_descriptor_update + package.json + + +---_class_call_check + package.json + + +---_class_check_private_static_access + package.json + + +---_class_check_private_static_field_descriptor + package.json + + +---_class_extract_field_descriptor + package.json + + +---_class_name_tdz_error + package.json + + +---_class_private_field_destructure + package.json + + +---_class_private_field_get + package.json + + +---_class_private_field_init + package.json + + +---_class_private_field_loose_base + package.json + + +---_class_private_field_loose_key + package.json + + +---_class_private_field_set + package.json + + +---_class_private_field_update + package.json + + +---_class_private_method_get + package.json + + +---_class_private_method_init + package.json + + +---_class_private_method_set + package.json + + +---_class_static_private_field_destructure + package.json + + +---_class_static_private_field_spec_get + package.json + + +---_class_static_private_field_spec_set + package.json + + +---_class_static_private_field_update + package.json + + +---_class_static_private_method_get + package.json + + +---_construct + package.json + + +---_create_class + package.json + + +---_create_for_of_iterator_helper_loose + package.json + + +---_create_super + package.json + + +---_decorate + package.json + + +---_defaults + package.json + + +---_define_enumerable_properties + package.json + + +---_define_property + package.json + + +---_dispose + package.json + + +---_export_star + package.json + + +---_extends + package.json + + +---_get + package.json + + +---_get_prototype_of + package.json + + +---_identity + package.json + + +---_inherits + package.json + + +---_inherits_loose + package.json + + +---_initializer_define_property + package.json + + +---_initializer_warning_helper + package.json + + +---_instanceof + package.json + + +---_interop_require_default + package.json + + +---_interop_require_wildcard + package.json + + +---_is_native_function + package.json + + +---_is_native_reflect_construct + package.json + + +---_iterable_to_array + package.json + + +---_iterable_to_array_limit + package.json + + +---_iterable_to_array_limit_loose + package.json + + +---_jsx + package.json + + +---_new_arrow_check + package.json + + +---_non_iterable_rest + package.json + + +---_non_iterable_spread + package.json + + +---_object_destructuring_empty + package.json + + +---_object_spread + package.json + + +---_object_spread_props + package.json + + +---_object_without_properties + package.json + + +---_object_without_properties_loose + package.json + + +---_possible_constructor_return + package.json + + +---_read_only_error + package.json + + +---_set + package.json + + +---_set_prototype_of + package.json + + +---_skip_first_generator_next + package.json + + +---_sliced_to_array + package.json + + +---_sliced_to_array_loose + package.json + + +---_super_prop_base + package.json + + +---_tagged_template_literal + package.json + + +---_tagged_template_literal_loose + package.json + + +---_throw + package.json + + +---_to_array + package.json + + +---_to_consumable_array + package.json + + +---_to_primitive + package.json + + +---_to_property_key + package.json + + +---_ts_add_disposable_resource + package.json + + +---_ts_decorate + package.json + + +---_ts_dispose_resources + package.json + + +---_ts_generator + package.json + + +---_ts_metadata + package.json + + +---_ts_param + package.json + + +---_ts_values + package.json + + +---_type_of + package.json + + +---_unsupported_iterable_to_array + package.json + + +---_update + package.json + + +---_using + package.json + + +---_using_ctx + package.json + + +---_wrap_async_generator + package.json + + +---_wrap_native_super + package.json + + +---_write_only_error + package.json + + +---@tailwindcss + +---node + LICENSE + package.json + README.md + + +---dist + esm-cache.loader.d.mts + esm-cache.loader.mjs + index.d.mts + index.d.ts + index.js + index.mjs + require-cache.d.ts + require-cache.js + + +---oxide + index.d.ts + index.js + LICENSE + package.json + + +---scripts + install.js + + +---oxide-win32-x64-msvc + LICENSE + package.json + README.md + tailwindcss-oxide.win32-x64-msvc.node + + +---postcss + LICENSE + package.json + README.md + + +---dist + index.d.mts + index.d.ts + index.js + index.mjs + + +---@tybys + +---wasm-util + package.json + README.md + + +---dist + tsdoc-metadata.json + wasm-util.d.ts + wasm-util.esm-bundler.js + wasm-util.esm.js + wasm-util.esm.min.js + wasm-util.js + wasm-util.min.js + + +---lib + +---cjs + asyncify.js + index.js + jspi.js + load.js + memory.js + webassembly.js + + +---wasi + error.js + fd.js + fs.js + index.js + path.js + preview1.js + rights.js + types.js + util.js + + +---mjs + asyncify.mjs + index.mjs + jspi.mjs + load.mjs + memory.mjs + webassembly.mjs + + +---wasi + error.mjs + fd.mjs + fs.mjs + index.mjs + path.mjs + preview1.mjs + rights.mjs + types.mjs + util.mjs + + +---@types + +---axios + index.d.ts + package.json + README.md + types-metadata.json + + +---estree + flow.d.ts + index.d.ts + LICENSE + package.json + README.md + + +---js-cookie + index.d.mts + index.d.ts + LICENSE + package.json + README.md + + +---json-schema + index.d.ts + LICENSE + package.json + README.md + + +---json5 + index.d.ts + package.json + README.md + types-metadata.json + + +---node + assert.d.ts + async_hooks.d.ts + buffer.buffer.d.ts + buffer.d.ts + child_process.d.ts + cluster.d.ts + console.d.ts + constants.d.ts + crypto.d.ts + dgram.d.ts + diagnostics_channel.d.ts + dns.d.ts + dom-events.d.ts + domain.d.ts + events.d.ts + fs.d.ts + globals.d.ts + globals.typedarray.d.ts + http.d.ts + http2.d.ts + https.d.ts + index.d.ts + inspector.d.ts + LICENSE + module.d.ts + net.d.ts + os.d.ts + package.json + path.d.ts + perf_hooks.d.ts + process.d.ts + punycode.d.ts + querystring.d.ts + readline.d.ts + README.md + repl.d.ts + sea.d.ts + stream.d.ts + string_decoder.d.ts + test.d.ts + timers.d.ts + tls.d.ts + trace_events.d.ts + tty.d.ts + url.d.ts + util.d.ts + v8.d.ts + vm.d.ts + wasi.d.ts + worker_threads.d.ts + zlib.d.ts + + +---assert + strict.d.ts + + +---compatibility + disposable.d.ts + index.d.ts + indexable.d.ts + iterators.d.ts + + +---dns + promises.d.ts + + +---fs + promises.d.ts + + +---readline + promises.d.ts + + +---stream + consumers.d.ts + promises.d.ts + web.d.ts + + +---timers + promises.d.ts + + +---ts5.6 + buffer.buffer.d.ts + globals.typedarray.d.ts + index.d.ts + + +---react + canary.d.ts + compiler-runtime.d.ts + experimental.d.ts + global.d.ts + index.d.ts + jsx-dev-runtime.d.ts + jsx-runtime.d.ts + LICENSE + package.json + README.md + + +---ts5.0 + canary.d.ts + experimental.d.ts + global.d.ts + index.d.ts + jsx-dev-runtime.d.ts + jsx-runtime.d.ts + + +---v18 + global.d.ts + index.d.ts + jsx-dev-runtime.d.ts + jsx-runtime.d.ts + + +---ts5.0 + global.d.ts + index.d.ts + jsx-dev-runtime.d.ts + jsx-runtime.d.ts + + +---react-dom + canary.d.ts + client.d.ts + experimental.d.ts + index.d.ts + LICENSE + package.json + README.md + server.browser.d.ts + server.bun.d.ts + server.d.ts + server.edge.d.ts + server.node.d.ts + static.browser.d.ts + static.d.ts + static.edge.d.ts + static.node.d.ts + + +---test-utils + index.d.ts + + +---@typescript-eslint + +---eslint-plugin + index.d.ts + LICENSE + package.json + raw-plugin.d.ts + README.md + rules.d.ts + + +---dist + index.d.ts + index.d.ts.map + index.js + raw-plugin.d.ts + raw-plugin.d.ts.map + raw-plugin.js + + +---configs + eslint-recommended-raw.d.ts + eslint-recommended-raw.d.ts.map + eslint-recommended-raw.js + + +---eslintrc + all.d.ts + all.d.ts.map + all.js + base.d.ts + base.d.ts.map + base.js + disable-type-checked.d.ts + disable-type-checked.d.ts.map + disable-type-checked.js + eslint-recommended.d.ts + eslint-recommended.d.ts.map + eslint-recommended.js + recommended-type-checked-only.d.ts + recommended-type-checked-only.d.ts.map + recommended-type-checked-only.js + recommended-type-checked.d.ts + recommended-type-checked.d.ts.map + recommended-type-checked.js + recommended.d.ts + recommended.d.ts.map + recommended.js + strict-type-checked-only.d.ts + strict-type-checked-only.d.ts.map + strict-type-checked-only.js + strict-type-checked.d.ts + strict-type-checked.d.ts.map + strict-type-checked.js + strict.d.ts + strict.d.ts.map + strict.js + stylistic-type-checked-only.d.ts + stylistic-type-checked-only.d.ts.map + stylistic-type-checked-only.js + stylistic-type-checked.d.ts + stylistic-type-checked.d.ts.map + stylistic-type-checked.js + stylistic.d.ts + stylistic.d.ts.map + stylistic.js + + +---flat + all.d.ts + all.d.ts.map + all.js + base.d.ts + base.d.ts.map + base.js + disable-type-checked.d.ts + disable-type-checked.d.ts.map + disable-type-checked.js + eslint-recommended.d.ts + eslint-recommended.d.ts.map + eslint-recommended.js + recommended-type-checked-only.d.ts + recommended-type-checked-only.d.ts.map + recommended-type-checked-only.js + recommended-type-checked.d.ts + recommended-type-checked.d.ts.map + recommended-type-checked.js + recommended.d.ts + recommended.d.ts.map + recommended.js + strict-type-checked-only.d.ts + strict-type-checked-only.d.ts.map + strict-type-checked-only.js + strict-type-checked.d.ts + strict-type-checked.d.ts.map + strict-type-checked.js + strict.d.ts + strict.d.ts.map + strict.js + stylistic-type-checked-only.d.ts + stylistic-type-checked-only.d.ts.map + stylistic-type-checked-only.js + stylistic-type-checked.d.ts + stylistic-type-checked.d.ts.map + stylistic-type-checked.js + stylistic.d.ts + stylistic.d.ts.map + stylistic.js + + +---rules + adjacent-overload-signatures.d.ts + adjacent-overload-signatures.d.ts.map + adjacent-overload-signatures.js + array-type.d.ts + array-type.d.ts.map + array-type.js + await-thenable.d.ts + await-thenable.d.ts.map + await-thenable.js + ban-ts-comment.d.ts + ban-ts-comment.d.ts.map + ban-ts-comment.js + ban-tslint-comment.d.ts + ban-tslint-comment.d.ts.map + ban-tslint-comment.js + class-literal-property-style.d.ts + class-literal-property-style.d.ts.map + class-literal-property-style.js + class-methods-use-this.d.ts + class-methods-use-this.d.ts.map + class-methods-use-this.js + consistent-generic-constructors.d.ts + consistent-generic-constructors.d.ts.map + consistent-generic-constructors.js + consistent-indexed-object-style.d.ts + consistent-indexed-object-style.d.ts.map + consistent-indexed-object-style.js + consistent-return.d.ts + consistent-return.d.ts.map + consistent-return.js + consistent-type-assertions.d.ts + consistent-type-assertions.d.ts.map + consistent-type-assertions.js + consistent-type-definitions.d.ts + consistent-type-definitions.d.ts.map + consistent-type-definitions.js + consistent-type-exports.d.ts + consistent-type-exports.d.ts.map + consistent-type-exports.js + consistent-type-imports.d.ts + consistent-type-imports.d.ts.map + consistent-type-imports.js + default-param-last.d.ts + default-param-last.d.ts.map + default-param-last.js + dot-notation.d.ts + dot-notation.d.ts.map + dot-notation.js + explicit-function-return-type.d.ts + explicit-function-return-type.d.ts.map + explicit-function-return-type.js + explicit-member-accessibility.d.ts + explicit-member-accessibility.d.ts.map + explicit-member-accessibility.js + explicit-module-boundary-types.d.ts + explicit-module-boundary-types.d.ts.map + explicit-module-boundary-types.js + index.d.ts + index.d.ts.map + index.js + init-declarations.d.ts + init-declarations.d.ts.map + init-declarations.js + max-params.d.ts + max-params.d.ts.map + max-params.js + member-ordering.d.ts + member-ordering.d.ts.map + member-ordering.js + method-signature-style.d.ts + method-signature-style.d.ts.map + method-signature-style.js + naming-convention.d.ts + naming-convention.d.ts.map + naming-convention.js + no-array-constructor.d.ts + no-array-constructor.d.ts.map + no-array-constructor.js + no-array-delete.d.ts + no-array-delete.d.ts.map + no-array-delete.js + no-base-to-string.d.ts + no-base-to-string.d.ts.map + no-base-to-string.js + no-confusing-non-null-assertion.d.ts + no-confusing-non-null-assertion.d.ts.map + no-confusing-non-null-assertion.js + no-confusing-void-expression.d.ts + no-confusing-void-expression.d.ts.map + no-confusing-void-expression.js + no-deprecated.d.ts + no-deprecated.d.ts.map + no-deprecated.js + no-dupe-class-members.d.ts + no-dupe-class-members.d.ts.map + no-dupe-class-members.js + no-duplicate-enum-values.d.ts + no-duplicate-enum-values.d.ts.map + no-duplicate-enum-values.js + no-duplicate-type-constituents.d.ts + no-duplicate-type-constituents.d.ts.map + no-duplicate-type-constituents.js + no-dynamic-delete.d.ts + no-dynamic-delete.d.ts.map + no-dynamic-delete.js + no-empty-function.d.ts + no-empty-function.d.ts.map + no-empty-function.js + no-empty-interface.d.ts + no-empty-interface.d.ts.map + no-empty-interface.js + no-empty-object-type.d.ts + no-empty-object-type.d.ts.map + no-empty-object-type.js + no-explicit-any.d.ts + no-explicit-any.d.ts.map + no-explicit-any.js + no-extra-non-null-assertion.d.ts + no-extra-non-null-assertion.d.ts.map + no-extra-non-null-assertion.js + no-extraneous-class.d.ts + no-extraneous-class.d.ts.map + no-extraneous-class.js + no-floating-promises.d.ts + no-floating-promises.d.ts.map + no-floating-promises.js + no-for-in-array.d.ts + no-for-in-array.d.ts.map + no-for-in-array.js + no-implied-eval.d.ts + no-implied-eval.d.ts.map + no-implied-eval.js + no-import-type-side-effects.d.ts + no-import-type-side-effects.d.ts.map + no-import-type-side-effects.js + no-inferrable-types.d.ts + no-inferrable-types.d.ts.map + no-inferrable-types.js + no-invalid-this.d.ts + no-invalid-this.d.ts.map + no-invalid-this.js + no-invalid-void-type.d.ts + no-invalid-void-type.d.ts.map + no-invalid-void-type.js + no-loop-func.d.ts + no-loop-func.d.ts.map + no-loop-func.js + no-loss-of-precision.d.ts + no-loss-of-precision.d.ts.map + no-loss-of-precision.js + no-magic-numbers.d.ts + no-magic-numbers.d.ts.map + no-magic-numbers.js + no-meaningless-void-operator.d.ts + no-meaningless-void-operator.d.ts.map + no-meaningless-void-operator.js + no-misused-new.d.ts + no-misused-new.d.ts.map + no-misused-new.js + no-misused-promises.d.ts + no-misused-promises.d.ts.map + no-misused-promises.js + no-misused-spread.d.ts + no-misused-spread.d.ts.map + no-misused-spread.js + no-mixed-enums.d.ts + no-mixed-enums.d.ts.map + no-mixed-enums.js + no-namespace.d.ts + no-namespace.d.ts.map + no-namespace.js + no-non-null-asserted-nullish-coalescing.d.ts + no-non-null-asserted-nullish-coalescing.d.ts.map + no-non-null-asserted-nullish-coalescing.js + no-non-null-asserted-optional-chain.d.ts + no-non-null-asserted-optional-chain.d.ts.map + no-non-null-asserted-optional-chain.js + no-non-null-assertion.d.ts + no-non-null-assertion.d.ts.map + no-non-null-assertion.js + no-redeclare.d.ts + no-redeclare.d.ts.map + no-redeclare.js + no-redundant-type-constituents.d.ts + no-redundant-type-constituents.d.ts.map + no-redundant-type-constituents.js + no-require-imports.d.ts + no-require-imports.d.ts.map + no-require-imports.js + no-restricted-imports.d.ts + no-restricted-imports.d.ts.map + no-restricted-imports.js + no-restricted-types.d.ts + no-restricted-types.d.ts.map + no-restricted-types.js + no-shadow.d.ts + no-shadow.d.ts.map + no-shadow.js + no-this-alias.d.ts + no-this-alias.d.ts.map + no-this-alias.js + no-type-alias.d.ts + no-type-alias.d.ts.map + no-type-alias.js + no-unnecessary-boolean-literal-compare.d.ts + no-unnecessary-boolean-literal-compare.d.ts.map + no-unnecessary-boolean-literal-compare.js + no-unnecessary-condition.d.ts + no-unnecessary-condition.d.ts.map + no-unnecessary-condition.js + no-unnecessary-parameter-property-assignment.d.ts + no-unnecessary-parameter-property-assignment.d.ts.map + no-unnecessary-parameter-property-assignment.js + no-unnecessary-qualifier.d.ts + no-unnecessary-qualifier.d.ts.map + no-unnecessary-qualifier.js + no-unnecessary-template-expression.d.ts + no-unnecessary-template-expression.d.ts.map + no-unnecessary-template-expression.js + no-unnecessary-type-arguments.d.ts + no-unnecessary-type-arguments.d.ts.map + no-unnecessary-type-arguments.js + no-unnecessary-type-assertion.d.ts + no-unnecessary-type-assertion.d.ts.map + no-unnecessary-type-assertion.js + no-unnecessary-type-constraint.d.ts + no-unnecessary-type-constraint.d.ts.map + no-unnecessary-type-constraint.js + no-unnecessary-type-conversion.d.ts + no-unnecessary-type-conversion.d.ts.map + no-unnecessary-type-conversion.js + no-unnecessary-type-parameters.d.ts + no-unnecessary-type-parameters.d.ts.map + no-unnecessary-type-parameters.js + no-unsafe-argument.d.ts + no-unsafe-argument.d.ts.map + no-unsafe-argument.js + no-unsafe-assignment.d.ts + no-unsafe-assignment.d.ts.map + no-unsafe-assignment.js + no-unsafe-call.d.ts + no-unsafe-call.d.ts.map + no-unsafe-call.js + no-unsafe-declaration-merging.d.ts + no-unsafe-declaration-merging.d.ts.map + no-unsafe-declaration-merging.js + no-unsafe-enum-comparison.d.ts + no-unsafe-enum-comparison.d.ts.map + no-unsafe-enum-comparison.js + no-unsafe-function-type.d.ts + no-unsafe-function-type.d.ts.map + no-unsafe-function-type.js + no-unsafe-member-access.d.ts + no-unsafe-member-access.d.ts.map + no-unsafe-member-access.js + no-unsafe-return.d.ts + no-unsafe-return.d.ts.map + no-unsafe-return.js + no-unsafe-type-assertion.d.ts + no-unsafe-type-assertion.d.ts.map + no-unsafe-type-assertion.js + no-unsafe-unary-minus.d.ts + no-unsafe-unary-minus.d.ts.map + no-unsafe-unary-minus.js + no-unused-expressions.d.ts + no-unused-expressions.d.ts.map + no-unused-expressions.js + no-unused-vars.d.ts + no-unused-vars.d.ts.map + no-unused-vars.js + no-use-before-define.d.ts + no-use-before-define.d.ts.map + no-use-before-define.js + no-useless-constructor.d.ts + no-useless-constructor.d.ts.map + no-useless-constructor.js + no-useless-empty-export.d.ts + no-useless-empty-export.d.ts.map + no-useless-empty-export.js + no-var-requires.d.ts + no-var-requires.d.ts.map + no-var-requires.js + no-wrapper-object-types.d.ts + no-wrapper-object-types.d.ts.map + no-wrapper-object-types.js + non-nullable-type-assertion-style.d.ts + non-nullable-type-assertion-style.d.ts.map + non-nullable-type-assertion-style.js + only-throw-error.d.ts + only-throw-error.d.ts.map + only-throw-error.js + parameter-properties.d.ts + parameter-properties.d.ts.map + parameter-properties.js + prefer-as-const.d.ts + prefer-as-const.d.ts.map + prefer-as-const.js + prefer-destructuring.d.ts + prefer-destructuring.d.ts.map + prefer-destructuring.js + prefer-enum-initializers.d.ts + prefer-enum-initializers.d.ts.map + prefer-enum-initializers.js + prefer-find.d.ts + prefer-find.d.ts.map + prefer-find.js + prefer-for-of.d.ts + prefer-for-of.d.ts.map + prefer-for-of.js + prefer-function-type.d.ts + prefer-function-type.d.ts.map + prefer-function-type.js + prefer-includes.d.ts + prefer-includes.d.ts.map + prefer-includes.js + prefer-literal-enum-member.d.ts + prefer-literal-enum-member.d.ts.map + prefer-literal-enum-member.js + prefer-namespace-keyword.d.ts + prefer-namespace-keyword.d.ts.map + prefer-namespace-keyword.js + prefer-nullish-coalescing.d.ts + prefer-nullish-coalescing.d.ts.map + prefer-nullish-coalescing.js + prefer-optional-chain.d.ts + prefer-optional-chain.d.ts.map + prefer-optional-chain.js + prefer-promise-reject-errors.d.ts + prefer-promise-reject-errors.d.ts.map + prefer-promise-reject-errors.js + prefer-readonly-parameter-types.d.ts + prefer-readonly-parameter-types.d.ts.map + prefer-readonly-parameter-types.js + prefer-readonly.d.ts + prefer-readonly.d.ts.map + prefer-readonly.js + prefer-reduce-type-parameter.d.ts + prefer-reduce-type-parameter.d.ts.map + prefer-reduce-type-parameter.js + prefer-regexp-exec.d.ts + prefer-regexp-exec.d.ts.map + prefer-regexp-exec.js + prefer-return-this-type.d.ts + prefer-return-this-type.d.ts.map + prefer-return-this-type.js + prefer-string-starts-ends-with.d.ts + prefer-string-starts-ends-with.d.ts.map + prefer-string-starts-ends-with.js + prefer-ts-expect-error.d.ts + prefer-ts-expect-error.d.ts.map + prefer-ts-expect-error.js + promise-function-async.d.ts + promise-function-async.d.ts.map + promise-function-async.js + related-getter-setter-pairs.d.ts + related-getter-setter-pairs.d.ts.map + related-getter-setter-pairs.js + require-array-sort-compare.d.ts + require-array-sort-compare.d.ts.map + require-array-sort-compare.js + require-await.d.ts + require-await.d.ts.map + require-await.js + restrict-plus-operands.d.ts + restrict-plus-operands.d.ts.map + restrict-plus-operands.js + restrict-template-expressions.d.ts + restrict-template-expressions.d.ts.map + restrict-template-expressions.js + return-await.d.ts + return-await.d.ts.map + return-await.js + sort-type-constituents.d.ts + sort-type-constituents.d.ts.map + sort-type-constituents.js + strict-boolean-expressions.d.ts + strict-boolean-expressions.d.ts.map + strict-boolean-expressions.js + switch-exhaustiveness-check.d.ts + switch-exhaustiveness-check.d.ts.map + switch-exhaustiveness-check.js + triple-slash-reference.d.ts + triple-slash-reference.d.ts.map + triple-slash-reference.js + typedef.d.ts + typedef.d.ts.map + typedef.js + unbound-method.d.ts + unbound-method.d.ts.map + unbound-method.js + unified-signatures.d.ts + unified-signatures.d.ts.map + unified-signatures.js + use-unknown-in-catch-callback-variable.d.ts + use-unknown-in-catch-callback-variable.d.ts.map + use-unknown-in-catch-callback-variable.js + + +---enum-utils + shared.d.ts + shared.d.ts.map + shared.js + + +---naming-convention-utils + enums.d.ts + enums.d.ts.map + enums.js + format.d.ts + format.d.ts.map + format.js + index.d.ts + index.d.ts.map + index.js + parse-options.d.ts + parse-options.d.ts.map + parse-options.js + schema.d.ts + schema.d.ts.map + schema.js + shared.d.ts + shared.d.ts.map + shared.js + types.d.ts + types.d.ts.map + types.js + validator.d.ts + validator.d.ts.map + validator.js + + +---prefer-optional-chain-utils + analyzeChain.d.ts + analyzeChain.d.ts.map + analyzeChain.js + checkNullishAndReport.d.ts + checkNullishAndReport.d.ts.map + checkNullishAndReport.js + compareNodes.d.ts + compareNodes.d.ts.map + compareNodes.js + gatherLogicalOperands.d.ts + gatherLogicalOperands.d.ts.map + gatherLogicalOperands.js + PreferOptionalChainOptions.d.ts + PreferOptionalChainOptions.d.ts.map + PreferOptionalChainOptions.js + + +---util + assertionFunctionUtils.d.ts + assertionFunctionUtils.d.ts.map + assertionFunctionUtils.js + astUtils.d.ts + astUtils.d.ts.map + astUtils.js + collectUnusedVariables.d.ts + collectUnusedVariables.d.ts.map + collectUnusedVariables.js + createRule.d.ts + createRule.d.ts.map + createRule.js + escapeRegExp.d.ts + escapeRegExp.d.ts.map + escapeRegExp.js + explicitReturnTypeUtils.d.ts + explicitReturnTypeUtils.d.ts.map + explicitReturnTypeUtils.js + getConstraintInfo.d.ts + getConstraintInfo.d.ts.map + getConstraintInfo.js + getESLintCoreRule.d.ts + getESLintCoreRule.d.ts.map + getESLintCoreRule.js + getFixOrSuggest.d.ts + getFixOrSuggest.d.ts.map + getFixOrSuggest.js + getForStatementHeadLoc.d.ts + getForStatementHeadLoc.d.ts.map + getForStatementHeadLoc.js + getFunctionHeadLoc.d.ts + getFunctionHeadLoc.d.ts.map + getFunctionHeadLoc.js + getMemberHeadLoc.d.ts + getMemberHeadLoc.d.ts.map + getMemberHeadLoc.js + getOperatorPrecedence.d.ts + getOperatorPrecedence.d.ts.map + getOperatorPrecedence.js + getParentFunctionNode.d.ts + getParentFunctionNode.d.ts.map + getParentFunctionNode.js + getStaticStringValue.d.ts + getStaticStringValue.d.ts.map + getStaticStringValue.js + getStringLength.d.ts + getStringLength.d.ts.map + getStringLength.js + getTextWithParentheses.d.ts + getTextWithParentheses.d.ts.map + getTextWithParentheses.js + getThisExpression.d.ts + getThisExpression.d.ts.map + getThisExpression.js + getValueOfLiteralType.d.ts + getValueOfLiteralType.d.ts.map + getValueOfLiteralType.js + getWrappedCode.d.ts + getWrappedCode.d.ts.map + getWrappedCode.js + getWrappingFixer.d.ts + getWrappingFixer.d.ts.map + getWrappingFixer.js + hasOverloadSignatures.d.ts + hasOverloadSignatures.d.ts.map + hasOverloadSignatures.js + index.d.ts + index.d.ts.map + index.js + isArrayMethodCallWithPredicate.d.ts + isArrayMethodCallWithPredicate.d.ts.map + isArrayMethodCallWithPredicate.js + isAssignee.d.ts + isAssignee.d.ts.map + isAssignee.js + isHigherPrecedenceThanAwait.d.ts + isHigherPrecedenceThanAwait.d.ts.map + isHigherPrecedenceThanAwait.js + isNodeEqual.d.ts + isNodeEqual.d.ts.map + isNodeEqual.js + isNullLiteral.d.ts + isNullLiteral.d.ts.map + isNullLiteral.js + isStartOfExpressionStatement.d.ts + isStartOfExpressionStatement.d.ts.map + isStartOfExpressionStatement.js + isTypeImport.d.ts + isTypeImport.d.ts.map + isTypeImport.js + isUndefinedIdentifier.d.ts + isUndefinedIdentifier.d.ts.map + isUndefinedIdentifier.js + misc.d.ts + misc.d.ts.map + misc.js + needsPrecedingSemiColon.d.ts + needsPrecedingSemiColon.d.ts.map + needsPrecedingSemiColon.js + needsToBeAwaited.d.ts + needsToBeAwaited.d.ts.map + needsToBeAwaited.js + objectIterators.d.ts + objectIterators.d.ts.map + objectIterators.js + promiseUtils.d.ts + promiseUtils.d.ts.map + promiseUtils.js + rangeToLoc.d.ts + rangeToLoc.d.ts.map + rangeToLoc.js + referenceContainsTypeQuery.d.ts + referenceContainsTypeQuery.d.ts.map + referenceContainsTypeQuery.js + scopeUtils.d.ts + scopeUtils.d.ts.map + scopeUtils.js + skipChainExpression.d.ts + skipChainExpression.d.ts.map + skipChainExpression.js + truthinessUtils.d.ts + truthinessUtils.d.ts.map + truthinessUtils.js + types.d.ts + types.d.ts.map + types.js + + +---node_modules + +---ignore + index.d.ts + index.js + legacy.js + LICENSE-MIT + package.json + README.md + + +---parser + LICENSE + package.json + README.md + + +---dist + index.d.ts + index.d.ts.map + index.js + parser.d.ts + parser.d.ts.map + parser.js + + +---project-service + LICENSE + package.json + README.md + + +---dist + createProjectService.d.ts + createProjectService.d.ts.map + createProjectService.js + getParsedConfigFileFromTSServer.d.ts + getParsedConfigFileFromTSServer.d.ts.map + getParsedConfigFileFromTSServer.js + index.d.ts + index.d.ts.map + index.js + + +---scope-manager + LICENSE + package.json + README.md + + +---dist + analyze.d.ts + analyze.d.ts.map + analyze.js + assert.d.ts + assert.d.ts.map + assert.js + ID.d.ts + ID.d.ts.map + ID.js + index.d.ts + index.d.ts.map + index.js + ScopeManager.d.ts + ScopeManager.d.ts.map + ScopeManager.js + + +---definition + CatchClauseDefinition.d.ts + CatchClauseDefinition.d.ts.map + CatchClauseDefinition.js + ClassNameDefinition.d.ts + ClassNameDefinition.d.ts.map + ClassNameDefinition.js + Definition.d.ts + Definition.d.ts.map + Definition.js + DefinitionBase.d.ts + DefinitionBase.d.ts.map + DefinitionBase.js + DefinitionType.d.ts + DefinitionType.d.ts.map + DefinitionType.js + FunctionNameDefinition.d.ts + FunctionNameDefinition.d.ts.map + FunctionNameDefinition.js + ImplicitGlobalVariableDefinition.d.ts + ImplicitGlobalVariableDefinition.d.ts.map + ImplicitGlobalVariableDefinition.js + ImportBindingDefinition.d.ts + ImportBindingDefinition.d.ts.map + ImportBindingDefinition.js + index.d.ts + index.d.ts.map + index.js + ParameterDefinition.d.ts + ParameterDefinition.d.ts.map + ParameterDefinition.js + TSEnumMemberDefinition.d.ts + TSEnumMemberDefinition.d.ts.map + TSEnumMemberDefinition.js + TSEnumNameDefinition.d.ts + TSEnumNameDefinition.d.ts.map + TSEnumNameDefinition.js + TSModuleNameDefinition.d.ts + TSModuleNameDefinition.d.ts.map + TSModuleNameDefinition.js + TypeDefinition.d.ts + TypeDefinition.d.ts.map + TypeDefinition.js + VariableDefinition.d.ts + VariableDefinition.d.ts.map + VariableDefinition.js + + +---lib + base-config.d.ts + base-config.d.ts.map + base-config.js + decorators.d.ts + decorators.d.ts.map + decorators.js + decorators.legacy.d.ts + decorators.legacy.d.ts.map + decorators.legacy.js + dom.asynciterable.d.ts + dom.asynciterable.d.ts.map + dom.asynciterable.js + dom.d.ts + dom.d.ts.map + dom.iterable.d.ts + dom.iterable.d.ts.map + dom.iterable.js + dom.js + es2015.collection.d.ts + es2015.collection.d.ts.map + es2015.collection.js + es2015.core.d.ts + es2015.core.d.ts.map + es2015.core.js + es2015.d.ts + es2015.d.ts.map + es2015.generator.d.ts + es2015.generator.d.ts.map + es2015.generator.js + es2015.iterable.d.ts + es2015.iterable.d.ts.map + es2015.iterable.js + es2015.js + es2015.promise.d.ts + es2015.promise.d.ts.map + es2015.promise.js + es2015.proxy.d.ts + es2015.proxy.d.ts.map + es2015.proxy.js + es2015.reflect.d.ts + es2015.reflect.d.ts.map + es2015.reflect.js + es2015.symbol.d.ts + es2015.symbol.d.ts.map + es2015.symbol.js + es2015.symbol.wellknown.d.ts + es2015.symbol.wellknown.d.ts.map + es2015.symbol.wellknown.js + es2016.array.include.d.ts + es2016.array.include.d.ts.map + es2016.array.include.js + es2016.d.ts + es2016.d.ts.map + es2016.full.d.ts + es2016.full.d.ts.map + es2016.full.js + es2016.intl.d.ts + es2016.intl.d.ts.map + es2016.intl.js + es2016.js + es2017.arraybuffer.d.ts + es2017.arraybuffer.d.ts.map + es2017.arraybuffer.js + es2017.d.ts + es2017.d.ts.map + es2017.date.d.ts + es2017.date.d.ts.map + es2017.date.js + es2017.full.d.ts + es2017.full.d.ts.map + es2017.full.js + es2017.intl.d.ts + es2017.intl.d.ts.map + es2017.intl.js + es2017.js + es2017.object.d.ts + es2017.object.d.ts.map + es2017.object.js + es2017.sharedmemory.d.ts + es2017.sharedmemory.d.ts.map + es2017.sharedmemory.js + es2017.string.d.ts + es2017.string.d.ts.map + es2017.string.js + es2017.typedarrays.d.ts + es2017.typedarrays.d.ts.map + es2017.typedarrays.js + es2018.asyncgenerator.d.ts + es2018.asyncgenerator.d.ts.map + es2018.asyncgenerator.js + es2018.asynciterable.d.ts + es2018.asynciterable.d.ts.map + es2018.asynciterable.js + es2018.d.ts + es2018.d.ts.map + es2018.full.d.ts + es2018.full.d.ts.map + es2018.full.js + es2018.intl.d.ts + es2018.intl.d.ts.map + es2018.intl.js + es2018.js + es2018.promise.d.ts + es2018.promise.d.ts.map + es2018.promise.js + es2018.regexp.d.ts + es2018.regexp.d.ts.map + es2018.regexp.js + es2019.array.d.ts + es2019.array.d.ts.map + es2019.array.js + es2019.d.ts + es2019.d.ts.map + es2019.full.d.ts + es2019.full.d.ts.map + es2019.full.js + es2019.intl.d.ts + es2019.intl.d.ts.map + es2019.intl.js + es2019.js + es2019.object.d.ts + es2019.object.d.ts.map + es2019.object.js + es2019.string.d.ts + es2019.string.d.ts.map + es2019.string.js + es2019.symbol.d.ts + es2019.symbol.d.ts.map + es2019.symbol.js + es2020.bigint.d.ts + es2020.bigint.d.ts.map + es2020.bigint.js + es2020.d.ts + es2020.d.ts.map + es2020.date.d.ts + es2020.date.d.ts.map + es2020.date.js + es2020.full.d.ts + es2020.full.d.ts.map + es2020.full.js + es2020.intl.d.ts + es2020.intl.d.ts.map + es2020.intl.js + es2020.js + es2020.number.d.ts + es2020.number.d.ts.map + es2020.number.js + es2020.promise.d.ts + es2020.promise.d.ts.map + es2020.promise.js + es2020.sharedmemory.d.ts + es2020.sharedmemory.d.ts.map + es2020.sharedmemory.js + es2020.string.d.ts + es2020.string.d.ts.map + es2020.string.js + es2020.symbol.wellknown.d.ts + es2020.symbol.wellknown.d.ts.map + es2020.symbol.wellknown.js + es2021.d.ts + es2021.d.ts.map + es2021.full.d.ts + es2021.full.d.ts.map + es2021.full.js + es2021.intl.d.ts + es2021.intl.d.ts.map + es2021.intl.js + es2021.js + es2021.promise.d.ts + es2021.promise.d.ts.map + es2021.promise.js + es2021.string.d.ts + es2021.string.d.ts.map + es2021.string.js + es2021.weakref.d.ts + es2021.weakref.d.ts.map + es2021.weakref.js + es2022.array.d.ts + es2022.array.d.ts.map + es2022.array.js + es2022.d.ts + es2022.d.ts.map + es2022.error.d.ts + es2022.error.d.ts.map + es2022.error.js + es2022.full.d.ts + es2022.full.d.ts.map + es2022.full.js + es2022.intl.d.ts + es2022.intl.d.ts.map + es2022.intl.js + es2022.js + es2022.object.d.ts + es2022.object.d.ts.map + es2022.object.js + es2022.regexp.d.ts + es2022.regexp.d.ts.map + es2022.regexp.js + es2022.string.d.ts + es2022.string.d.ts.map + es2022.string.js + es2023.array.d.ts + es2023.array.d.ts.map + es2023.array.js + es2023.collection.d.ts + es2023.collection.d.ts.map + es2023.collection.js + es2023.d.ts + es2023.d.ts.map + es2023.full.d.ts + es2023.full.d.ts.map + es2023.full.js + es2023.intl.d.ts + es2023.intl.d.ts.map + es2023.intl.js + es2023.js + es2024.arraybuffer.d.ts + es2024.arraybuffer.d.ts.map + es2024.arraybuffer.js + es2024.collection.d.ts + es2024.collection.d.ts.map + es2024.collection.js + es2024.d.ts + es2024.d.ts.map + es2024.full.d.ts + es2024.full.d.ts.map + es2024.full.js + es2024.js + es2024.object.d.ts + es2024.object.d.ts.map + es2024.object.js + es2024.promise.d.ts + es2024.promise.d.ts.map + es2024.promise.js + es2024.regexp.d.ts + es2024.regexp.d.ts.map + es2024.regexp.js + es2024.sharedmemory.d.ts + es2024.sharedmemory.d.ts.map + es2024.sharedmemory.js + es2024.string.d.ts + es2024.string.d.ts.map + es2024.string.js + es5.d.ts + es5.d.ts.map + es5.js + es6.d.ts + es6.d.ts.map + es6.js + es7.d.ts + es7.d.ts.map + es7.js + esnext.array.d.ts + esnext.array.d.ts.map + esnext.array.js + esnext.asynciterable.d.ts + esnext.asynciterable.d.ts.map + esnext.asynciterable.js + esnext.bigint.d.ts + esnext.bigint.d.ts.map + esnext.bigint.js + esnext.collection.d.ts + esnext.collection.d.ts.map + esnext.collection.js + esnext.d.ts + esnext.d.ts.map + esnext.decorators.d.ts + esnext.decorators.d.ts.map + esnext.decorators.js + esnext.disposable.d.ts + esnext.disposable.d.ts.map + esnext.disposable.js + esnext.error.d.ts + esnext.error.d.ts.map + esnext.error.js + esnext.float16.d.ts + esnext.float16.d.ts.map + esnext.float16.js + esnext.full.d.ts + esnext.full.d.ts.map + esnext.full.js + esnext.intl.d.ts + esnext.intl.d.ts.map + esnext.intl.js + esnext.iterator.d.ts + esnext.iterator.d.ts.map + esnext.iterator.js + esnext.js + esnext.object.d.ts + esnext.object.d.ts.map + esnext.object.js + esnext.promise.d.ts + esnext.promise.d.ts.map + esnext.promise.js + esnext.regexp.d.ts + esnext.regexp.d.ts.map + esnext.regexp.js + esnext.sharedmemory.d.ts + esnext.sharedmemory.d.ts.map + esnext.sharedmemory.js + esnext.string.d.ts + esnext.string.d.ts.map + esnext.string.js + esnext.symbol.d.ts + esnext.symbol.d.ts.map + esnext.symbol.js + esnext.weakref.d.ts + esnext.weakref.d.ts.map + esnext.weakref.js + index.d.ts + index.d.ts.map + index.js + lib.d.ts + lib.d.ts.map + lib.js + scripthost.d.ts + scripthost.d.ts.map + scripthost.js + webworker.asynciterable.d.ts + webworker.asynciterable.d.ts.map + webworker.asynciterable.js + webworker.d.ts + webworker.d.ts.map + webworker.importscripts.d.ts + webworker.importscripts.d.ts.map + webworker.importscripts.js + webworker.iterable.d.ts + webworker.iterable.d.ts.map + webworker.iterable.js + webworker.js + + +---referencer + ClassVisitor.d.ts + ClassVisitor.d.ts.map + ClassVisitor.js + ExportVisitor.d.ts + ExportVisitor.d.ts.map + ExportVisitor.js + ImportVisitor.d.ts + ImportVisitor.d.ts.map + ImportVisitor.js + index.d.ts + index.d.ts.map + index.js + PatternVisitor.d.ts + PatternVisitor.d.ts.map + PatternVisitor.js + Reference.d.ts + Reference.d.ts.map + Reference.js + Referencer.d.ts + Referencer.d.ts.map + Referencer.js + TypeVisitor.d.ts + TypeVisitor.d.ts.map + TypeVisitor.js + Visitor.d.ts + Visitor.d.ts.map + Visitor.js + VisitorBase.d.ts + VisitorBase.d.ts.map + VisitorBase.js + + +---scope + BlockScope.d.ts + BlockScope.d.ts.map + BlockScope.js + CatchScope.d.ts + CatchScope.d.ts.map + CatchScope.js + ClassFieldInitializerScope.d.ts + ClassFieldInitializerScope.d.ts.map + ClassFieldInitializerScope.js + ClassScope.d.ts + ClassScope.d.ts.map + ClassScope.js + ClassStaticBlockScope.d.ts + ClassStaticBlockScope.d.ts.map + ClassStaticBlockScope.js + ConditionalTypeScope.d.ts + ConditionalTypeScope.d.ts.map + ConditionalTypeScope.js + ForScope.d.ts + ForScope.d.ts.map + ForScope.js + FunctionExpressionNameScope.d.ts + FunctionExpressionNameScope.d.ts.map + FunctionExpressionNameScope.js + FunctionScope.d.ts + FunctionScope.d.ts.map + FunctionScope.js + FunctionTypeScope.d.ts + FunctionTypeScope.d.ts.map + FunctionTypeScope.js + GlobalScope.d.ts + GlobalScope.d.ts.map + GlobalScope.js + index.d.ts + index.d.ts.map + index.js + MappedTypeScope.d.ts + MappedTypeScope.d.ts.map + MappedTypeScope.js + ModuleScope.d.ts + ModuleScope.d.ts.map + ModuleScope.js + Scope.d.ts + Scope.d.ts.map + Scope.js + ScopeBase.d.ts + ScopeBase.d.ts.map + ScopeBase.js + ScopeType.d.ts + ScopeType.d.ts.map + ScopeType.js + SwitchScope.d.ts + SwitchScope.d.ts.map + SwitchScope.js + TSEnumScope.d.ts + TSEnumScope.d.ts.map + TSEnumScope.js + TSModuleScope.d.ts + TSModuleScope.d.ts.map + TSModuleScope.js + TypeScope.d.ts + TypeScope.d.ts.map + TypeScope.js + WithScope.d.ts + WithScope.d.ts.map + WithScope.js + + +---variable + ESLintScopeVariable.d.ts + ESLintScopeVariable.d.ts.map + ESLintScopeVariable.js + ImplicitLibVariable.d.ts + ImplicitLibVariable.d.ts.map + ImplicitLibVariable.js + index.d.ts + index.d.ts.map + index.js + Variable.d.ts + Variable.d.ts.map + Variable.js + VariableBase.d.ts + VariableBase.d.ts.map + VariableBase.js + + +---tsconfig-utils + LICENSE + package.json + README.md + + +---dist + compilerOptions.d.ts + compilerOptions.d.ts.map + compilerOptions.js + getParsedConfigFile.d.ts + getParsedConfigFile.d.ts.map + getParsedConfigFile.js + index.d.ts + index.d.ts.map + index.js + + +---type-utils + LICENSE + package.json + README.md + + +---dist + builtinSymbolLikes.d.ts + builtinSymbolLikes.d.ts.map + builtinSymbolLikes.js + containsAllTypesByName.d.ts + containsAllTypesByName.d.ts.map + containsAllTypesByName.js + discriminateAnyType.d.ts + discriminateAnyType.d.ts.map + discriminateAnyType.js + getConstrainedTypeAtLocation.d.ts + getConstrainedTypeAtLocation.d.ts.map + getConstrainedTypeAtLocation.js + getContextualType.d.ts + getContextualType.d.ts.map + getContextualType.js + getDeclaration.d.ts + getDeclaration.d.ts.map + getDeclaration.js + getSourceFileOfNode.d.ts + getSourceFileOfNode.d.ts.map + getSourceFileOfNode.js + getTypeName.d.ts + getTypeName.d.ts.map + getTypeName.js + index.d.ts + index.d.ts.map + index.js + isSymbolFromDefaultLibrary.d.ts + isSymbolFromDefaultLibrary.d.ts.map + isSymbolFromDefaultLibrary.js + isTypeReadonly.d.ts + isTypeReadonly.d.ts.map + isTypeReadonly.js + isUnsafeAssignment.d.ts + isUnsafeAssignment.d.ts.map + isUnsafeAssignment.js + predicates.d.ts + predicates.d.ts.map + predicates.js + propertyTypes.d.ts + propertyTypes.d.ts.map + propertyTypes.js + requiresQuoting.d.ts + requiresQuoting.d.ts.map + requiresQuoting.js + typeFlagUtils.d.ts + typeFlagUtils.d.ts.map + typeFlagUtils.js + TypeOrValueSpecifier.d.ts + TypeOrValueSpecifier.d.ts.map + TypeOrValueSpecifier.js + + +---typeOrValueSpecifiers + specifierNameMatches.d.ts + specifierNameMatches.d.ts.map + specifierNameMatches.js + typeDeclaredInFile.d.ts + typeDeclaredInFile.d.ts.map + typeDeclaredInFile.js + typeDeclaredInLib.d.ts + typeDeclaredInLib.d.ts.map + typeDeclaredInLib.js + typeDeclaredInPackageDeclarationFile.d.ts + typeDeclaredInPackageDeclarationFile.d.ts.map + typeDeclaredInPackageDeclarationFile.js + + +---types + LICENSE + package.json + README.md + + +---dist + index.d.ts + index.d.ts.map + index.js + lib.d.ts + lib.d.ts.map + lib.js + parser-options.d.ts + parser-options.d.ts.map + parser-options.js + ts-estree.d.ts + ts-estree.d.ts.map + ts-estree.js + + +---generated + ast-spec.d.ts + ast-spec.d.ts.map + ast-spec.js + + +---typescript-estree + LICENSE + package.json + README.md + + +---dist + ast-converter.d.ts + ast-converter.d.ts.map + ast-converter.js + clear-caches.d.ts + clear-caches.d.ts.map + clear-caches.js + convert-comments.d.ts + convert-comments.d.ts.map + convert-comments.js + convert.d.ts + convert.d.ts.map + convert.js + createParserServices.d.ts + createParserServices.d.ts.map + createParserServices.js + getModifiers.d.ts + getModifiers.d.ts.map + getModifiers.js + index.d.ts + index.d.ts.map + index.js + node-utils.d.ts + node-utils.d.ts.map + node-utils.js + parser-options.d.ts + parser-options.d.ts.map + parser-options.js + parser.d.ts + parser.d.ts.map + parser.js + semantic-or-syntactic-errors.d.ts + semantic-or-syntactic-errors.d.ts.map + semantic-or-syntactic-errors.js + simple-traverse.d.ts + simple-traverse.d.ts.map + simple-traverse.js + source-files.d.ts + source-files.d.ts.map + source-files.js + use-at-your-own-risk.d.ts + use-at-your-own-risk.d.ts.map + use-at-your-own-risk.js + useProgramFromProjectService.d.ts + useProgramFromProjectService.d.ts.map + useProgramFromProjectService.js + version-check.d.ts + version-check.d.ts.map + version-check.js + version.d.ts + version.d.ts.map + version.js + withoutProjectParserOptions.d.ts + withoutProjectParserOptions.d.ts.map + withoutProjectParserOptions.js + + +---create-program + createIsolatedProgram.d.ts + createIsolatedProgram.d.ts.map + createIsolatedProgram.js + createProjectProgram.d.ts + createProjectProgram.d.ts.map + createProjectProgram.js + createProjectProgramError.d.ts + createProjectProgramError.d.ts.map + createProjectProgramError.js + createSourceFile.d.ts + createSourceFile.d.ts.map + createSourceFile.js + describeFilePath.d.ts + describeFilePath.d.ts.map + describeFilePath.js + getScriptKind.d.ts + getScriptKind.d.ts.map + getScriptKind.js + getWatchProgramsForProjects.d.ts + getWatchProgramsForProjects.d.ts.map + getWatchProgramsForProjects.js + shared.d.ts + shared.d.ts.map + shared.js + useProvidedPrograms.d.ts + useProvidedPrograms.d.ts.map + useProvidedPrograms.js + validateDefaultProjectForFilesGlob.d.ts + validateDefaultProjectForFilesGlob.d.ts.map + validateDefaultProjectForFilesGlob.js + WatchCompilerHostOfConfigFile.d.ts + WatchCompilerHostOfConfigFile.d.ts.map + WatchCompilerHostOfConfigFile.js + + +---jsx + xhtml-entities.d.ts + xhtml-entities.d.ts.map + xhtml-entities.js + + +---parseSettings + candidateTSConfigRootDirs.d.ts + candidateTSConfigRootDirs.d.ts.map + candidateTSConfigRootDirs.js + createParseSettings.d.ts + createParseSettings.d.ts.map + createParseSettings.js + ExpiringCache.d.ts + ExpiringCache.d.ts.map + ExpiringCache.js + getProjectConfigFiles.d.ts + getProjectConfigFiles.d.ts.map + getProjectConfigFiles.js + index.d.ts + index.d.ts.map + index.js + inferSingleRun.d.ts + inferSingleRun.d.ts.map + inferSingleRun.js + resolveProjectList.d.ts + resolveProjectList.d.ts.map + resolveProjectList.js + warnAboutTSVersion.d.ts + warnAboutTSVersion.d.ts.map + warnAboutTSVersion.js + + +---ts-estree + estree-to-ts-node-types.d.ts + estree-to-ts-node-types.d.ts.map + estree-to-ts-node-types.js + index.d.ts + index.d.ts.map + index.js + ts-nodes.d.ts + ts-nodes.d.ts.map + ts-nodes.js + + +---node_modules + +---brace-expansion + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---fast-glob + LICENSE + package.json + README.md + + +---out + index.d.ts + index.js + settings.d.ts + settings.js + + +---managers + tasks.d.ts + tasks.js + + +---providers + async.d.ts + async.js + provider.d.ts + provider.js + stream.d.ts + stream.js + sync.d.ts + sync.js + + +---filters + deep.d.ts + deep.js + entry.d.ts + entry.js + error.d.ts + error.js + + +---matchers + matcher.d.ts + matcher.js + partial.d.ts + partial.js + + +---transformers + entry.d.ts + entry.js + + +---readers + async.d.ts + async.js + reader.d.ts + reader.js + stream.d.ts + stream.js + sync.d.ts + sync.js + + +---types + index.d.ts + index.js + + +---utils + array.d.ts + array.js + errno.d.ts + errno.js + fs.d.ts + fs.js + index.d.ts + index.js + path.d.ts + path.js + pattern.d.ts + pattern.js + stream.d.ts + stream.js + string.d.ts + string.js + + +---glob-parent + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---minimatch + LICENSE + package.json + README.md + + +---dist + +---commonjs + assert-valid-pattern.d.ts + assert-valid-pattern.d.ts.map + assert-valid-pattern.js + assert-valid-pattern.js.map + ast.d.ts + ast.d.ts.map + ast.js + ast.js.map + brace-expressions.d.ts + brace-expressions.d.ts.map + brace-expressions.js + brace-expressions.js.map + escape.d.ts + escape.d.ts.map + escape.js + escape.js.map + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + unescape.d.ts + unescape.d.ts.map + unescape.js + unescape.js.map + + +---esm + assert-valid-pattern.d.ts + assert-valid-pattern.d.ts.map + assert-valid-pattern.js + assert-valid-pattern.js.map + ast.d.ts + ast.d.ts.map + ast.js + ast.js.map + brace-expressions.d.ts + brace-expressions.d.ts.map + brace-expressions.js + brace-expressions.js.map + escape.d.ts + escape.d.ts.map + escape.js + escape.js.map + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + unescape.d.ts + unescape.d.ts.map + unescape.js + unescape.js.map + + +---utils + LICENSE + package.json + README.md + + +---dist + index.d.ts + index.d.ts.map + index.js + json-schema.d.ts + json-schema.d.ts.map + json-schema.js + ts-estree.d.ts + ts-estree.d.ts.map + ts-estree.js + + +---ast-utils + helpers.d.ts + helpers.d.ts.map + helpers.js + index.d.ts + index.d.ts.map + index.js + misc.d.ts + misc.d.ts.map + misc.js + predicates.d.ts + predicates.d.ts.map + predicates.js + + +---eslint-utils + astUtilities.d.ts + astUtilities.d.ts.map + astUtilities.js + index.d.ts + index.d.ts.map + index.js + PatternMatcher.d.ts + PatternMatcher.d.ts.map + PatternMatcher.js + predicates.d.ts + predicates.d.ts.map + predicates.js + ReferenceTracker.d.ts + ReferenceTracker.d.ts.map + ReferenceTracker.js + scopeAnalysis.d.ts + scopeAnalysis.d.ts.map + scopeAnalysis.js + + +---eslint-utils + applyDefault.d.ts + applyDefault.d.ts.map + applyDefault.js + deepMerge.d.ts + deepMerge.d.ts.map + deepMerge.js + getParserServices.d.ts + getParserServices.d.ts.map + getParserServices.js + index.d.ts + index.d.ts.map + index.js + InferTypesFromRule.d.ts + InferTypesFromRule.d.ts.map + InferTypesFromRule.js + nullThrows.d.ts + nullThrows.d.ts.map + nullThrows.js + parserSeemsToBeTSESLint.d.ts + parserSeemsToBeTSESLint.d.ts.map + parserSeemsToBeTSESLint.js + RuleCreator.d.ts + RuleCreator.d.ts.map + RuleCreator.js + + +---ts-eslint + AST.d.ts + AST.d.ts.map + AST.js + Config.d.ts + Config.d.ts.map + Config.js + ESLint.d.ts + ESLint.d.ts.map + ESLint.js + index.d.ts + index.d.ts.map + index.js + Linter.d.ts + Linter.d.ts.map + Linter.js + Parser.d.ts + Parser.d.ts.map + Parser.js + ParserOptions.d.ts + ParserOptions.d.ts.map + ParserOptions.js + Processor.d.ts + Processor.d.ts.map + Processor.js + Rule.d.ts + Rule.d.ts.map + Rule.js + RuleTester.d.ts + RuleTester.d.ts.map + RuleTester.js + Scope.d.ts + Scope.d.ts.map + Scope.js + SourceCode.d.ts + SourceCode.d.ts.map + SourceCode.js + + +---eslint + ESLintShared.d.ts + ESLintShared.d.ts.map + ESLintShared.js + FlatESLint.d.ts + FlatESLint.d.ts.map + FlatESLint.js + LegacyESLint.d.ts + LegacyESLint.d.ts.map + LegacyESLint.js + + +---ts-utils + index.d.ts + index.d.ts.map + index.js + isArray.d.ts + isArray.d.ts.map + isArray.js + NoInfer.d.ts + NoInfer.d.ts.map + NoInfer.js + + +---visitor-keys + LICENSE + package.json + README.md + + +---dist + get-keys.d.ts + get-keys.d.ts.map + get-keys.js + index.d.ts + index.d.ts.map + index.js + visitor-keys.d.ts + visitor-keys.d.ts.map + visitor-keys.js + + +---@unrs + +---resolver-binding-win32-x64-msvc + package.json + README.md + resolver.win32-x64-msvc.node + + +---acorn + CHANGELOG.md + LICENSE + package.json + README.md + + +---bin + acorn + + +---dist + acorn.d.mts + acorn.d.ts + acorn.js + acorn.mjs + bin.js + + +---acorn-jsx + index.d.ts + index.js + LICENSE + package.json + README.md + xhtml.js + + +---ajv + .tonic_example.js + LICENSE + package.json + README.md + + +---dist + ajv.bundle.js + ajv.min.js + ajv.min.js.map + + +---lib + ajv.d.ts + ajv.js + cache.js + data.js + definition_schema.js + keyword.js + + +---compile + async.js + equal.js + error_classes.js + formats.js + index.js + resolve.js + rules.js + schema_obj.js + ucs2length.js + util.js + + +---dot + allOf.jst + anyOf.jst + coerce.def + comment.jst + const.jst + contains.jst + custom.jst + defaults.def + definitions.def + dependencies.jst + enum.jst + errors.def + format.jst + if.jst + items.jst + missing.def + multipleOf.jst + not.jst + oneOf.jst + pattern.jst + properties.jst + propertyNames.jst + ref.jst + required.jst + uniqueItems.jst + validate.jst + _limit.jst + _limitItems.jst + _limitLength.jst + _limitProperties.jst + + +---dotjs + allOf.js + anyOf.js + comment.js + const.js + contains.js + custom.js + dependencies.js + enum.js + format.js + if.js + index.js + items.js + multipleOf.js + not.js + oneOf.js + pattern.js + properties.js + propertyNames.js + README.md + ref.js + required.js + uniqueItems.js + validate.js + _limit.js + _limitItems.js + _limitLength.js + _limitProperties.js + + +---refs + data.json + json-schema-draft-04.json + json-schema-draft-06.json + json-schema-draft-07.json + json-schema-secure.json + + +---scripts + .eslintrc.yml + bundle.js + compile-dots.js + info + prepare-tests + publish-built-version + travis-gh-pages + + +---ansi-styles + index.d.ts + index.js + license + package.json + readme.md + + +---argparse + argparse.js + CHANGELOG.md + LICENSE + package.json + README.md + + +---lib + sub.js + textwrap.js + + +---aria-query + LICENSE + package.json + README.md + + +---lib + ariaPropsMap.js + domMap.js + elementRoleMap.js + index.js + roleElementMap.js + rolesMap.js + + +---etc + +---roles + ariaAbstractRoles.js + ariaDpubRoles.js + ariaGraphicsRoles.js + ariaLiteralRoles.js + + +---abstract + commandRole.js + compositeRole.js + inputRole.js + landmarkRole.js + rangeRole.js + roletypeRole.js + sectionheadRole.js + sectionRole.js + selectRole.js + structureRole.js + widgetRole.js + windowRole.js + + +---dpub + docAbstractRole.js + docAcknowledgmentsRole.js + docAfterwordRole.js + docAppendixRole.js + docBacklinkRole.js + docBiblioentryRole.js + docBibliographyRole.js + docBibliorefRole.js + docChapterRole.js + docColophonRole.js + docConclusionRole.js + docCoverRole.js + docCreditRole.js + docCreditsRole.js + docDedicationRole.js + docEndnoteRole.js + docEndnotesRole.js + docEpigraphRole.js + docEpilogueRole.js + docErrataRole.js + docExampleRole.js + docFootnoteRole.js + docForewordRole.js + docGlossaryRole.js + docGlossrefRole.js + docIndexRole.js + docIntroductionRole.js + docNoterefRole.js + docNoticeRole.js + docPagebreakRole.js + docPagefooterRole.js + docPageheaderRole.js + docPagelistRole.js + docPartRole.js + docPrefaceRole.js + docPrologueRole.js + docPullquoteRole.js + docQnaRole.js + docSubtitleRole.js + docTipRole.js + docTocRole.js + + +---graphics + graphicsDocumentRole.js + graphicsObjectRole.js + graphicsSymbolRole.js + + +---literal + alertdialogRole.js + alertRole.js + applicationRole.js + articleRole.js + bannerRole.js + blockquoteRole.js + buttonRole.js + captionRole.js + cellRole.js + checkboxRole.js + codeRole.js + columnheaderRole.js + comboboxRole.js + complementaryRole.js + contentinfoRole.js + definitionRole.js + deletionRole.js + dialogRole.js + directoryRole.js + documentRole.js + emphasisRole.js + feedRole.js + figureRole.js + formRole.js + genericRole.js + graphicsDocumentRole.js + graphicsObjectRole.js + graphicsSymbolRole.js + gridcellRole.js + gridRole.js + groupRole.js + headingRole.js + imgRole.js + insertionRole.js + linkRole.js + listboxRole.js + listitemRole.js + listRole.js + logRole.js + mainRole.js + markRole.js + marqueeRole.js + mathRole.js + menubarRole.js + menuitemcheckboxRole.js + menuitemradioRole.js + menuitemRole.js + menuRole.js + meterRole.js + navigationRole.js + noneRole.js + noteRole.js + optionRole.js + paragraphRole.js + presentationRole.js + progressbarRole.js + radiogroupRole.js + radioRole.js + regionRole.js + rowgroupRole.js + rowheaderRole.js + rowRole.js + scrollbarRole.js + searchboxRole.js + searchRole.js + separatorRole.js + sliderRole.js + spinbuttonRole.js + statusRole.js + strongRole.js + subscriptRole.js + superscriptRole.js + switchRole.js + tableRole.js + tablistRole.js + tabpanelRole.js + tabRole.js + termRole.js + textboxRole.js + timeRole.js + timerRole.js + toolbarRole.js + tooltipRole.js + treegridRole.js + treeitemRole.js + treeRole.js + + +---util + iterationDecorator.js + iteratorProxy.js + + +---array-buffer-byte-length + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---array-includes + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + FUNDING.yml + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---array.prototype.findlast + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + FUNDING.yml + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---array.prototype.findlastindex + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + FUNDING.yml + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---array.prototype.flat + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + FUNDING.yml + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---array.prototype.flatmap + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + FUNDING.yml + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---array.prototype.tosorted + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + FUNDING.yml + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---arraybuffer.prototype.slice + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---ast-types-flow + LICENSE + package.json + README.md + + +---lib + types.js + + +---async-function + .eslintrc + .nycrc + CHANGELOG.md + index.d.mts + index.d.ts + index.js + index.mjs + legacy.js + LICENSE + package.json + README.md + require.mjs + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---asynckit + bench.js + index.js + LICENSE + package.json + parallel.js + README.md + serial.js + serialOrdered.js + stream.js + + +---lib + abort.js + async.js + defer.js + iterate.js + readable_asynckit.js + readable_parallel.js + readable_serial.js + readable_serial_ordered.js + state.js + streamify.js + terminator.js + + +---autoprefixer + LICENSE + package.json + README.md + + +---bin + autoprefixer + + +---data + prefixes.js + + +---lib + at-rule.js + autoprefixer.d.ts + autoprefixer.js + brackets.js + browsers.js + declaration.js + info.js + old-selector.js + old-value.js + prefixer.js + prefixes.js + processor.js + resolution.js + selector.js + supports.js + transition.js + utils.js + value.js + vendor.js + + +---hacks + align-content.js + align-items.js + align-self.js + animation.js + appearance.js + autofill.js + backdrop-filter.js + background-clip.js + background-size.js + block-logical.js + border-image.js + border-radius.js + break-props.js + cross-fade.js + display-flex.js + display-grid.js + file-selector-button.js + filter-value.js + filter.js + flex-basis.js + flex-direction.js + flex-flow.js + flex-grow.js + flex-shrink.js + flex-spec.js + flex-wrap.js + flex.js + fullscreen.js + gradient.js + grid-area.js + grid-column-align.js + grid-end.js + grid-row-align.js + grid-row-column.js + grid-rows-columns.js + grid-start.js + grid-template-areas.js + grid-template.js + grid-utils.js + image-rendering.js + image-set.js + inline-logical.js + intrinsic.js + justify-content.js + mask-border.js + mask-composite.js + order.js + overscroll-behavior.js + pixelated.js + place-self.js + placeholder-shown.js + placeholder.js + print-color-adjust.js + text-decoration-skip-ink.js + text-decoration.js + text-emphasis-position.js + transform-decl.js + user-select.js + writing-mode.js + + +---available-typed-arrays + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---axe-core + axe.d.ts + axe.js + axe.min.js + LICENSE + LICENSE-3RD-PARTY.txt + package.json + README.md + sri-history.json + + +---locales + da.json + de.json + el.json + es.json + eu.json + fr.json + he.json + it.json + ja.json + ko.json + nl.json + no_NB.json + pl.json + pt_BR.json + README.md + zh_CN.json + zh_TW.json + _template.json + + +---axios + CHANGELOG.md + index.d.cts + index.d.ts + index.js + LICENSE + MIGRATION_GUIDE.md + package.json + README.md + + +---dist + axios.js + axios.js.map + axios.min.js + axios.min.js.map + + +---browser + axios.cjs + axios.cjs.map + + +---esm + axios.js + axios.js.map + axios.min.js + axios.min.js.map + + +---node + axios.cjs + axios.cjs.map + + +---lib + axios.js + utils.js + + +---adapters + adapters.js + fetch.js + http.js + README.md + xhr.js + + +---cancel + CanceledError.js + CancelToken.js + isCancel.js + + +---core + Axios.js + AxiosError.js + AxiosHeaders.js + buildFullPath.js + dispatchRequest.js + InterceptorManager.js + mergeConfig.js + README.md + settle.js + transformData.js + + +---defaults + index.js + transitional.js + + +---env + data.js + README.md + + +---classes + FormData.js + + +---helpers + AxiosTransformStream.js + AxiosURLSearchParams.js + bind.js + buildURL.js + callbackify.js + combineURLs.js + composeSignals.js + cookies.js + deprecatedMethod.js + formDataToJSON.js + formDataToStream.js + fromDataURI.js + HttpStatusCode.js + isAbsoluteURL.js + isAxiosError.js + isURLSameOrigin.js + null.js + parseHeaders.js + parseProtocol.js + progressEventReducer.js + readBlob.js + README.md + resolveConfig.js + speedometer.js + spread.js + throttle.js + toFormData.js + toURLEncodedForm.js + trackStream.js + validator.js + ZlibHeaderTransformStream.js + + +---platform + index.js + + +---browser + index.js + + +---classes + Blob.js + FormData.js + URLSearchParams.js + + +---common + utils.js + + +---node + index.js + + +---classes + FormData.js + URLSearchParams.js + + +---axobject-query + LICENSE + package.json + README.md + + +---lib + AXObjectElementMap.js + AXObjectRoleMap.js + AXObjectsMap.js + elementAXObjectMap.js + index.js + + +---etc + +---objects + AbbrRole.js + AlertDialogRole.js + AlertRole.js + AnnotationRole.js + ApplicationRole.js + ArticleRole.js + AudioRole.js + BannerRole.js + BlockquoteRole.js + BusyIndicatorRole.js + ButtonRole.js + CanvasRole.js + CaptionRole.js + CellRole.js + CheckBoxRole.js + ColorWellRole.js + ColumnHeaderRole.js + ColumnRole.js + ComboBoxRole.js + ComplementaryRole.js + ContentInfoRole.js + DateRole.js + DateTimeRole.js + DefinitionRole.js + DescriptionListDetailRole.js + DescriptionListRole.js + DescriptionListTermRole.js + DetailsRole.js + DialogRole.js + DirectoryRole.js + DisclosureTriangleRole.js + DivRole.js + DocumentRole.js + EmbeddedObjectRole.js + FeedRole.js + FigcaptionRole.js + FigureRole.js + FooterRole.js + FormRole.js + GridRole.js + GroupRole.js + HeadingRole.js + IframePresentationalRole.js + IframeRole.js + IgnoredRole.js + ImageMapLinkRole.js + ImageMapRole.js + ImageRole.js + InlineTextBoxRole.js + InputTimeRole.js + LabelRole.js + LegendRole.js + LineBreakRole.js + LinkRole.js + ListBoxOptionRole.js + ListBoxRole.js + ListItemRole.js + ListMarkerRole.js + ListRole.js + LogRole.js + MainRole.js + MarkRole.js + MarqueeRole.js + MathRole.js + MenuBarRole.js + MenuButtonRole.js + MenuItemCheckBoxRole.js + MenuItemRadioRole.js + MenuItemRole.js + MenuListOptionRole.js + MenuListPopupRole.js + MenuRole.js + MeterRole.js + NavigationRole.js + NoneRole.js + NoteRole.js + OutlineRole.js + ParagraphRole.js + PopUpButtonRole.js + PreRole.js + PresentationalRole.js + ProgressIndicatorRole.js + RadioButtonRole.js + RadioGroupRole.js + RegionRole.js + RootWebAreaRole.js + RowHeaderRole.js + RowRole.js + RubyRole.js + RulerRole.js + ScrollAreaRole.js + ScrollBarRole.js + SeamlessWebAreaRole.js + SearchBoxRole.js + SearchRole.js + SliderRole.js + SliderThumbRole.js + SpinButtonPartRole.js + SpinButtonRole.js + SplitterRole.js + StaticTextRole.js + StatusRole.js + SVGRootRole.js + SwitchRole.js + TabGroupRole.js + TableHeaderContainerRole.js + TableRole.js + TabListRole.js + TabPanelRole.js + TabRole.js + TermRole.js + TextAreaRole.js + TextFieldRole.js + TimeRole.js + TimerRole.js + ToggleButtonRole.js + ToolbarRole.js + TreeGridRole.js + TreeItemRole.js + TreeRole.js + UserInterfaceTooltipRole.js + VideoRole.js + WebAreaRole.js + WindowRole.js + + +---util + iterationDecorator.js + iteratorProxy.js + + +---balanced-match + index.js + LICENSE.md + package.json + README.md + + +---.github + FUNDING.yml + + +---brace-expansion + index.js + LICENSE + package.json + README.md + + +---braces + index.js + LICENSE + package.json + README.md + + +---lib + compile.js + constants.js + expand.js + parse.js + stringify.js + utils.js + + +---browserslist + browser.js + cli.js + error.d.ts + error.js + index.d.ts + index.js + LICENSE + node.js + package.json + parse.js + README.md + + +---call-bind + .eslintignore + .eslintrc + .nycrc + callBound.js + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---test + callBound.js + index.js + + +---call-bind-apply-helpers + .eslintrc + .nycrc + actualApply.d.ts + actualApply.js + applyBind.d.ts + applyBind.js + CHANGELOG.md + functionApply.d.ts + functionApply.js + functionCall.d.ts + functionCall.js + index.d.ts + index.js + LICENSE + package.json + README.md + reflectApply.d.ts + reflectApply.js + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---call-bound + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---callsites + index.d.ts + index.js + license + package.json + readme.md + + +---caniuse-lite + LICENSE + package.json + README.md + + +---data + agents.js + browsers.js + browserVersions.js + features.js + + +---features + aac.js + abortcontroller.js + ac3-ec3.js + accelerometer.js + addeventlistener.js + alternate-stylesheet.js + ambient-light.js + apng.js + array-find-index.js + array-find.js + array-flat.js + array-includes.js + arrow-functions.js + asmjs.js + async-clipboard.js + async-functions.js + atob-btoa.js + audio-api.js + audio.js + audiotracks.js + autofocus.js + auxclick.js + av1.js + avif.js + background-attachment.js + background-clip-text.js + background-img-opts.js + background-position-x-y.js + background-repeat-round-space.js + background-sync.js + battery-status.js + beacon.js + beforeafterprint.js + bigint.js + blobbuilder.js + bloburls.js + border-image.js + border-radius.js + broadcastchannel.js + brotli.js + calc.js + canvas-blending.js + canvas-text.js + canvas.js + ch-unit.js + chacha20-poly1305.js + channel-messaging.js + childnode-remove.js + classlist.js + client-hints-dpr-width-viewport.js + clipboard.js + colr-v1.js + colr.js + comparedocumentposition.js + console-basic.js + console-time.js + const.js + constraint-validation.js + contenteditable.js + contentsecuritypolicy.js + contentsecuritypolicy2.js + cookie-store-api.js + cors.js + createimagebitmap.js + credential-management.js + cross-document-view-transitions.js + cryptography.js + css-all.js + css-anchor-positioning.js + css-animation.js + css-any-link.js + css-appearance.js + css-at-counter-style.js + css-autofill.js + css-backdrop-filter.js + css-background-offsets.js + css-backgroundblendmode.js + css-boxdecorationbreak.js + css-boxshadow.js + css-canvas.js + css-caret-color.js + css-cascade-layers.js + css-cascade-scope.js + css-case-insensitive.js + css-clip-path.js + css-color-adjust.js + css-color-function.js + css-conic-gradients.js + css-container-queries-style.js + css-container-queries.js + css-container-query-units.js + css-containment.js + css-content-visibility.js + css-counters.js + css-crisp-edges.js + css-cross-fade.js + css-default-pseudo.js + css-descendant-gtgt.js + css-deviceadaptation.js + css-dir-pseudo.js + css-display-contents.js + css-element-function.js + css-env-function.js + css-exclusions.js + css-featurequeries.js + css-file-selector-button.js + css-filter-function.js + css-filters.js + css-first-letter.js + css-first-line.js + css-fixed.js + css-focus-visible.js + css-focus-within.js + css-font-palette.js + css-font-rendering-controls.js + css-font-stretch.js + css-gencontent.js + css-gradients.js + css-grid-animation.js + css-grid.js + css-hanging-punctuation.js + css-has.js + css-hyphens.js + css-if.js + css-image-orientation.js + css-image-set.js + css-in-out-of-range.js + css-indeterminate-pseudo.js + css-initial-letter.js + css-initial-value.js + css-lch-lab.js + css-letter-spacing.js + css-line-clamp.js + css-logical-props.js + css-marker-pseudo.js + css-masks.js + css-matches-pseudo.js + css-math-functions.js + css-media-interaction.js + css-media-range-syntax.js + css-media-resolution.js + css-media-scripting.js + css-mediaqueries.js + css-mixblendmode.js + css-module-scripts.js + css-motion-paths.js + css-namespaces.js + css-nesting.js + css-not-sel-list.js + css-nth-child-of.js + css-opacity.js + css-optional-pseudo.js + css-overflow-anchor.js + css-overflow-overlay.js + css-overflow.js + css-overscroll-behavior.js + css-page-break.js + css-paged-media.js + css-paint-api.js + css-placeholder-shown.js + css-placeholder.js + css-print-color-adjust.js + css-read-only-write.js + css-rebeccapurple.js + css-reflections.js + css-regions.js + css-relative-colors.js + css-repeating-gradients.js + css-resize.js + css-revert-value.js + css-rrggbbaa.js + css-scroll-behavior.js + css-scrollbar.js + css-sel2.js + css-sel3.js + css-selection.js + css-shapes.js + css-snappoints.js + css-sticky.js + css-subgrid.js + css-supports-api.js + css-table.js + css-text-align-last.js + css-text-box-trim.js + css-text-indent.js + css-text-justify.js + css-text-orientation.js + css-text-spacing.js + css-text-wrap-balance.js + css-textshadow.js + css-touch-action.js + css-transitions.js + css-unicode-bidi.js + css-unset-value.js + css-variables.js + css-when-else.js + css-widows-orphans.js + css-width-stretch.js + css-writing-mode.js + css-zoom.js + css3-attr.js + css3-boxsizing.js + css3-colors.js + css3-cursors-grab.js + css3-cursors-newer.js + css3-cursors.js + css3-tabsize.js + currentcolor.js + custom-elements.js + custom-elementsv1.js + customevent.js + datalist.js + dataset.js + datauri.js + date-tolocaledatestring.js + declarative-shadow-dom.js + decorators.js + details.js + deviceorientation.js + devicepixelratio.js + dialog.js + dispatchevent.js + dnssec.js + do-not-track.js + document-currentscript.js + document-evaluate-xpath.js + document-execcommand.js + document-policy.js + document-scrollingelement.js + documenthead.js + dom-manip-convenience.js + dom-range.js + domcontentloaded.js + dommatrix.js + download.js + dragndrop.js + element-closest.js + element-from-point.js + element-scroll-methods.js + eme.js + eot.js + es5.js + es6-class.js + es6-generators.js + es6-module-dynamic-import.js + es6-module.js + es6-number.js + es6-string-includes.js + es6.js + eventsource.js + extended-system-fonts.js + feature-policy.js + fetch.js + fieldset-disabled.js + fileapi.js + filereader.js + filereadersync.js + filesystem.js + flac.js + flexbox-gap.js + flexbox.js + flow-root.js + focusin-focusout-events.js + font-family-system-ui.js + font-feature.js + font-kerning.js + font-loading.js + font-size-adjust.js + font-smooth.js + font-unicode-range.js + font-variant-alternates.js + font-variant-numeric.js + fontface.js + form-attribute.js + form-submit-attributes.js + form-validation.js + forms.js + fullscreen.js + gamepad.js + geolocation.js + getboundingclientrect.js + getcomputedstyle.js + getelementsbyclassname.js + getrandomvalues.js + gyroscope.js + hardwareconcurrency.js + hashchange.js + heif.js + hevc.js + hidden.js + high-resolution-time.js + history.js + html-media-capture.js + html5semantic.js + http-live-streaming.js + http2.js + http3.js + iframe-sandbox.js + iframe-seamless.js + iframe-srcdoc.js + imagecapture.js + ime.js + img-naturalwidth-naturalheight.js + import-maps.js + imports.js + indeterminate-checkbox.js + indexeddb.js + indexeddb2.js + inline-block.js + innertext.js + input-autocomplete-onoff.js + input-color.js + input-datetime.js + input-email-tel-url.js + input-event.js + input-file-accept.js + input-file-directory.js + input-file-multiple.js + input-inputmode.js + input-minlength.js + input-number.js + input-pattern.js + input-placeholder.js + input-range.js + input-search.js + input-selection.js + insert-adjacent.js + insertadjacenthtml.js + internationalization.js + intersectionobserver-v2.js + intersectionobserver.js + intl-pluralrules.js + intrinsic-width.js + jpeg2000.js + jpegxl.js + jpegxr.js + js-regexp-lookbehind.js + json.js + justify-content-space-evenly.js + kerning-pairs-ligatures.js + keyboardevent-charcode.js + keyboardevent-code.js + keyboardevent-getmodifierstate.js + keyboardevent-key.js + keyboardevent-location.js + keyboardevent-which.js + lazyload.js + let.js + link-icon-png.js + link-icon-svg.js + link-rel-dns-prefetch.js + link-rel-modulepreload.js + link-rel-preconnect.js + link-rel-prefetch.js + link-rel-preload.js + link-rel-prerender.js + loading-lazy-attr.js + localecompare.js + magnetometer.js + matchesselector.js + matchmedia.js + mathml.js + maxlength.js + mdn-css-backdrop-pseudo-element.js + mdn-css-unicode-bidi-isolate-override.js + mdn-css-unicode-bidi-isolate.js + mdn-css-unicode-bidi-plaintext.js + mdn-text-decoration-color.js + mdn-text-decoration-line.js + mdn-text-decoration-shorthand.js + mdn-text-decoration-style.js + media-fragments.js + mediacapture-fromelement.js + mediarecorder.js + mediasource.js + menu.js + meta-theme-color.js + meter.js + midi.js + minmaxwh.js + mp3.js + mpeg-dash.js + mpeg4.js + multibackgrounds.js + multicolumn.js + mutation-events.js + mutationobserver.js + namevalue-storage.js + native-filesystem-api.js + nav-timing.js + netinfo.js + notifications.js + object-entries.js + object-fit.js + object-observe.js + object-values.js + objectrtc.js + offline-apps.js + offscreencanvas.js + ogg-vorbis.js + ogv.js + ol-reversed.js + once-event-listener.js + online-status.js + opus.js + orientation-sensor.js + outline.js + pad-start-end.js + page-transition-events.js + pagevisibility.js + passive-event-listener.js + passkeys.js + passwordrules.js + path2d.js + payment-request.js + pdf-viewer.js + permissions-api.js + permissions-policy.js + picture-in-picture.js + picture.js + ping.js + png-alpha.js + pointer-events.js + pointer.js + pointerlock.js + portals.js + prefers-color-scheme.js + prefers-reduced-motion.js + progress.js + promise-finally.js + promises.js + proximity.js + proxy.js + publickeypinning.js + push-api.js + queryselector.js + readonly-attr.js + referrer-policy.js + registerprotocolhandler.js + rel-noopener.js + rel-noreferrer.js + rellist.js + rem.js + requestanimationframe.js + requestidlecallback.js + resizeobserver.js + resource-timing.js + rest-parameters.js + rtcpeerconnection.js + ruby.js + run-in.js + same-site-cookie-attribute.js + screen-orientation.js + script-async.js + script-defer.js + scrollintoview.js + scrollintoviewifneeded.js + sdch.js + selection-api.js + selectlist.js + server-timing.js + serviceworkers.js + setimmediate.js + shadowdom.js + shadowdomv1.js + sharedarraybuffer.js + sharedworkers.js + sni.js + spdy.js + speech-recognition.js + speech-synthesis.js + spellcheck-attribute.js + sql-storage.js + srcset.js + stream.js + streams.js + stricttransportsecurity.js + style-scoped.js + subresource-bundling.js + subresource-integrity.js + svg-css.js + svg-filters.js + svg-fonts.js + svg-fragment.js + svg-html.js + svg-html5.js + svg-img.js + svg-smil.js + svg.js + sxg.js + tabindex-attr.js + template-literals.js + template.js + temporal.js + testfeat.js + text-decoration.js + text-emphasis.js + text-overflow.js + text-size-adjust.js + text-stroke.js + textcontent.js + textencoder.js + tls1-1.js + tls1-2.js + tls1-3.js + touch.js + transforms2d.js + transforms3d.js + trusted-types.js + ttf.js + typedarrays.js + u2f.js + unhandledrejection.js + upgradeinsecurerequests.js + url-scroll-to-text-fragment.js + url.js + urlsearchparams.js + use-strict.js + user-select-none.js + user-timing.js + variable-fonts.js + vector-effect.js + vibration.js + video.js + videotracks.js + view-transitions.js + viewport-unit-variants.js + viewport-units.js + wai-aria.js + wake-lock.js + wasm-bigint.js + wasm-bulk-memory.js + wasm-extended-const.js + wasm-gc.js + wasm-multi-memory.js + wasm-multi-value.js + wasm-mutable-globals.js + wasm-nontrapping-fptoint.js + wasm-reference-types.js + wasm-relaxed-simd.js + wasm-signext.js + wasm-simd.js + wasm-tail-calls.js + wasm-threads.js + wasm.js + wav.js + wbr-element.js + web-animation.js + web-app-manifest.js + web-bluetooth.js + web-serial.js + web-share.js + webauthn.js + webcodecs.js + webgl.js + webgl2.js + webgpu.js + webhid.js + webkit-user-drag.js + webm.js + webnfc.js + webp.js + websockets.js + webtransport.js + webusb.js + webvr.js + webvtt.js + webworkers.js + webxr.js + will-change.js + woff.js + woff2.js + word-break.js + wordwrap.js + x-doc-messaging.js + x-frame-options.js + xhr2.js + xhtml.js + xhtmlsmil.js + xml-serializer.js + zstd.js + + +---regions + AD.js + AE.js + AF.js + AG.js + AI.js + AL.js + alt-af.js + alt-an.js + alt-as.js + alt-eu.js + alt-na.js + alt-oc.js + alt-sa.js + alt-ww.js + AM.js + AO.js + AR.js + AS.js + AT.js + AU.js + AW.js + AX.js + AZ.js + BA.js + BB.js + BD.js + BE.js + BF.js + BG.js + BH.js + BI.js + BJ.js + BM.js + BN.js + BO.js + BR.js + BS.js + BT.js + BW.js + BY.js + BZ.js + CA.js + CD.js + CF.js + CG.js + CH.js + CI.js + CK.js + CL.js + CM.js + CN.js + CO.js + CR.js + CU.js + CV.js + CX.js + CY.js + CZ.js + DE.js + DJ.js + DK.js + DM.js + DO.js + DZ.js + EC.js + EE.js + EG.js + ER.js + ES.js + ET.js + FI.js + FJ.js + FK.js + FM.js + FO.js + FR.js + GA.js + GB.js + GD.js + GE.js + GF.js + GG.js + GH.js + GI.js + GL.js + GM.js + GN.js + GP.js + GQ.js + GR.js + GT.js + GU.js + GW.js + GY.js + HK.js + HN.js + HR.js + HT.js + HU.js + ID.js + IE.js + IL.js + IM.js + IN.js + IQ.js + IR.js + IS.js + IT.js + JE.js + JM.js + JO.js + JP.js + KE.js + KG.js + KH.js + KI.js + KM.js + KN.js + KP.js + KR.js + KW.js + KY.js + KZ.js + LA.js + LB.js + LC.js + LI.js + LK.js + LR.js + LS.js + LT.js + LU.js + LV.js + LY.js + MA.js + MC.js + MD.js + ME.js + MG.js + MH.js + MK.js + ML.js + MM.js + MN.js + MO.js + MP.js + MQ.js + MR.js + MS.js + MT.js + MU.js + MV.js + MW.js + MX.js + MY.js + MZ.js + NA.js + NC.js + NE.js + NF.js + NG.js + NI.js + NL.js + NO.js + NP.js + NR.js + NU.js + NZ.js + OM.js + PA.js + PE.js + PF.js + PG.js + PH.js + PK.js + PL.js + PM.js + PN.js + PR.js + PS.js + PT.js + PW.js + PY.js + QA.js + RE.js + RO.js + RS.js + RU.js + RW.js + SA.js + SB.js + SC.js + SD.js + SE.js + SG.js + SH.js + SI.js + SK.js + SL.js + SM.js + SN.js + SO.js + SR.js + ST.js + SV.js + SY.js + SZ.js + TC.js + TD.js + TG.js + TH.js + TJ.js + TL.js + TM.js + TN.js + TO.js + TR.js + TT.js + TV.js + TW.js + TZ.js + UA.js + UG.js + US.js + UY.js + UZ.js + VA.js + VC.js + VE.js + VG.js + VI.js + VN.js + VU.js + WF.js + WS.js + YE.js + YT.js + ZA.js + ZM.js + ZW.js + + +---dist + +---lib + statuses.js + supported.js + + +---unpacker + agents.js + browsers.js + browserVersions.js + feature.js + features.js + index.js + region.js + + +---chalk + index.d.ts + license + package.json + readme.md + + +---source + index.js + templates.js + util.js + + +---chownr + LICENSE.md + package.json + README.md + + +---dist + +---commonjs + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---esm + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---client-only + error.js + index.js + package.json + + +---color + index.js + LICENSE + package.json + README.md + + +---color-convert + CHANGELOG.md + conversions.js + index.js + LICENSE + package.json + README.md + route.js + + +---color-name + index.js + LICENSE + package.json + README.md + + +---color-string + index.js + LICENSE + package.json + README.md + + +---combined-stream + License + package.json + Readme.md + yarn.lock + + +---lib + combined_stream.js + + +---concat-map + .travis.yml + index.js + LICENSE + package.json + README.markdown + + +---example + map.js + + +---test + map.js + + +---cross-spawn + index.js + LICENSE + package.json + README.md + + +---lib + enoent.js + parse.js + + +---util + escape.js + readShebang.js + resolveCommand.js + + +---csstype + index.d.ts + index.js.flow + LICENSE + package.json + README.md + + +---damerau-levenshtein + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---scripts + update-changelog.sh + + +---test + test.js + + +---data-view-buffer + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---data-view-byte-length + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---data-view-byte-offset + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---debug + LICENSE + package.json + README.md + + +---src + browser.js + common.js + index.js + node.js + + +---deep-is + .travis.yml + index.js + LICENSE + package.json + README.markdown + + +---example + cmp.js + + +---test + cmp.js + NaN.js + neg-vs-pos-0.js + + +---define-data-property + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---define-properties + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---delayed-stream + .npmignore + License + Makefile + package.json + Readme.md + + +---lib + delayed_stream.js + + +---detect-libc + index.d.ts + LICENSE + package.json + README.md + + +---lib + detect-libc.js + filesystem.js + process.js + + +---doctrine + CHANGELOG.md + LICENSE + LICENSE.closure-compiler + LICENSE.esprima + package.json + README.md + + +---lib + doctrine.js + typed.js + utility.js + + +---dunder-proto + .eslintrc + .nycrc + CHANGELOG.md + get.d.ts + get.js + LICENSE + package.json + README.md + set.d.ts + set.js + tsconfig.json + + +---.github + FUNDING.yml + + +---test + get.js + index.js + set.js + + +---electron-to-chromium + chromium-versions.js + chromium-versions.json + full-chromium-versions.js + full-chromium-versions.json + full-versions.js + full-versions.json + index.js + LICENSE + package.json + README.md + versions.js + versions.json + + +---emoji-regex + index.d.ts + index.js + LICENSE-MIT.txt + package.json + README.md + RGI_Emoji.d.ts + RGI_Emoji.js + text.d.ts + text.js + + +---es2015 + index.d.ts + index.js + RGI_Emoji.d.ts + RGI_Emoji.js + text.d.ts + text.js + + +---enhanced-resolve + LICENSE + package.json + README.md + types.d.ts + + +---lib + AliasFieldPlugin.js + AliasPlugin.js + AppendPlugin.js + CachedInputFileSystem.js + CloneBasenamePlugin.js + ConditionalPlugin.js + createInnerContext.js + DescriptionFilePlugin.js + DescriptionFileUtils.js + DirectoryExistsPlugin.js + ExportsFieldPlugin.js + ExtensionAliasPlugin.js + FileExistsPlugin.js + forEachBail.js + getInnerRequest.js + getPaths.js + ImportsFieldPlugin.js + index.js + JoinRequestPartPlugin.js + JoinRequestPlugin.js + LogInfoPlugin.js + MainFieldPlugin.js + ModulesInHierachicDirectoriesPlugin.js + ModulesInHierarchicalDirectoriesPlugin.js + ModulesInRootPlugin.js + NextPlugin.js + ParsePlugin.js + PnpPlugin.js + Resolver.js + ResolverFactory.js + RestrictionsPlugin.js + ResultPlugin.js + RootsPlugin.js + SelfReferencePlugin.js + SymlinkPlugin.js + SyncAsyncFileSystemDecorator.js + TryNextPlugin.js + UnsafeCachePlugin.js + UseFilePlugin.js + + +---util + entrypoints.js + identifier.js + memoize.js + module-browser.js + path.js + process-browser.js + + +---es-abstract + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + es2015.js + es2016.js + es2017.js + es2018.js + es2019.js + es2020.js + es2021.js + es2022.js + es2023.js + es2024.js + es2025.js + es5.js + es6.js + es7.js + GetIntrinsic.js + index.js + LICENSE + package.json + README.md + + +---2015 + abs.js + AbstractEqualityComparison.js + AbstractRelationalComparison.js + AdvanceStringIndex.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + Call.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterRange.js + CompletePropertyDescriptor.js + CompletionRecord.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateMethodProperty.js + DateFromTime.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnNames.js + floor.js + FromPropertyDescriptor.js + Get.js + GetGlobalObject.js + GetIterator.js + GetMethod.js + GetOwnPropertyKeys.js + GetPrototypeFromConstructor.js + GetSubstitution.js + GetV.js + GetValueFromBuffer.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstanceofOperator.js + IntegerIndexedElementGet.js + IntegerIndexedElementSet.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsGenericDescriptor.js + IsInteger.js + IsPromise.js + IsPropertyDescriptor.js + IsPropertyKey.js + IsRegExp.js + IsWordChar.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorValue.js + MakeDate.js + MakeDay.js + MakeTime.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + ObjectCreate.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + QuoteJSONString.js + RegExpCreate.js + RegExpExec.js + RequireObjectCoercible.js + SameValue.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionName.js + SetIntegrityLevel.js + SetValueInBuffer.js + SpeciesConstructor.js + SplitMatch.js + StrictEqualityComparison.js + StringCreate.js + StringGetIndexProperty.js + SymbolDescriptiveString.js + TestIntegrityLevel.js + thisBooleanValue.js + thisNumberValue.js + thisStringValue.js + thisTimeValue.js + TimeClip.js + TimeFromYear.js + TimeWithinDay.js + ToBoolean.js + ToDateString.js + ToInt16.js + ToInt32.js + ToInt8.js + ToInteger.js + ToLength.js + ToNumber.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + Type.js + ValidateAndApplyPropertyDescriptor.js + ValidateTypedArray.js + WeekDay.js + YearFromTime.js + + +---tables + typed-array-objects.js + + +---2016 + abs.js + AbstractEqualityComparison.js + AbstractRelationalComparison.js + AdvanceStringIndex.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + Call.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterRange.js + CompletePropertyDescriptor.js + CompletionRecord.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateMethodProperty.js + DateFromTime.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnNames.js + floor.js + FromPropertyDescriptor.js + Get.js + GetGlobalObject.js + GetIterator.js + GetMethod.js + GetOwnPropertyKeys.js + GetPrototypeFromConstructor.js + GetSubstitution.js + GetV.js + GetValueFromBuffer.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstanceofOperator.js + IntegerIndexedElementGet.js + IntegerIndexedElementSet.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsGenericDescriptor.js + IsInteger.js + IsPromise.js + IsPropertyDescriptor.js + IsPropertyKey.js + IsRegExp.js + IsWordChar.js + IterableToArrayLike.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorValue.js + MakeDate.js + MakeDay.js + MakeTime.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + ObjectCreate.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinarySetPrototypeOf.js + QuoteJSONString.js + RegExpCreate.js + RegExpExec.js + RequireObjectCoercible.js + SameValue.js + SameValueNonNumber.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionName.js + SetIntegrityLevel.js + SetValueInBuffer.js + SpeciesConstructor.js + SplitMatch.js + StrictEqualityComparison.js + StringCreate.js + SymbolDescriptiveString.js + TestIntegrityLevel.js + thisBooleanValue.js + thisNumberValue.js + thisStringValue.js + thisTimeValue.js + TimeClip.js + TimeFromYear.js + TimeWithinDay.js + ToBoolean.js + ToDateString.js + ToInt16.js + ToInt32.js + ToInt8.js + ToInteger.js + ToLength.js + ToNumber.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + Type.js + TypedArrayCreate.js + TypedArraySpeciesCreate.js + UTF16Decode.js + UTF16Encoding.js + ValidateAndApplyPropertyDescriptor.js + ValidateTypedArray.js + WeekDay.js + YearFromTime.js + + +---tables + typed-array-objects.js + + +---2017 + abs.js + AbstractEqualityComparison.js + AbstractRelationalComparison.js + AdvanceStringIndex.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + Call.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterRange.js + CompletePropertyDescriptor.js + CompletionRecord.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateMethodProperty.js + DateFromTime.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnProperties.js + floor.js + FromPropertyDescriptor.js + Get.js + GetGlobalObject.js + GetIterator.js + GetMethod.js + GetOwnPropertyKeys.js + GetPrototypeFromConstructor.js + GetSubstitution.js + GetV.js + GetValueFromBuffer.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstanceofOperator.js + IntegerIndexedElementGet.js + IntegerIndexedElementSet.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsGenericDescriptor.js + IsInteger.js + IsPromise.js + IsPropertyDescriptor.js + IsPropertyKey.js + IsRegExp.js + IsSharedArrayBuffer.js + IsWordChar.js + IterableToList.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorValue.js + MakeDate.js + MakeDay.js + MakeTime.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + NumberToRawBytes.js + ObjectCreate.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinarySetPrototypeOf.js + OrdinaryToPrimitive.js + QuoteJSONString.js + RawBytesToNumber.js + RegExpCreate.js + RegExpExec.js + RequireObjectCoercible.js + SameValue.js + SameValueNonNumber.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionName.js + SetIntegrityLevel.js + SetValueInBuffer.js + SpeciesConstructor.js + SplitMatch.js + StrictEqualityComparison.js + StringCreate.js + StringGetOwnProperty.js + SymbolDescriptiveString.js + TestIntegrityLevel.js + thisBooleanValue.js + thisNumberValue.js + thisStringValue.js + thisTimeValue.js + TimeClip.js + TimeFromYear.js + TimeWithinDay.js + ToBoolean.js + ToDateString.js + ToIndex.js + ToInt16.js + ToInt32.js + ToInt8.js + ToInteger.js + ToLength.js + ToNumber.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + Type.js + TypedArrayCreate.js + TypedArraySpeciesCreate.js + UTF16Decode.js + UTF16Encoding.js + ValidateAndApplyPropertyDescriptor.js + ValidateAtomicAccess.js + ValidateTypedArray.js + WeekDay.js + WordCharacters.js + YearFromTime.js + + +---tables + typed-array-objects.js + + +---2018 + abs.js + AbstractEqualityComparison.js + AbstractRelationalComparison.js + AdvanceStringIndex.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + AsyncIteratorClose.js + Call.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterRange.js + CompletePropertyDescriptor.js + CompletionRecord.js + CopyDataProperties.js + CreateAsyncFromSyncIterator.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateMethodProperty.js + DateFromTime.js + DateString.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnPropertyNames.js + floor.js + FromPropertyDescriptor.js + Get.js + GetGlobalObject.js + GetIterator.js + GetMethod.js + GetOwnPropertyKeys.js + GetPrototypeFromConstructor.js + GetSubstitution.js + GetV.js + GetValueFromBuffer.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstanceofOperator.js + IntegerIndexedElementGet.js + IntegerIndexedElementSet.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsGenericDescriptor.js + IsInteger.js + IsPromise.js + IsPropertyKey.js + IsRegExp.js + IsSharedArrayBuffer.js + IsStringPrefix.js + IsWordChar.js + IterableToList.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorValue.js + MakeDate.js + MakeDay.js + MakeTime.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + NumberToRawBytes.js + NumberToString.js + ObjectCreate.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinarySetPrototypeOf.js + OrdinaryToPrimitive.js + PromiseResolve.js + QuoteJSONString.js + RawBytesToNumber.js + RegExpCreate.js + RegExpExec.js + RequireObjectCoercible.js + SameValue.js + SameValueNonNumber.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionLength.js + SetFunctionName.js + SetIntegrityLevel.js + SetValueInBuffer.js + SpeciesConstructor.js + SplitMatch.js + StrictEqualityComparison.js + StringCreate.js + StringGetOwnProperty.js + SymbolDescriptiveString.js + TestIntegrityLevel.js + thisBooleanValue.js + thisNumberValue.js + thisStringValue.js + thisSymbolValue.js + thisTimeValue.js + ThrowCompletion.js + TimeClip.js + TimeFromYear.js + TimeString.js + TimeWithinDay.js + TimeZoneString.js + ToBoolean.js + ToDateString.js + ToIndex.js + ToInt16.js + ToInt32.js + ToInt8.js + ToInteger.js + ToLength.js + ToNumber.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + Type.js + TypedArrayCreate.js + TypedArraySpeciesCreate.js + UnicodeEscape.js + UTF16Decode.js + UTF16Encoding.js + ValidateAndApplyPropertyDescriptor.js + ValidateAtomicAccess.js + ValidateTypedArray.js + WeekDay.js + WordCharacters.js + YearFromTime.js + + +---tables + typed-array-objects.js + + +---2019 + abs.js + AbstractEqualityComparison.js + AbstractRelationalComparison.js + AddEntriesFromIterable.js + AdvanceStringIndex.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + AsyncFromSyncIteratorContinuation.js + AsyncIteratorClose.js + Call.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterRange.js + CompletePropertyDescriptor.js + CompletionRecord.js + CopyDataProperties.js + CreateAsyncFromSyncIterator.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateMethodProperty.js + DateFromTime.js + DateString.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnPropertyNames.js + FlattenIntoArray.js + floor.js + FromPropertyDescriptor.js + Get.js + GetGlobalObject.js + GetIterator.js + GetMethod.js + GetOwnPropertyKeys.js + GetPrototypeFromConstructor.js + GetSubstitution.js + GetV.js + GetValueFromBuffer.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstanceofOperator.js + IntegerIndexedElementGet.js + IntegerIndexedElementSet.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsGenericDescriptor.js + IsInteger.js + IsPromise.js + IsPropertyKey.js + IsRegExp.js + IsSharedArrayBuffer.js + IsStringPrefix.js + IsWordChar.js + IterableToList.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorValue.js + MakeDate.js + MakeDay.js + MakeTime.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + NumberToRawBytes.js + NumberToString.js + ObjectCreate.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinarySetPrototypeOf.js + OrdinaryToPrimitive.js + PromiseResolve.js + QuoteJSONString.js + RawBytesToNumber.js + RegExpCreate.js + RegExpExec.js + RequireObjectCoercible.js + SameValue.js + SameValueNonNumber.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionLength.js + SetFunctionName.js + SetIntegrityLevel.js + SetValueInBuffer.js + SpeciesConstructor.js + SplitMatch.js + StrictEqualityComparison.js + StringCreate.js + StringGetOwnProperty.js + SymbolDescriptiveString.js + TestIntegrityLevel.js + thisBooleanValue.js + thisNumberValue.js + thisStringValue.js + thisSymbolValue.js + thisTimeValue.js + ThrowCompletion.js + TimeClip.js + TimeFromYear.js + TimeString.js + TimeWithinDay.js + TimeZoneString.js + ToBoolean.js + ToDateString.js + ToIndex.js + ToInt16.js + ToInt32.js + ToInt8.js + ToInteger.js + ToLength.js + ToNumber.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + TrimString.js + Type.js + TypedArrayCreate.js + TypedArraySpeciesCreate.js + UnicodeEscape.js + UTF16Decode.js + UTF16Encoding.js + ValidateAndApplyPropertyDescriptor.js + ValidateAtomicAccess.js + ValidateTypedArray.js + WeekDay.js + WordCharacters.js + YearFromTime.js + + +---tables + typed-array-objects.js + + +---2020 + abs.js + AbstractEqualityComparison.js + AbstractRelationalComparison.js + AddEntriesFromIterable.js + AdvanceStringIndex.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + AsyncFromSyncIteratorContinuation.js + AsyncIteratorClose.js + BigIntBitwiseOp.js + BinaryAnd.js + BinaryOr.js + BinaryXor.js + Call.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterRange.js + CodePointAt.js + CompletePropertyDescriptor.js + CompletionRecord.js + CopyDataProperties.js + CreateAsyncFromSyncIterator.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateMethodProperty.js + CreateRegExpStringIterator.js + DateFromTime.js + DateString.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnPropertyNames.js + FlattenIntoArray.js + floor.js + FromPropertyDescriptor.js + Get.js + GetGlobalObject.js + GetIterator.js + GetMethod.js + GetOwnPropertyKeys.js + GetPrototypeFromConstructor.js + GetSubstitution.js + GetV.js + GetValueFromBuffer.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstanceofOperator.js + IntegerIndexedElementGet.js + IntegerIndexedElementSet.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsBigIntElementType.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsGenericDescriptor.js + IsInteger.js + IsNonNegativeInteger.js + IsNoTearConfiguration.js + IsPromise.js + IsPropertyKey.js + IsRegExp.js + IsSharedArrayBuffer.js + IsStringPrefix.js + IsUnclampedIntegerElementType.js + IsUnsignedElementType.js + IsValidIntegerIndex.js + IsWordChar.js + IterableToList.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorValue.js + LengthOfArrayLike.js + MakeDate.js + MakeDay.js + MakeTime.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + NumberBitwiseOp.js + NumberToBigInt.js + NumericToRawBytes.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinaryObjectCreate.js + OrdinarySetPrototypeOf.js + OrdinaryToPrimitive.js + PromiseResolve.js + QuoteJSONString.js + RawBytesToNumeric.js + RegExpCreate.js + RegExpExec.js + RequireObjectCoercible.js + SameValue.js + SameValueNonNumeric.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionLength.js + SetFunctionName.js + SetIntegrityLevel.js + SetValueInBuffer.js + SpeciesConstructor.js + SplitMatch.js + StrictEqualityComparison.js + StringCreate.js + StringGetOwnProperty.js + StringPad.js + StringToBigInt.js + SymbolDescriptiveString.js + TestIntegrityLevel.js + thisBigIntValue.js + thisBooleanValue.js + thisNumberValue.js + thisStringValue.js + thisSymbolValue.js + thisTimeValue.js + ThrowCompletion.js + TimeClip.js + TimeFromYear.js + TimeString.js + TimeWithinDay.js + TimeZoneString.js + ToBigInt.js + ToBigInt64.js + ToBigUint64.js + ToBoolean.js + ToDateString.js + ToIndex.js + ToInt16.js + ToInt32.js + ToInt8.js + ToInteger.js + ToLength.js + ToNumber.js + ToNumeric.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + TrimString.js + Type.js + TypedArrayCreate.js + TypedArraySpeciesCreate.js + UnicodeEscape.js + UTF16DecodeString.js + UTF16DecodeSurrogatePair.js + UTF16Encoding.js + ValidateAndApplyPropertyDescriptor.js + ValidateAtomicAccess.js + ValidateTypedArray.js + WeekDay.js + WordCharacters.js + YearFromTime.js + + +---BigInt + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + sameValue.js + sameValueZero.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---Number + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + sameValue.js + sameValueZero.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---tables + typed-array-objects.js + + +---2021 + abs.js + AbstractEqualityComparison.js + AbstractRelationalComparison.js + AddEntriesFromIterable.js + AddToKeptObjects.js + AdvanceStringIndex.js + ApplyStringOrNumericBinaryOperator.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + AsyncFromSyncIteratorContinuation.js + AsyncIteratorClose.js + BigIntBitwiseOp.js + BinaryAnd.js + BinaryOr.js + BinaryXor.js + ByteListBitwiseOp.js + ByteListEqual.js + Call.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterRange.js + clamp.js + ClearKeptObjects.js + CloneArrayBuffer.js + CodePointAt.js + CodePointsToString.js + CompletePropertyDescriptor.js + CompletionRecord.js + CopyDataProperties.js + CreateAsyncFromSyncIterator.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateMethodProperty.js + CreateRegExpStringIterator.js + DateFromTime.js + DateString.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnPropertyNames.js + FlattenIntoArray.js + floor.js + FromPropertyDescriptor.js + Get.js + GetGlobalObject.js + GetIterator.js + GetMethod.js + GetOwnPropertyKeys.js + GetPromiseResolve.js + GetPrototypeFromConstructor.js + GetSubstitution.js + GetV.js + GetValueFromBuffer.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstanceofOperator.js + IntegerIndexedElementGet.js + IntegerIndexedElementSet.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsBigIntElementType.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsGenericDescriptor.js + IsIntegralNumber.js + IsNoTearConfiguration.js + IsPromise.js + IsPropertyKey.js + IsRegExp.js + IsSharedArrayBuffer.js + IsStringPrefix.js + IsUnclampedIntegerElementType.js + IsUnsignedElementType.js + IsValidIntegerIndex.js + IsWordChar.js + IterableToList.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorValue.js + LengthOfArrayLike.js + MakeDate.js + MakeDay.js + MakeTime.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + NumberBitwiseOp.js + NumberToBigInt.js + NumericToRawBytes.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinaryObjectCreate.js + OrdinarySetPrototypeOf.js + OrdinaryToPrimitive.js + PromiseResolve.js + QuoteJSONString.js + RawBytesToNumeric.js + RegExpCreate.js + RegExpExec.js + RequireObjectCoercible.js + SameValue.js + SameValueNonNumeric.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionLength.js + SetFunctionName.js + SetIntegrityLevel.js + SetTypedArrayFromArrayLike.js + SetTypedArrayFromTypedArray.js + SetValueInBuffer.js + SpeciesConstructor.js + SplitMatch.js + StrictEqualityComparison.js + StringCreate.js + StringGetOwnProperty.js + StringIndexOf.js + StringPad.js + StringToBigInt.js + StringToCodePoints.js + substring.js + SymbolDescriptiveString.js + TestIntegrityLevel.js + thisBigIntValue.js + thisBooleanValue.js + thisNumberValue.js + thisStringValue.js + thisSymbolValue.js + thisTimeValue.js + ThrowCompletion.js + TimeClip.js + TimeFromYear.js + TimeString.js + TimeWithinDay.js + TimeZoneString.js + ToBigInt.js + ToBigInt64.js + ToBigUint64.js + ToBoolean.js + ToDateString.js + ToIndex.js + ToInt16.js + ToInt32.js + ToInt8.js + ToIntegerOrInfinity.js + ToLength.js + ToNumber.js + ToNumeric.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + TrimString.js + Type.js + TypedArrayCreate.js + TypedArraySpeciesCreate.js + UnicodeEscape.js + UTF16EncodeCodePoint.js + UTF16SurrogatePairToCodePoint.js + ValidateAndApplyPropertyDescriptor.js + ValidateAtomicAccess.js + ValidateIntegerTypedArray.js + ValidateTypedArray.js + WeakRefDeref.js + WeekDay.js + WordCharacters.js + YearFromTime.js + + +---BigInt + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + sameValue.js + sameValueZero.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---Number + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + sameValue.js + sameValueZero.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---tables + typed-array-objects.js + + +---2022 + abs.js + AddEntriesFromIterable.js + AddToKeptObjects.js + AdvanceStringIndex.js + ApplyStringOrNumericBinaryOperator.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + AsyncFromSyncIteratorContinuation.js + AsyncIteratorClose.js + BigIntBitwiseOp.js + BinaryAnd.js + BinaryOr.js + BinaryXor.js + ByteListBitwiseOp.js + ByteListEqual.js + Call.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterRange.js + clamp.js + ClearKeptObjects.js + CloneArrayBuffer.js + CodePointAt.js + CodePointsToString.js + CompletePropertyDescriptor.js + CompletionRecord.js + CopyDataProperties.js + CreateAsyncFromSyncIterator.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateMethodProperty.js + CreateNonEnumerableDataPropertyOrThrow.js + CreateRegExpStringIterator.js + DateFromTime.js + DateString.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefineMethodProperty.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnPropertyNames.js + FlattenIntoArray.js + floor.js + FromPropertyDescriptor.js + Get.js + GetGlobalObject.js + GetIterator.js + GetMatchIndexPair.js + GetMatchString.js + GetMethod.js + GetOwnPropertyKeys.js + GetPromiseResolve.js + GetPrototypeFromConstructor.js + GetStringIndex.js + GetSubstitution.js + GetV.js + GetValueFromBuffer.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstallErrorCause.js + InstanceofOperator.js + IntegerIndexedElementGet.js + IntegerIndexedElementSet.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsBigIntElementType.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsGenericDescriptor.js + IsIntegralNumber.js + IsLessThan.js + IsLooselyEqual.js + IsNoTearConfiguration.js + IsPromise.js + IsPropertyKey.js + IsRegExp.js + IsSharedArrayBuffer.js + IsStrictlyEqual.js + IsStringPrefix.js + IsStringWellFormedUnicode.js + IsUnclampedIntegerElementType.js + IsUnsignedElementType.js + IsValidIntegerIndex.js + IsWordChar.js + IterableToList.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorValue.js + LengthOfArrayLike.js + MakeDate.js + MakeDay.js + MakeMatchIndicesIndexPairArray.js + MakeTime.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + NumberBitwiseOp.js + NumberToBigInt.js + NumericToRawBytes.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinaryObjectCreate.js + OrdinarySetPrototypeOf.js + OrdinaryToPrimitive.js + PromiseResolve.js + QuoteJSONString.js + RawBytesToNumeric.js + RegExpCreate.js + RegExpExec.js + RegExpHasFlag.js + RequireObjectCoercible.js + SameValue.js + SameValueNonNumeric.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionLength.js + SetFunctionName.js + SetIntegrityLevel.js + SetTypedArrayFromArrayLike.js + SetTypedArrayFromTypedArray.js + SetValueInBuffer.js + SortIndexedProperties.js + SpeciesConstructor.js + StringCreate.js + StringGetOwnProperty.js + StringIndexOf.js + StringPad.js + StringToBigInt.js + StringToCodePoints.js + StringToNumber.js + substring.js + SymbolDescriptiveString.js + TestIntegrityLevel.js + thisBigIntValue.js + thisBooleanValue.js + thisNumberValue.js + thisStringValue.js + thisSymbolValue.js + thisTimeValue.js + ThrowCompletion.js + TimeClip.js + TimeFromYear.js + TimeString.js + TimeWithinDay.js + TimeZoneString.js + ToBigInt.js + ToBigInt64.js + ToBigUint64.js + ToBoolean.js + ToDateString.js + ToIndex.js + ToInt16.js + ToInt32.js + ToInt8.js + ToIntegerOrInfinity.js + ToLength.js + ToNumber.js + ToNumeric.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + ToZeroPaddedDecimalString.js + TrimString.js + Type.js + TypedArrayCreate.js + TypedArrayElementSize.js + TypedArrayElementType.js + TypedArraySpeciesCreate.js + UnicodeEscape.js + UTF16EncodeCodePoint.js + UTF16SurrogatePairToCodePoint.js + ValidateAndApplyPropertyDescriptor.js + ValidateAtomicAccess.js + ValidateIntegerTypedArray.js + ValidateTypedArray.js + WeakRefDeref.js + WeekDay.js + WordCharacters.js + YearFromTime.js + + +---BigInt + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + sameValue.js + sameValueZero.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---Number + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + sameValue.js + sameValueZero.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---tables + typed-array-objects.js + + +---2023 + abs.js + AddEntriesFromIterable.js + AddToKeptObjects.js + AdvanceStringIndex.js + ApplyStringOrNumericBinaryOperator.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + AsyncFromSyncIteratorContinuation.js + AsyncIteratorClose.js + BigIntBitwiseOp.js + BinaryAnd.js + BinaryOr.js + BinaryXor.js + ByteListBitwiseOp.js + ByteListEqual.js + Call.js + CanBeHeldWeakly.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterRange.js + clamp.js + ClearKeptObjects.js + CloneArrayBuffer.js + CodePointAt.js + CodePointsToString.js + CompareArrayElements.js + CompareTypedArrayElements.js + CompletePropertyDescriptor.js + CompletionRecord.js + CopyDataProperties.js + CreateAsyncFromSyncIterator.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateMethodProperty.js + CreateNonEnumerableDataPropertyOrThrow.js + CreateRegExpStringIterator.js + DateFromTime.js + DateString.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefaultTimeZone.js + DefineMethodProperty.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnProperties.js + FindViaPredicate.js + FlattenIntoArray.js + floor.js + FromPropertyDescriptor.js + Get.js + GetGlobalObject.js + GetIterator.js + GetIteratorFromMethod.js + GetMatchIndexPair.js + GetMatchString.js + GetMethod.js + GetNamedTimeZoneEpochNanoseconds.js + GetOwnPropertyKeys.js + GetPromiseResolve.js + GetPrototypeFromConstructor.js + GetStringIndex.js + GetSubstitution.js + GetUTCEpochNanoseconds.js + GetV.js + GetValueFromBuffer.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstallErrorCause.js + InstanceofOperator.js + IntegerIndexedElementGet.js + IntegerIndexedElementSet.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsBigIntElementType.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsGenericDescriptor.js + IsIntegralNumber.js + IsLessThan.js + IsLooselyEqual.js + IsNoTearConfiguration.js + IsPromise.js + IsPropertyKey.js + IsRegExp.js + IsSharedArrayBuffer.js + IsStrictlyEqual.js + IsStringWellFormedUnicode.js + IsTimeZoneOffsetString.js + IsUnclampedIntegerElementType.js + IsUnsignedElementType.js + IsValidIntegerIndex.js + IsWordChar.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorToList.js + IteratorValue.js + KeyForSymbol.js + LengthOfArrayLike.js + MakeDate.js + MakeDay.js + MakeMatchIndicesIndexPairArray.js + MakeTime.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + NumberBitwiseOp.js + NumberToBigInt.js + NumericToRawBytes.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinaryObjectCreate.js + OrdinarySetPrototypeOf.js + OrdinaryToPrimitive.js + ParseHexOctet.js + PromiseResolve.js + QuoteJSONString.js + RawBytesToNumeric.js + RegExpCreate.js + RegExpExec.js + RegExpHasFlag.js + RequireObjectCoercible.js + SameValue.js + SameValueNonNumber.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionLength.js + SetFunctionName.js + SetIntegrityLevel.js + SetTypedArrayFromArrayLike.js + SetTypedArrayFromTypedArray.js + SetValueInBuffer.js + SortIndexedProperties.js + SpeciesConstructor.js + StringCreate.js + StringGetOwnProperty.js + StringIndexOf.js + StringPad.js + StringToBigInt.js + StringToCodePoints.js + StringToNumber.js + substring.js + SymbolDescriptiveString.js + TestIntegrityLevel.js + thisBigIntValue.js + thisBooleanValue.js + thisNumberValue.js + thisStringValue.js + thisSymbolValue.js + thisTimeValue.js + ThrowCompletion.js + TimeClip.js + TimeFromYear.js + TimeString.js + TimeWithinDay.js + TimeZoneString.js + ToBigInt.js + ToBigInt64.js + ToBigUint64.js + ToBoolean.js + ToDateString.js + ToIndex.js + ToInt16.js + ToInt32.js + ToInt8.js + ToIntegerOrInfinity.js + ToLength.js + ToNumber.js + ToNumeric.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + ToZeroPaddedDecimalString.js + TrimString.js + truncate.js + Type.js + TypedArrayCreate.js + TypedArrayCreateSameType.js + TypedArrayElementSize.js + TypedArrayElementType.js + TypedArraySpeciesCreate.js + UnicodeEscape.js + UTF16EncodeCodePoint.js + UTF16SurrogatePairToCodePoint.js + ValidateAndApplyPropertyDescriptor.js + ValidateAtomicAccess.js + ValidateIntegerTypedArray.js + ValidateTypedArray.js + WeakRefDeref.js + WeekDay.js + WordCharacters.js + YearFromTime.js + + +---BigInt + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---Number + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + sameValue.js + sameValueZero.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---tables + typed-array-objects.js + + +---2024 + abs.js + AddEntriesFromIterable.js + AddToKeptObjects.js + AddValueToKeyedGroup.js + AdvanceStringIndex.js + AllCharacters.js + ApplyStringOrNumericBinaryOperator.js + ArrayBufferByteLength.js + ArrayBufferCopyAndDetach.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + AsyncFromSyncIteratorContinuation.js + AsyncIteratorClose.js + BigIntBitwiseOp.js + BinaryAnd.js + BinaryOr.js + BinaryXor.js + ByteListBitwiseOp.js + ByteListEqual.js + Call.js + CanBeHeldWeakly.js + Canonicalize.js + CanonicalNumericIndexString.js + CharacterComplement.js + CharacterRange.js + clamp.js + ClearKeptObjects.js + CloneArrayBuffer.js + CodePointAt.js + CodePointsToString.js + CompareArrayElements.js + CompareTypedArrayElements.js + CompletePropertyDescriptor.js + CompletionRecord.js + CopyDataProperties.js + CreateAsyncFromSyncIterator.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIterResultObject.js + CreateListFromArrayLike.js + CreateNonEnumerableDataPropertyOrThrow.js + CreateRegExpStringIterator.js + DateFromTime.js + DateString.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefineMethodProperty.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EnumerableOwnProperties.js + FindViaPredicate.js + FlattenIntoArray.js + floor.js + FromPropertyDescriptor.js + Get.js + GetArrayBufferMaxByteLengthOption.js + GetGlobalObject.js + GetIterator.js + GetIteratorFromMethod.js + GetMatchIndexPair.js + GetMatchString.js + GetMethod.js + GetNamedTimeZoneEpochNanoseconds.js + GetOwnPropertyKeys.js + GetPromiseResolve.js + GetPrototypeFromConstructor.js + GetStringIndex.js + GetSubstitution.js + GetUTCEpochNanoseconds.js + GetV.js + GetValueFromBuffer.js + GetViewByteLength.js + GroupBy.js + HasEitherUnicodeFlag.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + InLeapYear.js + InstallErrorCause.js + InstanceofOperator.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsArrayBufferViewOutOfBounds.js + IsBigIntElementType.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsFixedLengthArrayBuffer.js + IsGenericDescriptor.js + IsIntegralNumber.js + IsLessThan.js + IsLooselyEqual.js + IsNoTearConfiguration.js + IsPromise.js + IsPropertyKey.js + IsRegExp.js + IsSharedArrayBuffer.js + IsStrictlyEqual.js + IsStringWellFormedUnicode.js + IsTimeZoneOffsetString.js + IsTypedArrayOutOfBounds.js + IsUnclampedIntegerElementType.js + IsUnsignedElementType.js + IsValidIntegerIndex.js + IsViewOutOfBounds.js + IsWordChar.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorStepValue.js + IteratorToList.js + IteratorValue.js + KeyForSymbol.js + LengthOfArrayLike.js + MakeDataViewWithBufferWitnessRecord.js + MakeDate.js + MakeDay.js + MakeFullYear.js + MakeMatchIndicesIndexPairArray.js + MakeTime.js + MakeTypedArrayWithBufferWitnessRecord.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + NumberBitwiseOp.js + NumberToBigInt.js + NumericToRawBytes.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinaryObjectCreate.js + OrdinarySetPrototypeOf.js + OrdinaryToPrimitive.js + ParseHexOctet.js + PromiseResolve.js + QuoteJSONString.js + RawBytesToNumeric.js + RegExpCreate.js + RegExpExec.js + RegExpHasFlag.js + RequireObjectCoercible.js + SameValue.js + SameValueNonNumber.js + SameValueZero.js + SecFromTime.js + Set.js + SetFunctionLength.js + SetFunctionName.js + SetIntegrityLevel.js + SetTypedArrayFromArrayLike.js + SetTypedArrayFromTypedArray.js + SetValueInBuffer.js + SortIndexedProperties.js + SpeciesConstructor.js + StringCreate.js + StringGetOwnProperty.js + StringIndexOf.js + StringPad.js + StringPaddingBuiltinsImpl.js + StringToBigInt.js + StringToCodePoints.js + StringToNumber.js + substring.js + SymbolDescriptiveString.js + SystemTimeZoneIdentifier.js + TestIntegrityLevel.js + ThisBigIntValue.js + ThisBooleanValue.js + ThisNumberValue.js + ThisStringValue.js + ThisSymbolValue.js + ThrowCompletion.js + TimeClip.js + TimeFromYear.js + TimeString.js + TimeWithinDay.js + TimeZoneString.js + ToBigInt.js + ToBigInt64.js + ToBigUint64.js + ToBoolean.js + ToDateString.js + ToIndex.js + ToInt16.js + ToInt32.js + ToInt8.js + ToIntegerOrInfinity.js + ToLength.js + ToNumber.js + ToNumeric.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + ToZeroPaddedDecimalString.js + TrimString.js + truncate.js + Type.js + TypedArrayByteLength.js + TypedArrayCreateFromConstructor.js + TypedArrayCreateSameType.js + TypedArrayElementSize.js + TypedArrayElementType.js + TypedArrayGetElement.js + TypedArrayLength.js + TypedArraySetElement.js + TypedArraySpeciesCreate.js + UnicodeEscape.js + UTF16EncodeCodePoint.js + UTF16SurrogatePairToCodePoint.js + ValidateAndApplyPropertyDescriptor.js + ValidateAtomicAccess.js + ValidateAtomicAccessOnIntegerTypedArray.js + ValidateIntegerTypedArray.js + ValidateTypedArray.js + WeakRefDeref.js + WeekDay.js + WordCharacters.js + YearFromTime.js + + +---BigInt + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---Number + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + sameValue.js + sameValueZero.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---tables + typed-array-objects.js + + +---2025 + abs.js + AddEntriesFromIterable.js + AddToKeptObjects.js + AddValueToKeyedGroup.js + AdvanceStringIndex.js + AllCharacters.js + ApplyStringOrNumericBinaryOperator.js + ArrayBufferByteLength.js + ArrayBufferCopyAndDetach.js + ArrayCreate.js + ArraySetLength.js + ArraySpeciesCreate.js + AsyncFromSyncIteratorContinuation.js + AsyncIteratorClose.js + BigIntBitwiseOp.js + BinaryAnd.js + BinaryOr.js + BinaryXor.js + ByteListBitwiseOp.js + ByteListEqual.js + Call.js + CanBeHeldWeakly.js + Canonicalize.js + CanonicalizeKeyedCollectionKey.js + CanonicalNumericIndexString.js + CharacterComplement.js + CharacterRange.js + clamp.js + ClearKeptObjects.js + CloneArrayBuffer.js + CodePointAt.js + CodePointsToString.js + CompareArrayElements.js + CompareTypedArrayElements.js + CompletePropertyDescriptor.js + CompletionRecord.js + CopyDataProperties.js + CreateAsyncFromSyncIterator.js + CreateDataProperty.js + CreateDataPropertyOrThrow.js + CreateHTML.js + CreateIteratorFromClosure.js + CreateIteratorResultObject.js + CreateListFromArrayLike.js + CreateNonEnumerableDataPropertyOrThrow.js + CreateRegExpStringIterator.js + DateFromTime.js + DateString.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + DefineMethodProperty.js + DefinePropertyOrThrow.js + DeletePropertyOrThrow.js + DetachArrayBuffer.js + EncodeForRegExpEscape.js + EnumerableOwnProperties.js + FindViaPredicate.js + FlattenIntoArray.js + floor.js + FromPropertyDescriptor.js + GeneratorResume.js + GeneratorResumeAbrupt.js + GeneratorStart.js + GeneratorValidate.js + Get.js + GetArrayBufferMaxByteLengthOption.js + GetGlobalObject.js + GetIterator.js + GetIteratorDirect.js + GetIteratorFlattenable.js + GetIteratorFromMethod.js + GetMatchIndexPair.js + GetMatchString.js + GetMethod.js + GetNamedTimeZoneEpochNanoseconds.js + GetOwnPropertyKeys.js + GetPromiseResolve.js + GetPrototypeFromConstructor.js + GetSetRecord.js + GetStringIndex.js + GetSubstitution.js + GetUTCEpochNanoseconds.js + GetV.js + GetValueFromBuffer.js + GetViewByteLength.js + GroupBy.js + HasEitherUnicodeFlag.js + HasOwnProperty.js + HasProperty.js + HourFromTime.js + IfAbruptCloseIterator.js + InLeapYear.js + InstallErrorCause.js + InstanceofOperator.js + InternalizeJSONProperty.js + Invoke.js + IsAccessorDescriptor.js + IsArray.js + IsArrayBufferViewOutOfBounds.js + IsBigIntElementType.js + IsCallable.js + IsCompatiblePropertyDescriptor.js + IsConcatSpreadable.js + IsConstructor.js + IsDataDescriptor.js + IsDetachedBuffer.js + IsExtensible.js + IsFixedLengthArrayBuffer.js + IsGenericDescriptor.js + IsLessThan.js + IsLooselyEqual.js + IsNoTearConfiguration.js + IsPromise.js + IsRegExp.js + IsSharedArrayBuffer.js + IsStrictlyEqual.js + IsStringWellFormedUnicode.js + IsTimeZoneOffsetString.js + IsTypedArrayFixedLength.js + IsTypedArrayOutOfBounds.js + IsUnclampedIntegerElementType.js + IsUnsignedElementType.js + IsValidIntegerIndex.js + IsViewOutOfBounds.js + IsWordChar.js + IteratorClose.js + IteratorComplete.js + IteratorNext.js + IteratorStep.js + IteratorStepValue.js + IteratorToList.js + IteratorValue.js + KeyForSymbol.js + LengthOfArrayLike.js + MakeDataViewWithBufferWitnessRecord.js + MakeDate.js + MakeDay.js + MakeFullYear.js + MakeMatchIndicesIndexPairArray.js + MakeTime.js + MakeTypedArrayWithBufferWitnessRecord.js + max.js + min.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + NewPromiseCapability.js + NormalCompletion.js + NumberBitwiseOp.js + NumberToBigInt.js + NumericToRawBytes.js + ObjectDefineProperties.js + OrdinaryCreateFromConstructor.js + OrdinaryDefineOwnProperty.js + OrdinaryGetOwnProperty.js + OrdinaryGetPrototypeOf.js + OrdinaryHasInstance.js + OrdinaryHasProperty.js + OrdinaryObjectCreate.js + OrdinarySetPrototypeOf.js + OrdinaryToPrimitive.js + ParseHexOctet.js + PromiseResolve.js + QuoteJSONString.js + RawBytesToNumeric.js + RegExpCreate.js + RegExpExec.js + RegExpHasFlag.js + RequireObjectCoercible.js + ReturnCompletion.js + SameType.js + SameValue.js + SameValueNonNumber.js + SameValueZero.js + SecFromTime.js + Set.js + SetDataHas.js + SetDataIndex.js + SetDataSize.js + SetFunctionLength.js + SetFunctionName.js + SetIntegrityLevel.js + SetterThatIgnoresPrototypeProperties.js + SetTypedArrayFromArrayLike.js + SetTypedArrayFromTypedArray.js + SetValueInBuffer.js + SortIndexedProperties.js + SpeciesConstructor.js + StringCreate.js + StringGetOwnProperty.js + StringIndexOf.js + StringLastIndexOf.js + StringPad.js + StringPaddingBuiltinsImpl.js + StringToBigInt.js + StringToCodePoints.js + StringToNumber.js + substring.js + SymbolDescriptiveString.js + SystemTimeZoneIdentifier.js + TestIntegrityLevel.js + ThisBigIntValue.js + ThisBooleanValue.js + ThisNumberValue.js + ThisStringValue.js + ThisSymbolValue.js + ThrowCompletion.js + TimeClip.js + TimeFromYear.js + TimeString.js + TimeWithinDay.js + TimeZoneString.js + ToBigInt.js + ToBigInt64.js + ToBigUint64.js + ToBoolean.js + ToDateString.js + ToIndex.js + ToInt16.js + ToInt32.js + ToInt8.js + ToIntegerOrInfinity.js + ToLength.js + ToNumber.js + ToNumeric.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToPropertyKey.js + ToString.js + ToUint16.js + ToUint32.js + ToUint8.js + ToUint8Clamp.js + ToZeroPaddedDecimalString.js + TrimString.js + truncate.js + TypedArrayByteLength.js + TypedArrayCreateFromConstructor.js + TypedArrayCreateSameType.js + TypedArrayElementSize.js + TypedArrayElementType.js + TypedArrayGetElement.js + TypedArrayLength.js + TypedArraySetElement.js + TypedArraySpeciesCreate.js + UnicodeEscape.js + UpdateModifiers.js + UTF16EncodeCodePoint.js + UTF16SurrogatePairToCodePoint.js + ValidateAndApplyPropertyDescriptor.js + ValidateAtomicAccess.js + ValidateAtomicAccessOnIntegerTypedArray.js + ValidateIntegerTypedArray.js + ValidateTypedArray.js + WeakRefDeref.js + WeekDay.js + WordCharacters.js + YearFromTime.js + + +---BigInt + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---Number + add.js + bitwiseAND.js + bitwiseNOT.js + bitwiseOR.js + bitwiseXOR.js + divide.js + equal.js + exponentiate.js + index.js + leftShift.js + lessThan.js + multiply.js + remainder.js + sameValue.js + sameValueZero.js + signedRightShift.js + subtract.js + toString.js + unaryMinus.js + unsignedRightShift.js + + +---tables + typed-array-objects.js + + +---5 + abs.js + AbstractEqualityComparison.js + AbstractRelationalComparison.js + Canonicalize.js + CheckObjectCoercible.js + DateFromTime.js + Day.js + DayFromYear.js + DaysInYear.js + DayWithinYear.js + floor.js + FromPropertyDescriptor.js + HourFromTime.js + InLeapYear.js + IsAccessorDescriptor.js + IsCallable.js + IsDataDescriptor.js + IsGenericDescriptor.js + IsPropertyDescriptor.js + MakeDate.js + MakeDay.js + MakeTime.js + MinFromTime.js + modulo.js + MonthFromTime.js + msFromTime.js + SameValue.js + SecFromTime.js + StrictEqualityComparison.js + TimeClip.js + TimeFromYear.js + TimeWithinDay.js + ToBoolean.js + ToInt32.js + ToInteger.js + ToNumber.js + ToObject.js + ToPrimitive.js + ToPropertyDescriptor.js + ToString.js + ToUint16.js + ToUint32.js + Type.js + WeekDay.js + YearFromTime.js + + +---helpers + assertRecord.js + assign.js + bytesAsFloat16.js + bytesAsFloat32.js + bytesAsFloat64.js + bytesAsInteger.js + callBind.js + callBound.js + caseFolding.json + CharSet.js + defaultEndianness.js + DefineOwnProperty.js + every.js + forEach.js + fractionToBinaryString.js + fromPropertyDescriptor.js + getInferredName.js + getIteratorMethod.js + getOwnPropertyDescriptor.js + getProto.js + getSymbolDescription.js + integerToNBytes.js + intToBinaryString.js + isAbstractClosure.js + IsArray.js + isByteValue.js + isCodePoint.js + isFinite.js + isFullyPopulatedPropertyDescriptor.js + isInteger.js + isLeadingSurrogate.js + isLineTerminator.js + isNaN.js + isNegativeZero.js + isObject.js + isPrefixOf.js + isPrimitive.js + isPropertyKey.js + isSamePropertyDescriptor.js + isSameType.js + isStringOrHole.js + isStringOrUndefined.js + isTrailingSurrogate.js + maxSafeInteger.js + maxValue.js + mod.js + modBigInt.js + OwnPropertyKeys.js + padTimeComponent.js + reduce.js + regexTester.js + setProto.js + sign.js + some.js + timeConstants.js + timeValue.js + typedArrayConstructors.js + valueToFloat16Bytes.js + valueToFloat32Bytes.js + valueToFloat64Bytes.js + + +---records + async-generator-request-record.js + data-view-with-buffer-witness-record.js + iterator-record-2023.js + iterator-record.js + match-record.js + promise-capability-record.js + property-descriptor.js + regexp-record.js + set-record.js + typed-array-with-buffer-witness-record.js + + +---operations + 2015.js + 2016.js + 2017.js + 2018.js + 2019.js + 2020.js + 2021.js + 2022.js + 2023.js + 2024.js + 2025.js + es5.js + + +---es-define-property + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---es-errors + .eslintrc + CHANGELOG.md + eval.d.ts + eval.js + index.d.ts + index.js + LICENSE + package.json + range.d.ts + range.js + README.md + ref.d.ts + ref.js + syntax.d.ts + syntax.js + tsconfig.json + type.d.ts + type.js + uri.d.ts + uri.js + + +---.github + FUNDING.yml + + +---test + index.js + + +---es-iterator-helpers + .eslintrc + .nycrc + auto.js + CHANGELOG.md + index.json + LICENSE + package.json + README.md + shim.js + + +---.github + FUNDING.yml + + +---aos + CreateIteratorFromClosure.js + GeneratorResume.js + GeneratorResumeAbrupt.js + GeneratorStart.js + GeneratorValidate.js + GetIteratorDirect.js + GetIteratorFlattenable.js + GetOptionsObject.js + IfAbruptCloseIterators.js + IteratorCloseAll.js + IteratorZip.js + ReturnCompletion.js + + +---Iterator + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.concat + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.from + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.constructor + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.drop + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.every + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.filter + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.find + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.flatMap + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.forEach + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.map + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.reduce + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.some + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.take + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.prototype.toArray + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.zip + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---Iterator.zipKeyed + auto.js + implementation.js + index.js + polyfill.js + shim.js + + +---IteratorHelperPrototype + index.js + + +---test + implementation.js + index.js + Iterator.concat.js + Iterator.from.js + Iterator.js + Iterator.prototype.constructor.js + Iterator.prototype.drop.js + Iterator.prototype.every.js + Iterator.prototype.filter.js + Iterator.prototype.find.js + Iterator.prototype.flatMap.js + Iterator.prototype.forEach.js + Iterator.prototype.js + Iterator.prototype.map.js + Iterator.prototype.reduce.js + Iterator.prototype.some.js + Iterator.prototype.take.js + Iterator.prototype.toArray.js + Iterator.zip.js + Iterator.zipKeyed.js + shimmed.js + tests.js + + +---helpers + testIterator.js + + +---WrapForValidIteratorPrototype + index.js + + +---es-object-atoms + .eslintrc + CHANGELOG.md + index.d.ts + index.js + isObject.d.ts + isObject.js + LICENSE + package.json + README.md + RequireObjectCoercible.d.ts + RequireObjectCoercible.js + ToObject.d.ts + ToObject.js + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---es-set-tostringtag + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---test + index.js + + +---es-shim-unscopables + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + with.js + + +---es-to-primitive + .editorconfig + .eslintignore + .eslintrc + .nycrc + CHANGELOG.md + es2015.d.ts + es2015.js + es5.d.ts + es5.js + es6.d.ts + es6.js + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---helpers + isPrimitive.js + + +---test + es2015.js + es5.js + es6.js + index.js + + +---escalade + index.d.mts + index.d.ts + license + package.json + readme.md + + +---dist + index.js + index.mjs + + +---sync + index.d.mts + index.d.ts + index.js + index.mjs + + +---escape-string-regexp + index.d.ts + index.js + license + package.json + readme.md + + +---eslint + LICENSE + package.json + README.md + + +---bin + eslint.js + + +---conf + default-cli-options.js + ecma-version.js + globals.js + replacements.json + rule-type-list.json + + +---lib + api.js + cli.js + config-api.js + options.js + universal.js + unsupported-api.js + + +---cli-engine + cli-engine.js + file-enumerator.js + hash.js + index.js + lint-result-cache.js + load-rules.js + + +---formatters + formatters-meta.json + html.js + json-with-metadata.js + json.js + stylish.js + + +---config + config-loader.js + config.js + default-config.js + flat-config-array.js + flat-config-schema.js + + +---eslint + eslint-helpers.js + eslint.js + index.js + legacy-eslint.js + worker.js + + +---languages + +---js + index.js + validate-language-options.js + + +---source-code + index.js + source-code.js + + +---token-store + backward-token-comment-cursor.js + backward-token-cursor.js + cursor.js + cursors.js + decorative-cursor.js + filter-cursor.js + forward-token-comment-cursor.js + forward-token-cursor.js + index.js + limit-cursor.js + padded-token-cursor.js + skip-cursor.js + utils.js + + +---linter + apply-disable-directives.js + esquery.js + file-context.js + file-report.js + index.js + interpolate.js + linter.js + rule-fixer.js + rules.js + source-code-fixer.js + source-code-traverser.js + source-code-visitor.js + timing.js + vfile.js + + +---code-path-analysis + code-path-analyzer.js + code-path-segment.js + code-path-state.js + code-path.js + debug-helpers.js + fork-context.js + id-generator.js + + +---rule-tester + index.js + rule-tester.js + + +---rules + accessor-pairs.js + array-bracket-newline.js + array-bracket-spacing.js + array-callback-return.js + array-element-newline.js + arrow-body-style.js + arrow-parens.js + arrow-spacing.js + block-scoped-var.js + block-spacing.js + brace-style.js + callback-return.js + camelcase.js + capitalized-comments.js + class-methods-use-this.js + comma-dangle.js + comma-spacing.js + comma-style.js + complexity.js + computed-property-spacing.js + consistent-return.js + consistent-this.js + constructor-super.js + curly.js + default-case-last.js + default-case.js + default-param-last.js + dot-location.js + dot-notation.js + eol-last.js + eqeqeq.js + for-direction.js + func-call-spacing.js + func-name-matching.js + func-names.js + func-style.js + function-call-argument-newline.js + function-paren-newline.js + generator-star-spacing.js + getter-return.js + global-require.js + grouped-accessor-pairs.js + guard-for-in.js + handle-callback-err.js + id-blacklist.js + id-denylist.js + id-length.js + id-match.js + implicit-arrow-linebreak.js + indent-legacy.js + indent.js + index.js + init-declarations.js + jsx-quotes.js + key-spacing.js + keyword-spacing.js + line-comment-position.js + linebreak-style.js + lines-around-comment.js + lines-around-directive.js + lines-between-class-members.js + logical-assignment-operators.js + max-classes-per-file.js + max-depth.js + max-len.js + max-lines-per-function.js + max-lines.js + max-nested-callbacks.js + max-params.js + max-statements-per-line.js + max-statements.js + multiline-comment-style.js + multiline-ternary.js + new-cap.js + new-parens.js + newline-after-var.js + newline-before-return.js + newline-per-chained-call.js + no-alert.js + no-array-constructor.js + no-async-promise-executor.js + no-await-in-loop.js + no-bitwise.js + no-buffer-constructor.js + no-caller.js + no-case-declarations.js + no-catch-shadow.js + no-class-assign.js + no-compare-neg-zero.js + no-cond-assign.js + no-confusing-arrow.js + no-console.js + no-const-assign.js + no-constant-binary-expression.js + no-constant-condition.js + no-constructor-return.js + no-continue.js + no-control-regex.js + no-debugger.js + no-delete-var.js + no-div-regex.js + no-dupe-args.js + no-dupe-class-members.js + no-dupe-else-if.js + no-dupe-keys.js + no-duplicate-case.js + no-duplicate-imports.js + no-else-return.js + no-empty-character-class.js + no-empty-function.js + no-empty-pattern.js + no-empty-static-block.js + no-empty.js + no-eq-null.js + no-eval.js + no-ex-assign.js + no-extend-native.js + no-extra-bind.js + no-extra-boolean-cast.js + no-extra-label.js + no-extra-parens.js + no-extra-semi.js + no-fallthrough.js + no-floating-decimal.js + no-func-assign.js + no-global-assign.js + no-implicit-coercion.js + no-implicit-globals.js + no-implied-eval.js + no-import-assign.js + no-inline-comments.js + no-inner-declarations.js + no-invalid-regexp.js + no-invalid-this.js + no-irregular-whitespace.js + no-iterator.js + no-label-var.js + no-labels.js + no-lone-blocks.js + no-lonely-if.js + no-loop-func.js + no-loss-of-precision.js + no-magic-numbers.js + no-misleading-character-class.js + no-mixed-operators.js + no-mixed-requires.js + no-mixed-spaces-and-tabs.js + no-multi-assign.js + no-multi-spaces.js + no-multi-str.js + no-multiple-empty-lines.js + no-native-reassign.js + no-negated-condition.js + no-negated-in-lhs.js + no-nested-ternary.js + no-new-func.js + no-new-native-nonconstructor.js + no-new-object.js + no-new-require.js + no-new-symbol.js + no-new-wrappers.js + no-new.js + no-nonoctal-decimal-escape.js + no-obj-calls.js + no-object-constructor.js + no-octal-escape.js + no-octal.js + no-param-reassign.js + no-path-concat.js + no-plusplus.js + no-process-env.js + no-process-exit.js + no-promise-executor-return.js + no-proto.js + no-prototype-builtins.js + no-redeclare.js + no-regex-spaces.js + no-restricted-exports.js + no-restricted-globals.js + no-restricted-imports.js + no-restricted-modules.js + no-restricted-properties.js + no-restricted-syntax.js + no-return-assign.js + no-return-await.js + no-script-url.js + no-self-assign.js + no-self-compare.js + no-sequences.js + no-setter-return.js + no-shadow-restricted-names.js + no-shadow.js + no-spaced-func.js + no-sparse-arrays.js + no-sync.js + no-tabs.js + no-template-curly-in-string.js + no-ternary.js + no-this-before-super.js + no-throw-literal.js + no-trailing-spaces.js + no-unassigned-vars.js + no-undef-init.js + no-undef.js + no-undefined.js + no-underscore-dangle.js + no-unexpected-multiline.js + no-unmodified-loop-condition.js + no-unneeded-ternary.js + no-unreachable-loop.js + no-unreachable.js + no-unsafe-finally.js + no-unsafe-negation.js + no-unsafe-optional-chaining.js + no-unused-expressions.js + no-unused-labels.js + no-unused-private-class-members.js + no-unused-vars.js + no-use-before-define.js + no-useless-assignment.js + no-useless-backreference.js + no-useless-call.js + no-useless-catch.js + no-useless-computed-key.js + no-useless-concat.js + no-useless-constructor.js + no-useless-escape.js + no-useless-rename.js + no-useless-return.js + no-var.js + no-void.js + no-warning-comments.js + no-whitespace-before-property.js + no-with.js + nonblock-statement-body-position.js + object-curly-newline.js + object-curly-spacing.js + object-property-newline.js + object-shorthand.js + one-var-declaration-per-line.js + one-var.js + operator-assignment.js + operator-linebreak.js + padded-blocks.js + padding-line-between-statements.js + prefer-arrow-callback.js + prefer-const.js + prefer-destructuring.js + prefer-exponentiation-operator.js + prefer-named-capture-group.js + prefer-numeric-literals.js + prefer-object-has-own.js + prefer-object-spread.js + prefer-promise-reject-errors.js + prefer-reflect.js + prefer-regex-literals.js + prefer-rest-params.js + prefer-spread.js + prefer-template.js + quote-props.js + quotes.js + radix.js + require-atomic-updates.js + require-await.js + require-unicode-regexp.js + require-yield.js + rest-spread-spacing.js + semi-spacing.js + semi-style.js + semi.js + sort-imports.js + sort-keys.js + sort-vars.js + space-before-blocks.js + space-before-function-paren.js + space-in-parens.js + space-infix-ops.js + space-unary-ops.js + spaced-comment.js + strict.js + switch-colon-spacing.js + symbol-description.js + template-curly-spacing.js + template-tag-spacing.js + unicode-bom.js + use-isnan.js + valid-typeof.js + vars-on-top.js + wrap-iife.js + wrap-regex.js + yield-star-spacing.js + yoda.js + + +---utils + ast-utils.js + char-source.js + fix-tracker.js + keywords.js + lazy-loading-rule-map.js + regular-expressions.js + + +---unicode + index.js + is-combining-character.js + is-emoji-modifier.js + is-regional-indicator-symbol.js + is-surrogate-pair.js + + +---services + parser-service.js + processor-service.js + suppressions-service.js + warning-service.js + + +---shared + ajv.js + assert.js + ast-utils.js + deep-merge-arrays.js + directives.js + flags.js + logging.js + naming.js + option-utils.js + relative-module-resolver.js + runtime-info.js + serialization.js + severity.js + stats.js + string-utils.js + text-table.js + translate-cli-options.js + traverser.js + + +---types + config-api.d.ts + index.d.ts + rules.d.ts + universal.d.ts + use-at-your-own-risk.d.ts + + +---messages + all-files-ignored.js + all-matched-files-ignored.js + config-file-missing.js + config-plugin-missing.js + config-serialize-function.js + eslintrc-incompat.js + eslintrc-plugins.js + extend-config-missing.js + failed-to-read-json.js + file-not-found.js + invalid-rule-options.js + invalid-rule-severity.js + no-config-found.js + plugin-conflict.js + plugin-invalid.js + plugin-missing.js + print-config-with-directory-path.js + shared.js + whitespace-found.js + + +---eslint-config-next + core-web-vitals.js + index.js + package.json + parser.js + typescript.js + + +---eslint-import-resolver-node + index.js + LICENSE + package.json + README.md + + +---node_modules + +---debug + CHANGELOG.md + LICENSE + node.js + package.json + README.md + + +---src + browser.js + common.js + index.js + node.js + + +---eslint-import-resolver-typescript + LICENSE + package.json + README.md + + +---lib + index.cjs + index.d.ts + index.es2020.mjs + index.js + index.js.map + + +---eslint-module-utils + .nycrc + CHANGELOG.md + contextCompat.d.ts + contextCompat.js + declaredScope.d.ts + declaredScope.js + hash.d.ts + hash.js + ignore.d.ts + ignore.js + LICENSE + module-require.d.ts + module-require.js + ModuleCache.d.ts + ModuleCache.js + moduleVisitor.d.ts + moduleVisitor.js + package.json + parse.d.ts + parse.js + pkgDir.d.ts + pkgDir.js + pkgUp.d.ts + pkgUp.js + readPkgUp.d.ts + readPkgUp.js + resolve.d.ts + resolve.js + tsconfig.json + types.d.ts + unambiguous.d.ts + unambiguous.js + visit.d.ts + visit.js + + +---node_modules + +---debug + CHANGELOG.md + LICENSE + node.js + package.json + README.md + + +---src + browser.js + common.js + index.js + node.js + + +---eslint-plugin-import + CHANGELOG.md + index.d.ts + LICENSE + package.json + README.md + SECURITY.md + + +---config + electron.js + errors.js + react-native.js + react.js + recommended.js + stage-0.js + typescript.js + warnings.js + + +---flat + errors.js + react.js + recommended.js + warnings.js + + +---docs + +---rules + consistent-type-specifier-style.md + default.md + dynamic-import-chunkname.md + enforce-node-protocol-usage.md + export.md + exports-last.md + extensions.md + first.md + group-exports.md + imports-first.md + max-dependencies.md + named.md + namespace.md + newline-after-import.md + no-absolute-path.md + no-amd.md + no-anonymous-default-export.md + no-commonjs.md + no-cycle.md + no-default-export.md + no-deprecated.md + no-duplicates.md + no-dynamic-require.md + no-empty-named-blocks.md + no-extraneous-dependencies.md + no-import-module-exports.md + no-internal-modules.md + no-mutable-exports.md + no-named-as-default-member.md + no-named-as-default.md + no-named-default.md + no-named-export.md + no-namespace.md + no-nodejs-modules.md + no-relative-packages.md + no-relative-parent-imports.md + no-restricted-paths.md + no-self-import.md + no-unassigned-import.md + no-unresolved.md + no-unused-modules.md + no-useless-path-segments.md + no-webpack-loader-syntax.md + order.md + prefer-default-export.md + unambiguous.md + + +---lib + docsUrl.js + importDeclaration.js + index.js + scc.js + + +---core + importType.js + packagePath.js + sourceType.js + staticRequire.js + + +---exportMap + builder.js + captureDependency.js + childContext.js + doc.js + index.js + namespace.js + patternCapture.js + remotePath.js + specifier.js + typescript.js + visitor.js + + +---rules + consistent-type-specifier-style.js + default.js + dynamic-import-chunkname.js + enforce-node-protocol-usage.js + export.js + exports-last.js + extensions.js + first.js + group-exports.js + imports-first.js + max-dependencies.js + named.js + namespace.js + newline-after-import.js + no-absolute-path.js + no-amd.js + no-anonymous-default-export.js + no-commonjs.js + no-cycle.js + no-default-export.js + no-deprecated.js + no-duplicates.js + no-dynamic-require.js + no-empty-named-blocks.js + no-extraneous-dependencies.js + no-import-module-exports.js + no-internal-modules.js + no-mutable-exports.js + no-named-as-default-member.js + no-named-as-default.js + no-named-default.js + no-named-export.js + no-namespace.js + no-nodejs-modules.js + no-relative-packages.js + no-relative-parent-imports.js + no-restricted-paths.js + no-self-import.js + no-unassigned-import.js + no-unresolved.js + no-unused-modules.js + no-useless-path-segments.js + no-webpack-loader-syntax.js + order.js + prefer-default-export.js + unambiguous.js + + +---memo-parser + index.js + LICENSE + README.md + + +---node_modules + +---.bin + semver + semver.cmd + semver.ps1 + + +---debug + CHANGELOG.md + LICENSE + node.js + package.json + README.md + + +---src + browser.js + common.js + index.js + node.js + + +---semver + LICENSE + package.json + range.bnf + README.md + semver.js + + +---bin + semver.js + + +---eslint-plugin-jsx-a11y + .babelrc + .eslintrc + CHANGELOG.md + LICENSE.md + package.json + README.md + + +---docs + +---rules + accessible-emoji.md + alt-text.md + anchor-ambiguous-text.md + anchor-has-content.md + anchor-is-valid.md + aria-activedescendant-has-tabindex.md + aria-props.md + aria-proptypes.md + aria-role.md + aria-unsupported-elements.md + autocomplete-valid.md + click-events-have-key-events.md + control-has-associated-label.md + heading-has-content.md + html-has-lang.md + iframe-has-title.md + img-redundant-alt.md + interactive-supports-focus.md + label-has-associated-control.md + label-has-for.md + lang.md + media-has-caption.md + mouse-events-have-key-events.md + no-access-key.md + no-aria-hidden-on-focusable.md + no-autofocus.md + no-distracting-elements.md + no-interactive-element-to-noninteractive-role.md + no-noninteractive-element-interactions.md + no-noninteractive-element-to-interactive-role.md + no-noninteractive-tabindex.md + no-onchange.md + no-redundant-roles.md + no-static-element-interactions.md + prefer-tag-over-role.md + role-has-required-aria-props.md + role-supports-aria-props.md + scope.md + tabindex-no-positive.md + + +---lib + index.js + + +---configs + flat-config-base.js + legacy-config-base.js + + +---rules + accessible-emoji.js + alt-text.js + anchor-ambiguous-text.js + anchor-has-content.js + anchor-is-valid.js + aria-activedescendant-has-tabindex.js + aria-props.js + aria-proptypes.js + aria-role.js + aria-unsupported-elements.js + autocomplete-valid.js + click-events-have-key-events.js + control-has-associated-label.js + heading-has-content.js + html-has-lang.js + iframe-has-title.js + img-redundant-alt.js + interactive-supports-focus.js + label-has-associated-control.js + label-has-for.js + lang.js + media-has-caption.js + mouse-events-have-key-events.js + no-access-key.js + no-aria-hidden-on-focusable.js + no-autofocus.js + no-distracting-elements.js + no-interactive-element-to-noninteractive-role.js + no-noninteractive-element-interactions.js + no-noninteractive-element-to-interactive-role.js + no-noninteractive-tabindex.js + no-onchange.js + no-redundant-roles.js + no-static-element-interactions.js + prefer-tag-over-role.js + role-has-required-aria-props.js + role-supports-aria-props.js + scope.js + tabindex-no-positive.js + + +---util + attributesComparator.js + getAccessibleChildText.js + getComputedRole.js + getElementType.js + getExplicitRole.js + getImplicitRole.js + getSuggestion.js + getTabIndex.js + hasAccessibleChild.js + isAbstractRole.js + isContentEditable.js + isDisabledElement.js + isDOMElement.js + isFocusable.js + isHiddenFromScreenReader.js + isInteractiveElement.js + isInteractiveRole.js + isNonInteractiveElement.js + isNonInteractiveRole.js + isNonLiteralProperty.js + isPresentationRole.js + isSemanticRoleElement.js + mayContainChildComponent.js + mayHaveAccessibleLabel.js + schemas.js + + +---implicitRoles + a.js + area.js + article.js + aside.js + body.js + button.js + datalist.js + details.js + dialog.js + form.js + h1.js + h2.js + h3.js + h4.js + h5.js + h6.js + hr.js + img.js + index.js + input.js + li.js + link.js + menu.js + menuitem.js + meter.js + nav.js + ol.js + option.js + output.js + progress.js + section.js + select.js + tbody.js + textarea.js + tfoot.js + thead.js + ul.js + + +---__mocks__ + genInteractives.js + IdentifierMock.js + JSXAttributeMock.js + JSXElementMock.js + JSXExpressionContainerMock.js + JSXSpreadAttributeMock.js + JSXTextMock.js + LiteralMock.js + + +---__tests__ + index-test.js + + +---src + +---rules + accessible-emoji-test.js + alt-text-test.js + anchor-ambiguous-text-test.js + anchor-has-content-test.js + anchor-is-valid-test.js + aria-activedescendant-has-tabindex-test.js + aria-props-test.js + aria-proptypes-test.js + aria-role-test.js + aria-unsupported-elements-test.js + autocomplete-valid-test.js + click-events-have-key-events-test.js + control-has-associated-label-test.js + heading-has-content-test.js + html-has-lang-test.js + iframe-has-title-test.js + img-redundant-alt-test.js + interactive-supports-focus-test.js + label-has-associated-control-test.js + label-has-for-test.js + lang-test.js + media-has-caption-test.js + mouse-events-have-key-events-test.js + no-access-key-test.js + no-aria-hidden-on-focusable-test.js + no-autofocus-test.js + no-distracting-elements-test.js + no-interactive-element-to-noninteractive-role-test.js + no-noninteractive-element-interactions-test.js + no-noninteractive-element-to-interactive-role-test.js + no-noninteractive-tabindex-test.js + no-onchange-test.js + no-redundant-roles-test.js + no-static-element-interactions-test.js + prefer-tag-over-role-test.js + role-has-required-aria-props-test.js + role-supports-aria-props-test.js + scope-test.js + tabindex-no-positive-test.js + + +---util + attributesComparator-test.js + getAccessibleChildText-test.js + getComputedRole-test.js + getElementType-test.js + getExplicitRole-test.js + getImplicitRole-test.js + getSuggestion-test.js + getTabIndex-test.js + hasAccessibleChild-test.js + isAbstractRole-test.js + isContentEditable-test.js + isDisabledElement-test.js + isDOMElement-test.js + isFocusable-test.js + isInteractiveElement-test.js + isInteractiveRole-test.js + isNonInteractiveElement-test.js + isNonInteractiveRole-test.js + isNonLiteralProperty-test.js + isSemanticRoleElement-test.js + mayContainChildComponent-test.js + mayHaveAccessibleLabel-test.js + parserOptionsMapper-test.js + schemas-test.js + + +---implicitRoles + input-test.js + menu-test.js + menuitem-test.js + + +---__util__ + axeMapping.js + parserOptionsMapper.js + ruleOptionsMapperFactory.js + + +---helpers + getESLintCoreRule.js + parsers.js + + +---eslint-plugin-react + index.d.ts + index.d.ts.map + index.js + LICENSE + package.json + README.md + + +---configs + all.js + jsx-runtime.js + recommended.js + + +---lib + types.d.ts + + +---rules + boolean-prop-naming.d.ts + boolean-prop-naming.d.ts.map + boolean-prop-naming.js + button-has-type.d.ts + button-has-type.d.ts.map + button-has-type.js + checked-requires-onchange-or-readonly.d.ts + checked-requires-onchange-or-readonly.d.ts.map + checked-requires-onchange-or-readonly.js + default-props-match-prop-types.d.ts + default-props-match-prop-types.d.ts.map + default-props-match-prop-types.js + destructuring-assignment.d.ts + destructuring-assignment.d.ts.map + destructuring-assignment.js + display-name.d.ts + display-name.d.ts.map + display-name.js + forbid-component-props.d.ts + forbid-component-props.d.ts.map + forbid-component-props.js + forbid-dom-props.d.ts + forbid-dom-props.d.ts.map + forbid-dom-props.js + forbid-elements.d.ts + forbid-elements.d.ts.map + forbid-elements.js + forbid-foreign-prop-types.d.ts + forbid-foreign-prop-types.d.ts.map + forbid-foreign-prop-types.js + forbid-prop-types.d.ts + forbid-prop-types.d.ts.map + forbid-prop-types.js + forward-ref-uses-ref.d.ts + forward-ref-uses-ref.d.ts.map + forward-ref-uses-ref.js + function-component-definition.d.ts + function-component-definition.d.ts.map + function-component-definition.js + hook-use-state.d.ts + hook-use-state.d.ts.map + hook-use-state.js + iframe-missing-sandbox.d.ts + iframe-missing-sandbox.d.ts.map + iframe-missing-sandbox.js + index.d.ts + index.d.ts.map + index.js + jsx-boolean-value.d.ts + jsx-boolean-value.d.ts.map + jsx-boolean-value.js + jsx-child-element-spacing.d.ts + jsx-child-element-spacing.d.ts.map + jsx-child-element-spacing.js + jsx-closing-bracket-location.d.ts + jsx-closing-bracket-location.d.ts.map + jsx-closing-bracket-location.js + jsx-closing-tag-location.d.ts + jsx-closing-tag-location.d.ts.map + jsx-closing-tag-location.js + jsx-curly-brace-presence.d.ts + jsx-curly-brace-presence.d.ts.map + jsx-curly-brace-presence.js + jsx-curly-newline.d.ts + jsx-curly-newline.d.ts.map + jsx-curly-newline.js + jsx-curly-spacing.d.ts + jsx-curly-spacing.d.ts.map + jsx-curly-spacing.js + jsx-equals-spacing.d.ts + jsx-equals-spacing.d.ts.map + jsx-equals-spacing.js + jsx-filename-extension.d.ts + jsx-filename-extension.d.ts.map + jsx-filename-extension.js + jsx-first-prop-new-line.d.ts + jsx-first-prop-new-line.d.ts.map + jsx-first-prop-new-line.js + jsx-fragments.d.ts + jsx-fragments.d.ts.map + jsx-fragments.js + jsx-handler-names.d.ts + jsx-handler-names.d.ts.map + jsx-handler-names.js + jsx-indent-props.d.ts + jsx-indent-props.d.ts.map + jsx-indent-props.js + jsx-indent.d.ts + jsx-indent.d.ts.map + jsx-indent.js + jsx-key.d.ts + jsx-key.d.ts.map + jsx-key.js + jsx-max-depth.d.ts + jsx-max-depth.d.ts.map + jsx-max-depth.js + jsx-max-props-per-line.d.ts + jsx-max-props-per-line.d.ts.map + jsx-max-props-per-line.js + jsx-newline.d.ts + jsx-newline.d.ts.map + jsx-newline.js + jsx-no-bind.d.ts + jsx-no-bind.d.ts.map + jsx-no-bind.js + jsx-no-comment-textnodes.d.ts + jsx-no-comment-textnodes.d.ts.map + jsx-no-comment-textnodes.js + jsx-no-constructed-context-values.d.ts + jsx-no-constructed-context-values.d.ts.map + jsx-no-constructed-context-values.js + jsx-no-duplicate-props.d.ts + jsx-no-duplicate-props.d.ts.map + jsx-no-duplicate-props.js + jsx-no-leaked-render.d.ts + jsx-no-leaked-render.d.ts.map + jsx-no-leaked-render.js + jsx-no-literals.d.ts + jsx-no-literals.d.ts.map + jsx-no-literals.js + jsx-no-script-url.d.ts + jsx-no-script-url.d.ts.map + jsx-no-script-url.js + jsx-no-target-blank.d.ts + jsx-no-target-blank.d.ts.map + jsx-no-target-blank.js + jsx-no-undef.d.ts + jsx-no-undef.d.ts.map + jsx-no-undef.js + jsx-no-useless-fragment.d.ts + jsx-no-useless-fragment.d.ts.map + jsx-no-useless-fragment.js + jsx-one-expression-per-line.d.ts + jsx-one-expression-per-line.d.ts.map + jsx-one-expression-per-line.js + jsx-pascal-case.d.ts + jsx-pascal-case.d.ts.map + jsx-pascal-case.js + jsx-props-no-multi-spaces.d.ts + jsx-props-no-multi-spaces.d.ts.map + jsx-props-no-multi-spaces.js + jsx-props-no-spread-multi.d.ts + jsx-props-no-spread-multi.d.ts.map + jsx-props-no-spread-multi.js + jsx-props-no-spreading.d.ts + jsx-props-no-spreading.d.ts.map + jsx-props-no-spreading.js + jsx-sort-default-props.d.ts + jsx-sort-default-props.d.ts.map + jsx-sort-default-props.js + jsx-sort-props.d.ts + jsx-sort-props.d.ts.map + jsx-sort-props.js + jsx-space-before-closing.d.ts + jsx-space-before-closing.d.ts.map + jsx-space-before-closing.js + jsx-tag-spacing.d.ts + jsx-tag-spacing.d.ts.map + jsx-tag-spacing.js + jsx-uses-react.d.ts + jsx-uses-react.d.ts.map + jsx-uses-react.js + jsx-uses-vars.d.ts + jsx-uses-vars.d.ts.map + jsx-uses-vars.js + jsx-wrap-multilines.d.ts + jsx-wrap-multilines.d.ts.map + jsx-wrap-multilines.js + no-access-state-in-setstate.d.ts + no-access-state-in-setstate.d.ts.map + no-access-state-in-setstate.js + no-adjacent-inline-elements.d.ts + no-adjacent-inline-elements.d.ts.map + no-adjacent-inline-elements.js + no-array-index-key.d.ts + no-array-index-key.d.ts.map + no-array-index-key.js + no-arrow-function-lifecycle.d.ts + no-arrow-function-lifecycle.d.ts.map + no-arrow-function-lifecycle.js + no-children-prop.d.ts + no-children-prop.d.ts.map + no-children-prop.js + no-danger-with-children.d.ts + no-danger-with-children.d.ts.map + no-danger-with-children.js + no-danger.d.ts + no-danger.d.ts.map + no-danger.js + no-deprecated.d.ts + no-deprecated.d.ts.map + no-deprecated.js + no-did-mount-set-state.d.ts + no-did-mount-set-state.d.ts.map + no-did-mount-set-state.js + no-did-update-set-state.d.ts + no-did-update-set-state.d.ts.map + no-did-update-set-state.js + no-direct-mutation-state.d.ts + no-direct-mutation-state.d.ts.map + no-direct-mutation-state.js + no-find-dom-node.d.ts + no-find-dom-node.d.ts.map + no-find-dom-node.js + no-invalid-html-attribute.d.ts + no-invalid-html-attribute.d.ts.map + no-invalid-html-attribute.js + no-is-mounted.d.ts + no-is-mounted.d.ts.map + no-is-mounted.js + no-multi-comp.d.ts + no-multi-comp.d.ts.map + no-multi-comp.js + no-namespace.d.ts + no-namespace.d.ts.map + no-namespace.js + no-object-type-as-default-prop.d.ts + no-object-type-as-default-prop.d.ts.map + no-object-type-as-default-prop.js + no-redundant-should-component-update.d.ts + no-redundant-should-component-update.d.ts.map + no-redundant-should-component-update.js + no-render-return-value.d.ts + no-render-return-value.d.ts.map + no-render-return-value.js + no-set-state.d.ts + no-set-state.d.ts.map + no-set-state.js + no-string-refs.d.ts + no-string-refs.d.ts.map + no-string-refs.js + no-this-in-sfc.d.ts + no-this-in-sfc.d.ts.map + no-this-in-sfc.js + no-typos.d.ts + no-typos.d.ts.map + no-typos.js + no-unescaped-entities.d.ts + no-unescaped-entities.d.ts.map + no-unescaped-entities.js + no-unknown-property.d.ts + no-unknown-property.d.ts.map + no-unknown-property.js + no-unsafe.d.ts + no-unsafe.d.ts.map + no-unsafe.js + no-unstable-nested-components.d.ts + no-unstable-nested-components.d.ts.map + no-unstable-nested-components.js + no-unused-class-component-methods.d.ts + no-unused-class-component-methods.d.ts.map + no-unused-class-component-methods.js + no-unused-prop-types.d.ts + no-unused-prop-types.d.ts.map + no-unused-prop-types.js + no-unused-state.d.ts + no-unused-state.d.ts.map + no-unused-state.js + no-will-update-set-state.d.ts + no-will-update-set-state.d.ts.map + no-will-update-set-state.js + prefer-es6-class.d.ts + prefer-es6-class.d.ts.map + prefer-es6-class.js + prefer-exact-props.d.ts + prefer-exact-props.d.ts.map + prefer-exact-props.js + prefer-read-only-props.d.ts + prefer-read-only-props.d.ts.map + prefer-read-only-props.js + prefer-stateless-function.d.ts + prefer-stateless-function.d.ts.map + prefer-stateless-function.js + prop-types.d.ts + prop-types.d.ts.map + prop-types.js + react-in-jsx-scope.d.ts + react-in-jsx-scope.d.ts.map + react-in-jsx-scope.js + require-default-props.d.ts + require-default-props.d.ts.map + require-default-props.js + require-optimization.d.ts + require-optimization.d.ts.map + require-optimization.js + require-render-return.d.ts + require-render-return.d.ts.map + require-render-return.js + self-closing-comp.d.ts + self-closing-comp.d.ts.map + self-closing-comp.js + sort-comp.d.ts + sort-comp.d.ts.map + sort-comp.js + sort-default-props.d.ts + sort-default-props.d.ts.map + sort-default-props.js + sort-prop-types.d.ts + sort-prop-types.d.ts.map + sort-prop-types.js + state-in-constructor.d.ts + state-in-constructor.d.ts.map + state-in-constructor.js + static-property-placement.d.ts + static-property-placement.d.ts.map + static-property-placement.js + style-prop-object.d.ts + style-prop-object.d.ts.map + style-prop-object.js + void-dom-elements-no-children.d.ts + void-dom-elements-no-children.d.ts.map + void-dom-elements-no-children.js + + +---util + annotations.d.ts + annotations.d.ts.map + annotations.js + ast.d.ts + ast.d.ts.map + ast.js + Components.d.ts + Components.d.ts.map + Components.js + componentUtil.d.ts + componentUtil.d.ts.map + componentUtil.js + defaultProps.d.ts + defaultProps.d.ts.map + defaultProps.js + docsUrl.d.ts + docsUrl.d.ts.map + docsUrl.js + error.d.ts + error.d.ts.map + error.js + eslint.d.ts + eslint.d.ts.map + eslint.js + getTokenBeforeClosingBracket.d.ts + getTokenBeforeClosingBracket.d.ts.map + getTokenBeforeClosingBracket.js + isCreateContext.d.ts + isCreateContext.d.ts.map + isCreateContext.js + isCreateElement.d.ts + isCreateElement.d.ts.map + isCreateElement.js + isDestructuredFromPragmaImport.d.ts + isDestructuredFromPragmaImport.d.ts.map + isDestructuredFromPragmaImport.js + isFirstLetterCapitalized.d.ts + isFirstLetterCapitalized.d.ts.map + isFirstLetterCapitalized.js + jsx.d.ts + jsx.d.ts.map + jsx.js + lifecycleMethods.d.ts + lifecycleMethods.d.ts.map + lifecycleMethods.js + linkComponents.d.ts + linkComponents.d.ts.map + linkComponents.js + log.d.ts + log.d.ts.map + log.js + makeNoMethodSetStateRule.d.ts + makeNoMethodSetStateRule.d.ts.map + makeNoMethodSetStateRule.js + message.d.ts + message.d.ts.map + message.js + pragma.d.ts + pragma.d.ts.map + pragma.js + props.d.ts + props.d.ts.map + props.js + propTypes.d.ts + propTypes.d.ts.map + propTypes.js + propTypesSort.d.ts + propTypesSort.d.ts.map + propTypesSort.js + propWrapper.d.ts + propWrapper.d.ts.map + propWrapper.js + report.d.ts + report.d.ts.map + report.js + usedPropTypes.d.ts + usedPropTypes.d.ts.map + usedPropTypes.js + variable.d.ts + variable.d.ts.map + variable.js + version.d.ts + version.d.ts.map + version.js + + +---node_modules + +---.bin + resolve + resolve.cmd + resolve.ps1 + semver + semver.cmd + semver.ps1 + + +---resolve + .editorconfig + .eslintrc + async.js + index.js + index.mjs + LICENSE + package.json + readme.markdown + SECURITY.md + sync.js + + +---.github + FUNDING.yml + + +---bin + resolve + + +---example + async.js + sync.js + + +---lib + async.js + caller.js + homedir.js + node-modules-paths.js + normalize-options.js + sync.js + + +---test + dotdot.js + faulty_basedir.js + filter.js + filter_sync.js + home_paths.js + home_paths_sync.js + mock.js + mock_sync.js + module_dir.js + node-modules-paths.js + node_path.js + nonstring.js + pathfilter.js + pathfilter_sync.js + precedence.js + resolver.js + resolver_sync.js + shadowed_core.js + subdirs.js + symlinks.js + + +---dotdot + index.js + + +---abc + index.js + + +---module_dir + +---xmodules + +---aaa + index.js + + +---ymodules + +---aaa + index.js + + +---zmodules + +---bbb + main.js + package.json + + +---node_path + +---x + +---aaa + index.js + + +---ccc + index.js + + +---y + +---bbb + index.js + + +---ccc + index.js + + +---pathfilter + +---deep_ref + main.js + + +---precedence + aaa.js + bbb.js + + +---aaa + index.js + main.js + + +---bbb + main.js + + +---resolver + cup.coffee + foo.js + mug.coffee + mug.js + + +---baz + doom.js + package.json + quux.js + + +---browser_field + a.js + b.js + package.json + + +---dot_main + index.js + package.json + + +---dot_slash_main + index.js + package.json + + +---empty_main + index.js + package.json + + +---false_main + index.js + package.json + + +---incorrect_main + index.js + package.json + + +---invalid_main + package.json + + +---missing_index + package.json + + +---missing_main + index.js + package.json + + +---multirepo + lerna.json + package.json + + +---packages + +---package-a + index.js + package.json + + +---package-b + index.js + package.json + + +---nested_symlinks + +---mylib + async.js + package.json + sync.js + + +---null_main + index.js + package.json + + +---other_path + root.js + + +---lib + other-lib.js + + +---quux + +---foo + index.js + + +---same_names + foo.js + + +---foo + index.js + + +---symlinked + +---package + bar.js + package.json + + +---_ + +---node_modules + foo.js + + +---symlink_target + .gitkeep + + +---without_basedir + main.js + + +---shadowed_core + +---node_modules + +---util + index.js + + +---semver + LICENSE + package.json + range.bnf + README.md + semver.js + + +---bin + semver.js + + +---eslint-plugin-react-hooks + index.d.ts + index.js + LICENSE + package.json + README.md + + +---cjs + eslint-plugin-react-hooks.d.ts + eslint-plugin-react-hooks.development.js + eslint-plugin-react-hooks.production.js + + +---eslint-scope + LICENSE + package.json + README.md + + +---dist + eslint-scope.cjs + + +---lib + assert.js + definition.js + index.js + pattern-visitor.js + reference.js + referencer.js + scope-manager.js + scope.js + variable.js + version.js + + +---eslint-visitor-keys + LICENSE + package.json + README.md + + +---dist + eslint-visitor-keys.cjs + eslint-visitor-keys.d.cts + index.d.ts + visitor-keys.d.ts + + +---lib + index.js + visitor-keys.js + + +---espree + espree.js + LICENSE + package.json + README.md + + +---dist + espree.cjs + + +---lib + espree.js + features.js + options.js + token-translator.js + version.js + + +---esquery + license.txt + package.json + parser.js + README.md + + +---dist + esquery.esm.js + esquery.esm.min.js + esquery.esm.min.js.map + esquery.js + esquery.lite.js + esquery.lite.min.js + esquery.lite.min.js.map + esquery.min.js + esquery.min.js.map + + +---esrecurse + .babelrc + esrecurse.js + gulpfile.babel.js + package.json + README.md + + +---estraverse + .jshintrc + estraverse.js + gulpfile.js + LICENSE.BSD + package.json + README.md + + +---esutils + LICENSE.BSD + package.json + README.md + + +---lib + ast.js + code.js + keyword.js + utils.js + + +---fast-deep-equal + index.d.ts + index.js + LICENSE + package.json + react.d.ts + react.js + README.md + + +---es6 + index.d.ts + index.js + react.d.ts + react.js + + +---fast-glob + LICENSE + package.json + README.md + + +---node_modules + +---glob-parent + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---out + index.d.ts + index.js + settings.d.ts + settings.js + + +---managers + tasks.d.ts + tasks.js + + +---providers + async.d.ts + async.js + provider.d.ts + provider.js + stream.d.ts + stream.js + sync.d.ts + sync.js + + +---filters + deep.d.ts + deep.js + entry.d.ts + entry.js + error.d.ts + error.js + + +---matchers + matcher.d.ts + matcher.js + partial.d.ts + partial.js + + +---transformers + entry.d.ts + entry.js + + +---readers + async.d.ts + async.js + reader.d.ts + reader.js + stream.d.ts + stream.js + sync.d.ts + sync.js + + +---types + index.d.ts + index.js + + +---utils + array.d.ts + array.js + errno.d.ts + errno.js + fs.d.ts + fs.js + index.d.ts + index.js + path.d.ts + path.js + pattern.d.ts + pattern.js + stream.d.ts + stream.js + string.d.ts + string.js + + +---fast-json-stable-stringify + .eslintrc.yml + .travis.yml + index.d.ts + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---benchmark + index.js + test.json + + +---example + key_cmp.js + nested.js + str.js + value_cmp.js + + +---test + cmp.js + nested.js + str.js + to-json.js + + +---fast-levenshtein + levenshtein.js + LICENSE.md + package.json + README.md + + +---fastq + bench.js + example.js + example.mjs + index.d.ts + LICENSE + package.json + queue.js + README.md + SECURITY.md + + +---.github + dependabot.yml + + +---workflows + ci.yml + + +---test + example.ts + promise.js + test.js + tsconfig.json + + +---file-entry-cache + cache.js + LICENSE + package.json + README.md + + +---fill-range + index.js + LICENSE + package.json + README.md + + +---find-up + index.d.ts + index.js + license + package.json + readme.md + + +---flat-cache + changelog.md + LICENSE + package.json + README.md + + +---src + cache.js + del.js + utils.js + + +---flatted + es.js + esm.js + index.js + LICENSE + min.js + package.json + README.md + + +---cjs + index.js + package.json + + +---esm + index.js + + +---php + flatted.php + + +---python + flatted.py + + +---types + index.d.ts + + +---follow-redirects + debug.js + http.js + https.js + index.js + LICENSE + package.json + README.md + + +---for-each + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + SECURITY.md + + +---test + test.js + + +---form-data + CHANGELOG.md + index.d.ts + License + package.json + README.md + + +---lib + browser.js + form_data.js + populate.js + + +---fraction.js + bigfraction.js + fraction.cjs + fraction.d.ts + fraction.js + fraction.min.js + LICENSE + package.json + README.md + + +---function-bind + .eslintrc + .nycrc + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + SECURITY.md + + +---test + .eslintrc + index.js + + +---function.prototype.name + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + FUNDING.yml + + +---helpers + functionsHaveNames.js + + +---test + implementation.js + index.js + shimmed.js + tests.js + uglified.js + + +---functions-have-names + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---test + index.js + + +---get-intrinsic + .eslintrc + .nycrc + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---test + GetIntrinsic.js + + +---get-proto + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + Object.getPrototypeOf.d.ts + Object.getPrototypeOf.js + package.json + README.md + Reflect.getPrototypeOf.d.ts + Reflect.getPrototypeOf.js + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---get-symbol-description + .eslintrc + .nycrc + CHANGELOG.md + getInferredName.d.ts + getInferredName.js + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---get-tsconfig + LICENSE + package.json + README.md + + +---dist + index.cjs + index.d.cts + index.d.mts + index.mjs + + +---glob-parent + index.js + LICENSE + package.json + README.md + + +---globals + globals.json + index.d.ts + index.js + license + package.json + readme.md + + +---globalthis + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.browser.js + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + implementation.js + index.js + native.js + shimmed.js + tests.js + + +---gopd + .eslintrc + CHANGELOG.md + gOPD.d.ts + gOPD.js + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---graceful-fs + clone.js + graceful-fs.js + legacy-streams.js + LICENSE + package.json + polyfills.js + README.md + + +---graphemer + CHANGELOG.md + LICENSE + package.json + README.md + + +---lib + boundaries.d.ts + boundaries.d.ts.map + boundaries.js + Graphemer.d.ts + Graphemer.d.ts.map + Graphemer.js + GraphemerHelper.d.ts + GraphemerHelper.d.ts.map + GraphemerHelper.js + GraphemerIterator.d.ts + GraphemerIterator.d.ts.map + GraphemerIterator.js + index.d.ts + index.d.ts.map + index.js + + +---has-bigints + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---has-flag + index.d.ts + index.js + license + package.json + readme.md + + +---has-property-descriptors + .eslintrc + .nycrc + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---test + index.js + + +---has-proto + .eslintrc + accessor.d.ts + accessor.js + CHANGELOG.md + index.d.ts + index.js + LICENSE + mutator.d.ts + mutator.js + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + accessor.js + index.js + mutator.js + + +---has-symbols + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + shams.d.ts + shams.js + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + tests.js + + +---shams + core-js.js + get-own-property-symbols.js + + +---has-tostringtag + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + shams.d.ts + shams.js + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + tests.js + + +---shams + core-js.js + get-own-property-symbols.js + + +---hasown + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---ignore + index.d.ts + index.js + legacy.js + LICENSE-MIT + package.json + README.md + + +---import-fresh + index.d.ts + index.js + license + package.json + readme.md + + +---imurmurhash + imurmurhash.js + imurmurhash.min.js + package.json + README.md + + +---internal-slot + .attw.json + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-array-buffer + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-arrayish + index.js + LICENSE + package.json + README.md + yarn-error.log + + +---is-async-function + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---test + index.js + uglified.js + + +---is-bigint + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-boolean-object + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-bun-module + LICENSE + package.json + README.md + + +---dist + bun.mjs + generic.d.ts + generic.js + shared.d.ts + shared.js + + +---is-callable + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-core-module + .eslintrc + .nycrc + CHANGELOG.md + core.json + index.js + LICENSE + package.json + README.md + + +---test + index.js + + +---is-data-view + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-date-object + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-extglob + index.js + LICENSE + package.json + README.md + + +---is-finalizationregistry + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-generator-function + .eslintrc + .nvmrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---test + corejs.js + index.js + uglified.js + + +---is-glob + index.js + LICENSE + package.json + README.md + + +---is-map + .editorconfig + .eslintrc + .gitattributes + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-negative-zero + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-number + index.js + LICENSE + package.json + README.md + + +---is-number-object + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-regex + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---test + index.js + + +---is-set + .editorconfig + .eslintrc + .gitattributes + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-shared-array-buffer + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-string + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-symbol + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-typed-array + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-weakmap + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-weakref + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---is-weakset + .editorconfig + .eslintrc + .gitattributes + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---isarray + index.js + LICENSE + package.json + README.md + + +---isexe + .npmignore + index.js + LICENSE + mode.js + package.json + README.md + windows.js + + +---test + basic.js + + +---iterator.prototype + .eslintrc + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---test + index.js + + +---jiti + LICENSE + package.json + README.md + + +---dist + babel.cjs + jiti.cjs + + +---lib + jiti-cli.mjs + jiti-hooks.mjs + jiti-native.mjs + jiti-register.d.mts + jiti-register.mjs + jiti.cjs + jiti.d.cts + jiti.d.mts + jiti.mjs + types.d.ts + + +---js-cookie + index.js + LICENSE + package.json + README.md + + +---dist + js.cookie.js + js.cookie.min.js + js.cookie.min.mjs + js.cookie.mjs + + +---js-tokens + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---js-yaml + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---bin + js-yaml.js + + +---dist + js-yaml.js + js-yaml.min.js + js-yaml.mjs + + +---lib + common.js + dumper.js + exception.js + loader.js + schema.js + snippet.js + type.js + + +---schema + core.js + default.js + failsafe.js + json.js + + +---type + binary.js + bool.js + float.js + int.js + map.js + merge.js + null.js + omap.js + pairs.js + seq.js + set.js + str.js + timestamp.js + + +---json-buffer + .travis.yml + index.js + LICENSE + package.json + README.md + + +---test + index.js + + +---json-schema-traverse + .eslintrc.yml + .travis.yml + index.js + LICENSE + package.json + README.md + + +---spec + .eslintrc.yml + index.spec.js + + +---fixtures + schema.js + + +---json-stable-stringify-without-jsonify + .npmignore + .travis.yml + index.js + LICENSE + package.json + readme.markdown + + +---example + key_cmp.js + nested.js + str.js + value_cmp.js + + +---test + cmp.js + nested.js + replacer.js + space.js + str.js + to-json.js + + +---json5 + LICENSE.md + package.json + README.md + + +---dist + index.js + + +---lib + cli.js + index.js + parse.js + register.js + require.js + stringify.js + unicode.js + util.js + + +---jsx-ast-utils + .babelrc + .eslintignore + .eslintrc + CHANGELOG.md + elementType.js + eventHandlers.js + eventHandlersByType.js + getLiteralPropValue.js + getProp.js + getPropValue.js + hasAnyProp.js + hasEveryProp.js + hasProp.js + LICENSE.md + package.json + propName.js + README.md + + +---.github + FUNDING.yml + + +---lib + elementType.js + eventHandlers.js + getProp.js + getPropValue.js + hasProp.js + index.js + propName.js + + +---values + index.js + JSXElement.js + JSXFragment.js + JSXText.js + Literal.js + + +---expressions + ArrayExpression.js + AssignmentExpression.js + BinaryExpression.js + BindExpression.js + CallExpression.js + ChainExpression.js + ConditionalExpression.js + FunctionExpression.js + Identifier.js + index.js + LogicalExpression.js + MemberExpression.js + NewExpression.js + ObjectExpression.js + OptionalCallExpression.js + OptionalMemberExpression.js + SequenceExpression.js + SpreadElement.js + TaggedTemplateExpression.js + TemplateLiteral.js + ThisExpression.js + TSNonNullExpression.js + TypeCastExpression.js + UnaryExpression.js + UpdateExpression.js + + +---src + elementType.js + eventHandlers.js + getProp.js + getPropValue.js + hasProp.js + index.js + propName.js + + +---values + index.js + JSXElement.js + JSXFragment.js + JSXText.js + Literal.js + + +---expressions + ArrayExpression.js + AssignmentExpression.js + BinaryExpression.js + BindExpression.js + CallExpression.js + ChainExpression.js + ConditionalExpression.js + FunctionExpression.js + Identifier.js + index.js + LogicalExpression.js + MemberExpression.js + NewExpression.js + ObjectExpression.js + OptionalCallExpression.js + OptionalMemberExpression.js + SequenceExpression.js + SpreadElement.js + TaggedTemplateExpression.js + TemplateLiteral.js + ThisExpression.js + TSNonNullExpression.js + TypeCastExpression.js + UnaryExpression.js + UpdateExpression.js + + +---__tests__ + helper.js + + +---src + elementType-test.js + eventHandlers-test.js + getProp-parser-test.js + getProp-test.js + getPropLiteralValue-babelparser-test.js + getPropLiteralValue-flowparser-test.js + getPropValue-babelparser-test.js + getPropValue-flowparser-test.js + hasProp-test.js + index-test.js + propName-test.js + + +---keyv + package.json + README.md + + +---src + index.d.ts + index.js + + +---language-subtag-registry + package.json + README.md + + +---data + +---json + collection.json + extlang.json + grandfathered.json + index.json + language.json + macrolanguage.json + meta.json + private-use.json + redundant.json + region.json + registry.json + script.json + special.json + variant.json + + +---language-tags + package.json + README.md + + +---lib + index.js + Subtag.js + Tag.js + + +---levn + LICENSE + package.json + README.md + + +---lib + cast.js + index.js + parse-string.js + + +---lightningcss + LICENSE + package.json + README.md + + +---node + ast.d.ts + ast.js.flow + browserslistToTargets.js + composeVisitors.js + flags.js + index.d.ts + index.js + index.js.flow + index.mjs + targets.d.ts + targets.js.flow + + +---lightningcss-win32-x64-msvc + LICENSE + lightningcss.win32-x64-msvc.node + package.json + README.md + + +---locate-path + index.d.ts + index.js + license + package.json + readme.md + + +---lodash.merge + index.js + LICENSE + package.json + README.md + + +---loose-envify + cli.js + custom.js + index.js + LICENSE + loose-envify.js + package.json + README.md + replace.js + + +---magic-string + LICENSE + package.json + README.md + + +---dist + magic-string.cjs.d.ts + magic-string.cjs.js + magic-string.cjs.js.map + magic-string.es.d.mts + magic-string.es.mjs + magic-string.es.mjs.map + magic-string.umd.js + magic-string.umd.js.map + + +---math-intrinsics + .eslintrc + abs.d.ts + abs.js + CHANGELOG.md + floor.d.ts + floor.js + isFinite.d.ts + isFinite.js + isInteger.d.ts + isInteger.js + isNaN.d.ts + isNaN.js + isNegativeZero.d.ts + isNegativeZero.js + LICENSE + max.d.ts + max.js + min.d.ts + min.js + mod.d.ts + mod.js + package.json + pow.d.ts + pow.js + README.md + round.d.ts + round.js + sign.d.ts + sign.js + tsconfig.json + + +---.github + FUNDING.yml + + +---constants + maxArrayLength.d.ts + maxArrayLength.js + maxSafeInteger.d.ts + maxSafeInteger.js + maxValue.d.ts + maxValue.js + + +---test + index.js + + +---merge2 + index.js + LICENSE + package.json + README.md + + +---micromatch + index.js + LICENSE + package.json + README.md + + +---mime-db + db.json + HISTORY.md + index.js + LICENSE + package.json + README.md + + +---mime-types + HISTORY.md + index.js + LICENSE + package.json + README.md + + +---minimatch + LICENSE + minimatch.js + package.json + README.md + + +---minimist + .eslintrc + .nycrc + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---example + parse.js + + +---test + all_bool.js + bool.js + dash.js + default_bool.js + dotted.js + kv_short.js + long.js + num.js + parse.js + parse_modified.js + proto.js + short.js + stop_early.js + unknown.js + whitespace.js + + +---minipass + LICENSE + package.json + README.md + + +---dist + +---commonjs + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---esm + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---minizlib + LICENSE + package.json + README.md + + +---dist + +---commonjs + constants.d.ts + constants.d.ts.map + constants.js + constants.js.map + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---esm + constants.d.ts + constants.d.ts.map + constants.js + constants.js.map + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---mkdirp + LICENSE + package.json + readme.markdown + + +---dist + +---cjs + package.json + + +---src + bin.d.ts + bin.d.ts.map + bin.js + bin.js.map + find-made.d.ts + find-made.d.ts.map + find-made.js + find-made.js.map + index.d.ts + index.d.ts.map + index.js + index.js.map + mkdirp-manual.d.ts + mkdirp-manual.d.ts.map + mkdirp-manual.js + mkdirp-manual.js.map + mkdirp-native.d.ts + mkdirp-native.d.ts.map + mkdirp-native.js + mkdirp-native.js.map + opts-arg.d.ts + opts-arg.d.ts.map + opts-arg.js + opts-arg.js.map + path-arg.d.ts + path-arg.d.ts.map + path-arg.js + path-arg.js.map + use-native.d.ts + use-native.d.ts.map + use-native.js + use-native.js.map + + +---mjs + find-made.d.ts + find-made.d.ts.map + find-made.js + find-made.js.map + index.d.ts + index.d.ts.map + index.js + index.js.map + mkdirp-manual.d.ts + mkdirp-manual.d.ts.map + mkdirp-manual.js + mkdirp-manual.js.map + mkdirp-native.d.ts + mkdirp-native.d.ts.map + mkdirp-native.js + mkdirp-native.js.map + opts-arg.d.ts + opts-arg.d.ts.map + opts-arg.js + opts-arg.js.map + package.json + path-arg.d.ts + path-arg.d.ts.map + path-arg.js + path-arg.js.map + use-native.d.ts + use-native.d.ts.map + use-native.js + use-native.js.map + + +---ms + index.js + license.md + package.json + readme.md + + +---nanoid + index.browser.cjs + index.browser.js + index.cjs + index.d.cts + index.d.ts + index.js + LICENSE + nanoid.js + package.json + README.md + + +---async + index.browser.cjs + index.browser.js + index.cjs + index.d.ts + index.js + index.native.js + package.json + + +---bin + nanoid.cjs + + +---non-secure + index.cjs + index.d.ts + index.js + package.json + + +---url-alphabet + index.cjs + index.js + package.json + + +---napi-postinstall + LICENSE + package.json + README.md + + +---lib + cli.d.ts + cli.js + cli.js.map + constants.d.ts + constants.js + constants.js.map + fallback.d.ts + fallback.js + fallback.js.map + helpers.d.ts + helpers.js + helpers.js.map + index.d.ts + index.js + index.js.map + target.d.ts + target.js + target.js.map + types.d.ts + types.js + types.js.map + + +---natural-compare + index.js + package.json + README.md + + +---next + amp.d.ts + amp.js + app.d.ts + app.js + babel.d.ts + babel.js + cache.d.ts + cache.js + client.d.ts + client.js + config.d.ts + config.js + constants.d.ts + constants.js + document.d.ts + document.js + dynamic.d.ts + dynamic.js + error.d.ts + error.js + form.d.ts + form.js + head.d.ts + head.js + headers.d.ts + headers.js + image.d.ts + image.js + index.d.ts + jest.d.ts + jest.js + license.md + link.d.ts + link.js + navigation.d.ts + navigation.js + og.d.ts + og.js + package.json + README.md + router.d.ts + router.js + script.d.ts + script.js + server.d.ts + server.js + types.d.ts + types.js + web-vitals.d.ts + web-vitals.js + + +---compat + router.d.ts + router.js + + +---dist + types.d.ts + + +---api + app-dynamic.d.ts + app-dynamic.js + app-dynamic.js.map + app.d.ts + app.js + app.js.map + constants.d.ts + constants.js + constants.js.map + document.d.ts + document.js + document.js.map + dynamic.d.ts + dynamic.js + dynamic.js.map + form.d.ts + form.js + form.js.map + head.d.ts + head.js + head.js.map + headers.d.ts + headers.js + headers.js.map + image.d.ts + image.js + image.js.map + link.d.ts + link.js + link.js.map + navigation.d.ts + navigation.js + navigation.js.map + navigation.react-server.d.ts + navigation.react-server.js + navigation.react-server.js.map + og.d.ts + og.js + og.js.map + router.d.ts + router.js + router.js.map + script.d.ts + script.js + script.js.map + server.d.ts + server.js + server.js.map + + +---bin + next + next.d.ts + next.map + + +---build + after-production-compile.d.ts + after-production-compile.js + after-production-compile.js.map + build-context.d.ts + build-context.js + build-context.js.map + collect-build-traces.d.ts + collect-build-traces.js + collect-build-traces.js.map + compiler.d.ts + compiler.js + compiler.js.map + create-compiler-aliases.d.ts + create-compiler-aliases.js + create-compiler-aliases.js.map + define-env.d.ts + define-env.js + define-env.js.map + deployment-id.d.ts + deployment-id.js + deployment-id.js.map + duration-to-string.d.ts + duration-to-string.js + duration-to-string.js.map + entries.d.ts + entries.js + entries.js.map + generate-build-id.d.ts + generate-build-id.js + generate-build-id.js.map + get-babel-config-file.d.ts + get-babel-config-file.js + get-babel-config-file.js.map + get-babel-loader-config.d.ts + get-babel-loader-config.js + get-babel-loader-config.js.map + handle-entrypoints.d.ts + handle-entrypoints.js + handle-entrypoints.js.map + handle-externals.d.ts + handle-externals.js + handle-externals.js.map + index.d.ts + index.js + index.js.map + is-writeable.d.ts + is-writeable.js + is-writeable.js.map + load-entrypoint.d.ts + load-entrypoint.js + load-entrypoint.js.map + load-jsconfig.d.ts + load-jsconfig.js + load-jsconfig.js.map + next-dir-paths.d.ts + next-dir-paths.js + next-dir-paths.js.map + normalize-catchall-routes.d.ts + normalize-catchall-routes.js + normalize-catchall-routes.js.map + page-extensions-type.d.ts + page-extensions-type.js + page-extensions-type.js.map + preview-key-utils.d.ts + preview-key-utils.js + preview-key-utils.js.map + progress.d.ts + progress.js + progress.js.map + rendering-mode.d.ts + rendering-mode.js + rendering-mode.js.map + spinner.d.ts + spinner.js + spinner.js.map + type-check.d.ts + type-check.js + type-check.js.map + utils.d.ts + utils.js + utils.js.map + webpack-config.d.ts + webpack-config.js + webpack-config.js.map + worker.d.ts + worker.js + worker.js.map + write-build-id.d.ts + write-build-id.js + write-build-id.js.map + + +---adapter + build-complete.d.ts + build-complete.js + build-complete.js.map + + +---analysis + extract-const-value.d.ts + extract-const-value.js + extract-const-value.js.map + get-page-static-info.d.ts + get-page-static-info.js + get-page-static-info.js.map + parse-module.d.ts + parse-module.js + parse-module.js.map + + +---babel + preset.d.ts + preset.js + preset.js.map + + +---loader + get-config.d.ts + get-config.js + get-config.js.map + index.d.ts + index.js + index.js.map + transform.d.ts + transform.js + transform.js.map + types.d.ts + util.d.ts + util.js + util.js.map + + +---plugins + amp-attributes.d.ts + amp-attributes.js + amp-attributes.js.map + commonjs.d.ts + commonjs.js + commonjs.js.map + jsx-pragma.d.ts + jsx-pragma.js + jsx-pragma.js.map + next-font-unsupported.d.ts + next-font-unsupported.js + next-font-unsupported.js.map + next-page-config.d.ts + next-page-config.js + next-page-config.js.map + next-page-disallow-re-export-all-exports.d.ts + next-page-disallow-re-export-all-exports.js + next-page-disallow-re-export-all-exports.js.map + next-ssg-transform.d.ts + next-ssg-transform.js + next-ssg-transform.js.map + optimize-hook-destructuring.d.ts + optimize-hook-destructuring.js + optimize-hook-destructuring.js.map + react-loadable-plugin.d.ts + react-loadable-plugin.js + react-loadable-plugin.js.map + + +---jest + jest.d.ts + jest.js + jest.js.map + object-proxy.d.ts + object-proxy.js + object-proxy.js.map + + +---__mocks__ + empty.d.ts + empty.js + empty.js.map + fileMock.d.ts + fileMock.js + fileMock.js.map + nextFontMock.d.ts + nextFontMock.js + nextFontMock.js.map + styleMock.d.ts + styleMock.js + styleMock.js.map + + +---manifests + +---formatter + format-manifest.d.ts + format-manifest.js + format-manifest.js.map + + +---next-config-ts + require-hook.d.ts + require-hook.js + require-hook.js.map + transpile-config.d.ts + transpile-config.js + transpile-config.js.map + + +---output + format.d.ts + format.js + format.js.map + index.d.ts + index.js + index.js.map + log.d.ts + log.js + log.js.map + store.d.ts + store.js + store.js.map + + +---polyfills + object-assign.d.ts + object-assign.js + object-assign.js.map + polyfill-module.js + polyfill-nomodule.js + process.d.ts + process.js + process.js.map + + +---fetch + index.d.ts + index.js + index.js.map + whatwg-fetch.d.ts + whatwg-fetch.js + whatwg-fetch.js.map + + +---object.assign + auto.d.ts + auto.js + auto.js.map + implementation.d.ts + implementation.js + implementation.js.map + index.d.ts + index.js + index.js.map + polyfill.d.ts + polyfill.js + polyfill.js.map + shim.d.ts + shim.js + shim.js.map + + +---segment-config + +---app + app-segment-config.d.ts + app-segment-config.js + app-segment-config.js.map + app-segments.d.ts + app-segments.js + app-segments.js.map + collect-root-param-keys.d.ts + collect-root-param-keys.js + collect-root-param-keys.js.map + + +---middleware + middleware-config.d.ts + middleware-config.js + middleware-config.js.map + + +---pages + pages-segment-config.d.ts + pages-segment-config.js + pages-segment-config.js.map + + +---static-paths + app.d.ts + app.js + app.js.map + pages.d.ts + pages.js + pages.js.map + types.d.ts + types.js + types.js.map + utils.d.ts + utils.js + utils.js.map + + +---swc + generated-native.d.ts + generated-wasm.d.ts + helpers.d.ts + helpers.js + helpers.js.map + index.d.ts + index.js + index.js.map + jest-transformer.d.ts + jest-transformer.js + jest-transformer.js.map + options.d.ts + options.js + options.js.map + types.d.ts + types.js + types.js.map + + +---templates + app-page.d.ts + app-page.js + app-page.js.map + app-route.d.ts + app-route.js + app-route.js.map + edge-app-route.d.ts + edge-app-route.js + edge-app-route.js.map + edge-ssr-app.d.ts + edge-ssr-app.js + edge-ssr-app.js.map + edge-ssr.d.ts + edge-ssr.js + edge-ssr.js.map + helpers.d.ts + helpers.js + helpers.js.map + middleware.d.ts + middleware.js + middleware.js.map + pages-api.d.ts + pages-api.js + pages-api.js.map + pages-edge-api.d.ts + pages-edge-api.js + pages-edge-api.js.map + pages.d.ts + pages.js + pages.js.map + + +---turbopack-build + impl.d.ts + impl.js + impl.js.map + index.d.ts + index.js + index.js.map + + +---turborepo-access-trace + env.d.ts + env.js + env.js.map + helpers.d.ts + helpers.js + helpers.js.map + index.d.ts + index.js + index.js.map + result.d.ts + result.js + result.js.map + tcp.d.ts + tcp.js + tcp.js.map + types.d.ts + types.js + types.js.map + + +---webpack + cache-invalidation.d.ts + cache-invalidation.js + cache-invalidation.js.map + stringify-request.d.ts + stringify-request.js + stringify-request.js.map + utils.d.ts + utils.js + utils.js.map + + +---alias + react-dom-server-experimental.js + react-dom-server-experimental.js.map + react-dom-server.js + react-dom-server.js.map + + +---config + helpers.d.ts + helpers.js + helpers.js.map + index.d.ts + index.js + index.js.map + utils.d.ts + utils.js + utils.js.map + + +---blocks + base.d.ts + base.js + base.js.map + + +---css + index.d.ts + index.js + index.js.map + messages.d.ts + messages.js + messages.js.map + plugins.d.ts + plugins.js + plugins.js.map + + +---loaders + client.d.ts + client.js + client.js.map + file-resolve.d.ts + file-resolve.js + file-resolve.js.map + getCssModuleLocalIdent.d.ts + getCssModuleLocalIdent.js + getCssModuleLocalIdent.js.map + global.d.ts + global.js + global.js.map + index.d.ts + index.js + index.js.map + modules.d.ts + modules.js + modules.js.map + next-font.d.ts + next-font.js + next-font.js.map + + +---images + index.d.ts + index.js + index.js.map + messages.d.ts + messages.js + messages.js.map + + +---loaders + empty-loader.d.ts + empty-loader.js + empty-loader.js.map + error-loader.d.ts + error-loader.js + error-loader.js.map + get-module-build-info.d.ts + get-module-build-info.js + get-module-build-info.js.map + modularize-import-loader.d.ts + modularize-import-loader.js + modularize-import-loader.js.map + next-barrel-loader.d.ts + next-barrel-loader.js + next-barrel-loader.js.map + next-client-pages-loader.d.ts + next-client-pages-loader.js + next-client-pages-loader.js.map + next-edge-function-loader.d.ts + next-edge-function-loader.js + next-edge-function-loader.js.map + next-error-browser-binary-loader.d.ts + next-error-browser-binary-loader.js + next-error-browser-binary-loader.js.map + next-flight-action-entry-loader.d.ts + next-flight-action-entry-loader.js + next-flight-action-entry-loader.js.map + next-flight-client-entry-loader.d.ts + next-flight-client-entry-loader.js + next-flight-client-entry-loader.js.map + next-flight-client-module-loader.d.ts + next-flight-client-module-loader.js + next-flight-client-module-loader.js.map + next-flight-css-loader.d.ts + next-flight-css-loader.js + next-flight-css-loader.js.map + next-flight-server-reference-proxy-loader.d.ts + next-flight-server-reference-proxy-loader.js + next-flight-server-reference-proxy-loader.js.map + next-invalid-import-error-loader.d.ts + next-invalid-import-error-loader.js + next-invalid-import-error-loader.js.map + next-metadata-image-loader.d.ts + next-metadata-image-loader.js + next-metadata-image-loader.js.map + next-metadata-route-loader.d.ts + next-metadata-route-loader.js + next-metadata-route-loader.js.map + next-middleware-asset-loader.d.ts + next-middleware-asset-loader.js + next-middleware-asset-loader.js.map + next-middleware-loader.d.ts + next-middleware-loader.js + next-middleware-loader.js.map + next-middleware-wasm-loader.d.ts + next-middleware-wasm-loader.js + next-middleware-wasm-loader.js.map + next-swc-loader.d.ts + next-swc-loader.js + next-swc-loader.js.map + utils.d.ts + utils.js + utils.js.map + + +---css-loader + +---src + camelcase.d.ts + camelcase.js + camelcase.js.map + CssSyntaxError.d.ts + CssSyntaxError.js + CssSyntaxError.js.map + index.d.ts + index.js + index.js.map + utils.d.ts + utils.js + utils.js.map + + +---plugins + index.d.ts + index.js + index.js.map + postcss-icss-parser.d.ts + postcss-icss-parser.js + postcss-icss-parser.js.map + postcss-import-parser.d.ts + postcss-import-parser.js + postcss-import-parser.js.map + postcss-url-parser.d.ts + postcss-url-parser.js + postcss-url-parser.js.map + + +---runtime + api.d.ts + api.js + api.js.map + getUrl.d.ts + getUrl.js + getUrl.js.map + + +---devtool + devtool-style-inject.js + devtool-style-inject.js.map + + +---lightningcss-loader + +---src + codegen.d.ts + codegen.js + codegen.js.map + index.d.ts + index.js + index.js.map + interface.d.ts + interface.js + interface.js.map + loader.d.ts + loader.js + loader.js.map + minify.d.ts + minify.js + minify.js.map + utils.d.ts + utils.js + utils.js.map + + +---metadata + discover.d.ts + discover.js + discover.js.map + resolve-route-data.d.ts + resolve-route-data.js + resolve-route-data.js.map + types.d.ts + types.js + types.js.map + + +---next-app-loader + create-app-route-code.d.ts + create-app-route-code.js + create-app-route-code.js.map + index.d.ts + index.js + index.js.map + + +---next-edge-app-route-loader + index.d.ts + index.js + index.js.map + + +---next-edge-ssr-loader + index.d.ts + index.js + index.js.map + render.d.ts + render.js + render.js.map + + +---next-flight-loader + action-client-wrapper.d.ts + action-client-wrapper.js + action-client-wrapper.js.map + action-validate.d.ts + action-validate.js + action-validate.js.map + cache-wrapper.d.ts + cache-wrapper.js + cache-wrapper.js.map + index.d.ts + index.js + index.js.map + module-proxy.d.ts + module-proxy.js + module-proxy.js.map + server-reference.d.ts + server-reference.js + server-reference.js.map + track-dynamic-import.d.ts + track-dynamic-import.js + track-dynamic-import.js.map + + +---next-font-loader + index.d.ts + index.js + index.js.map + postcss-next-font.d.ts + postcss-next-font.js + postcss-next-font.js.map + + +---next-image-loader + blur.d.ts + blur.js + blur.js.map + index.d.ts + index.js + index.js.map + + +---next-route-loader + index.d.ts + index.js + index.js.map + + +---next-style-loader + index.d.ts + index.js + index.js.map + + +---runtime + injectStylesIntoLinkTag.d.ts + injectStylesIntoLinkTag.js + injectStylesIntoLinkTag.js.map + injectStylesIntoStyleTag.d.ts + injectStylesIntoStyleTag.js + injectStylesIntoStyleTag.js.map + isEqualLocals.d.ts + isEqualLocals.js + isEqualLocals.js.map + + +---postcss-loader + +---src + Error.d.ts + Error.js + Error.js.map + index.d.ts + index.js + index.js.map + utils.d.ts + utils.js + utils.js.map + Warning.d.ts + Warning.js + Warning.js.map + + +---resolve-url-loader + index.d.ts + index.js + index.js.map + + +---lib + file-protocol.d.ts + file-protocol.js + file-protocol.js.map + join-function.d.ts + join-function.js + join-function.js.map + postcss.d.ts + postcss.js + postcss.js.map + value-processor.d.ts + value-processor.js + value-processor.js.map + + +---plugins + app-build-manifest-plugin.d.ts + app-build-manifest-plugin.js + app-build-manifest-plugin.js.map + build-manifest-plugin.d.ts + build-manifest-plugin.js + build-manifest-plugin.js.map + copy-file-plugin.d.ts + copy-file-plugin.js + copy-file-plugin.js.map + css-chunking-plugin.d.ts + css-chunking-plugin.js + css-chunking-plugin.js.map + css-minimizer-plugin.d.ts + css-minimizer-plugin.js + css-minimizer-plugin.js.map + devtools-ignore-list-plugin.d.ts + devtools-ignore-list-plugin.js + devtools-ignore-list-plugin.js.map + eval-source-map-dev-tool-plugin.d.ts + eval-source-map-dev-tool-plugin.js + eval-source-map-dev-tool-plugin.js.map + flight-client-entry-plugin.d.ts + flight-client-entry-plugin.js + flight-client-entry-plugin.js.map + flight-manifest-plugin.d.ts + flight-manifest-plugin.js + flight-manifest-plugin.js.map + jsconfig-paths-plugin.d.ts + jsconfig-paths-plugin.js + jsconfig-paths-plugin.js.map + memory-with-gc-cache-plugin.d.ts + memory-with-gc-cache-plugin.js + memory-with-gc-cache-plugin.js.map + middleware-plugin.d.ts + middleware-plugin.js + middleware-plugin.js.map + mini-css-extract-plugin.d.ts + mini-css-extract-plugin.js + mini-css-extract-plugin.js.map + next-drop-client-page-plugin.d.ts + next-drop-client-page-plugin.js + next-drop-client-page-plugin.js.map + next-font-manifest-plugin.d.ts + next-font-manifest-plugin.js + next-font-manifest-plugin.js.map + next-trace-entrypoints-plugin.d.ts + next-trace-entrypoints-plugin.js + next-trace-entrypoints-plugin.js.map + nextjs-require-cache-hot-reloader.d.ts + nextjs-require-cache-hot-reloader.js + nextjs-require-cache-hot-reloader.js.map + optional-peer-dependency-resolve-plugin.d.ts + optional-peer-dependency-resolve-plugin.js + optional-peer-dependency-resolve-plugin.js.map + pages-manifest-plugin.d.ts + pages-manifest-plugin.js + pages-manifest-plugin.js.map + profiling-plugin.d.ts + profiling-plugin.js + profiling-plugin.js.map + react-loadable-plugin.d.ts + react-loadable-plugin.js + react-loadable-plugin.js.map + rspack-flight-client-entry-plugin.d.ts + rspack-flight-client-entry-plugin.js + rspack-flight-client-entry-plugin.js.map + rspack-profiling-plugin.d.ts + rspack-profiling-plugin.js + rspack-profiling-plugin.js.map + slow-module-detection-plugin.d.ts + slow-module-detection-plugin.js + slow-module-detection-plugin.js.map + subresource-integrity-plugin.d.ts + subresource-integrity-plugin.js + subresource-integrity-plugin.js.map + + +---minify-webpack-plugin + +---src + index.d.ts + index.js + index.js.map + + +---next-types-plugin + index.d.ts + index.js + index.js.map + shared.d.ts + shared.js + shared.js.map + + +---telemetry-plugin + telemetry-plugin.d.ts + telemetry-plugin.js + telemetry-plugin.js.map + update-telemetry-loader-context-from-swc.d.ts + update-telemetry-loader-context-from-swc.js + update-telemetry-loader-context-from-swc.js.map + use-cache-tracker-utils.d.ts + use-cache-tracker-utils.js + use-cache-tracker-utils.js.map + + +---wellknown-errors-plugin + getModuleTrace.d.ts + getModuleTrace.js + getModuleTrace.js.map + index.d.ts + index.js + index.js.map + parse-dynamic-code-evaluation-error.d.ts + parse-dynamic-code-evaluation-error.js + parse-dynamic-code-evaluation-error.js.map + parseBabel.d.ts + parseBabel.js + parseBabel.js.map + parseCss.d.ts + parseCss.js + parseCss.js.map + parseNextAppLoaderError.d.ts + parseNextAppLoaderError.js + parseNextAppLoaderError.js.map + parseNextFontError.d.ts + parseNextFontError.js + parseNextFontError.js.map + parseNextInvalidImportError.d.ts + parseNextInvalidImportError.js + parseNextInvalidImportError.js.map + parseNotFoundError.d.ts + parseNotFoundError.js + parseNotFoundError.js.map + parseScss.d.ts + parseScss.js + parseScss.js.map + simpleWebpackError.d.ts + simpleWebpackError.js + simpleWebpackError.js.map + webpackModuleError.d.ts + webpackModuleError.js + webpackModuleError.js.map + + +---webpack-build + impl.d.ts + impl.js + impl.js.map + index.d.ts + index.js + index.js.map + + +---webpack-config-rules + resolve.d.ts + resolve.js + resolve.js.map + + +---cli + next-build.d.ts + next-build.js + next-build.js.map + next-dev.d.ts + next-dev.js + next-dev.js.map + next-export.d.ts + next-export.js + next-export.js.map + next-info.d.ts + next-info.js + next-info.js.map + next-lint.d.ts + next-lint.js + next-lint.js.map + next-start.d.ts + next-start.js + next-start.js.map + next-telemetry.d.ts + next-telemetry.js + next-telemetry.js.map + next-test.d.ts + next-test.js + next-test.js.map + + +---internal + turbo-trace-server.d.ts + turbo-trace-server.js + turbo-trace-server.js.map + + +---client + add-base-path.d.ts + add-base-path.js + add-base-path.js.map + add-locale.d.ts + add-locale.js + add-locale.js.map + app-bootstrap.d.ts + app-bootstrap.js + app-bootstrap.js.map + app-build-id.d.ts + app-build-id.js + app-build-id.js.map + app-call-server.d.ts + app-call-server.js + app-call-server.js.map + app-find-source-map-url.d.ts + app-find-source-map-url.js + app-find-source-map-url.js.map + app-globals.d.ts + app-globals.js + app-globals.js.map + app-index.d.ts + app-index.js + app-index.js.map + app-link-gc.d.ts + app-link-gc.js + app-link-gc.js.map + app-next-dev.d.ts + app-next-dev.js + app-next-dev.js.map + app-next-turbopack.d.ts + app-next-turbopack.js + app-next-turbopack.js.map + app-next.d.ts + app-next.js + app-next.js.map + app-webpack.d.ts + app-webpack.js + app-webpack.js.map + assign-location.d.ts + assign-location.js + assign-location.js.map + detect-domain-locale.d.ts + detect-domain-locale.js + detect-domain-locale.js.map + flight-data-helpers.d.ts + flight-data-helpers.js + flight-data-helpers.js.map + form-shared.d.ts + form-shared.js + form-shared.js.map + form.d.ts + form.js + form.js.map + get-domain-locale.d.ts + get-domain-locale.js + get-domain-locale.js.map + has-base-path.d.ts + has-base-path.js + has-base-path.js.map + head-manager.d.ts + head-manager.js + head-manager.js.map + image-component.d.ts + image-component.js + image-component.js.map + index.d.ts + index.js + index.js.map + link.d.ts + link.js + link.js.map + next-dev-turbopack.d.ts + next-dev-turbopack.js + next-dev-turbopack.js.map + next-dev.d.ts + next-dev.js + next-dev.js.map + next-turbopack.d.ts + next-turbopack.js + next-turbopack.js.map + next.d.ts + next.js + next.js.map + normalize-locale-path.d.ts + normalize-locale-path.js + normalize-locale-path.js.map + normalize-trailing-slash.d.ts + normalize-trailing-slash.js + normalize-trailing-slash.js.map + page-bootstrap.d.ts + page-bootstrap.js + page-bootstrap.js.map + page-loader.d.ts + page-loader.js + page-loader.js.map + remove-base-path.d.ts + remove-base-path.js + remove-base-path.js.map + remove-locale.d.ts + remove-locale.js + remove-locale.js.map + request-idle-callback.d.ts + request-idle-callback.js + request-idle-callback.js.map + resolve-href.d.ts + resolve-href.js + resolve-href.js.map + route-announcer.d.ts + route-announcer.js + route-announcer.js.map + route-loader.d.ts + route-loader.js + route-loader.js.map + router.d.ts + router.js + router.js.map + script.d.ts + script.js + script.js.map + set-attributes-from-props.d.ts + set-attributes-from-props.js + set-attributes-from-props.js.map + trusted-types.d.ts + trusted-types.js + trusted-types.js.map + use-client-disallowed.d.ts + use-client-disallowed.js + use-client-disallowed.js.map + use-intersection.d.ts + use-intersection.js + use-intersection.js.map + use-merged-ref.d.ts + use-merged-ref.js + use-merged-ref.js.map + web-vitals.d.ts + web-vitals.js + web-vitals.js.map + webpack.d.ts + webpack.js + webpack.js.map + with-router.d.ts + with-router.js + with-router.js.map + + +---app-dir + form.d.ts + form.js + form.js.map + link.d.ts + link.js + link.js.map + + +---compat + router.d.ts + router.js + router.js.map + + +---components + app-router-announcer.d.ts + app-router-announcer.js + app-router-announcer.js.map + app-router-headers.d.ts + app-router-headers.js + app-router-headers.js.map + app-router-instance.d.ts + app-router-instance.js + app-router-instance.js.map + app-router.d.ts + app-router.js + app-router.js.map + bailout-to-client-rendering.d.ts + bailout-to-client-rendering.js + bailout-to-client-rendering.js.map + bfcache.d.ts + bfcache.js + bfcache.js.map + client-page.d.ts + client-page.js + client-page.js.map + client-segment.d.ts + client-segment.js + client-segment.js.map + dev-root-http-access-fallback-boundary.d.ts + dev-root-http-access-fallback-boundary.js + dev-root-http-access-fallback-boundary.js.map + error-boundary.d.ts + error-boundary.js + error-boundary.js.map + forbidden.d.ts + forbidden.js + forbidden.js.map + handle-isr-error.d.ts + handle-isr-error.js + handle-isr-error.js.map + hooks-server-context.d.ts + hooks-server-context.js + hooks-server-context.js.map + is-next-router-error.d.ts + is-next-router-error.js + is-next-router-error.js.map + layout-router.d.ts + layout-router.js + layout-router.js.map + links.d.ts + links.js + links.js.map + match-segments.d.ts + match-segments.js + match-segments.js.map + nav-failure-handler.d.ts + nav-failure-handler.js + nav-failure-handler.js.map + navigation-untracked.d.ts + navigation-untracked.js + navigation-untracked.js.map + navigation.d.ts + navigation.js + navigation.js.map + navigation.react-server.d.ts + navigation.react-server.js + navigation.react-server.js.map + noop-head.d.ts + noop-head.js + noop-head.js.map + not-found.d.ts + not-found.js + not-found.js.map + promise-queue.d.ts + promise-queue.js + promise-queue.js.map + redirect-boundary.d.ts + redirect-boundary.js + redirect-boundary.js.map + redirect-error.d.ts + redirect-error.js + redirect-error.js.map + redirect-status-code.d.ts + redirect-status-code.js + redirect-status-code.js.map + redirect.d.ts + redirect.js + redirect.js.map + render-from-template-context.d.ts + render-from-template-context.js + render-from-template-context.js.map + segment-cache.d.ts + segment-cache.js + segment-cache.js.map + static-generation-bailout.d.ts + static-generation-bailout.js + static-generation-bailout.js.map + unauthorized.d.ts + unauthorized.js + unauthorized.js.map + unresolved-thenable.d.ts + unresolved-thenable.js + unresolved-thenable.js.map + unstable-rethrow.browser.d.ts + unstable-rethrow.browser.js + unstable-rethrow.browser.js.map + unstable-rethrow.d.ts + unstable-rethrow.js + unstable-rethrow.js.map + unstable-rethrow.server.d.ts + unstable-rethrow.server.js + unstable-rethrow.server.js.map + use-action-queue.d.ts + use-action-queue.js + use-action-queue.js.map + + +---builtin + default.d.ts + default.js + default.js.map + forbidden.d.ts + forbidden.js + forbidden.js.map + global-error.d.ts + global-error.js + global-error.js.map + global-not-found.d.ts + global-not-found.js + global-not-found.js.map + layout.d.ts + layout.js + layout.js.map + not-found.d.ts + not-found.js + not-found.js.map + unauthorized.d.ts + unauthorized.js + unauthorized.js.map + + +---errors + graceful-degrade-boundary.d.ts + graceful-degrade-boundary.js + graceful-degrade-boundary.js.map + + +---http-access-fallback + error-boundary.d.ts + error-boundary.js + error-boundary.js.map + error-fallback.d.ts + error-fallback.js + error-fallback.js.map + http-access-fallback.d.ts + http-access-fallback.js + http-access-fallback.js.map + + +---metadata + async-metadata.d.ts + async-metadata.js + async-metadata.js.map + metadata-boundary.d.ts + metadata-boundary.js + metadata-boundary.js.map + types.d.ts + types.js + types.js.map + + +---router-reducer + aliased-prefetch-navigations.d.ts + aliased-prefetch-navigations.js + aliased-prefetch-navigations.js.map + apply-flight-data.d.ts + apply-flight-data.js + apply-flight-data.js.map + apply-router-state-patch-to-tree.d.ts + apply-router-state-patch-to-tree.js + apply-router-state-patch-to-tree.js.map + clear-cache-node-data-for-segment-path.d.ts + clear-cache-node-data-for-segment-path.js + clear-cache-node-data-for-segment-path.js.map + compute-changed-path.d.ts + compute-changed-path.js + compute-changed-path.js.map + create-href-from-url.d.ts + create-href-from-url.js + create-href-from-url.js.map + create-initial-router-state.d.ts + create-initial-router-state.js + create-initial-router-state.js.map + create-router-cache-key.d.ts + create-router-cache-key.js + create-router-cache-key.js.map + fetch-server-response.d.ts + fetch-server-response.js + fetch-server-response.js.map + fill-cache-with-new-subtree-data.d.ts + fill-cache-with-new-subtree-data.js + fill-cache-with-new-subtree-data.js.map + fill-lazy-items-till-leaf-with-head.d.ts + fill-lazy-items-till-leaf-with-head.js + fill-lazy-items-till-leaf-with-head.js.map + handle-mutable.d.ts + handle-mutable.js + handle-mutable.js.map + handle-segment-mismatch.d.ts + handle-segment-mismatch.js + handle-segment-mismatch.js.map + invalidate-cache-below-flight-segmentpath.d.ts + invalidate-cache-below-flight-segmentpath.js + invalidate-cache-below-flight-segmentpath.js.map + invalidate-cache-by-router-state.d.ts + invalidate-cache-by-router-state.js + invalidate-cache-by-router-state.js.map + is-navigating-to-new-root-layout.d.ts + is-navigating-to-new-root-layout.js + is-navigating-to-new-root-layout.js.map + ppr-navigations.d.ts + ppr-navigations.js + ppr-navigations.js.map + prefetch-cache-utils.d.ts + prefetch-cache-utils.js + prefetch-cache-utils.js.map + refetch-inactive-parallel-segments.d.ts + refetch-inactive-parallel-segments.js + refetch-inactive-parallel-segments.js.map + router-reducer-types.d.ts + router-reducer-types.js + router-reducer-types.js.map + router-reducer.d.ts + router-reducer.js + router-reducer.js.map + set-cache-busting-search-param.d.ts + set-cache-busting-search-param.js + set-cache-busting-search-param.js.map + should-hard-navigate.d.ts + should-hard-navigate.js + should-hard-navigate.js.map + + +---reducers + find-head-in-cache.d.ts + find-head-in-cache.js + find-head-in-cache.js.map + get-segment-value.d.ts + get-segment-value.js + get-segment-value.js.map + has-interception-route-in-current-tree.d.ts + has-interception-route-in-current-tree.js + has-interception-route-in-current-tree.js.map + hmr-refresh-reducer.d.ts + hmr-refresh-reducer.js + hmr-refresh-reducer.js.map + navigate-reducer.d.ts + navigate-reducer.js + navigate-reducer.js.map + prefetch-reducer.d.ts + prefetch-reducer.js + prefetch-reducer.js.map + refresh-reducer.d.ts + refresh-reducer.js + refresh-reducer.js.map + restore-reducer.d.ts + restore-reducer.js + restore-reducer.js.map + server-action-reducer.d.ts + server-action-reducer.js + server-action-reducer.js.map + server-patch-reducer.d.ts + server-patch-reducer.js + server-patch-reducer.js.map + + +---segment-cache-impl + cache-key.d.ts + cache-key.js + cache-key.js.map + cache.d.ts + cache.js + cache.js.map + lru.d.ts + lru.js + lru.js.map + navigation.d.ts + navigation.js + navigation.js.map + prefetch.d.ts + prefetch.js + prefetch.js.map + scheduler.d.ts + scheduler.js + scheduler.js.map + tuple-map.d.ts + tuple-map.js + tuple-map.js.map + + +---styles + access-error-styles.d.ts + access-error-styles.js + access-error-styles.js.map + + +---dev + amp-dev.d.ts + amp-dev.js + amp-dev.js.map + fouc.d.ts + fouc.js + fouc.js.map + hot-middleware-client.d.ts + hot-middleware-client.js + hot-middleware-client.js.map + noop-turbopack-hmr.d.ts + noop-turbopack-hmr.js + noop-turbopack-hmr.js.map + on-demand-entries-client.d.ts + on-demand-entries-client.js + on-demand-entries-client.js.map + report-hmr-latency.d.ts + report-hmr-latency.js + report-hmr-latency.js.map + runtime-error-handler.d.ts + runtime-error-handler.js + runtime-error-handler.js.map + + +---error-overlay + websocket.d.ts + websocket.js + websocket.js.map + + +---hot-reloader + get-socket-url.d.ts + get-socket-url.js + get-socket-url.js.map + shared.d.ts + shared.js + shared.js.map + turbopack-hot-reloader-common.d.ts + turbopack-hot-reloader-common.js + turbopack-hot-reloader-common.js.map + + +---app + hot-reloader-app.d.ts + hot-reloader-app.js + hot-reloader-app.js.map + use-websocket.d.ts + use-websocket.js + use-websocket.js.map + + +---pages + hot-reloader-pages.d.ts + hot-reloader-pages.js + hot-reloader-pages.js.map + websocket.d.ts + websocket.js + websocket.js.map + + +---legacy + image.d.ts + image.js + image.js.map + + +---lib + console.d.ts + console.js + console.js.map + + +---portal + index.d.ts + index.js + index.js.map + + +---react-client-callbacks + error-boundary-callbacks.d.ts + error-boundary-callbacks.js + error-boundary-callbacks.js.map + on-recoverable-error.d.ts + on-recoverable-error.js + on-recoverable-error.js.map + report-global-error.d.ts + report-global-error.js + report-global-error.js.map + + +---request + params.browser.d.ts + params.browser.dev.d.ts + params.browser.dev.js + params.browser.dev.js.map + params.browser.js + params.browser.js.map + params.browser.prod.d.ts + params.browser.prod.js + params.browser.prod.js.map + search-params.browser.d.ts + search-params.browser.dev.d.ts + search-params.browser.dev.js + search-params.browser.dev.js.map + search-params.browser.js + search-params.browser.js.map + search-params.browser.prod.d.ts + search-params.browser.prod.js + search-params.browser.prod.js.map + + +---tracing + report-to-socket.d.ts + report-to-socket.js + report-to-socket.js.map + tracer.d.ts + tracer.js + tracer.js.map + + +---compiled + +---@ampproject + +---toolbox-optimizer + index.js + LICENSE + package.json + + +---@babel + +---runtime + LICENSE + package.json + README.md + + +---helpers + applyDecoratedDescriptor.js + applyDecs.js + applyDecs2203.js + applyDecs2203R.js + applyDecs2301.js + applyDecs2305.js + applyDecs2311.js + arrayLikeToArray.js + arrayWithHoles.js + arrayWithoutHoles.js + assertClassBrand.js + assertThisInitialized.js + asyncGeneratorDelegate.js + asyncIterator.js + asyncToGenerator.js + awaitAsyncGenerator.js + AwaitValue.js + callSuper.js + checkInRHS.js + checkPrivateRedeclaration.js + classApplyDescriptorDestructureSet.js + classApplyDescriptorGet.js + classApplyDescriptorSet.js + classCallCheck.js + classCheckPrivateStaticAccess.js + classCheckPrivateStaticFieldDescriptor.js + classExtractFieldDescriptor.js + classNameTDZError.js + classPrivateFieldDestructureSet.js + classPrivateFieldGet.js + classPrivateFieldGet2.js + classPrivateFieldInitSpec.js + classPrivateFieldLooseBase.js + classPrivateFieldLooseKey.js + classPrivateFieldSet.js + classPrivateFieldSet2.js + classPrivateGetter.js + classPrivateMethodGet.js + classPrivateMethodInitSpec.js + classPrivateMethodSet.js + classPrivateSetter.js + classStaticPrivateFieldDestructureSet.js + classStaticPrivateFieldSpecGet.js + classStaticPrivateFieldSpecSet.js + classStaticPrivateMethodGet.js + classStaticPrivateMethodSet.js + construct.js + createClass.js + createForOfIteratorHelper.js + createForOfIteratorHelperLoose.js + createSuper.js + decorate.js + defaults.js + defineAccessor.js + defineEnumerableProperties.js + defineProperty.js + dispose.js + extends.js + get.js + getPrototypeOf.js + identity.js + importDeferProxy.js + inherits.js + inheritsLoose.js + initializerDefineProperty.js + initializerWarningHelper.js + instanceof.js + interopRequireDefault.js + interopRequireWildcard.js + isNativeFunction.js + isNativeReflectConstruct.js + iterableToArray.js + iterableToArrayLimit.js + jsx.js + maybeArrayLike.js + newArrowCheck.js + nonIterableRest.js + nonIterableSpread.js + nullishReceiverError.js + objectDestructuringEmpty.js + objectSpread.js + objectSpread2.js + objectWithoutProperties.js + objectWithoutPropertiesLoose.js + OverloadYield.js + possibleConstructorReturn.js + readOnlyError.js + regeneratorRuntime.js + set.js + setFunctionName.js + setPrototypeOf.js + skipFirstGeneratorNext.js + slicedToArray.js + superPropBase.js + superPropGet.js + superPropSet.js + taggedTemplateLiteral.js + taggedTemplateLiteralLoose.js + tdz.js + temporalRef.js + temporalUndefined.js + toArray.js + toConsumableArray.js + toPrimitive.js + toPropertyKey.js + toSetter.js + tsRewriteRelativeImportExtensions.js + typeof.js + unsupportedIterableToArray.js + using.js + usingCtx.js + wrapAsyncGenerator.js + wrapNativeSuper.js + wrapRegExp.js + writeOnlyError.js + + +---esm + applyDecoratedDescriptor.js + applyDecs.js + applyDecs2203.js + applyDecs2203R.js + applyDecs2301.js + applyDecs2305.js + applyDecs2311.js + arrayLikeToArray.js + arrayWithHoles.js + arrayWithoutHoles.js + assertClassBrand.js + assertThisInitialized.js + asyncGeneratorDelegate.js + asyncIterator.js + asyncToGenerator.js + awaitAsyncGenerator.js + AwaitValue.js + callSuper.js + checkInRHS.js + checkPrivateRedeclaration.js + classApplyDescriptorDestructureSet.js + classApplyDescriptorGet.js + classApplyDescriptorSet.js + classCallCheck.js + classCheckPrivateStaticAccess.js + classCheckPrivateStaticFieldDescriptor.js + classExtractFieldDescriptor.js + classNameTDZError.js + classPrivateFieldDestructureSet.js + classPrivateFieldGet.js + classPrivateFieldGet2.js + classPrivateFieldInitSpec.js + classPrivateFieldLooseBase.js + classPrivateFieldLooseKey.js + classPrivateFieldSet.js + classPrivateFieldSet2.js + classPrivateGetter.js + classPrivateMethodGet.js + classPrivateMethodInitSpec.js + classPrivateMethodSet.js + classPrivateSetter.js + classStaticPrivateFieldDestructureSet.js + classStaticPrivateFieldSpecGet.js + classStaticPrivateFieldSpecSet.js + classStaticPrivateMethodGet.js + classStaticPrivateMethodSet.js + construct.js + createClass.js + createForOfIteratorHelper.js + createForOfIteratorHelperLoose.js + createSuper.js + decorate.js + defaults.js + defineAccessor.js + defineEnumerableProperties.js + defineProperty.js + dispose.js + extends.js + get.js + getPrototypeOf.js + identity.js + importDeferProxy.js + inherits.js + inheritsLoose.js + initializerDefineProperty.js + initializerWarningHelper.js + instanceof.js + interopRequireDefault.js + interopRequireWildcard.js + isNativeFunction.js + isNativeReflectConstruct.js + iterableToArray.js + iterableToArrayLimit.js + jsx.js + maybeArrayLike.js + newArrowCheck.js + nonIterableRest.js + nonIterableSpread.js + nullishReceiverError.js + objectDestructuringEmpty.js + objectSpread.js + objectSpread2.js + objectWithoutProperties.js + objectWithoutPropertiesLoose.js + OverloadYield.js + package.json + possibleConstructorReturn.js + readOnlyError.js + regeneratorRuntime.js + set.js + setFunctionName.js + setPrototypeOf.js + skipFirstGeneratorNext.js + slicedToArray.js + superPropBase.js + superPropGet.js + superPropSet.js + taggedTemplateLiteral.js + taggedTemplateLiteralLoose.js + tdz.js + temporalRef.js + temporalUndefined.js + toArray.js + toConsumableArray.js + toPrimitive.js + toPropertyKey.js + toSetter.js + tsRewriteRelativeImportExtensions.js + typeof.js + unsupportedIterableToArray.js + using.js + usingCtx.js + wrapAsyncGenerator.js + wrapNativeSuper.js + wrapRegExp.js + writeOnlyError.js + + +---regenerator + index.js + + +---@edge-runtime + +---cookies + index.d.ts + index.js + package.json + + +---ponyfill + index.d.ts + index.js + package.json + + +---primitives + abort-controller.d.ts + abort-controller.js.LEGAL.txt + abort-controller.js.text.js + console.d.ts + console.js.LEGAL.txt + console.js.text.js + crypto.d.ts + crypto.js + crypto.js.LEGAL.txt + events.d.ts + events.js.LEGAL.txt + events.js.text.js + fetch.d.ts + fetch.js + fetch.js.LEGAL.txt + index.d.ts + index.js + index.js.LEGAL.txt + load.d.ts + load.js + load.js.LEGAL.txt + package.json + stream.js + stream.js.LEGAL.txt + timers.d.ts + timers.js.LEGAL.txt + timers.js.text.js + url.d.ts + url.js.LEGAL.txt + url.js.text.js + + +---@hapi + +---accept + index.js + package.json + + +---@mswjs + +---interceptors + +---ClientRequest + index.js + package.json + + +---@napi-rs + +---triples + index.js + LICENSE + package.json + + +---@next + +---font + package.json + + +---dist + constants.d.ts + constants.js + format-available-values.d.ts + format-available-values.js + next-font-error.d.ts + next-font-error.js + types.d.ts + types.js + + +---fontkit + index.js + + +---google + fetch-css-from-google-fonts.d.ts + fetch-css-from-google-fonts.js + fetch-font-file.d.ts + fetch-font-file.js + fetch-resource.d.ts + fetch-resource.js + find-font-files-in-css.d.ts + find-font-files-in-css.js + font-data.json + get-fallback-font-override-metrics.d.ts + get-fallback-font-override-metrics.js + get-font-axes.d.ts + get-font-axes.js + get-google-fonts-url.d.ts + get-google-fonts-url.js + get-proxy-agent.d.ts + get-proxy-agent.js + google-fonts-metadata.d.ts + google-fonts-metadata.js + index.d.ts + index.js + loader.d.ts + loader.js + retry.d.ts + retry.js + sort-fonts-variant-values.d.ts + sort-fonts-variant-values.js + validate-google-font-function-call.d.ts + validate-google-font-function-call.js + + +---local + get-fallback-metrics-from-font-file.d.ts + get-fallback-metrics-from-font-file.js + index.d.ts + index.js + loader.d.ts + loader.js + pick-font-file-for-fallback-generation.d.ts + pick-font-file-for-fallback-generation.js + validate-local-font-function-call.d.ts + validate-local-font-function-call.js + + +---google + index.d.ts + index.js + loader.d.ts + loader.js + + +---local + index.d.ts + index.js + loader.d.ts + loader.js + + +---react-refresh-utils + +---dist + loader.js + loader.js.map + ReactRefreshWebpackPlugin.js + ReactRefreshWebpackPlugin.js.map + runtime.js + runtime.js.map + + +---internal + helpers.js + helpers.js.map + ReactRefreshModule.runtime.js + ReactRefreshModule.runtime.js.map + + +---@opentelemetry + +---api + index.js + LICENSE + package.json + + +---@vercel + +---nft + index.js + LICENSE + package.json + + +---og + index.edge.d.ts + index.edge.js + index.node.d.ts + index.node.js + LICENSE + noto-sans-v27-latin-regular.ttf + og.d.ts + package.json + resvg.wasm + types.d.ts + yoga.wasm + + +---emoji + index.d.ts + + +---figma + index.d.ts + + +---language + index.d.ts + + +---satori + index.d.ts + LICENSE + + +---acorn + acorn.js + LICENSE + package.json + + +---amphtml-validator + index.js + package.json + validator_wasm.js + + +---anser + index.js + LICENSE + package.json + + +---assert + assert.js + LICENSE + package.json + + +---async-retry + index.js + package.json + + +---async-sema + index.js + package.json + + +---babel + bundle.js + code-frame.js + core-lib-block-hoist-plugin.js + core-lib-config.js + core-lib-normalize-file.js + core-lib-normalize-opts.js + core-lib-plugin-pass.js + core.js + eslint-parser.js + generator.js + LICENSE + package.json + parser.js + plugin-proposal-class-properties.js + plugin-proposal-export-namespace-from.js + plugin-proposal-numeric-separator.js + plugin-proposal-object-rest-spread.js + plugin-syntax-bigint.js + plugin-syntax-dynamic-import.js + plugin-syntax-import-attributes.js + plugin-syntax-jsx.js + plugin-transform-define.js + plugin-transform-modules-commonjs.js + plugin-transform-react-remove-prop-types.js + plugin-transform-runtime.js + preset-env.js + preset-react.js + preset-typescript.js + traverse.js + types.js + + +---babel-packages + package.json + packages-bundle.js + + +---browserify-zlib + index.js + LICENSE + package.json + + +---browserslist + index.js + LICENSE + package.json + + +---buffer + index.js + LICENSE + package.json + + +---busboy + index.js + LICENSE + package.json + + +---bytes + index.js + LICENSE + package.json + + +---ci-info + index.js + LICENSE + package.json + + +---cli-select + index.js + LICENSE + package.json + + +---client-only + error.js + index.js + package.json + + +---commander + index.js + LICENSE + package.json + + +---comment-json + index.js + LICENSE + package.json + + +---compression + index.js + LICENSE + package.json + + +---conf + index.js + LICENSE + package.json + + +---constants-browserify + constants.json + package.json + + +---content-disposition + index.js + LICENSE + package.json + + +---content-type + index.js + LICENSE + package.json + + +---cookie + index.js + LICENSE + package.json + + +---cross-spawn + index.js + LICENSE + package.json + + +---crypto-browserify + index.js + LICENSE + package.json + + +---css.escape + css.escape.js + package.json + + +---cssnano-simple + index.js + + +---data-uri-to-buffer + index.js + package.json + + +---debug + index.js + LICENSE + package.json + + +---devalue + devalue.umd.js + LICENSE + package.json + + +---domain-browser + index.js + package.json + + +---edge-runtime + index.js + package.json + + +---events + events.js + LICENSE + package.json + + +---find-up + index.js + LICENSE + package.json + + +---fresh + index.js + LICENSE + package.json + + +---glob + glob.js + LICENSE + package.json + + +---gzip-size + index.js + LICENSE + package.json + + +---http-proxy + index.js + LICENSE + package.json + + +---http-proxy-agent + index.js + package.json + + +---https-browserify + index.js + LICENSE + package.json + + +---https-proxy-agent + index.js + package.json + + +---icss-utils + index.js + package.json + + +---ignore-loader + index.js + LICENSE + package.json + + +---image-size + index.js + LICENSE + package.json + + +---is-animated + index.js + package.json + + +---is-docker + index.js + LICENSE + package.json + + +---is-wsl + index.js + LICENSE + package.json + + +---jest-worker + index.js + LICENSE + package.json + processChild.js + threadChild.js + + +---json5 + index.js + package.json + + +---jsonwebtoken + index.js + LICENSE + package.json + + +---loader-runner + LICENSE + LoaderRunner.js + package.json + + +---loader-utils2 + index.js + LICENSE + package.json + + +---loader-utils3 + index.js + LICENSE + package.json + + +---lodash.curry + index.js + LICENSE + package.json + + +---lru-cache + index.js + LICENSE + package.json + + +---mini-css-extract-plugin + cjs.js + index.js + LICENSE + loader.js + package.json + + +---hmr + hotModuleReplacement.js + + +---nanoid + index.cjs + LICENSE + package.json + + +---native-url + index.js + LICENSE + package.json + + +---neo-async + async.js + LICENSE + package.json + + +---next-devtools + index.js + index.js.map + + +---next-server + app-page-experimental.runtime.dev.js + app-page-experimental.runtime.dev.js.map + app-page-experimental.runtime.prod.js + app-page-experimental.runtime.prod.js.map + app-page-turbo-experimental.runtime.dev.js + app-page-turbo-experimental.runtime.dev.js.map + app-page-turbo-experimental.runtime.prod.js + app-page-turbo-experimental.runtime.prod.js.map + app-page-turbo.runtime.dev.js + app-page-turbo.runtime.dev.js.map + app-page-turbo.runtime.prod.js + app-page-turbo.runtime.prod.js.map + app-page.runtime.dev.js + app-page.runtime.dev.js.map + app-page.runtime.prod.js + app-page.runtime.prod.js.map + app-route-experimental.runtime.dev.js + app-route-experimental.runtime.dev.js.map + app-route-experimental.runtime.prod.js + app-route-experimental.runtime.prod.js.map + app-route-turbo-experimental.runtime.dev.js + app-route-turbo-experimental.runtime.dev.js.map + app-route-turbo-experimental.runtime.prod.js + app-route-turbo-experimental.runtime.prod.js.map + app-route-turbo.runtime.dev.js + app-route-turbo.runtime.dev.js.map + app-route-turbo.runtime.prod.js + app-route-turbo.runtime.prod.js.map + app-route.runtime.dev.js + app-route.runtime.dev.js.map + app-route.runtime.prod.js + app-route.runtime.prod.js.map + dist_client_dev_noop-turbopack-hmr_js-experimental.runtime.dev.js + dist_client_dev_noop-turbopack-hmr_js-experimental.runtime.dev.js.map + dist_client_dev_noop-turbopack-hmr_js-turbo-experimental.runtime.dev.js + dist_client_dev_noop-turbopack-hmr_js-turbo-experimental.runtime.dev.js.map + dist_client_dev_noop-turbopack-hmr_js-turbo.runtime.dev.js + dist_client_dev_noop-turbopack-hmr_js-turbo.runtime.dev.js.map + dist_client_dev_noop-turbopack-hmr_js.runtime.dev.js + dist_client_dev_noop-turbopack-hmr_js.runtime.dev.js.map + pages-api-turbo.runtime.dev.js + pages-api-turbo.runtime.dev.js.map + pages-api-turbo.runtime.prod.js + pages-api-turbo.runtime.prod.js.map + pages-api.runtime.dev.js + pages-api.runtime.dev.js.map + pages-api.runtime.prod.js + pages-api.runtime.prod.js.map + pages-turbo.runtime.dev.js + pages-turbo.runtime.dev.js.map + pages-turbo.runtime.prod.js + pages-turbo.runtime.prod.js.map + pages.runtime.dev.js + pages.runtime.dev.js.map + pages.runtime.prod.js + pages.runtime.prod.js.map + server.runtime.prod.js + server.runtime.prod.js.map + + +---node-html-parser + index.js + LICENSE + package.json + + +---ora + index.js + LICENSE + package.json + + +---os-browserify + browser.js + LICENSE + package.json + + +---p-limit + index.js + LICENSE + package.json + + +---p-queue + index.js + LICENSE + package.json + + +---path-browserify + index.js + LICENSE + package.json + + +---path-to-regexp + index.js + LICENSE + package.json + + +---picomatch + index.js + LICENSE + package.json + + +---postcss-flexbugs-fixes + index.js + LICENSE + package.json + + +---postcss-modules-extract-imports + index.js + LICENSE + package.json + + +---postcss-modules-local-by-default + index.js + LICENSE + package.json + + +---postcss-modules-scope + index.js + LICENSE + package.json + + +---postcss-modules-values + index.js + LICENSE + package.json + + +---postcss-plugin-stub-for-cssnano-simple + index.js + + +---postcss-preset-env + index.cjs + package.json + + +---postcss-safe-parser + LICENSE + package.json + safe-parse.js + + +---postcss-scss + LICENSE + package.json + scss-syntax.js + + +---postcss-value-parser + index.js + LICENSE + package.json + + +---process + browser.js + LICENSE + package.json + + +---punycode + package.json + punycode.js + + +---querystring-es3 + index.js + package.json + + +---raw-body + index.js + LICENSE + package.json + + +---react + compiler-runtime.js + index.js + jsx-dev-runtime.js + jsx-dev-runtime.react-server.js + jsx-runtime.js + jsx-runtime.react-server.js + LICENSE + package.json + react.react-server.js + + +---cjs + react-compiler-runtime.development.js + react-compiler-runtime.production.js + react-compiler-runtime.profiling.js + react-jsx-dev-runtime.development.js + react-jsx-dev-runtime.production.js + react-jsx-dev-runtime.profiling.js + react-jsx-dev-runtime.react-server.development.js + react-jsx-dev-runtime.react-server.production.js + react-jsx-runtime.development.js + react-jsx-runtime.production.js + react-jsx-runtime.profiling.js + react-jsx-runtime.react-server.development.js + react-jsx-runtime.react-server.production.js + react.development.js + react.production.js + react.react-server.development.js + react.react-server.production.js + + +---react-dom + client.js + client.react-server.js + index.js + LICENSE + package.json + profiling.js + profiling.react-server.js + react-dom.react-server.js + server.browser.js + server.edge.js + server.js + server.node.js + server.react-server.js + static.edge.js + static.node.js + static.react-server.js + + +---cjs + react-dom-client.development.js + react-dom-client.production.js + react-dom-profiling.development.js + react-dom-profiling.profiling.js + react-dom-server-legacy.browser.development.js + react-dom-server-legacy.browser.production.js + react-dom-server-legacy.node.development.js + react-dom-server-legacy.node.production.js + react-dom-server.browser.development.js + react-dom-server.browser.production.js + react-dom-server.bun.production.js + react-dom-server.edge.development.js + react-dom-server.edge.production.js + react-dom-server.node.development.js + react-dom-server.node.production.js + react-dom-test-utils.production.js + react-dom.development.js + react-dom.production.js + react-dom.react-server.development.js + react-dom.react-server.production.js + + +---react-dom-experimental + client.js + client.react-server.js + index.js + LICENSE + package.json + profiling.js + profiling.react-server.js + react-dom.react-server.js + server.browser.js + server.edge.js + server.js + server.node.js + server.react-server.js + static.edge.js + static.node.js + static.react-server.js + unstable_testing.react-server.js + + +---cjs + react-dom-client.development.js + react-dom-client.production.js + react-dom-profiling.development.js + react-dom-profiling.profiling.js + react-dom-server-legacy.browser.development.js + react-dom-server-legacy.browser.production.js + react-dom-server-legacy.node.development.js + react-dom-server-legacy.node.production.js + react-dom-server.browser.development.js + react-dom-server.browser.production.js + react-dom-server.bun.production.js + react-dom-server.edge.development.js + react-dom-server.edge.production.js + react-dom-server.node.development.js + react-dom-server.node.production.js + react-dom-test-utils.production.js + react-dom-unstable_testing.development.js + react-dom-unstable_testing.production.js + react-dom.development.js + react-dom.production.js + react-dom.react-server.development.js + react-dom.react-server.production.js + + +---react-experimental + compiler-runtime.js + index.js + jsx-dev-runtime.js + jsx-dev-runtime.react-server.js + jsx-runtime.js + jsx-runtime.react-server.js + LICENSE + package.json + react.react-server.js + + +---cjs + react-compiler-runtime.development.js + react-compiler-runtime.production.js + react-compiler-runtime.profiling.js + react-jsx-dev-runtime.development.js + react-jsx-dev-runtime.production.js + react-jsx-dev-runtime.profiling.js + react-jsx-dev-runtime.react-server.development.js + react-jsx-dev-runtime.react-server.production.js + react-jsx-runtime.development.js + react-jsx-runtime.production.js + react-jsx-runtime.profiling.js + react-jsx-runtime.react-server.development.js + react-jsx-runtime.react-server.production.js + react.development.js + react.production.js + react.react-server.development.js + react.react-server.production.js + + +---react-is + index.js + LICENSE + package.json + README.md + + +---cjs + react-is.development.js + react-is.production.js + + +---react-refresh + babel.js + LICENSE + package.json + README.md + runtime.js + + +---cjs + react-refresh-babel.development.js + react-refresh-babel.production.min.js + react-refresh-runtime.development.js + react-refresh-runtime.production.min.js + + +---react-server-dom-turbopack + client.browser.js + client.edge.js + client.js + client.node.js + index.js + LICENSE + package.json + server.browser.js + server.edge.js + server.js + server.node.js + static.browser.js + static.edge.js + static.js + static.node.js + + +---cjs + react-server-dom-turbopack-client.browser.development.js + react-server-dom-turbopack-client.browser.production.js + react-server-dom-turbopack-client.edge.development.js + react-server-dom-turbopack-client.edge.production.js + react-server-dom-turbopack-client.node.development.js + react-server-dom-turbopack-client.node.production.js + react-server-dom-turbopack-server.browser.development.js + react-server-dom-turbopack-server.browser.production.js + react-server-dom-turbopack-server.edge.development.js + react-server-dom-turbopack-server.edge.production.js + react-server-dom-turbopack-server.node.development.js + react-server-dom-turbopack-server.node.production.js + + +---react-server-dom-turbopack-experimental + client.browser.js + client.edge.js + client.js + client.node.js + index.js + LICENSE + package.json + server.browser.js + server.edge.js + server.js + server.node.js + static.browser.js + static.edge.js + static.js + static.node.js + + +---cjs + react-server-dom-turbopack-client.browser.development.js + react-server-dom-turbopack-client.browser.production.js + react-server-dom-turbopack-client.edge.development.js + react-server-dom-turbopack-client.edge.production.js + react-server-dom-turbopack-client.node.development.js + react-server-dom-turbopack-client.node.production.js + react-server-dom-turbopack-server.browser.development.js + react-server-dom-turbopack-server.browser.production.js + react-server-dom-turbopack-server.edge.development.js + react-server-dom-turbopack-server.edge.production.js + react-server-dom-turbopack-server.node.development.js + react-server-dom-turbopack-server.node.production.js + + +---react-server-dom-webpack + client.browser.js + client.edge.js + client.js + client.node.js + client.node.unbundled.js + index.js + LICENSE + node-register.js + package.json + plugin.js + server.browser.js + server.edge.js + server.js + server.node.js + server.node.unbundled.js + static.browser.js + static.edge.js + static.js + static.node.js + static.node.unbundled.js + + +---cjs + react-server-dom-webpack-client.browser.development.js + react-server-dom-webpack-client.browser.production.js + react-server-dom-webpack-client.edge.development.js + react-server-dom-webpack-client.edge.production.js + react-server-dom-webpack-client.node.development.js + react-server-dom-webpack-client.node.production.js + react-server-dom-webpack-client.node.unbundled.development.js + react-server-dom-webpack-client.node.unbundled.production.js + react-server-dom-webpack-node-register.js + react-server-dom-webpack-plugin.js + react-server-dom-webpack-server.browser.development.js + react-server-dom-webpack-server.browser.production.js + react-server-dom-webpack-server.edge.development.js + react-server-dom-webpack-server.edge.production.js + react-server-dom-webpack-server.node.development.js + react-server-dom-webpack-server.node.production.js + react-server-dom-webpack-server.node.unbundled.development.js + react-server-dom-webpack-server.node.unbundled.production.js + + +---react-server-dom-webpack-experimental + client.browser.js + client.edge.js + client.js + client.node.js + client.node.unbundled.js + index.js + LICENSE + node-register.js + package.json + plugin.js + server.browser.js + server.edge.js + server.js + server.node.js + server.node.unbundled.js + static.browser.js + static.edge.js + static.js + static.node.js + static.node.unbundled.js + + +---cjs + react-server-dom-webpack-client.browser.development.js + react-server-dom-webpack-client.browser.production.js + react-server-dom-webpack-client.edge.development.js + react-server-dom-webpack-client.edge.production.js + react-server-dom-webpack-client.node.development.js + react-server-dom-webpack-client.node.production.js + react-server-dom-webpack-client.node.unbundled.development.js + react-server-dom-webpack-client.node.unbundled.production.js + react-server-dom-webpack-node-register.js + react-server-dom-webpack-plugin.js + react-server-dom-webpack-server.browser.development.js + react-server-dom-webpack-server.browser.production.js + react-server-dom-webpack-server.edge.development.js + react-server-dom-webpack-server.edge.production.js + react-server-dom-webpack-server.node.development.js + react-server-dom-webpack-server.node.production.js + react-server-dom-webpack-server.node.unbundled.development.js + react-server-dom-webpack-server.node.unbundled.production.js + + +---regenerator-runtime + LICENSE + package.json + path.js + README.md + runtime.js + + +---safe-stable-stringify + index.js + LICENSE + package.json + + +---sass-loader + cjs.js + LICENSE + package.json + + +---scheduler + index.js + index.native.js + LICENSE + package.json + unstable_mock.js + unstable_post_task.js + + +---cjs + scheduler-unstable_mock.development.js + scheduler-unstable_mock.production.js + scheduler-unstable_post_task.development.js + scheduler-unstable_post_task.production.js + scheduler.development.js + scheduler.native.development.js + scheduler.native.production.js + scheduler.production.js + + +---scheduler-experimental + index.js + index.native.js + LICENSE + package.json + unstable_mock.js + unstable_post_task.js + + +---cjs + scheduler-unstable_mock.development.js + scheduler-unstable_mock.production.js + scheduler-unstable_post_task.development.js + scheduler-unstable_post_task.production.js + scheduler.development.js + scheduler.native.development.js + scheduler.native.production.js + scheduler.production.js + + +---schema-utils2 + index.js + LICENSE + package.json + + +---schema-utils3 + index.js + LICENSE + package.json + + +---semver + index.js + LICENSE + package.json + + +---send + index.js + LICENSE + package.json + + +---server-only + empty.js + index.js + package.json + + +---setimmediate + package.json + setImmediate.js + + +---shell-quote + index.js + LICENSE + package.json + + +---source-map + LICENSE + package.json + source-map.js + + +---source-map08 + LICENSE + mappings.wasm + package.json + source-map.js + + +---stacktrace-parser + LICENSE + package.json + stack-trace-parser.cjs.js + + +---stream-browserify + index.js + LICENSE + package.json + + +---stream-http + index.js + LICENSE + package.json + + +---string-hash + index.js + package.json + + +---string_decoder + LICENSE + package.json + string_decoder.js + + +---strip-ansi + index.js + LICENSE + package.json + + +---superstruct + index.cjs + package.json + + +---tar + index.js + LICENSE + package.json + + +---terser + bundle.min.js + LICENSE + package.json + + +---text-table + index.js + LICENSE + package.json + + +---timers-browserify + main.js + package.json + + +---tty-browserify + index.js + LICENSE + package.json + + +---ua-parser-js + package.json + ua-parser.js + + +---unistore + package.json + unistore.js + + +---util + LICENSE + package.json + util.js + + +---vm-browserify + index.js + LICENSE + package.json + + +---watchpack + LICENSE + package.json + watchpack.js + + +---web-vitals + LICENSE + package.json + web-vitals.js + + +---web-vitals-attribution + LICENSE + package.json + web-vitals.attribution.js + + +---webpack + BasicEvaluatedExpression.js + bundle5.js + ExternalsPlugin.js + FetchCompileAsyncWasmPlugin.js + FetchCompileWasmPlugin.js + FetchCompileWasmTemplatePlugin.js + GraphHelpers.js + HotModuleReplacement.runtime.js + JavascriptHotModuleReplacement.runtime.js + lazy-compilation-node.js + lazy-compilation-web.js + LibraryTemplatePlugin.js + LICENSE + LimitChunkCountPlugin.js + ModuleFilenameHelpers.js + NodeEnvironmentPlugin.js + NodeTargetPlugin.js + NodeTemplatePlugin.js + NormalModule.js + package.js + package.json + SingleEntryPlugin.js + SourceMapDevToolModuleOptionsPlugin.js + sources.js + webpack-lib.js + webpack.d.ts + webpack.js + WebWorkerTemplatePlugin.js + + +---webpack-sources1 + index.js + LICENSE + package.json + + +---webpack-sources3 + index.js + LICENSE + package.json + + +---ws + index.js + LICENSE + package.json + + +---zod + index.js + LICENSE + package.json + + +---zod-validation-error + index.js + LICENSE + package.json + + +---diagnostics + build-diagnostics.d.ts + build-diagnostics.js + build-diagnostics.js.map + build-diagnostics.test.js + build-diagnostics.test.js.map + + +---esm + +---api + app-dynamic.js + app-dynamic.js.map + app.js + app.js.map + constants.js + constants.js.map + document.js + document.js.map + dynamic.js + dynamic.js.map + form.js + form.js.map + head.js + head.js.map + headers.js + headers.js.map + image.js + image.js.map + link.js + link.js.map + navigation.js + navigation.js.map + navigation.react-server.js + navigation.react-server.js.map + og.js + og.js.map + router.js + router.js.map + script.js + script.js.map + server.js + server.js.map + + +---build + after-production-compile.js + after-production-compile.js.map + build-context.js + build-context.js.map + collect-build-traces.js + collect-build-traces.js.map + compiler.js + compiler.js.map + create-compiler-aliases.js + create-compiler-aliases.js.map + define-env.js + define-env.js.map + deployment-id.js + deployment-id.js.map + duration-to-string.js + duration-to-string.js.map + entries.js + entries.js.map + generate-build-id.js + generate-build-id.js.map + get-babel-config-file.js + get-babel-config-file.js.map + get-babel-loader-config.js + get-babel-loader-config.js.map + handle-entrypoints.js + handle-entrypoints.js.map + handle-externals.js + handle-externals.js.map + index.js + index.js.map + is-writeable.js + is-writeable.js.map + load-entrypoint.js + load-entrypoint.js.map + load-jsconfig.js + load-jsconfig.js.map + next-dir-paths.js + next-dir-paths.js.map + normalize-catchall-routes.js + normalize-catchall-routes.js.map + page-extensions-type.js + page-extensions-type.js.map + preview-key-utils.js + preview-key-utils.js.map + progress.js + progress.js.map + rendering-mode.js + rendering-mode.js.map + spinner.js + spinner.js.map + type-check.js + type-check.js.map + utils.js + utils.js.map + webpack-config.js + webpack-config.js.map + worker.js + worker.js.map + write-build-id.js + write-build-id.js.map + + +---adapter + build-complete.js + build-complete.js.map + + +---analysis + extract-const-value.js + extract-const-value.js.map + get-page-static-info.js + get-page-static-info.js.map + parse-module.js + parse-module.js.map + + +---babel + preset.js + preset.js.map + + +---loader + get-config.js + get-config.js.map + index.js + index.js.map + transform.js + transform.js.map + types.d.ts + util.js + util.js.map + + +---plugins + amp-attributes.js + amp-attributes.js.map + commonjs.js + commonjs.js.map + jsx-pragma.js + jsx-pragma.js.map + next-font-unsupported.js + next-font-unsupported.js.map + next-page-config.js + next-page-config.js.map + next-page-disallow-re-export-all-exports.js + next-page-disallow-re-export-all-exports.js.map + next-ssg-transform.js + next-ssg-transform.js.map + optimize-hook-destructuring.js + optimize-hook-destructuring.js.map + react-loadable-plugin.js + react-loadable-plugin.js.map + + +---manifests + +---formatter + format-manifest.js + format-manifest.js.map + + +---next-config-ts + require-hook.js + require-hook.js.map + transpile-config.js + transpile-config.js.map + + +---output + format.js + format.js.map + index.js + index.js.map + log.js + log.js.map + store.js + store.js.map + + +---polyfills + object-assign.js + object-assign.js.map + process.js + process.js.map + + +---fetch + index.js + index.js.map + whatwg-fetch.js + whatwg-fetch.js.map + + +---object.assign + auto.js + auto.js.map + implementation.js + implementation.js.map + index.js + index.js.map + polyfill.js + polyfill.js.map + shim.js + shim.js.map + + +---segment-config + +---app + app-segment-config.js + app-segment-config.js.map + app-segments.js + app-segments.js.map + collect-root-param-keys.js + collect-root-param-keys.js.map + + +---middleware + middleware-config.js + middleware-config.js.map + + +---pages + pages-segment-config.js + pages-segment-config.js.map + + +---static-paths + app.js + app.js.map + pages.js + pages.js.map + types.js + types.js.map + utils.js + utils.js.map + + +---swc + generated-native.d.ts + generated-wasm.d.ts + helpers.js + helpers.js.map + index.js + index.js.map + jest-transformer.js + jest-transformer.js.map + options.js + options.js.map + types.js + types.js.map + + +---templates + app-page.js + app-page.js.map + app-route.js + app-route.js.map + edge-app-route.js + edge-app-route.js.map + edge-ssr-app.js + edge-ssr-app.js.map + edge-ssr.js + edge-ssr.js.map + helpers.js + helpers.js.map + middleware.js + middleware.js.map + pages-api.js + pages-api.js.map + pages-edge-api.js + pages-edge-api.js.map + pages.js + pages.js.map + + +---turbopack-build + impl.js + impl.js.map + index.js + index.js.map + + +---turborepo-access-trace + env.js + env.js.map + helpers.js + helpers.js.map + index.js + index.js.map + result.js + result.js.map + tcp.js + tcp.js.map + types.js + types.js.map + + +---webpack + cache-invalidation.js + cache-invalidation.js.map + stringify-request.js + stringify-request.js.map + utils.js + utils.js.map + + +---alias + react-dom-server-experimental.js + react-dom-server-experimental.js.map + react-dom-server.js + react-dom-server.js.map + + +---config + helpers.js + helpers.js.map + index.js + index.js.map + utils.js + utils.js.map + + +---blocks + base.js + base.js.map + + +---css + index.js + index.js.map + messages.js + messages.js.map + plugins.js + plugins.js.map + + +---loaders + client.js + client.js.map + file-resolve.js + file-resolve.js.map + getCssModuleLocalIdent.js + getCssModuleLocalIdent.js.map + global.js + global.js.map + index.js + index.js.map + modules.js + modules.js.map + next-font.js + next-font.js.map + + +---images + index.js + index.js.map + messages.js + messages.js.map + + +---loaders + empty-loader.js + empty-loader.js.map + error-loader.js + error-loader.js.map + get-module-build-info.js + get-module-build-info.js.map + modularize-import-loader.js + modularize-import-loader.js.map + next-barrel-loader.js + next-barrel-loader.js.map + next-client-pages-loader.js + next-client-pages-loader.js.map + next-edge-function-loader.js + next-edge-function-loader.js.map + next-error-browser-binary-loader.js + next-error-browser-binary-loader.js.map + next-flight-action-entry-loader.js + next-flight-action-entry-loader.js.map + next-flight-client-entry-loader.js + next-flight-client-entry-loader.js.map + next-flight-client-module-loader.js + next-flight-client-module-loader.js.map + next-flight-css-loader.js + next-flight-css-loader.js.map + next-flight-server-reference-proxy-loader.js + next-flight-server-reference-proxy-loader.js.map + next-invalid-import-error-loader.js + next-invalid-import-error-loader.js.map + next-metadata-image-loader.js + next-metadata-image-loader.js.map + next-metadata-route-loader.js + next-metadata-route-loader.js.map + next-middleware-asset-loader.js + next-middleware-asset-loader.js.map + next-middleware-loader.js + next-middleware-loader.js.map + next-middleware-wasm-loader.js + next-middleware-wasm-loader.js.map + next-swc-loader.js + next-swc-loader.js.map + utils.js + utils.js.map + + +---css-loader + +---src + camelcase.js + camelcase.js.map + CssSyntaxError.js + CssSyntaxError.js.map + index.js + index.js.map + utils.js + utils.js.map + + +---plugins + index.js + index.js.map + postcss-icss-parser.js + postcss-icss-parser.js.map + postcss-import-parser.js + postcss-import-parser.js.map + postcss-url-parser.js + postcss-url-parser.js.map + + +---runtime + api.js + api.js.map + getUrl.js + getUrl.js.map + + +---devtool + devtool-style-inject.js + devtool-style-inject.js.map + + +---lightningcss-loader + +---src + codegen.js + codegen.js.map + index.js + index.js.map + interface.js + interface.js.map + loader.js + loader.js.map + minify.js + minify.js.map + utils.js + utils.js.map + + +---metadata + discover.js + discover.js.map + resolve-route-data.js + resolve-route-data.js.map + types.js + types.js.map + + +---next-app-loader + create-app-route-code.js + create-app-route-code.js.map + index.js + index.js.map + + +---next-edge-app-route-loader + index.js + index.js.map + + +---next-edge-ssr-loader + index.js + index.js.map + render.js + render.js.map + + +---next-flight-loader + action-client-wrapper.js + action-client-wrapper.js.map + action-validate.js + action-validate.js.map + cache-wrapper.js + cache-wrapper.js.map + index.js + index.js.map + module-proxy.js + module-proxy.js.map + server-reference.js + server-reference.js.map + track-dynamic-import.js + track-dynamic-import.js.map + + +---next-font-loader + index.js + index.js.map + postcss-next-font.js + postcss-next-font.js.map + + +---next-image-loader + blur.js + blur.js.map + index.js + index.js.map + + +---next-route-loader + index.js + index.js.map + + +---next-style-loader + index.js + index.js.map + + +---runtime + injectStylesIntoLinkTag.js + injectStylesIntoLinkTag.js.map + injectStylesIntoStyleTag.js + injectStylesIntoStyleTag.js.map + isEqualLocals.js + isEqualLocals.js.map + + +---postcss-loader + +---src + Error.js + Error.js.map + index.js + index.js.map + utils.js + utils.js.map + Warning.js + Warning.js.map + + +---resolve-url-loader + index.js + index.js.map + + +---lib + file-protocol.js + file-protocol.js.map + join-function.js + join-function.js.map + postcss.js + postcss.js.map + value-processor.js + value-processor.js.map + + +---plugins + app-build-manifest-plugin.js + app-build-manifest-plugin.js.map + build-manifest-plugin.js + build-manifest-plugin.js.map + copy-file-plugin.js + copy-file-plugin.js.map + css-chunking-plugin.js + css-chunking-plugin.js.map + css-minimizer-plugin.js + css-minimizer-plugin.js.map + devtools-ignore-list-plugin.js + devtools-ignore-list-plugin.js.map + eval-source-map-dev-tool-plugin.js + eval-source-map-dev-tool-plugin.js.map + flight-client-entry-plugin.js + flight-client-entry-plugin.js.map + flight-manifest-plugin.js + flight-manifest-plugin.js.map + jsconfig-paths-plugin.js + jsconfig-paths-plugin.js.map + memory-with-gc-cache-plugin.js + memory-with-gc-cache-plugin.js.map + middleware-plugin.js + middleware-plugin.js.map + mini-css-extract-plugin.js + mini-css-extract-plugin.js.map + next-drop-client-page-plugin.js + next-drop-client-page-plugin.js.map + next-font-manifest-plugin.js + next-font-manifest-plugin.js.map + next-trace-entrypoints-plugin.js + next-trace-entrypoints-plugin.js.map + nextjs-require-cache-hot-reloader.js + nextjs-require-cache-hot-reloader.js.map + optional-peer-dependency-resolve-plugin.js + optional-peer-dependency-resolve-plugin.js.map + pages-manifest-plugin.js + pages-manifest-plugin.js.map + profiling-plugin.js + profiling-plugin.js.map + react-loadable-plugin.js + react-loadable-plugin.js.map + rspack-flight-client-entry-plugin.js + rspack-flight-client-entry-plugin.js.map + rspack-profiling-plugin.js + rspack-profiling-plugin.js.map + slow-module-detection-plugin.js + slow-module-detection-plugin.js.map + subresource-integrity-plugin.js + subresource-integrity-plugin.js.map + + +---minify-webpack-plugin + +---src + index.js + index.js.map + + +---next-types-plugin + index.js + index.js.map + shared.js + shared.js.map + + +---telemetry-plugin + telemetry-plugin.js + telemetry-plugin.js.map + update-telemetry-loader-context-from-swc.js + update-telemetry-loader-context-from-swc.js.map + use-cache-tracker-utils.js + use-cache-tracker-utils.js.map + + +---wellknown-errors-plugin + getModuleTrace.js + getModuleTrace.js.map + index.js + index.js.map + parse-dynamic-code-evaluation-error.js + parse-dynamic-code-evaluation-error.js.map + parseBabel.js + parseBabel.js.map + parseCss.js + parseCss.js.map + parseNextAppLoaderError.js + parseNextAppLoaderError.js.map + parseNextFontError.js + parseNextFontError.js.map + parseNextInvalidImportError.js + parseNextInvalidImportError.js.map + parseNotFoundError.js + parseNotFoundError.js.map + parseScss.js + parseScss.js.map + simpleWebpackError.js + simpleWebpackError.js.map + webpackModuleError.js + webpackModuleError.js.map + + +---webpack-build + impl.js + impl.js.map + index.js + index.js.map + + +---webpack-config-rules + resolve.js + resolve.js.map + + +---client + add-base-path.js + add-base-path.js.map + add-locale.js + add-locale.js.map + app-bootstrap.js + app-bootstrap.js.map + app-build-id.js + app-build-id.js.map + app-call-server.js + app-call-server.js.map + app-find-source-map-url.js + app-find-source-map-url.js.map + app-globals.js + app-globals.js.map + app-index.js + app-index.js.map + app-link-gc.js + app-link-gc.js.map + app-next-dev.js + app-next-dev.js.map + app-next-turbopack.js + app-next-turbopack.js.map + app-next.js + app-next.js.map + app-webpack.js + app-webpack.js.map + assign-location.js + assign-location.js.map + detect-domain-locale.js + detect-domain-locale.js.map + flight-data-helpers.js + flight-data-helpers.js.map + form-shared.js + form-shared.js.map + form.js + form.js.map + get-domain-locale.js + get-domain-locale.js.map + has-base-path.js + has-base-path.js.map + head-manager.js + head-manager.js.map + image-component.js + image-component.js.map + index.js + index.js.map + link.js + link.js.map + next-dev-turbopack.js + next-dev-turbopack.js.map + next-dev.js + next-dev.js.map + next-turbopack.js + next-turbopack.js.map + next.js + next.js.map + normalize-locale-path.js + normalize-locale-path.js.map + normalize-trailing-slash.js + normalize-trailing-slash.js.map + page-bootstrap.js + page-bootstrap.js.map + page-loader.js + page-loader.js.map + remove-base-path.js + remove-base-path.js.map + remove-locale.js + remove-locale.js.map + request-idle-callback.js + request-idle-callback.js.map + resolve-href.js + resolve-href.js.map + route-announcer.js + route-announcer.js.map + route-loader.js + route-loader.js.map + router.js + router.js.map + script.js + script.js.map + set-attributes-from-props.js + set-attributes-from-props.js.map + trusted-types.js + trusted-types.js.map + use-client-disallowed.js + use-client-disallowed.js.map + use-intersection.js + use-intersection.js.map + use-merged-ref.js + use-merged-ref.js.map + web-vitals.js + web-vitals.js.map + webpack.js + webpack.js.map + with-router.js + with-router.js.map + + +---app-dir + form.js + form.js.map + link.js + link.js.map + + +---compat + router.js + router.js.map + + +---components + app-router-announcer.js + app-router-announcer.js.map + app-router-headers.js + app-router-headers.js.map + app-router-instance.js + app-router-instance.js.map + app-router.js + app-router.js.map + bailout-to-client-rendering.js + bailout-to-client-rendering.js.map + bfcache.js + bfcache.js.map + client-page.js + client-page.js.map + client-segment.js + client-segment.js.map + dev-root-http-access-fallback-boundary.js + dev-root-http-access-fallback-boundary.js.map + error-boundary.js + error-boundary.js.map + forbidden.js + forbidden.js.map + handle-isr-error.js + handle-isr-error.js.map + hooks-server-context.js + hooks-server-context.js.map + is-next-router-error.js + is-next-router-error.js.map + layout-router.js + layout-router.js.map + links.js + links.js.map + match-segments.js + match-segments.js.map + nav-failure-handler.js + nav-failure-handler.js.map + navigation-untracked.js + navigation-untracked.js.map + navigation.js + navigation.js.map + navigation.react-server.js + navigation.react-server.js.map + noop-head.js + noop-head.js.map + not-found.js + not-found.js.map + promise-queue.js + promise-queue.js.map + redirect-boundary.js + redirect-boundary.js.map + redirect-error.js + redirect-error.js.map + redirect-status-code.js + redirect-status-code.js.map + redirect.js + redirect.js.map + render-from-template-context.js + render-from-template-context.js.map + segment-cache.js + segment-cache.js.map + static-generation-bailout.js + static-generation-bailout.js.map + unauthorized.js + unauthorized.js.map + unresolved-thenable.js + unresolved-thenable.js.map + unstable-rethrow.browser.js + unstable-rethrow.browser.js.map + unstable-rethrow.js + unstable-rethrow.js.map + unstable-rethrow.server.js + unstable-rethrow.server.js.map + use-action-queue.js + use-action-queue.js.map + + +---builtin + default.js + default.js.map + forbidden.js + forbidden.js.map + global-error.js + global-error.js.map + global-not-found.js + global-not-found.js.map + layout.js + layout.js.map + not-found.js + not-found.js.map + unauthorized.js + unauthorized.js.map + + +---errors + graceful-degrade-boundary.js + graceful-degrade-boundary.js.map + + +---http-access-fallback + error-boundary.js + error-boundary.js.map + error-fallback.js + error-fallback.js.map + http-access-fallback.js + http-access-fallback.js.map + + +---metadata + async-metadata.js + async-metadata.js.map + metadata-boundary.js + metadata-boundary.js.map + types.js + types.js.map + + +---router-reducer + aliased-prefetch-navigations.js + aliased-prefetch-navigations.js.map + apply-flight-data.js + apply-flight-data.js.map + apply-router-state-patch-to-tree.js + apply-router-state-patch-to-tree.js.map + clear-cache-node-data-for-segment-path.js + clear-cache-node-data-for-segment-path.js.map + compute-changed-path.js + compute-changed-path.js.map + create-href-from-url.js + create-href-from-url.js.map + create-initial-router-state.js + create-initial-router-state.js.map + create-router-cache-key.js + create-router-cache-key.js.map + fetch-server-response.js + fetch-server-response.js.map + fill-cache-with-new-subtree-data.js + fill-cache-with-new-subtree-data.js.map + fill-lazy-items-till-leaf-with-head.js + fill-lazy-items-till-leaf-with-head.js.map + handle-mutable.js + handle-mutable.js.map + handle-segment-mismatch.js + handle-segment-mismatch.js.map + invalidate-cache-below-flight-segmentpath.js + invalidate-cache-below-flight-segmentpath.js.map + invalidate-cache-by-router-state.js + invalidate-cache-by-router-state.js.map + is-navigating-to-new-root-layout.js + is-navigating-to-new-root-layout.js.map + ppr-navigations.js + ppr-navigations.js.map + prefetch-cache-utils.js + prefetch-cache-utils.js.map + refetch-inactive-parallel-segments.js + refetch-inactive-parallel-segments.js.map + router-reducer-types.js + router-reducer-types.js.map + router-reducer.js + router-reducer.js.map + set-cache-busting-search-param.js + set-cache-busting-search-param.js.map + should-hard-navigate.js + should-hard-navigate.js.map + + +---reducers + find-head-in-cache.js + find-head-in-cache.js.map + get-segment-value.js + get-segment-value.js.map + has-interception-route-in-current-tree.js + has-interception-route-in-current-tree.js.map + hmr-refresh-reducer.js + hmr-refresh-reducer.js.map + navigate-reducer.js + navigate-reducer.js.map + prefetch-reducer.js + prefetch-reducer.js.map + refresh-reducer.js + refresh-reducer.js.map + restore-reducer.js + restore-reducer.js.map + server-action-reducer.js + server-action-reducer.js.map + server-patch-reducer.js + server-patch-reducer.js.map + + +---segment-cache-impl + cache-key.js + cache-key.js.map + cache.js + cache.js.map + lru.js + lru.js.map + navigation.js + navigation.js.map + prefetch.js + prefetch.js.map + scheduler.js + scheduler.js.map + tuple-map.js + tuple-map.js.map + + +---styles + access-error-styles.js + access-error-styles.js.map + + +---dev + amp-dev.js + amp-dev.js.map + fouc.js + fouc.js.map + hot-middleware-client.js + hot-middleware-client.js.map + noop-turbopack-hmr.js + noop-turbopack-hmr.js.map + on-demand-entries-client.js + on-demand-entries-client.js.map + report-hmr-latency.js + report-hmr-latency.js.map + runtime-error-handler.js + runtime-error-handler.js.map + + +---error-overlay + websocket.js + websocket.js.map + + +---hot-reloader + get-socket-url.js + get-socket-url.js.map + shared.js + shared.js.map + turbopack-hot-reloader-common.js + turbopack-hot-reloader-common.js.map + + +---app + hot-reloader-app.js + hot-reloader-app.js.map + use-websocket.js + use-websocket.js.map + + +---pages + hot-reloader-pages.js + hot-reloader-pages.js.map + websocket.js + websocket.js.map + + +---legacy + image.js + image.js.map + + +---lib + console.js + console.js.map + + +---portal + index.js + index.js.map + + +---react-client-callbacks + error-boundary-callbacks.js + error-boundary-callbacks.js.map + on-recoverable-error.js + on-recoverable-error.js.map + report-global-error.js + report-global-error.js.map + + +---request + params.browser.dev.js + params.browser.dev.js.map + params.browser.js + params.browser.js.map + params.browser.prod.js + params.browser.prod.js.map + search-params.browser.dev.js + search-params.browser.dev.js.map + search-params.browser.js + search-params.browser.js.map + search-params.browser.prod.js + search-params.browser.prod.js.map + + +---tracing + report-to-socket.js + report-to-socket.js.map + tracer.js + tracer.js.map + + +---export + index.js + index.js.map + types.js + types.js.map + utils.js + utils.js.map + worker.js + worker.js.map + + +---helpers + create-incremental-cache.js + create-incremental-cache.js.map + get-amp-html-validator.js + get-amp-html-validator.js.map + get-params.js + get-params.js.map + is-dynamic-usage-error.js + is-dynamic-usage-error.js.map + + +---routes + app-page.js + app-page.js.map + app-route.js + app-route.js.map + pages.js + pages.js.map + types.js + types.js.map + + +---lib + batcher.js + batcher.js.map + build-custom-route.js + build-custom-route.js.map + client-and-server-references.js + client-and-server-references.js.map + coalesced-function.js + coalesced-function.js.map + compile-error.js + compile-error.js.map + constants.js + constants.js.map + create-client-router-filter.js + create-client-router-filter.js.map + default-transpiled-packages.json + detached-promise.js + detached-promise.js.map + detect-typo.js + detect-typo.js.map + download-swc.js + download-swc.js.map + error-telemetry-utils.js + error-telemetry-utils.js.map + fallback.js + fallback.js.map + fatal-error.js + fatal-error.js.map + file-exists.js + file-exists.js.map + find-config.js + find-config.js.map + find-pages-dir.js + find-pages-dir.js.map + find-root.js + find-root.js.map + format-cli-help-output.js + format-cli-help-output.js.map + format-dynamic-import-path.js + format-dynamic-import-path.js.map + format-server-error.js + format-server-error.js.map + generate-interception-routes-rewrites.js + generate-interception-routes-rewrites.js.map + get-files-in-dir.js + get-files-in-dir.js.map + get-network-host.js + get-network-host.js.map + get-package-version.js + get-package-version.js.map + get-project-dir.js + get-project-dir.js.map + has-necessary-dependencies.js + has-necessary-dependencies.js.map + import-next-warning.js + import-next-warning.js.map + inline-static-env.js + inline-static-env.js.map + install-dependencies.js + install-dependencies.js.map + interop-default.js + interop-default.js.map + is-api-route.js + is-api-route.js.map + is-app-page-route.js + is-app-page-route.js.map + is-app-route-route.js + is-app-route-route.js.map + is-edge-runtime.js + is-edge-runtime.js.map + is-error.js + is-error.js.map + is-internal-component.js + is-internal-component.js.map + is-serializable-props.js + is-serializable-props.js.map + known-edge-safe-packages.json + load-custom-routes.js + load-custom-routes.js.map + mime-type.js + mime-type.js.map + mkcert.js + mkcert.js.map + multi-file-writer.js + multi-file-writer.js.map + needs-experimental-react.js + needs-experimental-react.js.map + non-nullable.js + non-nullable.js.map + normalize-path.js + normalize-path.js.map + oxford-comma-list.js + oxford-comma-list.js.map + page-types.js + page-types.js.map + patch-incorrect-lockfile.js + patch-incorrect-lockfile.js.map + pick.js + pick.js.map + picocolors.js + picocolors.js.map + pretty-bytes.js + pretty-bytes.js.map + realpath.js + realpath.js.map + recursive-copy.js + recursive-copy.js.map + recursive-delete.js + recursive-delete.js.map + recursive-readdir.js + recursive-readdir.js.map + redirect-status.js + redirect-status.js.map + require-instrumentation-client.js + require-instrumentation-client.js.map + resolve-from.js + resolve-from.js.map + scheduler.js + scheduler.js.map + semver-noop.js + semver-noop.js.map + server-external-packages.json + setup-exception-listeners.js + setup-exception-listeners.js.map + static-env.js + static-env.js.map + try-to-parse-path.js + try-to-parse-path.js.map + turbopack-warning.js + turbopack-warning.js.map + url.js + url.js.map + verify-partytown-setup.js + verify-partytown-setup.js.map + verify-root-layout.js + verify-root-layout.js.map + verify-typescript-setup.js + verify-typescript-setup.js.map + verifyAndLint.js + verifyAndLint.js.map + wait.js + wait.js.map + with-promise-cache.js + with-promise-cache.js.map + worker.js + worker.js.map + + +---eslint + customFormatter.js + customFormatter.js.map + getESLintPromptValues.js + getESLintPromptValues.js.map + hasEslintConfiguration.js + hasEslintConfiguration.js.map + runLintCheck.js + runLintCheck.js.map + writeDefaultConfig.js + writeDefaultConfig.js.map + writeOutputFile.js + writeOutputFile.js.map + + +---fs + rename.js + rename.js.map + write-atomic.js + write-atomic.js.map + + +---helpers + get-cache-directory.js + get-cache-directory.js.map + get-npx-command.js + get-npx-command.js.map + get-online.js + get-online.js.map + get-pkg-manager.js + get-pkg-manager.js.map + get-registry.js + get-registry.js.map + get-reserved-port.js + get-reserved-port.js.map + install.js + install.js.map + + +---memory + gc-observer.js + gc-observer.js.map + shutdown.js + shutdown.js.map + startup.js + startup.js.map + trace.js + trace.js.map + + +---metadata + clone-metadata.js + clone-metadata.js.map + constants.js + constants.js.map + default-metadata.js + default-metadata.js.map + get-metadata-route.js + get-metadata-route.js.map + is-metadata-route.js + is-metadata-route.js.map + metadata-constants.js + metadata-constants.js.map + metadata-context.js + metadata-context.js.map + metadata.js + metadata.js.map + resolve-metadata.js + resolve-metadata.js.map + + +---generate + alternate.js + alternate.js.map + basic.js + basic.js.map + icon-mark.js + icon-mark.js.map + icons.js + icons.js.map + meta.js + meta.js.map + opengraph.js + opengraph.js.map + utils.js + utils.js.map + + +---resolvers + resolve-basics.js + resolve-basics.js.map + resolve-icons.js + resolve-icons.js.map + resolve-opengraph.js + resolve-opengraph.js.map + resolve-title.js + resolve-title.js.map + resolve-url.js + resolve-url.js.map + + +---types + alternative-urls-types.js + alternative-urls-types.js.map + extra-types.js + extra-types.js.map + icons.js + icons.js.map + manifest-types.js + manifest-types.js.map + metadata-interface.js + metadata-interface.js.map + metadata-types.js + metadata-types.js.map + opengraph-types.js + opengraph-types.js.map + resolvers.js + resolvers.js.map + twitter-types.js + twitter-types.js.map + + +---typescript + diagnosticFormatter.js + diagnosticFormatter.js.map + getTypeScriptConfiguration.js + getTypeScriptConfiguration.js.map + getTypeScriptIntent.js + getTypeScriptIntent.js.map + missingDependencyError.js + missingDependencyError.js.map + runTypeCheck.js + runTypeCheck.js.map + writeAppTypeDeclarations.js + writeAppTypeDeclarations.js.map + writeConfigurationDefaults.js + writeConfigurationDefaults.js.map + + +---next-devtools + +---server + dev-indicator-middleware.js + dev-indicator-middleware.js.map + get-next-error-feedback-middleware.js + get-next-error-feedback-middleware.js.map + launch-editor.js + launch-editor.js.map + middleware-response.js + middleware-response.js.map + restart-dev-server-middleware.js + restart-dev-server-middleware.js.map + shared.js + shared.js.map + + +---font + geist-latin-ext.woff2 + geist-latin.woff2 + geist-mono-latin-ext.woff2 + geist-mono-latin.woff2 + get-dev-overlay-font-middleware.js + get-dev-overlay-font-middleware.js.map + + +---shared + console-error.js + console-error.js.map + forward-logs-shared.js + forward-logs-shared.js.map + hydration-error.js + hydration-error.js.map + react-18-hydration-error.js + react-18-hydration-error.js.map + react-19-hydration-error.js + react-19-hydration-error.js.map + stack-frame.js + stack-frame.js.map + types.js + types.js.map + version-staleness.js + version-staleness.js.map + webpack-module-path.js + webpack-module-path.js.map + + +---userspace + use-app-dev-rendering-indicator.js + use-app-dev-rendering-indicator.js.map + + +---app + app-dev-overlay-error-boundary.js + app-dev-overlay-error-boundary.js.map + app-dev-overlay-setup.js + app-dev-overlay-setup.js.map + client-entry.js + client-entry.js.map + forward-logs.js + forward-logs.js.map + segment-explorer-node.js + segment-explorer-node.js.map + terminal-logging-config.js + terminal-logging-config.js.map + + +---errors + index.js + index.js.map + intercept-console-error.js + intercept-console-error.js.map + replay-ssr-only-errors.js + replay-ssr-only-errors.js.map + stitched-error.js + stitched-error.js.map + use-error-handler.js + use-error-handler.js.map + use-forward-console-log.js + use-forward-console-log.js.map + + +---pages + hydration-error-state.js + hydration-error-state.js.map + pages-dev-overlay-error-boundary.js + pages-dev-overlay-error-boundary.js.map + pages-dev-overlay-setup.js + pages-dev-overlay-setup.js.map + + +---pages + _app.js + _app.js.map + _document.js + _document.js.map + _error.js + _error.js.map + + +---server + accept-header.js + accept-header.js.map + base-server.js + base-server.js.map + body-streams.js + body-streams.js.map + cache-dir.js + cache-dir.js.map + ci-info.js + ci-info.js.map + client-component-renderer-logger.js + client-component-renderer-logger.js.map + config-schema.js + config-schema.js.map + config-shared.js + config-shared.js.map + config-utils.js + config-utils.js.map + config.js + config.js.map + create-deduped-by-callsite-server-error-logger.js + create-deduped-by-callsite-server-error-logger.js.map + crypto-utils.js + crypto-utils.js.map + dynamic-rendering-utils.js + dynamic-rendering-utils.js.map + font-utils.js + font-utils.js.map + get-app-route-from-entrypoint.js + get-app-route-from-entrypoint.js.map + get-page-files.js + get-page-files.js.map + get-route-from-entrypoint.js + get-route-from-entrypoint.js.map + htmlescape.js + htmlescape.js.map + image-optimizer.js + image-optimizer.js.map + internal-utils.js + internal-utils.js.map + load-components.js + load-components.js.map + load-default-error-components.js + load-default-error-components.js.map + load-manifest.external.js + load-manifest.external.js.map + match-bundle.js + match-bundle.js.map + next-server.js + next-server.js.map + next-typescript.js + next-typescript.js.map + next.js + next.js.map + node-environment-baseline.js + node-environment-baseline.js.map + node-environment.js + node-environment.js.map + node-polyfill-crypto.js + node-polyfill-crypto.js.map + optimize-amp.js + optimize-amp.js.map + patch-error-inspect.js + patch-error-inspect.js.map + pipe-readable.js + pipe-readable.js.map + post-process.js + post-process.js.map + ReactDOMServerPages.d.ts + ReactDOMServerPages.js + ReactDOMServerPages.js.map + render-result.js + render-result.js.map + render.js + render.js.map + request-meta.js + request-meta.js.map + require-hook.js + require-hook.js.map + require.js + require.js.map + revalidation-utils.js + revalidation-utils.js.map + route-kind.js + route-kind.js.map + send-payload.js + send-payload.js.map + send-response.js + send-response.js.map + serve-static.js + serve-static.js.map + server-route-utils.js + server-route-utils.js.map + server-utils.js + server-utils.js.map + setup-http-agent-env.js + setup-http-agent-env.js.map + utils.js + utils.js.map + web-server.js + web-server.js.map + + +---after + after-context.js + after-context.js.map + after.js + after.js.map + awaiter.js + awaiter.js.map + builtin-request-context.js + builtin-request-context.js.map + index.js + index.js.map + run-with-after.js + run-with-after.js.map + + +---api-utils + get-cookie-parser.js + get-cookie-parser.js.map + index.js + index.js.map + web.js + web.js.map + + +---node + api-resolver.js + api-resolver.js.map + parse-body.js + parse-body.js.map + try-get-preview-data.js + try-get-preview-data.js.map + + +---app-render + action-async-storage-instance.js + action-async-storage-instance.js.map + action-async-storage.external.js + action-async-storage.external.js.map + action-handler.js + action-handler.js.map + action-utils.js + action-utils.js.map + after-task-async-storage-instance.js + after-task-async-storage-instance.js.map + after-task-async-storage.external.js + after-task-async-storage.external.js.map + app-render-prerender-utils.js + app-render-prerender-utils.js.map + app-render-render-utils.js + app-render-render-utils.js.map + app-render.js + app-render.js.map + async-local-storage.js + async-local-storage.js.map + cache-signal.js + cache-signal.js.map + collect-segment-data.js + collect-segment-data.js.map + create-component-styles-and-scripts.js + create-component-styles-and-scripts.js.map + create-component-tree.js + create-component-tree.js.map + create-error-handler.js + create-error-handler.js.map + create-flight-router-state-from-loader-tree.js + create-flight-router-state-from-loader-tree.js.map + csrf-protection.js + csrf-protection.js.map + dynamic-access-async-storage-instance.js + dynamic-access-async-storage-instance.js.map + dynamic-access-async-storage.external.js + dynamic-access-async-storage.external.js.map + dynamic-rendering.js + dynamic-rendering.js.map + encryption-utils-server.js + encryption-utils-server.js.map + encryption-utils.js + encryption-utils.js.map + encryption.js + encryption.js.map + entry-base.js + entry-base.js.map + flight-render-result.js + flight-render-result.js.map + get-asset-query-string.js + get-asset-query-string.js.map + get-css-inlined-link-tags.js + get-css-inlined-link-tags.js.map + get-layer-assets.js + get-layer-assets.js.map + get-preloadable-fonts.js + get-preloadable-fonts.js.map + get-script-nonce-from-header.js + get-script-nonce-from-header.js.map + get-segment-param.js + get-segment-param.js.map + get-short-dynamic-param-type.js + get-short-dynamic-param-type.js.map + has-loading-component-in-tree.js + has-loading-component-in-tree.js.map + interop-default.js + interop-default.js.map + make-get-server-inserted-html.js + make-get-server-inserted-html.js.map + parse-and-validate-flight-router-state.js + parse-and-validate-flight-router-state.js.map + parse-loader-tree.js + parse-loader-tree.js.map + postponed-state.js + postponed-state.js.map + prospective-render-utils.js + prospective-render-utils.js.map + react-large-shell-error.js + react-large-shell-error.js.map + react-server.node.js + react-server.node.js.map + render-css-resource.js + render-css-resource.js.map + render-to-string.js + render-to-string.js.map + required-scripts.js + required-scripts.js.map + segment-explorer-path.js + segment-explorer-path.js.map + server-inserted-html.js + server-inserted-html.js.map + strip-flight-headers.js + strip-flight-headers.js.map + types.js + types.js.map + use-flight-response.js + use-flight-response.js.map + walk-tree-with-flight-router-state.js + walk-tree-with-flight-router-state.js.map + work-async-storage-instance.js + work-async-storage-instance.js.map + work-async-storage.external.js + work-async-storage.external.js.map + work-unit-async-storage-instance.js + work-unit-async-storage-instance.js.map + work-unit-async-storage.external.js + work-unit-async-storage.external.js.map + + +---metadata-insertion + create-server-inserted-metadata.js + create-server-inserted-metadata.js.map + + +---module-loading + track-dynamic-import.js + track-dynamic-import.js.map + track-module-loading.external.js + track-module-loading.external.js.map + track-module-loading.instance.js + track-module-loading.instance.js.map + + +---rsc + postpone.js + postpone.js.map + preloads.js + preloads.js.map + taint.js + taint.js.map + + +---async-storage + draft-mode-provider.js + draft-mode-provider.js.map + request-store.js + request-store.js.map + with-store.js + with-store.js.map + work-store.js + work-store.js.map + + +---base-http + helpers.js + helpers.js.map + index.js + index.js.map + node.js + node.js.map + web.js + web.js.map + + +---dev + dev-indicator-server-state.js + dev-indicator-server-state.js.map + get-source-map-from-file.js + get-source-map-from-file.js.map + hot-middleware.js + hot-middleware.js.map + hot-reloader-turbopack.js + hot-reloader-turbopack.js.map + hot-reloader-types.js + hot-reloader-types.js.map + hot-reloader-webpack.js + hot-reloader-webpack.js.map + log-requests.js + log-requests.js.map + messages.js + messages.js.map + middleware-turbopack.js + middleware-turbopack.js.map + middleware-webpack.js + middleware-webpack.js.map + next-dev-server.js + next-dev-server.js.map + node-stack-frames.js + node-stack-frames.js.map + on-demand-entry-handler.js + on-demand-entry-handler.js.map + parse-version-info.js + parse-version-info.js.map + require-cache.js + require-cache.js.map + static-paths-worker.js + static-paths-worker.js.map + turbopack-utils.js + turbopack-utils.js.map + + +---browser-logs + receive-logs.js + receive-logs.js.map + source-map.js + source-map.js.map + + +---instrumentation + types.js + types.js.map + utils.js + utils.js.map + + +---lib + app-dir-module.js + app-dir-module.js.map + app-info-log.js + app-info-log.js.map + async-callback-set.js + async-callback-set.js.map + cache-control.js + cache-control.js.map + chrome-devtools-workspace.js + chrome-devtools-workspace.js.map + clone-response.js + clone-response.js.map + cpu-profile.js + cpu-profile.js.map + decode-query-path-parameter.js + decode-query-path-parameter.js.map + dedupe-fetch.js + dedupe-fetch.js.map + dev-bundler-service.js + dev-bundler-service.js.map + etag.js + etag.js.map + find-page-file.js + find-page-file.js.map + fix-mojibake.js + fix-mojibake.js.map + format-hostname.js + format-hostname.js.map + i18n-provider.js + i18n-provider.js.map + implicit-tags.js + implicit-tags.js.map + is-ipv6.js + is-ipv6.js.map + lazy-result.js + lazy-result.js.map + lru-cache.js + lru-cache.js.map + match-next-data-pathname.js + match-next-data-pathname.js.map + mock-request.js + mock-request.js.map + node-fs-methods.js + node-fs-methods.js.map + parse-stack.js + parse-stack.js.map + patch-fetch.js + patch-fetch.js.map + patch-set-header.js + patch-set-header.js.map + render-server.js + render-server.js.map + router-server.js + router-server.js.map + server-action-request-meta.js + server-action-request-meta.js.map + source-maps.js + source-maps.js.map + start-server.js + start-server.js.map + streaming-metadata.js + streaming-metadata.js.map + to-route.js + to-route.js.map + types.js + types.js.map + utils.js + utils.js.map + worker-utils.js + worker-utils.js.map + + +---cache-handlers + default.external.js + default.external.js.map + types.js + types.js.map + + +---experimental + create-env-definitions.js + create-env-definitions.js.map + ppr.js + ppr.js.map + + +---incremental-cache + file-system-cache.js + file-system-cache.js.map + index.js + index.js.map + memory-cache.external.js + memory-cache.external.js.map + shared-cache-controls.external.js + shared-cache-controls.external.js.map + tags-manifest.external.js + tags-manifest.external.js.map + + +---module-loader + module-loader.js + module-loader.js.map + node-module-loader.js + node-module-loader.js.map + route-module-loader.js + route-module-loader.js.map + + +---router-utils + block-cross-site.js + block-cross-site.js.map + build-data-route.js + build-data-route.js.map + build-prefetch-segment-data-route.js + build-prefetch-segment-data-route.js.map + decode-path-params.js + decode-path-params.js.map + filesystem.js + filesystem.js.map + instrumentation-globals.external.js + instrumentation-globals.external.js.map + is-postpone.js + is-postpone.js.map + proxy-request.js + proxy-request.js.map + resolve-routes.js + resolve-routes.js.map + router-server-context.js + router-server-context.js.map + setup-dev-bundler.js + setup-dev-bundler.js.map + types.js + types.js.map + + +---server-ipc + utils.js + utils.js.map + + +---trace + constants.js + constants.js.map + tracer.js + tracer.js.map + utils.js + utils.js.map + + +---node-environment-extensions + console-dev.js + console-dev.js.map + date.js + date.js.map + error-inspect.js + error-inspect.js.map + node-crypto.js + node-crypto.js.map + random.js + random.js.map + utils.js + utils.js.map + web-crypto.js + web-crypto.js.map + + +---normalizers + absolute-filename-normalizer.js + absolute-filename-normalizer.js.map + locale-route-normalizer.js + locale-route-normalizer.js.map + normalizer.js + normalizer.js.map + normalizers.js + normalizers.js.map + prefixing-normalizer.js + prefixing-normalizer.js.map + underscore-normalizer.js + underscore-normalizer.js.map + wrap-normalizer-fn.js + wrap-normalizer-fn.js.map + + +---built + +---app + app-bundle-path-normalizer.js + app-bundle-path-normalizer.js.map + app-filename-normalizer.js + app-filename-normalizer.js.map + app-page-normalizer.js + app-page-normalizer.js.map + app-pathname-normalizer.js + app-pathname-normalizer.js.map + index.js + index.js.map + + +---pages + index.js + index.js.map + pages-bundle-path-normalizer.js + pages-bundle-path-normalizer.js.map + pages-filename-normalizer.js + pages-filename-normalizer.js.map + pages-page-normalizer.js + pages-page-normalizer.js.map + pages-pathname-normalizer.js + pages-pathname-normalizer.js.map + + +---request + base-path.js + base-path.js.map + next-data.js + next-data.js.map + pathname-normalizer.js + pathname-normalizer.js.map + prefetch-rsc.js + prefetch-rsc.js.map + prefix.js + prefix.js.map + rsc.js + rsc.js.map + segment-prefix-rsc.js + segment-prefix-rsc.js.map + suffix.js + suffix.js.map + + +---og + image-response.js + image-response.js.map + + +---request + connection.js + connection.js.map + cookies.js + cookies.js.map + draft-mode.js + draft-mode.js.map + fallback-params.js + fallback-params.js.map + headers.js + headers.js.map + params.js + params.js.map + pathname.js + pathname.js.map + root-params.js + root-params.js.map + search-params.js + search-params.js.map + utils.js + utils.js.map + + +---response-cache + index.js + index.js.map + types.js + types.js.map + utils.js + utils.js.map + web.js + web.js.map + + +---resume-data-cache + cache-store.js + cache-store.js.map + resume-data-cache.js + resume-data-cache.js.map + + +---route-definitions + app-page-route-definition.js + app-page-route-definition.js.map + app-route-route-definition.js + app-route-route-definition.js.map + locale-route-definition.js + locale-route-definition.js.map + pages-api-route-definition.js + pages-api-route-definition.js.map + pages-route-definition.js + pages-route-definition.js.map + route-definition.js + route-definition.js.map + + +---route-matcher-managers + default-route-matcher-manager.js + default-route-matcher-manager.js.map + dev-route-matcher-manager.js + dev-route-matcher-manager.js.map + route-matcher-manager.js + route-matcher-manager.js.map + + +---route-matcher-providers + app-page-route-matcher-provider.js + app-page-route-matcher-provider.js.map + app-route-route-matcher-provider.js + app-route-route-matcher-provider.js.map + manifest-route-matcher-provider.js + manifest-route-matcher-provider.js.map + pages-api-route-matcher-provider.js + pages-api-route-matcher-provider.js.map + pages-route-matcher-provider.js + pages-route-matcher-provider.js.map + route-matcher-provider.js + route-matcher-provider.js.map + + +---dev + dev-app-page-route-matcher-provider.js + dev-app-page-route-matcher-provider.js.map + dev-app-route-route-matcher-provider.js + dev-app-route-route-matcher-provider.js.map + dev-pages-api-route-matcher-provider.js + dev-pages-api-route-matcher-provider.js.map + dev-pages-route-matcher-provider.js + dev-pages-route-matcher-provider.js.map + file-cache-route-matcher-provider.js + file-cache-route-matcher-provider.js.map + + +---helpers + +---file-reader + batched-file-reader.js + batched-file-reader.js.map + default-file-reader.js + default-file-reader.js.map + file-reader.js + file-reader.js.map + + +---helpers + cached-route-matcher-provider.js + cached-route-matcher-provider.js.map + + +---manifest-loaders + manifest-loader.js + manifest-loader.js.map + node-manifest-loader.js + node-manifest-loader.js.map + server-manifest-loader.js + server-manifest-loader.js.map + + +---route-matchers + app-page-route-matcher.js + app-page-route-matcher.js.map + app-route-route-matcher.js + app-route-route-matcher.js.map + locale-route-matcher.js + locale-route-matcher.js.map + pages-api-route-matcher.js + pages-api-route-matcher.js.map + pages-route-matcher.js + pages-route-matcher.js.map + route-matcher.js + route-matcher.js.map + + +---route-matches + app-page-route-match.js + app-page-route-match.js.map + app-route-route-match.js + app-route-route-match.js.map + locale-route-match.js + locale-route-match.js.map + pages-api-route-match.js + pages-api-route-match.js.map + pages-route-match.js + pages-route-match.js.map + route-match.js + route-match.js.map + + +---route-modules + checks.js + checks.js.map + route-module.js + route-module.js.map + + +---app-page + module.compiled.d.ts + module.compiled.js + module.compiled.js.map + module.js + module.js.map + module.render.js + module.render.js.map + + +---vendored + +---contexts + amp-context.js + amp-context.js.map + app-router-context.js + app-router-context.js.map + entrypoints.js + entrypoints.js.map + head-manager-context.js + head-manager-context.js.map + hooks-client-context.js + hooks-client-context.js.map + image-config-context.js + image-config-context.js.map + router-context.js + router-context.js.map + server-inserted-html.js + server-inserted-html.js.map + + +---rsc + entrypoints.js + entrypoints.js.map + react-compiler-runtime.js + react-compiler-runtime.js.map + react-dom.js + react-dom.js.map + react-jsx-dev-runtime.js + react-jsx-dev-runtime.js.map + react-jsx-runtime.js + react-jsx-runtime.js.map + react-server-dom-turbopack-server.js + react-server-dom-turbopack-server.js.map + react-server-dom-turbopack-static.js + react-server-dom-turbopack-static.js.map + react-server-dom-webpack-server.js + react-server-dom-webpack-server.js.map + react-server-dom-webpack-static.js + react-server-dom-webpack-static.js.map + react.js + react.js.map + + +---ssr + entrypoints.js + entrypoints.js.map + react-compiler-runtime.js + react-compiler-runtime.js.map + react-dom-server.js + react-dom-server.js.map + react-dom.js + react-dom.js.map + react-jsx-dev-runtime.js + react-jsx-dev-runtime.js.map + react-jsx-runtime.js + react-jsx-runtime.js.map + react-server-dom-turbopack-client.js + react-server-dom-turbopack-client.js.map + react-server-dom-webpack-client.js + react-server-dom-webpack-client.js.map + react.js + react.js.map + + +---app-route + module.compiled.d.ts + module.compiled.js + module.compiled.js.map + module.js + module.js.map + shared-modules.js + shared-modules.js.map + + +---helpers + auto-implement-methods.js + auto-implement-methods.js.map + clean-url.js + clean-url.js.map + get-pathname-from-absolute-path.js + get-pathname-from-absolute-path.js.map + is-static-gen-enabled.js + is-static-gen-enabled.js.map + parsed-url-query-to-params.js + parsed-url-query-to-params.js.map + + +---pages + module.compiled.d.ts + module.compiled.js + module.compiled.js.map + module.js + module.js.map + module.render.js + module.render.js.map + + +---builtin + _error.js + _error.js.map + + +---vendored + +---contexts + amp-context.js + amp-context.js.map + app-router-context.js + app-router-context.js.map + entrypoints.js + entrypoints.js.map + head-manager-context.js + head-manager-context.js.map + hooks-client-context.js + hooks-client-context.js.map + html-context.js + html-context.js.map + image-config-context.js + image-config-context.js.map + loadable-context.js + loadable-context.js.map + loadable.js + loadable.js.map + router-context.js + router-context.js.map + server-inserted-html.js + server-inserted-html.js.map + + +---pages-api + module.compiled.d.ts + module.compiled.js + module.compiled.js.map + module.js + module.js.map + + +---stream-utils + encoded-tags.js + encoded-tags.js.map + node-web-streams-helper.js + node-web-streams-helper.js.map + uint8array-helpers.js + uint8array-helpers.js.map + + +---typescript + constant.js + constant.js.map + index.js + index.js.map + utils.js + utils.js.map + + +---rules + client-boundary.js + client-boundary.js.map + config.js + config.js.map + entry.js + entry.js.map + error.js + error.js.map + metadata.js + metadata.js.map + server-boundary.js + server-boundary.js.map + server.js + server.js.map + + +---use-cache + cache-life.js + cache-life.js.map + cache-tag.js + cache-tag.js.map + constants.js + constants.js.map + handlers.js + handlers.js.map + use-cache-errors.js + use-cache-errors.js.map + use-cache-wrapper.js + use-cache-wrapper.js.map + + +---web + adapter.js + adapter.js.map + edge-route-module-wrapper.js + edge-route-module-wrapper.js.map + error.js + error.js.map + get-edge-preview-props.js + get-edge-preview-props.js.map + globals.js + globals.js.map + http.js + http.js.map + internal-edge-wait-until.js + internal-edge-wait-until.js.map + next-url.js + next-url.js.map + types.js + types.js.map + utils.js + utils.js.map + web-on-close.js + web-on-close.js.map + + +---exports + index.js + index.js.map + + +---sandbox + context.js + context.js.map + fetch-inline-assets.js + fetch-inline-assets.js.map + index.js + index.js.map + resource-managers.js + resource-managers.js.map + sandbox.js + sandbox.js.map + + +---spec-extension + cookies.js + cookies.js.map + fetch-event.js + fetch-event.js.map + image-response.js + image-response.js.map + request.js + request.js.map + response.js + response.js.map + revalidate.js + revalidate.js.map + unstable-cache.js + unstable-cache.js.map + unstable-no-store.js + unstable-no-store.js.map + url-pattern.js + url-pattern.js.map + user-agent.js + user-agent.js.map + + +---adapters + headers.js + headers.js.map + next-request.js + next-request.js.map + reflect.js + reflect.js.map + request-cookies.js + request-cookies.js.map + + +---shared + +---lib + amp-context.shared-runtime.js + amp-context.shared-runtime.js.map + amp-mode.js + amp-mode.js.map + amp.js + amp.js.map + app-dynamic.js + app-dynamic.js.map + app-router-context.shared-runtime.js + app-router-context.shared-runtime.js.map + bloom-filter.js + bloom-filter.js.map + canary-only.js + canary-only.js.map + constants.js + constants.js.map + deep-freeze.js + deep-freeze.js.map + deep-readonly.js + deep-readonly.js.map + dset.d.ts + dset.js + dset.js.map + dynamic.js + dynamic.js.map + encode-uri-path.js + encode-uri-path.js.map + error-source.js + error-source.js.map + escape-regexp.js + escape-regexp.js.map + fnv1a.js + fnv1a.js.map + format-webpack-messages.js + format-webpack-messages.js.map + get-hostname.js + get-hostname.js.map + get-img-props.js + get-img-props.js.map + get-rspack.js + get-rspack.js.map + get-webpack-bundler.js + get-webpack-bundler.js.map + hash.js + hash.js.map + head-manager-context.shared-runtime.js + head-manager-context.shared-runtime.js.map + head.js + head.js.map + hooks-client-context.shared-runtime.js + hooks-client-context.shared-runtime.js.map + html-context.shared-runtime.js + html-context.shared-runtime.js.map + image-blur-svg.js + image-blur-svg.js.map + image-config-context.shared-runtime.js + image-config-context.shared-runtime.js.map + image-config.js + image-config.js.map + image-external.js + image-external.js.map + image-loader.js + image-loader.js.map + invariant-error.js + invariant-error.js.map + is-internal.js + is-internal.js.map + is-plain-object.js + is-plain-object.js.map + is-thenable.js + is-thenable.js.map + loadable-context.shared-runtime.js + loadable-context.shared-runtime.js.map + loadable.shared-runtime.js + loadable.shared-runtime.js.map + magic-identifier.js + magic-identifier.js.map + match-local-pattern.js + match-local-pattern.js.map + match-remote-pattern.js + match-remote-pattern.js.map + mitt.js + mitt.js.map + modern-browserslist-target.d.ts + modern-browserslist-target.js + modern-browserslist-target.js.map + no-fallback-error.external.js + no-fallback-error.external.js.map + normalized-asset-prefix.js + normalized-asset-prefix.js.map + router-context.shared-runtime.js + router-context.shared-runtime.js.map + runtime-config.external.js + runtime-config.external.js.map + segment.js + segment.js.map + server-inserted-html.shared-runtime.js + server-inserted-html.shared-runtime.js.map + server-reference-info.js + server-reference-info.js.map + side-effect.js + side-effect.js.map + styled-jsx.d.ts + styled-jsx.js + styled-jsx.js.map + utils.js + utils.js.map + zod.js + zod.js.map + + +---errors + constants.js + constants.js.map + + +---i18n + detect-domain-locale.js + detect-domain-locale.js.map + get-locale-redirect.js + get-locale-redirect.js.map + normalize-locale-path.js + normalize-locale-path.js.map + + +---isomorphic + path.d.ts + path.js + path.js.map + + +---lazy-dynamic + bailout-to-csr.js + bailout-to-csr.js.map + dynamic-bailout-to-csr.js + dynamic-bailout-to-csr.js.map + loadable.js + loadable.js.map + preload-chunks.js + preload-chunks.js.map + types.js + types.js.map + + +---page-path + absolute-path-to-page.js + absolute-path-to-page.js.map + denormalize-app-path.js + denormalize-app-path.js.map + denormalize-page-path.js + denormalize-page-path.js.map + ensure-leading-slash.js + ensure-leading-slash.js.map + get-page-paths.js + get-page-paths.js.map + normalize-data-path.js + normalize-data-path.js.map + normalize-page-path.js + normalize-page-path.js.map + normalize-path-sep.js + normalize-path-sep.js.map + remove-page-path-tail.js + remove-page-path-tail.js.map + + +---router + adapters.js + adapters.js.map + router.js + router.js.map + + +---utils + add-locale.js + add-locale.js.map + add-path-prefix.js + add-path-prefix.js.map + add-path-suffix.js + add-path-suffix.js.map + app-paths.js + app-paths.js.map + as-path-to-search-params.js + as-path-to-search-params.js.map + cache-busting-search-param.js + cache-busting-search-param.js.map + compare-states.js + compare-states.js.map + disable-smooth-scroll.js + disable-smooth-scroll.js.map + escape-path-delimiters.js + escape-path-delimiters.js.map + format-next-pathname-info.js + format-next-pathname-info.js.map + format-url.js + format-url.js.map + get-asset-path-from-route.js + get-asset-path-from-route.js.map + get-next-pathname-info.js + get-next-pathname-info.js.map + get-route-from-asset-path.js + get-route-from-asset-path.js.map + html-bots.js + html-bots.js.map + index.js + index.js.map + interception-routes.js + interception-routes.js.map + interpolate-as.js + interpolate-as.js.map + is-bot.js + is-bot.js.map + is-dynamic.js + is-dynamic.js.map + is-local-url.js + is-local-url.js.map + middleware-route-matcher.js + middleware-route-matcher.js.map + omit.js + omit.js.map + parse-path.js + parse-path.js.map + parse-relative-url.js + parse-relative-url.js.map + parse-url.js + parse-url.js.map + path-has-prefix.js + path-has-prefix.js.map + path-match.js + path-match.js.map + prepare-destination.js + prepare-destination.js.map + querystring.js + querystring.js.map + relativize-url.js + relativize-url.js.map + remove-path-prefix.js + remove-path-prefix.js.map + remove-trailing-slash.js + remove-trailing-slash.js.map + resolve-rewrites.js + resolve-rewrites.js.map + route-matcher.js + route-matcher.js.map + route-regex.js + route-regex.js.map + sorted-routes.js + sorted-routes.js.map + + +---segment-cache + output-export-prefetch-encoding.js + output-export-prefetch-encoding.js.map + segment-value-encoding.js + segment-value-encoding.js.map + + +---turbopack + compilation-events.js + compilation-events.js.map + entry-key.js + entry-key.js.map + manifest-loader.js + manifest-loader.js.map + utils.js + utils.js.map + + +---utils + error-once.js + error-once.js.map + reflect-utils.js + reflect-utils.js.map + warn-once.js + warn-once.js.map + + +---experimental + +---testing + +---server + config-testing-utils.d.ts + config-testing-utils.js + config-testing-utils.js.map + index.d.ts + index.js + index.js.map + middleware-testing-utils.d.ts + middleware-testing-utils.js + middleware-testing-utils.js.map + utils.d.ts + utils.js + utils.js.map + + +---testmode + context.d.ts + context.js + context.js.map + fetch.d.ts + fetch.js + fetch.js.map + httpget.d.ts + httpget.js + httpget.js.map + server-edge.d.ts + server-edge.js + server-edge.js.map + server.d.ts + server.js + server.js.map + + +---playwright + default-config.d.ts + default-config.js + default-config.js.map + index.d.ts + index.js + index.js.map + msw.d.ts + msw.js + msw.js.map + next-fixture.d.ts + next-fixture.js + next-fixture.js.map + next-options.d.ts + next-options.js + next-options.js.map + next-worker-fixture.d.ts + next-worker-fixture.js + next-worker-fixture.js.map + page-route.d.ts + page-route.js + page-route.js.map + report.d.ts + report.js + report.js.map + step.d.ts + step.js + step.js.map + + +---proxy + fetch-api.d.ts + fetch-api.js + fetch-api.js.map + index.d.ts + index.js + index.js.map + server.d.ts + server.js + server.js.map + types.d.ts + types.js + types.js.map + + +---export + index.d.ts + index.js + index.js.map + types.d.ts + types.js + types.js.map + utils.d.ts + utils.js + utils.js.map + worker.d.ts + worker.js + worker.js.map + + +---helpers + create-incremental-cache.d.ts + create-incremental-cache.js + create-incremental-cache.js.map + get-amp-html-validator.d.ts + get-amp-html-validator.js + get-amp-html-validator.js.map + get-params.d.ts + get-params.js + get-params.js.map + is-dynamic-usage-error.d.ts + is-dynamic-usage-error.js + is-dynamic-usage-error.js.map + + +---routes + app-page.d.ts + app-page.js + app-page.js.map + app-route.d.ts + app-route.js + app-route.js.map + pages.d.ts + pages.js + pages.js.map + types.d.ts + types.js + types.js.map + + +---lib + batcher.d.ts + batcher.js + batcher.js.map + build-custom-route.d.ts + build-custom-route.js + build-custom-route.js.map + client-and-server-references.d.ts + client-and-server-references.js + client-and-server-references.js.map + coalesced-function.d.ts + coalesced-function.js + coalesced-function.js.map + compile-error.d.ts + compile-error.js + compile-error.js.map + constants.d.ts + constants.js + constants.js.map + create-client-router-filter.d.ts + create-client-router-filter.js + create-client-router-filter.js.map + default-transpiled-packages.json + detached-promise.d.ts + detached-promise.js + detached-promise.js.map + detect-typo.d.ts + detect-typo.js + detect-typo.js.map + download-swc.d.ts + download-swc.js + download-swc.js.map + error-telemetry-utils.d.ts + error-telemetry-utils.js + error-telemetry-utils.js.map + fallback.d.ts + fallback.js + fallback.js.map + fatal-error.d.ts + fatal-error.js + fatal-error.js.map + file-exists.d.ts + file-exists.js + file-exists.js.map + find-config.d.ts + find-config.js + find-config.js.map + find-pages-dir.d.ts + find-pages-dir.js + find-pages-dir.js.map + find-root.d.ts + find-root.js + find-root.js.map + format-cli-help-output.d.ts + format-cli-help-output.js + format-cli-help-output.js.map + format-dynamic-import-path.d.ts + format-dynamic-import-path.js + format-dynamic-import-path.js.map + format-server-error.d.ts + format-server-error.js + format-server-error.js.map + generate-interception-routes-rewrites.d.ts + generate-interception-routes-rewrites.js + generate-interception-routes-rewrites.js.map + get-files-in-dir.d.ts + get-files-in-dir.js + get-files-in-dir.js.map + get-network-host.d.ts + get-network-host.js + get-network-host.js.map + get-package-version.d.ts + get-package-version.js + get-package-version.js.map + get-project-dir.d.ts + get-project-dir.js + get-project-dir.js.map + has-necessary-dependencies.d.ts + has-necessary-dependencies.js + has-necessary-dependencies.js.map + import-next-warning.d.ts + import-next-warning.js + import-next-warning.js.map + inline-static-env.d.ts + inline-static-env.js + inline-static-env.js.map + install-dependencies.d.ts + install-dependencies.js + install-dependencies.js.map + interop-default.d.ts + interop-default.js + interop-default.js.map + is-api-route.d.ts + is-api-route.js + is-api-route.js.map + is-app-page-route.d.ts + is-app-page-route.js + is-app-page-route.js.map + is-app-route-route.d.ts + is-app-route-route.js + is-app-route-route.js.map + is-edge-runtime.d.ts + is-edge-runtime.js + is-edge-runtime.js.map + is-error.d.ts + is-error.js + is-error.js.map + is-internal-component.d.ts + is-internal-component.js + is-internal-component.js.map + is-serializable-props.d.ts + is-serializable-props.js + is-serializable-props.js.map + known-edge-safe-packages.json + load-custom-routes.d.ts + load-custom-routes.js + load-custom-routes.js.map + mime-type.d.ts + mime-type.js + mime-type.js.map + mkcert.d.ts + mkcert.js + mkcert.js.map + multi-file-writer.d.ts + multi-file-writer.js + multi-file-writer.js.map + needs-experimental-react.d.ts + needs-experimental-react.js + needs-experimental-react.js.map + non-nullable.d.ts + non-nullable.js + non-nullable.js.map + normalize-path.d.ts + normalize-path.js + normalize-path.js.map + oxford-comma-list.d.ts + oxford-comma-list.js + oxford-comma-list.js.map + page-types.d.ts + page-types.js + page-types.js.map + patch-incorrect-lockfile.d.ts + patch-incorrect-lockfile.js + patch-incorrect-lockfile.js.map + pick.d.ts + pick.js + pick.js.map + picocolors.d.ts + picocolors.js + picocolors.js.map + pretty-bytes.d.ts + pretty-bytes.js + pretty-bytes.js.map + realpath.d.ts + realpath.js + realpath.js.map + recursive-copy.d.ts + recursive-copy.js + recursive-copy.js.map + recursive-delete.d.ts + recursive-delete.js + recursive-delete.js.map + recursive-readdir.d.ts + recursive-readdir.js + recursive-readdir.js.map + redirect-status.d.ts + redirect-status.js + redirect-status.js.map + require-instrumentation-client.d.ts + require-instrumentation-client.js + require-instrumentation-client.js.map + resolve-from.d.ts + resolve-from.js + resolve-from.js.map + scheduler.d.ts + scheduler.js + scheduler.js.map + semver-noop.d.ts + semver-noop.js + semver-noop.js.map + server-external-packages.json + setup-exception-listeners.d.ts + setup-exception-listeners.js + setup-exception-listeners.js.map + static-env.d.ts + static-env.js + static-env.js.map + try-to-parse-path.d.ts + try-to-parse-path.js + try-to-parse-path.js.map + turbopack-warning.d.ts + turbopack-warning.js + turbopack-warning.js.map + url.d.ts + url.js + url.js.map + verify-partytown-setup.d.ts + verify-partytown-setup.js + verify-partytown-setup.js.map + verify-root-layout.d.ts + verify-root-layout.js + verify-root-layout.js.map + verify-typescript-setup.d.ts + verify-typescript-setup.js + verify-typescript-setup.js.map + verifyAndLint.d.ts + verifyAndLint.js + verifyAndLint.js.map + wait.d.ts + wait.js + wait.js.map + with-promise-cache.d.ts + with-promise-cache.js + with-promise-cache.js.map + worker.d.ts + worker.js + worker.js.map + + +---eslint + customFormatter.d.ts + customFormatter.js + customFormatter.js.map + getESLintPromptValues.d.ts + getESLintPromptValues.js + getESLintPromptValues.js.map + hasEslintConfiguration.d.ts + hasEslintConfiguration.js + hasEslintConfiguration.js.map + runLintCheck.d.ts + runLintCheck.js + runLintCheck.js.map + writeDefaultConfig.d.ts + writeDefaultConfig.js + writeDefaultConfig.js.map + writeOutputFile.d.ts + writeOutputFile.js + writeOutputFile.js.map + + +---fs + rename.d.ts + rename.js + rename.js.map + write-atomic.d.ts + write-atomic.js + write-atomic.js.map + + +---helpers + get-cache-directory.d.ts + get-cache-directory.js + get-cache-directory.js.map + get-npx-command.d.ts + get-npx-command.js + get-npx-command.js.map + get-online.d.ts + get-online.js + get-online.js.map + get-pkg-manager.d.ts + get-pkg-manager.js + get-pkg-manager.js.map + get-registry.d.ts + get-registry.js + get-registry.js.map + get-reserved-port.d.ts + get-reserved-port.js + get-reserved-port.js.map + install.d.ts + install.js + install.js.map + + +---memory + gc-observer.d.ts + gc-observer.js + gc-observer.js.map + shutdown.d.ts + shutdown.js + shutdown.js.map + startup.d.ts + startup.js + startup.js.map + trace.d.ts + trace.js + trace.js.map + + +---metadata + clone-metadata.d.ts + clone-metadata.js + clone-metadata.js.map + constants.d.ts + constants.js + constants.js.map + default-metadata.d.ts + default-metadata.js + default-metadata.js.map + get-metadata-route.d.ts + get-metadata-route.js + get-metadata-route.js.map + is-metadata-route.d.ts + is-metadata-route.js + is-metadata-route.js.map + metadata-constants.d.ts + metadata-constants.js + metadata-constants.js.map + metadata-context.d.ts + metadata-context.js + metadata-context.js.map + metadata.d.ts + metadata.js + metadata.js.map + resolve-metadata.d.ts + resolve-metadata.js + resolve-metadata.js.map + + +---generate + alternate.d.ts + alternate.js + alternate.js.map + basic.d.ts + basic.js + basic.js.map + icon-mark.d.ts + icon-mark.js + icon-mark.js.map + icons.d.ts + icons.js + icons.js.map + meta.d.ts + meta.js + meta.js.map + opengraph.d.ts + opengraph.js + opengraph.js.map + utils.d.ts + utils.js + utils.js.map + + +---resolvers + resolve-basics.d.ts + resolve-basics.js + resolve-basics.js.map + resolve-icons.d.ts + resolve-icons.js + resolve-icons.js.map + resolve-opengraph.d.ts + resolve-opengraph.js + resolve-opengraph.js.map + resolve-title.d.ts + resolve-title.js + resolve-title.js.map + resolve-url.d.ts + resolve-url.js + resolve-url.js.map + + +---types + alternative-urls-types.d.ts + alternative-urls-types.js + alternative-urls-types.js.map + extra-types.d.ts + extra-types.js + extra-types.js.map + icons.d.ts + icons.js + icons.js.map + manifest-types.d.ts + manifest-types.js + manifest-types.js.map + metadata-interface.d.ts + metadata-interface.js + metadata-interface.js.map + metadata-types.d.ts + metadata-types.js + metadata-types.js.map + opengraph-types.d.ts + opengraph-types.js + opengraph-types.js.map + resolvers.d.ts + resolvers.js + resolvers.js.map + twitter-types.d.ts + twitter-types.js + twitter-types.js.map + + +---typescript + diagnosticFormatter.d.ts + diagnosticFormatter.js + diagnosticFormatter.js.map + getTypeScriptConfiguration.d.ts + getTypeScriptConfiguration.js + getTypeScriptConfiguration.js.map + getTypeScriptIntent.d.ts + getTypeScriptIntent.js + getTypeScriptIntent.js.map + missingDependencyError.d.ts + missingDependencyError.js + missingDependencyError.js.map + runTypeCheck.d.ts + runTypeCheck.js + runTypeCheck.js.map + writeAppTypeDeclarations.d.ts + writeAppTypeDeclarations.js + writeAppTypeDeclarations.js.map + writeConfigurationDefaults.d.ts + writeConfigurationDefaults.js + writeConfigurationDefaults.js.map + + +---next-devtools + dev-overlay.browser.d.ts + dev-overlay.shim.d.ts + dev-overlay.shim.js + dev-overlay.shim.js.map + entrypoint.d.ts + types.d.ts + + +---components + tooltip.d.ts + + +---dev-overlay + dev-overlay.d.ts + segment-explorer-trie.d.ts + shared.d.ts + + +---components + shadow-portal.d.ts + + +---call-stack + call-stack.d.ts + + +---call-stack-frame + call-stack-frame.d.ts + + +---code-frame + code-frame.d.ts + parse-code-frame.d.ts + + +---copy-button + index.d.ts + + +---devtools-indicator + devtools-indicator.d.ts + next-logo.d.ts + + +---hooks + use-measure-width.d.ts + use-minimum-loading-time-multiple.d.ts + use-update-animation.d.ts + + +---devtools-panel + devtools-panel-footer.d.ts + devtools-panel-version-info.d.ts + devtools-panel.d.ts + + +---devtools-panel-tab + devtools-panel-tab.d.ts + segments-explorer-tab.d.ts + settings-tab.d.ts + + +---issues-tab + issues-tab-content-layout.d.ts + issues-tab-content.d.ts + issues-tab-empty-content.d.ts + issues-tab-sidebar-frame-skeleton.d.ts + issues-tab-sidebar.d.ts + issues-tab.d.ts + + +---hooks + use-theme.d.ts + + +---resize + resize-handle.d.ts + resize-provider.d.ts + + +---dialog + dialog-body.d.ts + dialog-content.d.ts + dialog-header.d.ts + dialog.d.ts + index.d.ts + styles.d.ts + + +---errors + +---dev-tools-indicator + dev-tools-indicator.d.ts + draggable.d.ts + next-logo.d.ts + utils.d.ts + + +---dev-tools-info + dev-tools-info.d.ts + preferences.d.ts + route-info.d.ts + segments-explorer.d.ts + shortcut-recorder.d.ts + turbopack-info.d.ts + user-preferences.d.ts + + +---dialog + body.d.ts + dialog.d.ts + header.d.ts + + +---environment-name-label + environment-name-label.d.ts + + +---error-message + error-message.d.ts + + +---error-overlay + error-overlay.d.ts + + +---error-overlay-bottom-stack + index.d.ts + + +---error-overlay-call-stack + error-overlay-call-stack.d.ts + + +---error-overlay-footer + error-overlay-footer.d.ts + + +---error-feedback + error-feedback.d.ts + + +---error-overlay-layout + error-overlay-layout.d.ts + + +---error-overlay-nav + error-overlay-nav.d.ts + + +---error-overlay-pagination + error-overlay-pagination.d.ts + + +---error-overlay-toolbar + copy-stack-trace-button.d.ts + docs-link-button.d.ts + error-overlay-toolbar.d.ts + issue-feedback-button.d.ts + nodejs-inspector-button.d.ts + restart-server-button.d.ts + + +---error-type-label + error-type-label.d.ts + + +---overlay + overlay.d.ts + + +---fader + index.d.ts + + +---hot-linked-text + index.d.ts + + +---hydration-diff + diff-view.d.ts + + +---overlay + body-locker.d.ts + index.d.ts + overlay-backdrop.d.ts + overlay.d.ts + styles.d.ts + + +---overview + segment-boundary-trigger.d.ts + segment-explorer.d.ts + + +---resizer + index.d.ts + + +---select + select.d.ts + + +---terminal + editor-link.d.ts + index.d.ts + terminal.d.ts + + +---toast + index.d.ts + toast.d.ts + + +---version-staleness-info + version-staleness-info.d.ts + + +---container + build-error.d.ts + errors.d.ts + + +---runtime-error + component-stack-pseudo-html.d.ts + error-content-skeleton.d.ts + index.d.ts + render-error.d.ts + + +---font + font-styles.d.ts + + +---hooks + use-active-runtime-error.d.ts + use-delayed-render.d.ts + use-on-click-outside.d.ts + use-shortcuts.d.ts + + +---icons + chevron-down.d.ts + chevron-up-down.d.ts + collapse-icon.d.ts + cross.d.ts + dark-icon.d.ts + eclipse.d.ts + external.d.ts + eye-icon.d.ts + file.d.ts + fullscreen.d.ts + gear-icon.d.ts + left-arrow.d.ts + light-icon.d.ts + minimize.d.ts + refresh-clock-wise.d.ts + right-arrow.d.ts + stop-icon.d.ts + system-icon.d.ts + warning.d.ts + + +---thumbs + thumbs-down.d.ts + thumbs-up.d.ts + + +---styles + base.d.ts + colors.d.ts + component-styles.d.ts + css-reset.d.ts + dark-theme.d.ts + + +---utils + css.d.ts + cx.d.ts + get-error-by-type.d.ts + lorem.d.ts + merge-refs.d.ts + parse-component-stack.d.ts + parse-url-from-text.d.ts + use-open-in-editor.d.ts + + +---server + dev-indicator-middleware.d.ts + dev-indicator-middleware.js + dev-indicator-middleware.js.map + get-next-error-feedback-middleware.d.ts + get-next-error-feedback-middleware.js + get-next-error-feedback-middleware.js.map + launch-editor.d.ts + launch-editor.js + launch-editor.js.map + middleware-response.d.ts + middleware-response.js + middleware-response.js.map + restart-dev-server-middleware.d.ts + restart-dev-server-middleware.js + restart-dev-server-middleware.js.map + shared.d.ts + shared.js + shared.js.map + + +---font + geist-latin-ext.woff2 + geist-latin.woff2 + geist-mono-latin-ext.woff2 + geist-mono-latin.woff2 + get-dev-overlay-font-middleware.d.ts + get-dev-overlay-font-middleware.js + get-dev-overlay-font-middleware.js.map + + +---shared + console-error.d.ts + console-error.js + console-error.js.map + forward-logs-shared.d.ts + forward-logs-shared.js + forward-logs-shared.js.map + hydration-error.d.ts + hydration-error.js + hydration-error.js.map + react-18-hydration-error.d.ts + react-18-hydration-error.js + react-18-hydration-error.js.map + react-19-hydration-error.d.ts + react-19-hydration-error.js + react-19-hydration-error.js.map + stack-frame.d.ts + stack-frame.js + stack-frame.js.map + types.d.ts + types.js + types.js.map + version-staleness.d.ts + version-staleness.js + version-staleness.js.map + webpack-module-path.d.ts + webpack-module-path.js + webpack-module-path.js.map + + +---userspace + use-app-dev-rendering-indicator.d.ts + use-app-dev-rendering-indicator.js + use-app-dev-rendering-indicator.js.map + + +---app + app-dev-overlay-error-boundary.d.ts + app-dev-overlay-error-boundary.js + app-dev-overlay-error-boundary.js.map + app-dev-overlay-setup.d.ts + app-dev-overlay-setup.js + app-dev-overlay-setup.js.map + client-entry.d.ts + client-entry.js + client-entry.js.map + forward-logs.d.ts + forward-logs.js + forward-logs.js.map + segment-explorer-node.d.ts + segment-explorer-node.js + segment-explorer-node.js.map + terminal-logging-config.d.ts + terminal-logging-config.js + terminal-logging-config.js.map + + +---errors + index.d.ts + index.js + index.js.map + intercept-console-error.d.ts + intercept-console-error.js + intercept-console-error.js.map + replay-ssr-only-errors.d.ts + replay-ssr-only-errors.js + replay-ssr-only-errors.js.map + stitched-error.d.ts + stitched-error.js + stitched-error.js.map + use-error-handler.d.ts + use-error-handler.js + use-error-handler.js.map + use-forward-console-log.d.ts + use-forward-console-log.js + use-forward-console-log.js.map + + +---pages + hydration-error-state.d.ts + hydration-error-state.js + hydration-error-state.js.map + pages-dev-overlay-error-boundary.d.ts + pages-dev-overlay-error-boundary.js + pages-dev-overlay-error-boundary.js.map + pages-dev-overlay-setup.d.ts + pages-dev-overlay-setup.js + pages-dev-overlay-setup.js.map + + +---pages + _app.d.ts + _app.js + _app.js.map + _document.d.ts + _document.js + _document.js.map + _error.d.ts + _error.js + _error.js.map + + +---server + accept-header.d.ts + accept-header.js + accept-header.js.map + base-server.d.ts + base-server.js + base-server.js.map + body-streams.d.ts + body-streams.js + body-streams.js.map + cache-dir.d.ts + cache-dir.js + cache-dir.js.map + capsize-font-metrics.json + ci-info.d.ts + ci-info.js + ci-info.js.map + client-component-renderer-logger.d.ts + client-component-renderer-logger.js + client-component-renderer-logger.js.map + config-schema.d.ts + config-schema.js + config-schema.js.map + config-shared.d.ts + config-shared.js + config-shared.js.map + config-utils.d.ts + config-utils.js + config-utils.js.map + config.d.ts + config.js + config.js.map + create-deduped-by-callsite-server-error-logger.d.ts + create-deduped-by-callsite-server-error-logger.js + create-deduped-by-callsite-server-error-logger.js.map + crypto-utils.d.ts + crypto-utils.js + crypto-utils.js.map + dynamic-rendering-utils.d.ts + dynamic-rendering-utils.js + dynamic-rendering-utils.js.map + font-utils.d.ts + font-utils.js + font-utils.js.map + get-app-route-from-entrypoint.d.ts + get-app-route-from-entrypoint.js + get-app-route-from-entrypoint.js.map + get-page-files.d.ts + get-page-files.js + get-page-files.js.map + get-route-from-entrypoint.d.ts + get-route-from-entrypoint.js + get-route-from-entrypoint.js.map + htmlescape.d.ts + htmlescape.js + htmlescape.js.map + image-optimizer.d.ts + image-optimizer.js + image-optimizer.js.map + internal-utils.d.ts + internal-utils.js + internal-utils.js.map + load-components.d.ts + load-components.js + load-components.js.map + load-default-error-components.d.ts + load-default-error-components.js + load-default-error-components.js.map + load-manifest.external.d.ts + load-manifest.external.js + load-manifest.external.js.map + match-bundle.d.ts + match-bundle.js + match-bundle.js.map + next-server.d.ts + next-server.js + next-server.js.map + next-typescript.d.ts + next-typescript.js + next-typescript.js.map + next.d.ts + next.js + next.js.map + node-environment-baseline.d.ts + node-environment-baseline.js + node-environment-baseline.js.map + node-environment.d.ts + node-environment.js + node-environment.js.map + node-polyfill-crypto.d.ts + node-polyfill-crypto.js + node-polyfill-crypto.js.map + optimize-amp.d.ts + optimize-amp.js + optimize-amp.js.map + patch-error-inspect.d.ts + patch-error-inspect.js + patch-error-inspect.js.map + pipe-readable.d.ts + pipe-readable.js + pipe-readable.js.map + post-process.d.ts + post-process.js + post-process.js.map + ReactDOMServerPages.d.ts + ReactDOMServerPages.js + ReactDOMServerPages.js.map + render-result.d.ts + render-result.js + render-result.js.map + render.d.ts + render.js + render.js.map + request-meta.d.ts + request-meta.js + request-meta.js.map + require-hook.d.ts + require-hook.js + require-hook.js.map + require.d.ts + require.js + require.js.map + revalidation-utils.d.ts + revalidation-utils.js + revalidation-utils.js.map + route-kind.d.ts + route-kind.js + route-kind.js.map + send-payload.d.ts + send-payload.js + send-payload.js.map + send-response.d.ts + send-response.js + send-response.js.map + serve-static.d.ts + serve-static.js + serve-static.js.map + server-route-utils.d.ts + server-route-utils.js + server-route-utils.js.map + server-utils.d.ts + server-utils.js + server-utils.js.map + setup-http-agent-env.d.ts + setup-http-agent-env.js + setup-http-agent-env.js.map + utils.d.ts + utils.js + utils.js.map + web-server.d.ts + web-server.js + web-server.js.map + + +---after + after-context.d.ts + after-context.js + after-context.js.map + after.d.ts + after.js + after.js.map + awaiter.d.ts + awaiter.js + awaiter.js.map + builtin-request-context.d.ts + builtin-request-context.js + builtin-request-context.js.map + index.d.ts + index.js + index.js.map + run-with-after.d.ts + run-with-after.js + run-with-after.js.map + + +---api-utils + get-cookie-parser.d.ts + get-cookie-parser.js + get-cookie-parser.js.map + index.d.ts + index.js + index.js.map + web.d.ts + web.js + web.js.map + + +---node + api-resolver.d.ts + api-resolver.js + api-resolver.js.map + parse-body.d.ts + parse-body.js + parse-body.js.map + try-get-preview-data.d.ts + try-get-preview-data.js + try-get-preview-data.js.map + + +---app-render + action-async-storage-instance.d.ts + action-async-storage-instance.js + action-async-storage-instance.js.map + action-async-storage.external.d.ts + action-async-storage.external.js + action-async-storage.external.js.map + action-handler.d.ts + action-handler.js + action-handler.js.map + action-utils.d.ts + action-utils.js + action-utils.js.map + after-task-async-storage-instance.d.ts + after-task-async-storage-instance.js + after-task-async-storage-instance.js.map + after-task-async-storage.external.d.ts + after-task-async-storage.external.js + after-task-async-storage.external.js.map + app-render-prerender-utils.d.ts + app-render-prerender-utils.js + app-render-prerender-utils.js.map + app-render-render-utils.d.ts + app-render-render-utils.js + app-render-render-utils.js.map + app-render.d.ts + app-render.js + app-render.js.map + async-local-storage.d.ts + async-local-storage.js + async-local-storage.js.map + cache-signal.d.ts + cache-signal.js + cache-signal.js.map + collect-segment-data.d.ts + collect-segment-data.js + collect-segment-data.js.map + create-component-styles-and-scripts.d.ts + create-component-styles-and-scripts.js + create-component-styles-and-scripts.js.map + create-component-tree.d.ts + create-component-tree.js + create-component-tree.js.map + create-error-handler.d.ts + create-error-handler.js + create-error-handler.js.map + create-flight-router-state-from-loader-tree.d.ts + create-flight-router-state-from-loader-tree.js + create-flight-router-state-from-loader-tree.js.map + csrf-protection.d.ts + csrf-protection.js + csrf-protection.js.map + dynamic-access-async-storage-instance.d.ts + dynamic-access-async-storage-instance.js + dynamic-access-async-storage-instance.js.map + dynamic-access-async-storage.external.d.ts + dynamic-access-async-storage.external.js + dynamic-access-async-storage.external.js.map + dynamic-rendering.d.ts + dynamic-rendering.js + dynamic-rendering.js.map + encryption-utils-server.d.ts + encryption-utils-server.js + encryption-utils-server.js.map + encryption-utils.d.ts + encryption-utils.js + encryption-utils.js.map + encryption.d.ts + encryption.js + encryption.js.map + entry-base.d.ts + entry-base.js + entry-base.js.map + flight-render-result.d.ts + flight-render-result.js + flight-render-result.js.map + get-asset-query-string.d.ts + get-asset-query-string.js + get-asset-query-string.js.map + get-css-inlined-link-tags.d.ts + get-css-inlined-link-tags.js + get-css-inlined-link-tags.js.map + get-layer-assets.d.ts + get-layer-assets.js + get-layer-assets.js.map + get-preloadable-fonts.d.ts + get-preloadable-fonts.js + get-preloadable-fonts.js.map + get-script-nonce-from-header.d.ts + get-script-nonce-from-header.js + get-script-nonce-from-header.js.map + get-segment-param.d.ts + get-segment-param.js + get-segment-param.js.map + get-short-dynamic-param-type.d.ts + get-short-dynamic-param-type.js + get-short-dynamic-param-type.js.map + has-loading-component-in-tree.d.ts + has-loading-component-in-tree.js + has-loading-component-in-tree.js.map + interop-default.d.ts + interop-default.js + interop-default.js.map + make-get-server-inserted-html.d.ts + make-get-server-inserted-html.js + make-get-server-inserted-html.js.map + parse-and-validate-flight-router-state.d.ts + parse-and-validate-flight-router-state.js + parse-and-validate-flight-router-state.js.map + parse-loader-tree.d.ts + parse-loader-tree.js + parse-loader-tree.js.map + postponed-state.d.ts + postponed-state.js + postponed-state.js.map + prospective-render-utils.d.ts + prospective-render-utils.js + prospective-render-utils.js.map + react-large-shell-error.d.ts + react-large-shell-error.js + react-large-shell-error.js.map + react-server.node.d.ts + react-server.node.js + react-server.node.js.map + render-css-resource.d.ts + render-css-resource.js + render-css-resource.js.map + render-to-string.d.ts + render-to-string.js + render-to-string.js.map + required-scripts.d.ts + required-scripts.js + required-scripts.js.map + segment-explorer-path.d.ts + segment-explorer-path.js + segment-explorer-path.js.map + server-inserted-html.d.ts + server-inserted-html.js + server-inserted-html.js.map + strip-flight-headers.d.ts + strip-flight-headers.js + strip-flight-headers.js.map + types.d.ts + types.js + types.js.map + use-flight-response.d.ts + use-flight-response.js + use-flight-response.js.map + walk-tree-with-flight-router-state.d.ts + walk-tree-with-flight-router-state.js + walk-tree-with-flight-router-state.js.map + work-async-storage-instance.d.ts + work-async-storage-instance.js + work-async-storage-instance.js.map + work-async-storage.external.d.ts + work-async-storage.external.js + work-async-storage.external.js.map + work-unit-async-storage-instance.d.ts + work-unit-async-storage-instance.js + work-unit-async-storage-instance.js.map + work-unit-async-storage.external.d.ts + work-unit-async-storage.external.js + work-unit-async-storage.external.js.map + + +---metadata-insertion + create-server-inserted-metadata.d.ts + create-server-inserted-metadata.js + create-server-inserted-metadata.js.map + + +---module-loading + track-dynamic-import.d.ts + track-dynamic-import.js + track-dynamic-import.js.map + track-module-loading.external.d.ts + track-module-loading.external.js + track-module-loading.external.js.map + track-module-loading.instance.d.ts + track-module-loading.instance.js + track-module-loading.instance.js.map + + +---rsc + postpone.d.ts + postpone.js + postpone.js.map + preloads.d.ts + preloads.js + preloads.js.map + taint.d.ts + taint.js + taint.js.map + + +---async-storage + draft-mode-provider.d.ts + draft-mode-provider.js + draft-mode-provider.js.map + request-store.d.ts + request-store.js + request-store.js.map + with-store.d.ts + with-store.js + with-store.js.map + work-store.d.ts + work-store.js + work-store.js.map + + +---base-http + helpers.d.ts + helpers.js + helpers.js.map + index.d.ts + index.js + index.js.map + node.d.ts + node.js + node.js.map + web.d.ts + web.js + web.js.map + + +---dev + dev-indicator-server-state.d.ts + dev-indicator-server-state.js + dev-indicator-server-state.js.map + get-source-map-from-file.d.ts + get-source-map-from-file.js + get-source-map-from-file.js.map + hot-middleware.d.ts + hot-middleware.js + hot-middleware.js.map + hot-reloader-turbopack.d.ts + hot-reloader-turbopack.js + hot-reloader-turbopack.js.map + hot-reloader-types.d.ts + hot-reloader-types.js + hot-reloader-types.js.map + hot-reloader-webpack.d.ts + hot-reloader-webpack.js + hot-reloader-webpack.js.map + log-requests.d.ts + log-requests.js + log-requests.js.map + messages.d.ts + messages.js + messages.js.map + middleware-turbopack.d.ts + middleware-turbopack.js + middleware-turbopack.js.map + middleware-webpack.d.ts + middleware-webpack.js + middleware-webpack.js.map + next-dev-server.d.ts + next-dev-server.js + next-dev-server.js.map + node-stack-frames.d.ts + node-stack-frames.js + node-stack-frames.js.map + on-demand-entry-handler.d.ts + on-demand-entry-handler.js + on-demand-entry-handler.js.map + parse-version-info.d.ts + parse-version-info.js + parse-version-info.js.map + require-cache.d.ts + require-cache.js + require-cache.js.map + static-paths-worker.d.ts + static-paths-worker.js + static-paths-worker.js.map + turbopack-utils.d.ts + turbopack-utils.js + turbopack-utils.js.map + + +---browser-logs + receive-logs.d.ts + receive-logs.js + receive-logs.js.map + source-map.d.ts + source-map.js + source-map.js.map + + +---instrumentation + types.d.ts + types.js + types.js.map + utils.d.ts + utils.js + utils.js.map + + +---lib + app-dir-module.d.ts + app-dir-module.js + app-dir-module.js.map + app-info-log.d.ts + app-info-log.js + app-info-log.js.map + async-callback-set.d.ts + async-callback-set.js + async-callback-set.js.map + cache-control.d.ts + cache-control.js + cache-control.js.map + chrome-devtools-workspace.d.ts + chrome-devtools-workspace.js + chrome-devtools-workspace.js.map + clone-response.d.ts + clone-response.js + clone-response.js.map + cpu-profile.d.ts + cpu-profile.js + cpu-profile.js.map + decode-query-path-parameter.d.ts + decode-query-path-parameter.js + decode-query-path-parameter.js.map + dedupe-fetch.d.ts + dedupe-fetch.js + dedupe-fetch.js.map + dev-bundler-service.d.ts + dev-bundler-service.js + dev-bundler-service.js.map + etag.d.ts + etag.js + etag.js.map + find-page-file.d.ts + find-page-file.js + find-page-file.js.map + fix-mojibake.d.ts + fix-mojibake.js + fix-mojibake.js.map + format-hostname.d.ts + format-hostname.js + format-hostname.js.map + i18n-provider.d.ts + i18n-provider.js + i18n-provider.js.map + implicit-tags.d.ts + implicit-tags.js + implicit-tags.js.map + is-ipv6.d.ts + is-ipv6.js + is-ipv6.js.map + lazy-result.d.ts + lazy-result.js + lazy-result.js.map + lru-cache.d.ts + lru-cache.js + lru-cache.js.map + match-next-data-pathname.d.ts + match-next-data-pathname.js + match-next-data-pathname.js.map + mock-request.d.ts + mock-request.js + mock-request.js.map + node-fs-methods.d.ts + node-fs-methods.js + node-fs-methods.js.map + parse-stack.d.ts + parse-stack.js + parse-stack.js.map + patch-fetch.d.ts + patch-fetch.js + patch-fetch.js.map + patch-set-header.d.ts + patch-set-header.js + patch-set-header.js.map + render-server.d.ts + render-server.js + render-server.js.map + router-server.d.ts + router-server.js + router-server.js.map + server-action-request-meta.d.ts + server-action-request-meta.js + server-action-request-meta.js.map + source-maps.d.ts + source-maps.js + source-maps.js.map + start-server.d.ts + start-server.js + start-server.js.map + streaming-metadata.d.ts + streaming-metadata.js + streaming-metadata.js.map + to-route.d.ts + to-route.js + to-route.js.map + types.d.ts + types.js + types.js.map + utils.d.ts + utils.js + utils.js.map + worker-utils.d.ts + worker-utils.js + worker-utils.js.map + + +---cache-handlers + default.external.d.ts + default.external.js + default.external.js.map + types.d.ts + types.js + types.js.map + + +---experimental + create-env-definitions.d.ts + create-env-definitions.js + create-env-definitions.js.map + ppr.d.ts + ppr.js + ppr.js.map + + +---incremental-cache + file-system-cache.d.ts + file-system-cache.js + file-system-cache.js.map + index.d.ts + index.js + index.js.map + memory-cache.external.d.ts + memory-cache.external.js + memory-cache.external.js.map + shared-cache-controls.external.d.ts + shared-cache-controls.external.js + shared-cache-controls.external.js.map + tags-manifest.external.d.ts + tags-manifest.external.js + tags-manifest.external.js.map + + +---module-loader + module-loader.d.ts + module-loader.js + module-loader.js.map + node-module-loader.d.ts + node-module-loader.js + node-module-loader.js.map + route-module-loader.d.ts + route-module-loader.js + route-module-loader.js.map + + +---router-utils + block-cross-site.d.ts + block-cross-site.js + block-cross-site.js.map + build-data-route.d.ts + build-data-route.js + build-data-route.js.map + build-prefetch-segment-data-route.d.ts + build-prefetch-segment-data-route.js + build-prefetch-segment-data-route.js.map + decode-path-params.d.ts + decode-path-params.js + decode-path-params.js.map + filesystem.d.ts + filesystem.js + filesystem.js.map + instrumentation-globals.external.d.ts + instrumentation-globals.external.js + instrumentation-globals.external.js.map + is-postpone.d.ts + is-postpone.js + is-postpone.js.map + proxy-request.d.ts + proxy-request.js + proxy-request.js.map + resolve-routes.d.ts + resolve-routes.js + resolve-routes.js.map + router-server-context.d.ts + router-server-context.js + router-server-context.js.map + setup-dev-bundler.d.ts + setup-dev-bundler.js + setup-dev-bundler.js.map + types.d.ts + types.js + types.js.map + + +---server-ipc + utils.d.ts + utils.js + utils.js.map + + +---trace + constants.d.ts + constants.js + constants.js.map + tracer.d.ts + tracer.js + tracer.js.map + utils.d.ts + utils.js + utils.js.map + + +---node-environment-extensions + console-dev.d.ts + console-dev.js + console-dev.js.map + date.d.ts + date.js + date.js.map + error-inspect.d.ts + error-inspect.js + error-inspect.js.map + node-crypto.d.ts + node-crypto.js + node-crypto.js.map + random.d.ts + random.js + random.js.map + utils.d.ts + utils.js + utils.js.map + web-crypto.d.ts + web-crypto.js + web-crypto.js.map + + +---normalizers + absolute-filename-normalizer.d.ts + absolute-filename-normalizer.js + absolute-filename-normalizer.js.map + locale-route-normalizer.d.ts + locale-route-normalizer.js + locale-route-normalizer.js.map + normalizer.d.ts + normalizer.js + normalizer.js.map + normalizers.d.ts + normalizers.js + normalizers.js.map + prefixing-normalizer.d.ts + prefixing-normalizer.js + prefixing-normalizer.js.map + underscore-normalizer.d.ts + underscore-normalizer.js + underscore-normalizer.js.map + wrap-normalizer-fn.d.ts + wrap-normalizer-fn.js + wrap-normalizer-fn.js.map + + +---built + +---app + app-bundle-path-normalizer.d.ts + app-bundle-path-normalizer.js + app-bundle-path-normalizer.js.map + app-filename-normalizer.d.ts + app-filename-normalizer.js + app-filename-normalizer.js.map + app-page-normalizer.d.ts + app-page-normalizer.js + app-page-normalizer.js.map + app-pathname-normalizer.d.ts + app-pathname-normalizer.js + app-pathname-normalizer.js.map + index.d.ts + index.js + index.js.map + + +---pages + index.d.ts + index.js + index.js.map + pages-bundle-path-normalizer.d.ts + pages-bundle-path-normalizer.js + pages-bundle-path-normalizer.js.map + pages-filename-normalizer.d.ts + pages-filename-normalizer.js + pages-filename-normalizer.js.map + pages-page-normalizer.d.ts + pages-page-normalizer.js + pages-page-normalizer.js.map + pages-pathname-normalizer.d.ts + pages-pathname-normalizer.js + pages-pathname-normalizer.js.map + + +---request + base-path.d.ts + base-path.js + base-path.js.map + next-data.d.ts + next-data.js + next-data.js.map + pathname-normalizer.d.ts + pathname-normalizer.js + pathname-normalizer.js.map + prefetch-rsc.d.ts + prefetch-rsc.js + prefetch-rsc.js.map + prefix.d.ts + prefix.js + prefix.js.map + rsc.d.ts + rsc.js + rsc.js.map + segment-prefix-rsc.d.ts + segment-prefix-rsc.js + segment-prefix-rsc.js.map + suffix.d.ts + suffix.js + suffix.js.map + + +---og + image-response.d.ts + image-response.js + image-response.js.map + + +---request + connection.d.ts + connection.js + connection.js.map + cookies.d.ts + cookies.js + cookies.js.map + draft-mode.d.ts + draft-mode.js + draft-mode.js.map + fallback-params.d.ts + fallback-params.js + fallback-params.js.map + headers.d.ts + headers.js + headers.js.map + params.d.ts + params.js + params.js.map + pathname.d.ts + pathname.js + pathname.js.map + root-params.d.ts + root-params.js + root-params.js.map + search-params.d.ts + search-params.js + search-params.js.map + utils.d.ts + utils.js + utils.js.map + + +---response-cache + index.d.ts + index.js + index.js.map + types.d.ts + types.js + types.js.map + utils.d.ts + utils.js + utils.js.map + web.d.ts + web.js + web.js.map + + +---resume-data-cache + cache-store.d.ts + cache-store.js + cache-store.js.map + resume-data-cache.d.ts + resume-data-cache.js + resume-data-cache.js.map + + +---route-definitions + app-page-route-definition.d.ts + app-page-route-definition.js + app-page-route-definition.js.map + app-route-route-definition.d.ts + app-route-route-definition.js + app-route-route-definition.js.map + locale-route-definition.d.ts + locale-route-definition.js + locale-route-definition.js.map + pages-api-route-definition.d.ts + pages-api-route-definition.js + pages-api-route-definition.js.map + pages-route-definition.d.ts + pages-route-definition.js + pages-route-definition.js.map + route-definition.d.ts + route-definition.js + route-definition.js.map + + +---route-matcher-managers + default-route-matcher-manager.d.ts + default-route-matcher-manager.js + default-route-matcher-manager.js.map + dev-route-matcher-manager.d.ts + dev-route-matcher-manager.js + dev-route-matcher-manager.js.map + route-matcher-manager.d.ts + route-matcher-manager.js + route-matcher-manager.js.map + + +---route-matcher-providers + app-page-route-matcher-provider.d.ts + app-page-route-matcher-provider.js + app-page-route-matcher-provider.js.map + app-route-route-matcher-provider.d.ts + app-route-route-matcher-provider.js + app-route-route-matcher-provider.js.map + manifest-route-matcher-provider.d.ts + manifest-route-matcher-provider.js + manifest-route-matcher-provider.js.map + pages-api-route-matcher-provider.d.ts + pages-api-route-matcher-provider.js + pages-api-route-matcher-provider.js.map + pages-route-matcher-provider.d.ts + pages-route-matcher-provider.js + pages-route-matcher-provider.js.map + route-matcher-provider.d.ts + route-matcher-provider.js + route-matcher-provider.js.map + + +---dev + dev-app-page-route-matcher-provider.d.ts + dev-app-page-route-matcher-provider.js + dev-app-page-route-matcher-provider.js.map + dev-app-route-route-matcher-provider.d.ts + dev-app-route-route-matcher-provider.js + dev-app-route-route-matcher-provider.js.map + dev-pages-api-route-matcher-provider.d.ts + dev-pages-api-route-matcher-provider.js + dev-pages-api-route-matcher-provider.js.map + dev-pages-route-matcher-provider.d.ts + dev-pages-route-matcher-provider.js + dev-pages-route-matcher-provider.js.map + file-cache-route-matcher-provider.d.ts + file-cache-route-matcher-provider.js + file-cache-route-matcher-provider.js.map + + +---helpers + +---file-reader + batched-file-reader.d.ts + batched-file-reader.js + batched-file-reader.js.map + default-file-reader.d.ts + default-file-reader.js + default-file-reader.js.map + file-reader.d.ts + file-reader.js + file-reader.js.map + + +---helpers + cached-route-matcher-provider.d.ts + cached-route-matcher-provider.js + cached-route-matcher-provider.js.map + + +---manifest-loaders + manifest-loader.d.ts + manifest-loader.js + manifest-loader.js.map + node-manifest-loader.d.ts + node-manifest-loader.js + node-manifest-loader.js.map + server-manifest-loader.d.ts + server-manifest-loader.js + server-manifest-loader.js.map + + +---route-matchers + app-page-route-matcher.d.ts + app-page-route-matcher.js + app-page-route-matcher.js.map + app-route-route-matcher.d.ts + app-route-route-matcher.js + app-route-route-matcher.js.map + locale-route-matcher.d.ts + locale-route-matcher.js + locale-route-matcher.js.map + pages-api-route-matcher.d.ts + pages-api-route-matcher.js + pages-api-route-matcher.js.map + pages-route-matcher.d.ts + pages-route-matcher.js + pages-route-matcher.js.map + route-matcher.d.ts + route-matcher.js + route-matcher.js.map + + +---route-matches + app-page-route-match.d.ts + app-page-route-match.js + app-page-route-match.js.map + app-route-route-match.d.ts + app-route-route-match.js + app-route-route-match.js.map + locale-route-match.d.ts + locale-route-match.js + locale-route-match.js.map + pages-api-route-match.d.ts + pages-api-route-match.js + pages-api-route-match.js.map + pages-route-match.d.ts + pages-route-match.js + pages-route-match.js.map + route-match.d.ts + route-match.js + route-match.js.map + + +---route-modules + checks.d.ts + checks.js + checks.js.map + route-module.d.ts + route-module.js + route-module.js.map + + +---app-page + module.compiled.d.ts + module.compiled.js + module.compiled.js.map + module.d.ts + module.js + module.js.map + module.render.d.ts + module.render.js + module.render.js.map + + +---vendored + +---contexts + amp-context.d.ts + amp-context.js + amp-context.js.map + app-router-context.d.ts + app-router-context.js + app-router-context.js.map + entrypoints.d.ts + entrypoints.js + entrypoints.js.map + head-manager-context.d.ts + head-manager-context.js + head-manager-context.js.map + hooks-client-context.d.ts + hooks-client-context.js + hooks-client-context.js.map + image-config-context.d.ts + image-config-context.js + image-config-context.js.map + router-context.d.ts + router-context.js + router-context.js.map + server-inserted-html.d.ts + server-inserted-html.js + server-inserted-html.js.map + + +---rsc + entrypoints.d.ts + entrypoints.js + entrypoints.js.map + react-compiler-runtime.d.ts + react-compiler-runtime.js + react-compiler-runtime.js.map + react-dom.d.ts + react-dom.js + react-dom.js.map + react-jsx-dev-runtime.d.ts + react-jsx-dev-runtime.js + react-jsx-dev-runtime.js.map + react-jsx-runtime.d.ts + react-jsx-runtime.js + react-jsx-runtime.js.map + react-server-dom-turbopack-server.d.ts + react-server-dom-turbopack-server.js + react-server-dom-turbopack-server.js.map + react-server-dom-turbopack-static.d.ts + react-server-dom-turbopack-static.js + react-server-dom-turbopack-static.js.map + react-server-dom-webpack-server.d.ts + react-server-dom-webpack-server.js + react-server-dom-webpack-server.js.map + react-server-dom-webpack-static.d.ts + react-server-dom-webpack-static.js + react-server-dom-webpack-static.js.map + react.d.ts + react.js + react.js.map + + +---ssr + entrypoints.d.ts + entrypoints.js + entrypoints.js.map + react-compiler-runtime.d.ts + react-compiler-runtime.js + react-compiler-runtime.js.map + react-dom-server.d.ts + react-dom-server.js + react-dom-server.js.map + react-dom.d.ts + react-dom.js + react-dom.js.map + react-jsx-dev-runtime.d.ts + react-jsx-dev-runtime.js + react-jsx-dev-runtime.js.map + react-jsx-runtime.d.ts + react-jsx-runtime.js + react-jsx-runtime.js.map + react-server-dom-turbopack-client.d.ts + react-server-dom-turbopack-client.js + react-server-dom-turbopack-client.js.map + react-server-dom-webpack-client.d.ts + react-server-dom-webpack-client.js + react-server-dom-webpack-client.js.map + react.d.ts + react.js + react.js.map + + +---app-route + module.compiled.d.ts + module.compiled.js + module.compiled.js.map + module.d.ts + module.js + module.js.map + shared-modules.d.ts + shared-modules.js + shared-modules.js.map + + +---helpers + auto-implement-methods.d.ts + auto-implement-methods.js + auto-implement-methods.js.map + clean-url.d.ts + clean-url.js + clean-url.js.map + get-pathname-from-absolute-path.d.ts + get-pathname-from-absolute-path.js + get-pathname-from-absolute-path.js.map + is-static-gen-enabled.d.ts + is-static-gen-enabled.js + is-static-gen-enabled.js.map + parsed-url-query-to-params.d.ts + parsed-url-query-to-params.js + parsed-url-query-to-params.js.map + + +---pages + module.compiled.d.ts + module.compiled.js + module.compiled.js.map + module.d.ts + module.js + module.js.map + module.render.d.ts + module.render.js + module.render.js.map + + +---builtin + _error.d.ts + _error.js + _error.js.map + + +---vendored + +---contexts + amp-context.d.ts + amp-context.js + amp-context.js.map + app-router-context.d.ts + app-router-context.js + app-router-context.js.map + entrypoints.d.ts + entrypoints.js + entrypoints.js.map + head-manager-context.d.ts + head-manager-context.js + head-manager-context.js.map + hooks-client-context.d.ts + hooks-client-context.js + hooks-client-context.js.map + html-context.d.ts + html-context.js + html-context.js.map + image-config-context.d.ts + image-config-context.js + image-config-context.js.map + loadable-context.d.ts + loadable-context.js + loadable-context.js.map + loadable.d.ts + loadable.js + loadable.js.map + router-context.d.ts + router-context.js + router-context.js.map + server-inserted-html.d.ts + server-inserted-html.js + server-inserted-html.js.map + + +---pages-api + module.compiled.d.ts + module.compiled.js + module.compiled.js.map + module.d.ts + module.js + module.js.map + + +---stream-utils + encoded-tags.d.ts + encoded-tags.js + encoded-tags.js.map + node-web-streams-helper.d.ts + node-web-streams-helper.js + node-web-streams-helper.js.map + uint8array-helpers.d.ts + uint8array-helpers.js + uint8array-helpers.js.map + + +---typescript + constant.d.ts + constant.js + constant.js.map + index.d.ts + index.js + index.js.map + utils.d.ts + utils.js + utils.js.map + + +---rules + client-boundary.d.ts + client-boundary.js + client-boundary.js.map + config.d.ts + config.js + config.js.map + entry.d.ts + entry.js + entry.js.map + error.d.ts + error.js + error.js.map + metadata.d.ts + metadata.js + metadata.js.map + server-boundary.d.ts + server-boundary.js + server-boundary.js.map + server.d.ts + server.js + server.js.map + + +---use-cache + cache-life.d.ts + cache-life.js + cache-life.js.map + cache-tag.d.ts + cache-tag.js + cache-tag.js.map + constants.d.ts + constants.js + constants.js.map + handlers.d.ts + handlers.js + handlers.js.map + use-cache-errors.d.ts + use-cache-errors.js + use-cache-errors.js.map + use-cache-wrapper.d.ts + use-cache-wrapper.js + use-cache-wrapper.js.map + + +---web + adapter.d.ts + adapter.js + adapter.js.map + edge-route-module-wrapper.d.ts + edge-route-module-wrapper.js + edge-route-module-wrapper.js.map + error.d.ts + error.js + error.js.map + get-edge-preview-props.d.ts + get-edge-preview-props.js + get-edge-preview-props.js.map + globals.d.ts + globals.js + globals.js.map + http.d.ts + http.js + http.js.map + internal-edge-wait-until.d.ts + internal-edge-wait-until.js + internal-edge-wait-until.js.map + next-url.d.ts + next-url.js + next-url.js.map + types.d.ts + types.js + types.js.map + utils.d.ts + utils.js + utils.js.map + web-on-close.d.ts + web-on-close.js + web-on-close.js.map + + +---exports + index.d.ts + index.js + index.js.map + + +---sandbox + context.d.ts + context.js + context.js.map + fetch-inline-assets.d.ts + fetch-inline-assets.js + fetch-inline-assets.js.map + index.d.ts + index.js + index.js.map + resource-managers.d.ts + resource-managers.js + resource-managers.js.map + sandbox.d.ts + sandbox.js + sandbox.js.map + + +---spec-extension + cookies.d.ts + cookies.js + cookies.js.map + fetch-event.d.ts + fetch-event.js + fetch-event.js.map + image-response.d.ts + image-response.js + image-response.js.map + request.d.ts + request.js + request.js.map + response.d.ts + response.js + response.js.map + revalidate.d.ts + revalidate.js + revalidate.js.map + unstable-cache.d.ts + unstable-cache.js + unstable-cache.js.map + unstable-no-store.d.ts + unstable-no-store.js + unstable-no-store.js.map + url-pattern.d.ts + url-pattern.js + url-pattern.js.map + user-agent.d.ts + user-agent.js + user-agent.js.map + + +---adapters + headers.d.ts + headers.js + headers.js.map + next-request.d.ts + next-request.js + next-request.js.map + reflect.d.ts + reflect.js + reflect.js.map + request-cookies.d.ts + request-cookies.js + request-cookies.js.map + + +---shared + +---lib + amp-context.shared-runtime.d.ts + amp-context.shared-runtime.js + amp-context.shared-runtime.js.map + amp-mode.d.ts + amp-mode.js + amp-mode.js.map + amp.d.ts + amp.js + amp.js.map + app-dynamic.d.ts + app-dynamic.js + app-dynamic.js.map + app-router-context.shared-runtime.d.ts + app-router-context.shared-runtime.js + app-router-context.shared-runtime.js.map + bloom-filter.d.ts + bloom-filter.js + bloom-filter.js.map + canary-only.d.ts + canary-only.js + canary-only.js.map + constants.d.ts + constants.js + constants.js.map + deep-freeze.d.ts + deep-freeze.js + deep-freeze.js.map + deep-readonly.d.ts + deep-readonly.js + deep-readonly.js.map + dset.d.ts + dset.js + dset.js.map + dynamic.d.ts + dynamic.js + dynamic.js.map + encode-uri-path.d.ts + encode-uri-path.js + encode-uri-path.js.map + error-source.d.ts + error-source.js + error-source.js.map + escape-regexp.d.ts + escape-regexp.js + escape-regexp.js.map + fnv1a.d.ts + fnv1a.js + fnv1a.js.map + format-webpack-messages.d.ts + format-webpack-messages.js + format-webpack-messages.js.map + get-hostname.d.ts + get-hostname.js + get-hostname.js.map + get-img-props.d.ts + get-img-props.js + get-img-props.js.map + get-rspack.d.ts + get-rspack.js + get-rspack.js.map + get-webpack-bundler.d.ts + get-webpack-bundler.js + get-webpack-bundler.js.map + hash.d.ts + hash.js + hash.js.map + head-manager-context.shared-runtime.d.ts + head-manager-context.shared-runtime.js + head-manager-context.shared-runtime.js.map + head.d.ts + head.js + head.js.map + hooks-client-context.shared-runtime.d.ts + hooks-client-context.shared-runtime.js + hooks-client-context.shared-runtime.js.map + html-context.shared-runtime.d.ts + html-context.shared-runtime.js + html-context.shared-runtime.js.map + image-blur-svg.d.ts + image-blur-svg.js + image-blur-svg.js.map + image-config-context.shared-runtime.d.ts + image-config-context.shared-runtime.js + image-config-context.shared-runtime.js.map + image-config.d.ts + image-config.js + image-config.js.map + image-external.d.ts + image-external.js + image-external.js.map + image-loader.d.ts + image-loader.js + image-loader.js.map + invariant-error.d.ts + invariant-error.js + invariant-error.js.map + is-internal.d.ts + is-internal.js + is-internal.js.map + is-plain-object.d.ts + is-plain-object.js + is-plain-object.js.map + is-thenable.d.ts + is-thenable.js + is-thenable.js.map + loadable-context.shared-runtime.d.ts + loadable-context.shared-runtime.js + loadable-context.shared-runtime.js.map + loadable.shared-runtime.d.ts + loadable.shared-runtime.js + loadable.shared-runtime.js.map + magic-identifier.d.ts + magic-identifier.js + magic-identifier.js.map + match-local-pattern.d.ts + match-local-pattern.js + match-local-pattern.js.map + match-remote-pattern.d.ts + match-remote-pattern.js + match-remote-pattern.js.map + mitt.d.ts + mitt.js + mitt.js.map + modern-browserslist-target.d.ts + modern-browserslist-target.js + modern-browserslist-target.js.map + no-fallback-error.external.d.ts + no-fallback-error.external.js + no-fallback-error.external.js.map + normalized-asset-prefix.d.ts + normalized-asset-prefix.js + normalized-asset-prefix.js.map + router-context.shared-runtime.d.ts + router-context.shared-runtime.js + router-context.shared-runtime.js.map + runtime-config.external.d.ts + runtime-config.external.js + runtime-config.external.js.map + segment.d.ts + segment.js + segment.js.map + server-inserted-html.shared-runtime.d.ts + server-inserted-html.shared-runtime.js + server-inserted-html.shared-runtime.js.map + server-reference-info.d.ts + server-reference-info.js + server-reference-info.js.map + side-effect.d.ts + side-effect.js + side-effect.js.map + styled-jsx.d.ts + styled-jsx.js + styled-jsx.js.map + utils.d.ts + utils.js + utils.js.map + zod.d.ts + zod.js + zod.js.map + + +---errors + constants.d.ts + constants.js + constants.js.map + + +---i18n + detect-domain-locale.d.ts + detect-domain-locale.js + detect-domain-locale.js.map + get-locale-redirect.d.ts + get-locale-redirect.js + get-locale-redirect.js.map + normalize-locale-path.d.ts + normalize-locale-path.js + normalize-locale-path.js.map + + +---isomorphic + path.d.ts + path.js + path.js.map + + +---lazy-dynamic + bailout-to-csr.d.ts + bailout-to-csr.js + bailout-to-csr.js.map + dynamic-bailout-to-csr.d.ts + dynamic-bailout-to-csr.js + dynamic-bailout-to-csr.js.map + loadable.d.ts + loadable.js + loadable.js.map + preload-chunks.d.ts + preload-chunks.js + preload-chunks.js.map + types.d.ts + types.js + types.js.map + + +---page-path + absolute-path-to-page.d.ts + absolute-path-to-page.js + absolute-path-to-page.js.map + denormalize-app-path.d.ts + denormalize-app-path.js + denormalize-app-path.js.map + denormalize-page-path.d.ts + denormalize-page-path.js + denormalize-page-path.js.map + ensure-leading-slash.d.ts + ensure-leading-slash.js + ensure-leading-slash.js.map + get-page-paths.d.ts + get-page-paths.js + get-page-paths.js.map + normalize-data-path.d.ts + normalize-data-path.js + normalize-data-path.js.map + normalize-page-path.d.ts + normalize-page-path.js + normalize-page-path.js.map + normalize-path-sep.d.ts + normalize-path-sep.js + normalize-path-sep.js.map + remove-page-path-tail.d.ts + remove-page-path-tail.js + remove-page-path-tail.js.map + + +---router + adapters.d.ts + adapters.js + adapters.js.map + router.d.ts + router.js + router.js.map + + +---utils + add-locale.d.ts + add-locale.js + add-locale.js.map + add-path-prefix.d.ts + add-path-prefix.js + add-path-prefix.js.map + add-path-suffix.d.ts + add-path-suffix.js + add-path-suffix.js.map + app-paths.d.ts + app-paths.js + app-paths.js.map + as-path-to-search-params.d.ts + as-path-to-search-params.js + as-path-to-search-params.js.map + cache-busting-search-param.d.ts + cache-busting-search-param.js + cache-busting-search-param.js.map + compare-states.d.ts + compare-states.js + compare-states.js.map + disable-smooth-scroll.d.ts + disable-smooth-scroll.js + disable-smooth-scroll.js.map + escape-path-delimiters.d.ts + escape-path-delimiters.js + escape-path-delimiters.js.map + format-next-pathname-info.d.ts + format-next-pathname-info.js + format-next-pathname-info.js.map + format-url.d.ts + format-url.js + format-url.js.map + get-asset-path-from-route.d.ts + get-asset-path-from-route.js + get-asset-path-from-route.js.map + get-next-pathname-info.d.ts + get-next-pathname-info.js + get-next-pathname-info.js.map + get-route-from-asset-path.d.ts + get-route-from-asset-path.js + get-route-from-asset-path.js.map + html-bots.d.ts + html-bots.js + html-bots.js.map + index.d.ts + index.js + index.js.map + interception-routes.d.ts + interception-routes.js + interception-routes.js.map + interpolate-as.d.ts + interpolate-as.js + interpolate-as.js.map + is-bot.d.ts + is-bot.js + is-bot.js.map + is-dynamic.d.ts + is-dynamic.js + is-dynamic.js.map + is-local-url.d.ts + is-local-url.js + is-local-url.js.map + middleware-route-matcher.d.ts + middleware-route-matcher.js + middleware-route-matcher.js.map + omit.d.ts + omit.js + omit.js.map + parse-path.d.ts + parse-path.js + parse-path.js.map + parse-relative-url.d.ts + parse-relative-url.js + parse-relative-url.js.map + parse-url.d.ts + parse-url.js + parse-url.js.map + path-has-prefix.d.ts + path-has-prefix.js + path-has-prefix.js.map + path-match.d.ts + path-match.js + path-match.js.map + prepare-destination.d.ts + prepare-destination.js + prepare-destination.js.map + querystring.d.ts + querystring.js + querystring.js.map + relativize-url.d.ts + relativize-url.js + relativize-url.js.map + remove-path-prefix.d.ts + remove-path-prefix.js + remove-path-prefix.js.map + remove-trailing-slash.d.ts + remove-trailing-slash.js + remove-trailing-slash.js.map + resolve-rewrites.d.ts + resolve-rewrites.js + resolve-rewrites.js.map + route-matcher.d.ts + route-matcher.js + route-matcher.js.map + route-regex.d.ts + route-regex.js + route-regex.js.map + sorted-routes.d.ts + sorted-routes.js + sorted-routes.js.map + + +---segment-cache + output-export-prefetch-encoding.d.ts + output-export-prefetch-encoding.js + output-export-prefetch-encoding.js.map + segment-value-encoding.d.ts + segment-value-encoding.js + segment-value-encoding.js.map + + +---turbopack + compilation-events.d.ts + compilation-events.js + compilation-events.js.map + entry-key.d.ts + entry-key.js + entry-key.js.map + manifest-loader.d.ts + manifest-loader.js + manifest-loader.js.map + utils.d.ts + utils.js + utils.js.map + + +---utils + error-once.d.ts + error-once.js + error-once.js.map + reflect-utils.d.ts + reflect-utils.js + reflect-utils.js.map + warn-once.d.ts + warn-once.js + warn-once.js.map + + +---styled-jsx + +---types + css.d.ts + global.d.ts + index.d.ts + macro.d.ts + style.d.ts + + +---telemetry + anonymous-meta.d.ts + anonymous-meta.js + anonymous-meta.js.map + detached-flush.d.ts + detached-flush.js + detached-flush.js.map + flush-and-exit.d.ts + flush-and-exit.js + flush-and-exit.js.map + post-telemetry-payload.d.ts + post-telemetry-payload.js + post-telemetry-payload.js.map + post-telemetry-payload.test.js + post-telemetry-payload.test.js.map + project-id.d.ts + project-id.js + project-id.js.map + storage.d.ts + storage.js + storage.js.map + + +---events + build.d.ts + build.js + build.js.map + error-feedback.d.ts + error-feedback.js + error-feedback.js.map + index.d.ts + index.js + index.js.map + plugins.d.ts + plugins.js + plugins.js.map + session-stopped.d.ts + session-stopped.js + session-stopped.js.map + swc-load-failure.d.ts + swc-load-failure.js + swc-load-failure.js.map + swc-plugins.d.ts + swc-plugins.js + swc-plugins.js.map + version.d.ts + version.js + version.js.map + + +---trace + index.d.ts + index.js + index.js.map + shared.d.ts + shared.js + shared.js.map + trace-uploader.d.ts + trace-uploader.js + trace-uploader.js.map + trace.d.ts + trace.js + trace.js.map + trace.test.js + trace.test.js.map + types.d.ts + types.js + types.js.map + upload-trace.d.ts + upload-trace.js + upload-trace.js.map + + +---report + index.d.ts + index.js + index.js.map + index.test.js + index.test.js.map + to-json.d.ts + to-json.js + to-json.js.map + to-telemetry.d.ts + to-telemetry.js + to-telemetry.js.map + types.d.ts + types.js + types.js.map + + +---experimental + +---testing + server.d.ts + server.js + + +---testmode + playwright.d.ts + playwright.js + proxy.d.ts + proxy.js + + +---playwright + msw.d.ts + msw.js + + +---font + index.d.ts + + +---google + index.d.ts + index.js + target.css + + +---local + index.d.ts + index.js + target.css + + +---image-types + global.d.ts + + +---legacy + image.d.ts + image.js + + +---navigation-types + +---compat + navigation.d.ts + + +---next-swc-fallback + +---@next + +---swc-linux-x64-gnu + next-swc.linux-x64-gnu.node + package.json + README.md + + +---swc-linux-x64-musl + next-swc.linux-x64-musl.node + package.json + README.md + + +---node_modules + +---postcss + LICENSE + package.json + README.md + + +---lib + at-rule.d.ts + at-rule.js + comment.d.ts + comment.js + container.d.ts + container.js + css-syntax-error.d.ts + css-syntax-error.js + declaration.d.ts + declaration.js + document.d.ts + document.js + fromJSON.d.ts + fromJSON.js + input.d.ts + input.js + lazy-result.d.ts + lazy-result.js + list.d.ts + list.js + map-generator.js + no-work-result.d.ts + no-work-result.js + node.d.ts + node.js + parse.d.ts + parse.js + parser.js + postcss.d.mts + postcss.d.ts + postcss.js + postcss.mjs + previous-map.d.ts + previous-map.js + processor.d.ts + processor.js + result.d.ts + result.js + root.d.ts + root.js + rule.d.ts + rule.js + stringifier.d.ts + stringifier.js + stringify.d.ts + stringify.js + symbols.js + terminal-highlight.js + tokenize.js + warn-once.js + warning.d.ts + warning.js + + +---types + compiled.d.ts + global.d.ts + + +---node-releases + LICENSE + package.json + README.md + + +---data + +---processed + envs.json + + +---release-schedule + release-schedule.json + + +---normalize-range + index.js + license + package.json + readme.md + + +---object-assign + index.js + license + package.json + readme.md + + +---object-inspect + .eslintrc + .nycrc + CHANGELOG.md + index.js + LICENSE + package-support.json + package.json + readme.markdown + test-core-js.js + util.inspect.js + + +---.github + FUNDING.yml + + +---example + all.js + circular.js + fn.js + inspect.js + + +---test + bigint.js + circular.js + deep.js + element.js + err.js + fakes.js + fn.js + global.js + has.js + holes.js + indent-option.js + inspect.js + lowbyte.js + number.js + quoteStyle.js + toStringTag.js + undef.js + values.js + + +---browser + dom.js + + +---object-keys + .editorconfig + .eslintrc + .travis.yml + CHANGELOG.md + implementation.js + index.js + isArguments.js + LICENSE + package.json + README.md + + +---test + index.js + + +---object.assign + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + hasSymbols.js + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + FUNDING.yml + + +---dist + browser.js + + +---test + implementation.js + index.js + native.js + ses-compat.js + shimmed.js + tests.js + + +---object.entries + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + .eslintrc + implementation.js + index.js + native.js + shimmed.js + tests.js + + +---object.fromentries + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---object.groupby + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + FUNDING.yml + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---object.values + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + .eslintrc + implementation.js + index.js + shimmed.js + tests.js + + +---optionator + CHANGELOG.md + LICENSE + package.json + README.md + + +---lib + help.js + index.js + util.js + + +---own-keys + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---p-limit + index.d.ts + index.js + license + package.json + readme.md + + +---p-locate + index.d.ts + index.js + license + package.json + readme.md + + +---parent-module + index.js + license + package.json + readme.md + + +---path-exists + index.d.ts + index.js + license + package.json + readme.md + + +---path-key + index.d.ts + index.js + license + package.json + readme.md + + +---path-parse + index.js + LICENSE + package.json + README.md + + +---picocolors + LICENSE + package.json + picocolors.browser.js + picocolors.d.ts + picocolors.js + README.md + types.d.ts + + +---picomatch + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---lib + constants.js + parse.js + picomatch.js + scan.js + utils.js + + +---possible-typed-array-names + .eslintrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---postcss + LICENSE + package.json + README.md + + +---lib + at-rule.d.ts + at-rule.js + comment.d.ts + comment.js + container.d.ts + container.js + css-syntax-error.d.ts + css-syntax-error.js + declaration.d.ts + declaration.js + document.d.ts + document.js + fromJSON.d.ts + fromJSON.js + input.d.ts + input.js + lazy-result.d.ts + lazy-result.js + list.d.ts + list.js + map-generator.js + no-work-result.d.ts + no-work-result.js + node.d.ts + node.js + parse.d.ts + parse.js + parser.js + postcss.d.mts + postcss.d.ts + postcss.js + postcss.mjs + previous-map.d.ts + previous-map.js + processor.d.ts + processor.js + result.d.ts + result.js + root.d.ts + root.js + rule.d.ts + rule.js + stringifier.d.ts + stringifier.js + stringify.d.ts + stringify.js + symbols.js + terminal-highlight.js + tokenize.js + warn-once.js + warning.d.ts + warning.js + + +---postcss-value-parser + LICENSE + package.json + README.md + + +---lib + index.d.ts + index.js + parse.js + stringify.js + unit.js + walk.js + + +---prelude-ls + CHANGELOG.md + LICENSE + package.json + README.md + + +---lib + Func.js + index.js + List.js + Num.js + Obj.js + Str.js + + +---prop-types + checkPropTypes.js + factory.js + factoryWithThrowingShims.js + factoryWithTypeCheckers.js + index.js + LICENSE + package.json + prop-types.js + prop-types.min.js + README.md + + +---lib + has.js + ReactPropTypesSecret.js + + +---proxy-from-env + .eslintrc + .travis.yml + index.js + LICENSE + package.json + README.md + test.js + + +---punycode + LICENSE-MIT.txt + package.json + punycode.es6.js + punycode.js + README.md + + +---queue-microtask + index.d.ts + index.js + LICENSE + package.json + README.md + + +---react + compiler-runtime.js + index.js + jsx-dev-runtime.js + jsx-dev-runtime.react-server.js + jsx-runtime.js + jsx-runtime.react-server.js + LICENSE + package.json + react.react-server.js + README.md + + +---cjs + react-compiler-runtime.development.js + react-compiler-runtime.production.js + react-compiler-runtime.profiling.js + react-jsx-dev-runtime.development.js + react-jsx-dev-runtime.production.js + react-jsx-dev-runtime.profiling.js + react-jsx-dev-runtime.react-server.development.js + react-jsx-dev-runtime.react-server.production.js + react-jsx-runtime.development.js + react-jsx-runtime.production.js + react-jsx-runtime.profiling.js + react-jsx-runtime.react-server.development.js + react-jsx-runtime.react-server.production.js + react.development.js + react.production.js + react.react-server.development.js + react.react-server.production.js + + +---react-dom + client.js + client.react-server.js + index.js + LICENSE + package.json + profiling.js + profiling.react-server.js + react-dom.react-server.js + README.md + server.browser.js + server.bun.js + server.edge.js + server.js + server.node.js + server.react-server.js + static.browser.js + static.edge.js + static.js + static.node.js + static.react-server.js + test-utils.js + + +---cjs + react-dom-client.development.js + react-dom-client.production.js + react-dom-profiling.development.js + react-dom-profiling.profiling.js + react-dom-server-legacy.browser.development.js + react-dom-server-legacy.browser.production.js + react-dom-server-legacy.node.development.js + react-dom-server-legacy.node.production.js + react-dom-server.browser.development.js + react-dom-server.browser.production.js + react-dom-server.bun.development.js + react-dom-server.bun.production.js + react-dom-server.edge.development.js + react-dom-server.edge.production.js + react-dom-server.node.development.js + react-dom-server.node.production.js + react-dom-test-utils.development.js + react-dom-test-utils.production.js + react-dom.development.js + react-dom.production.js + react-dom.react-server.development.js + react-dom.react-server.production.js + + +---react-is + build-info.json + index.js + LICENSE + package.json + README.md + + +---cjs + react-is.development.js + react-is.production.min.js + + +---umd + react-is.development.js + react-is.production.min.js + + +---reflect.getprototypeof + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---regexp.prototype.flags + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + builtin.js + implementation.js + index.js + shimmed.js + tests.js + + +---resolve + .editorconfig + .eslintrc + async.js + index.js + LICENSE + package.json + readme.markdown + SECURITY.md + sync.js + + +---.github + FUNDING.yml + + +---bin + resolve + + +---example + async.js + sync.js + + +---lib + async.js + caller.js + core.js + core.json + homedir.js + is-core.js + node-modules-paths.js + normalize-options.js + sync.js + + +---test + core.js + dotdot.js + faulty_basedir.js + filter.js + filter_sync.js + home_paths.js + home_paths_sync.js + mock.js + mock_sync.js + module_dir.js + node-modules-paths.js + node_path.js + nonstring.js + pathfilter.js + precedence.js + resolver.js + resolver_sync.js + shadowed_core.js + subdirs.js + symlinks.js + + +---dotdot + index.js + + +---abc + index.js + + +---module_dir + +---xmodules + +---aaa + index.js + + +---ymodules + +---aaa + index.js + + +---zmodules + +---bbb + main.js + package.json + + +---node_path + +---x + +---aaa + index.js + + +---ccc + index.js + + +---y + +---bbb + index.js + + +---ccc + index.js + + +---pathfilter + +---deep_ref + main.js + + +---precedence + aaa.js + bbb.js + + +---aaa + index.js + main.js + + +---bbb + main.js + + +---resolver + cup.coffee + foo.js + mug.coffee + mug.js + + +---baz + doom.js + package.json + quux.js + + +---browser_field + a.js + b.js + package.json + + +---dot_main + index.js + package.json + + +---dot_slash_main + index.js + package.json + + +---false_main + index.js + package.json + + +---incorrect_main + index.js + package.json + + +---invalid_main + package.json + + +---multirepo + lerna.json + package.json + + +---packages + +---package-a + index.js + package.json + + +---package-b + index.js + package.json + + +---nested_symlinks + +---mylib + async.js + package.json + sync.js + + +---other_path + root.js + + +---lib + other-lib.js + + +---quux + +---foo + index.js + + +---same_names + foo.js + + +---foo + index.js + + +---symlinked + +---package + bar.js + package.json + + +---_ + +---node_modules + foo.js + + +---symlink_target + .gitkeep + + +---without_basedir + main.js + + +---shadowed_core + +---node_modules + +---util + index.js + + +---resolve-from + index.js + license + package.json + readme.md + + +---resolve-pkg-maps + LICENSE + package.json + README.md + + +---dist + index.cjs + index.d.cts + index.d.mts + index.mjs + + +---reusify + eslint.config.js + LICENSE + package.json + README.md + reusify.d.ts + reusify.js + SECURITY.md + test.js + tsconfig.json + + +---.github + dependabot.yml + + +---workflows + ci.yml + + +---benchmarks + createNoCodeFunction.js + fib.js + reuseNoCodeFunction.js + + +---run-parallel + index.js + LICENSE + package.json + README.md + + +---safe-array-concat + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---safe-push-apply + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---safe-regex-test + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---scheduler + index.js + index.native.js + LICENSE + package.json + README.md + unstable_mock.js + unstable_post_task.js + + +---cjs + scheduler-unstable_mock.development.js + scheduler-unstable_mock.production.js + scheduler-unstable_post_task.development.js + scheduler-unstable_post_task.production.js + scheduler.development.js + scheduler.native.development.js + scheduler.native.production.js + scheduler.production.js + + +---semver + index.js + LICENSE + package.json + preload.js + range.bnf + README.md + + +---bin + semver.js + + +---classes + comparator.js + index.js + range.js + semver.js + + +---functions + clean.js + cmp.js + coerce.js + compare-build.js + compare-loose.js + compare.js + diff.js + eq.js + gt.js + gte.js + inc.js + lt.js + lte.js + major.js + minor.js + neq.js + parse.js + patch.js + prerelease.js + rcompare.js + rsort.js + satisfies.js + sort.js + valid.js + + +---internal + constants.js + debug.js + identifiers.js + lrucache.js + parse-options.js + re.js + + +---ranges + gtr.js + intersects.js + ltr.js + max-satisfying.js + min-satisfying.js + min-version.js + outside.js + simplify.js + subset.js + to-comparators.js + valid.js + + +---set-function-length + .eslintrc + .nycrc + CHANGELOG.md + env.d.ts + env.js + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---set-function-name + .eslintrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---set-proto + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + Object.setPrototypeOf.d.ts + Object.setPrototypeOf.js + package.json + README.md + Reflect.setPrototypeOf.d.ts + Reflect.setPrototypeOf.js + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---sharp + LICENSE + package.json + README.md + + +---install + check.js + + +---lib + channel.js + colour.js + composite.js + constructor.js + index.d.ts + index.js + input.js + is.js + libvips.js + operation.js + output.js + resize.js + sharp.js + utility.js + + +---src + binding.gyp + common.cc + common.h + metadata.cc + metadata.h + operations.cc + operations.h + pipeline.cc + pipeline.h + sharp.cc + stats.cc + stats.h + utilities.cc + utilities.h + + +---shebang-command + index.js + license + package.json + readme.md + + +---shebang-regex + index.d.ts + index.js + license + package.json + readme.md + + +---side-channel + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---side-channel-list + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + list.d.ts + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---side-channel-map + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---side-channel-weakmap + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---simple-swizzle + index.js + LICENSE + package.json + README.md + + +---source-map-js + LICENSE + package.json + README.md + source-map.d.ts + source-map.js + + +---lib + array-set.js + base64-vlq.js + base64.js + binary-search.js + mapping-list.js + quick-sort.js + source-map-consumer.d.ts + source-map-consumer.js + source-map-generator.d.ts + source-map-generator.js + source-node.d.ts + source-node.js + util.js + + +---stable-hash + package.json + README.md + + +---dist + index.d.ts + index.js + index.mjs + + +---stop-iteration-iterator + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---string.prototype.includes + .editorconfig + .eslintrc + .gitattributes + .travis.yml + auto.js + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---.github + +---workflows + node-aught.yml + node-pretest.yml + node-tens.yml + publish-on-tag.yml + rebase.yml + require-allow-edits.yml + + +---tests + index.js + shimmed.js + tests.js + + +---string.prototype.matchall + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill-regexp-matchall.js + polyfill.js + README.md + regexp-matchall.js + shim.js + + +---.github + FUNDING.yml + + +---test + index.js + shimmed.js + tests.js + + +---string.prototype.repeat + .editorconfig + .gitattributes + .travis.yml + auto.js + implementation.js + index.js + LICENSE-MIT.txt + package.json + polyfill.js + README.md + shim.js + + +---tests + index.js + shimmed.js + tests.js + + +---string.prototype.trim + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---string.prototype.trimend + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---string.prototype.trimstart + .editorconfig + .eslintrc + .nycrc + auto.js + CHANGELOG.md + implementation.js + index.js + LICENSE + package.json + polyfill.js + README.md + shim.js + + +---test + implementation.js + index.js + shimmed.js + tests.js + + +---strip-bom + index.js + license + package.json + readme.md + + +---strip-json-comments + index.d.ts + index.js + license + package.json + readme.md + + +---styled-jsx + babel-test.js + babel.js + css.d.ts + css.js + global.d.ts + index.d.ts + index.js + license.md + macro.d.ts + macro.js + package.json + readme.md + style.d.ts + style.js + webpack.js + + +---dist + +---babel + index.js + + +---index + index.js + + +---webpack + index.js + + +---lib + style-transform.js + stylesheet.js + + +---supports-color + browser.js + index.js + license + package.json + readme.md + + +---supports-preserve-symlinks-flag + .eslintrc + .nycrc + browser.js + CHANGELOG.md + index.js + LICENSE + package.json + README.md + + +---.github + FUNDING.yml + + +---test + index.js + + +---tailwindcss + index.css + LICENSE + package.json + preflight.css + README.md + theme.css + utilities.css + + +---dist + chunk-G2G5QLSU.mjs + chunk-G32FJCSR.mjs + chunk-HTB5LLOP.mjs + colors-b_6i0Oi7.d.ts + colors.d.mts + colors.d.ts + colors.js + colors.mjs + default-theme.d.mts + default-theme.d.ts + default-theme.js + default-theme.mjs + flatten-color-palette.d.mts + flatten-color-palette.d.ts + flatten-color-palette.js + flatten-color-palette.mjs + lib.d.mts + lib.d.ts + lib.js + lib.mjs + plugin.d.mts + plugin.d.ts + plugin.js + plugin.mjs + resolve-config-BIFUA2FY.d.ts + resolve-config-QUZ9b-Gn.d.mts + types-WlZgYgM8.d.mts + + +---tapable + LICENSE + package.json + README.md + tapable.d.ts + + +---lib + AsyncParallelBailHook.js + AsyncParallelHook.js + AsyncSeriesBailHook.js + AsyncSeriesHook.js + AsyncSeriesLoopHook.js + AsyncSeriesWaterfallHook.js + Hook.js + HookCodeFactory.js + HookMap.js + index.js + MultiHook.js + SyncBailHook.js + SyncHook.js + SyncLoopHook.js + SyncWaterfallHook.js + util-browser.js + + +---tar + LICENSE + package.json + README.md + + +---dist + +---commonjs + create.d.ts + create.d.ts.map + create.js + create.js.map + cwd-error.d.ts + cwd-error.d.ts.map + cwd-error.js + cwd-error.js.map + extract.d.ts + extract.d.ts.map + extract.js + extract.js.map + get-write-flag.d.ts + get-write-flag.d.ts.map + get-write-flag.js + get-write-flag.js.map + header.d.ts + header.d.ts.map + header.js + header.js.map + index.d.ts + index.d.ts.map + index.js + index.js.map + large-numbers.d.ts + large-numbers.d.ts.map + large-numbers.js + large-numbers.js.map + list.d.ts + list.d.ts.map + list.js + list.js.map + make-command.d.ts + make-command.d.ts.map + make-command.js + make-command.js.map + mkdir.d.ts + mkdir.d.ts.map + mkdir.js + mkdir.js.map + mode-fix.d.ts + mode-fix.d.ts.map + mode-fix.js + mode-fix.js.map + normalize-unicode.d.ts + normalize-unicode.d.ts.map + normalize-unicode.js + normalize-unicode.js.map + normalize-windows-path.d.ts + normalize-windows-path.d.ts.map + normalize-windows-path.js + normalize-windows-path.js.map + options.d.ts + options.d.ts.map + options.js + options.js.map + pack.d.ts + pack.d.ts.map + pack.js + pack.js.map + package.json + parse.d.ts + parse.d.ts.map + parse.js + parse.js.map + path-reservations.d.ts + path-reservations.d.ts.map + path-reservations.js + path-reservations.js.map + pax.d.ts + pax.d.ts.map + pax.js + pax.js.map + read-entry.d.ts + read-entry.d.ts.map + read-entry.js + read-entry.js.map + replace.d.ts + replace.d.ts.map + replace.js + replace.js.map + strip-absolute-path.d.ts + strip-absolute-path.d.ts.map + strip-absolute-path.js + strip-absolute-path.js.map + strip-trailing-slashes.d.ts + strip-trailing-slashes.d.ts.map + strip-trailing-slashes.js + strip-trailing-slashes.js.map + symlink-error.d.ts + symlink-error.d.ts.map + symlink-error.js + symlink-error.js.map + types.d.ts + types.d.ts.map + types.js + types.js.map + unpack.d.ts + unpack.d.ts.map + unpack.js + unpack.js.map + update.d.ts + update.d.ts.map + update.js + update.js.map + warn-method.d.ts + warn-method.d.ts.map + warn-method.js + warn-method.js.map + winchars.d.ts + winchars.d.ts.map + winchars.js + winchars.js.map + write-entry.d.ts + write-entry.d.ts.map + write-entry.js + write-entry.js.map + + +---esm + create.d.ts + create.d.ts.map + create.js + create.js.map + cwd-error.d.ts + cwd-error.d.ts.map + cwd-error.js + cwd-error.js.map + extract.d.ts + extract.d.ts.map + extract.js + extract.js.map + get-write-flag.d.ts + get-write-flag.d.ts.map + get-write-flag.js + get-write-flag.js.map + header.d.ts + header.d.ts.map + header.js + header.js.map + index.d.ts + index.d.ts.map + index.js + index.js.map + large-numbers.d.ts + large-numbers.d.ts.map + large-numbers.js + large-numbers.js.map + list.d.ts + list.d.ts.map + list.js + list.js.map + make-command.d.ts + make-command.d.ts.map + make-command.js + make-command.js.map + mkdir.d.ts + mkdir.d.ts.map + mkdir.js + mkdir.js.map + mode-fix.d.ts + mode-fix.d.ts.map + mode-fix.js + mode-fix.js.map + normalize-unicode.d.ts + normalize-unicode.d.ts.map + normalize-unicode.js + normalize-unicode.js.map + normalize-windows-path.d.ts + normalize-windows-path.d.ts.map + normalize-windows-path.js + normalize-windows-path.js.map + options.d.ts + options.d.ts.map + options.js + options.js.map + pack.d.ts + pack.d.ts.map + pack.js + pack.js.map + package.json + parse.d.ts + parse.d.ts.map + parse.js + parse.js.map + path-reservations.d.ts + path-reservations.d.ts.map + path-reservations.js + path-reservations.js.map + pax.d.ts + pax.d.ts.map + pax.js + pax.js.map + read-entry.d.ts + read-entry.d.ts.map + read-entry.js + read-entry.js.map + replace.d.ts + replace.d.ts.map + replace.js + replace.js.map + strip-absolute-path.d.ts + strip-absolute-path.d.ts.map + strip-absolute-path.js + strip-absolute-path.js.map + strip-trailing-slashes.d.ts + strip-trailing-slashes.d.ts.map + strip-trailing-slashes.js + strip-trailing-slashes.js.map + symlink-error.d.ts + symlink-error.d.ts.map + symlink-error.js + symlink-error.js.map + types.d.ts + types.d.ts.map + types.js + types.js.map + unpack.d.ts + unpack.d.ts.map + unpack.js + unpack.js.map + update.d.ts + update.d.ts.map + update.js + update.js.map + warn-method.d.ts + warn-method.d.ts.map + warn-method.js + warn-method.js.map + winchars.d.ts + winchars.d.ts.map + winchars.js + winchars.js.map + write-entry.d.ts + write-entry.d.ts.map + write-entry.js + write-entry.js.map + + +---tinyglobby + LICENSE + package.json + README.md + + +---dist + index.d.mts + index.d.ts + index.js + index.mjs + + +---node_modules + +---fdir + LICENSE + package.json + README.md + + +---dist + index.cjs + index.d.cts + index.d.mts + index.mjs + + +---picomatch + index.js + LICENSE + package.json + posix.js + README.md + + +---lib + constants.js + parse.js + picomatch.js + scan.js + utils.js + + +---to-regex-range + index.js + LICENSE + package.json + README.md + + +---ts-api-utils + LICENSE.md + package.json + README.md + + +---lib + index.cjs + index.d.cts + index.d.ts + index.js + + +---tsconfig-paths + CHANGELOG.md + LICENSE + package.json + README.md + register.js + + +---lib + config-loader.d.ts + config-loader.js + config-loader.js.map + filesystem.d.ts + filesystem.js + filesystem.js.map + index.d.ts + index.js + index.js.map + mapping-entry.d.ts + mapping-entry.js + mapping-entry.js.map + match-path-async.d.ts + match-path-async.js + match-path-async.js.map + match-path-sync.d.ts + match-path-sync.js + match-path-sync.js.map + options.d.ts + options.js + options.js.map + register.d.ts + register.js + register.js.map + try-path.d.ts + try-path.js + try-path.js.map + tsconfig-loader.d.ts + tsconfig-loader.js + tsconfig-loader.js.map + + +---__tests__ + config-loader.test.d.ts + config-loader.test.js + config-loader.test.js.map + filesystem.test.d.ts + filesystem.test.js + filesystem.test.js.map + mapping-entry.test.d.ts + mapping-entry.test.js + mapping-entry.test.js.map + match-path-async.test.d.ts + match-path-async.test.js + match-path-async.test.js.map + match-path-sync.test.d.ts + match-path-sync.test.js + match-path-sync.test.js.map + try-path.test.d.ts + try-path.test.js + try-path.test.js.map + tsconfig-loader.test.d.ts + tsconfig-loader.test.js + tsconfig-loader.test.js.map + + +---data + match-path-data.d.ts + match-path-data.js + match-path-data.js.map + + +---src + config-loader.ts + filesystem.ts + index.ts + mapping-entry.ts + match-path-async.ts + match-path-sync.ts + options.ts + register.ts + try-path.ts + tsconfig-loader.ts + + +---__tests__ + config-loader.test.ts + filesystem.test.ts + mapping-entry.test.ts + match-path-async.test.ts + match-path-sync.test.ts + try-path.test.ts + tsconfig-loader.test.ts + tsconfig-named.json + + +---data + match-path-data.ts + + +---tslib + CopyrightNotice.txt + LICENSE.txt + package.json + README.md + SECURITY.md + tslib.d.ts + tslib.es6.html + tslib.es6.js + tslib.es6.mjs + tslib.html + tslib.js + + +---modules + index.d.ts + index.js + package.json + + +---type-check + LICENSE + package.json + README.md + + +---lib + check.js + index.js + parse-type.js + + +---typed-array-buffer + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---typed-array-byte-length + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---typed-array-byte-offset + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---typed-array-length + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---typescript + LICENSE.txt + package.json + README.md + SECURITY.md + ThirdPartyNoticeText.txt + + +---bin + tsc + tsserver + + +---lib + lib.d.ts + lib.decorators.d.ts + lib.decorators.legacy.d.ts + lib.dom.asynciterable.d.ts + lib.dom.d.ts + lib.dom.iterable.d.ts + lib.es2015.collection.d.ts + lib.es2015.core.d.ts + lib.es2015.d.ts + lib.es2015.generator.d.ts + lib.es2015.iterable.d.ts + lib.es2015.promise.d.ts + lib.es2015.proxy.d.ts + lib.es2015.reflect.d.ts + lib.es2015.symbol.d.ts + lib.es2015.symbol.wellknown.d.ts + lib.es2016.array.include.d.ts + lib.es2016.d.ts + lib.es2016.full.d.ts + lib.es2016.intl.d.ts + lib.es2017.arraybuffer.d.ts + lib.es2017.d.ts + lib.es2017.date.d.ts + lib.es2017.full.d.ts + lib.es2017.intl.d.ts + lib.es2017.object.d.ts + lib.es2017.sharedmemory.d.ts + lib.es2017.string.d.ts + lib.es2017.typedarrays.d.ts + lib.es2018.asyncgenerator.d.ts + lib.es2018.asynciterable.d.ts + lib.es2018.d.ts + lib.es2018.full.d.ts + lib.es2018.intl.d.ts + lib.es2018.promise.d.ts + lib.es2018.regexp.d.ts + lib.es2019.array.d.ts + lib.es2019.d.ts + lib.es2019.full.d.ts + lib.es2019.intl.d.ts + lib.es2019.object.d.ts + lib.es2019.string.d.ts + lib.es2019.symbol.d.ts + lib.es2020.bigint.d.ts + lib.es2020.d.ts + lib.es2020.date.d.ts + lib.es2020.full.d.ts + lib.es2020.intl.d.ts + lib.es2020.number.d.ts + lib.es2020.promise.d.ts + lib.es2020.sharedmemory.d.ts + lib.es2020.string.d.ts + lib.es2020.symbol.wellknown.d.ts + lib.es2021.d.ts + lib.es2021.full.d.ts + lib.es2021.intl.d.ts + lib.es2021.promise.d.ts + lib.es2021.string.d.ts + lib.es2021.weakref.d.ts + lib.es2022.array.d.ts + lib.es2022.d.ts + lib.es2022.error.d.ts + lib.es2022.full.d.ts + lib.es2022.intl.d.ts + lib.es2022.object.d.ts + lib.es2022.regexp.d.ts + lib.es2022.string.d.ts + lib.es2023.array.d.ts + lib.es2023.collection.d.ts + lib.es2023.d.ts + lib.es2023.full.d.ts + lib.es2023.intl.d.ts + lib.es2024.arraybuffer.d.ts + lib.es2024.collection.d.ts + lib.es2024.d.ts + lib.es2024.full.d.ts + lib.es2024.object.d.ts + lib.es2024.promise.d.ts + lib.es2024.regexp.d.ts + lib.es2024.sharedmemory.d.ts + lib.es2024.string.d.ts + lib.es5.d.ts + lib.es6.d.ts + lib.esnext.array.d.ts + lib.esnext.collection.d.ts + lib.esnext.d.ts + lib.esnext.decorators.d.ts + lib.esnext.disposable.d.ts + lib.esnext.error.d.ts + lib.esnext.float16.d.ts + lib.esnext.full.d.ts + lib.esnext.intl.d.ts + lib.esnext.iterator.d.ts + lib.esnext.promise.d.ts + lib.esnext.sharedmemory.d.ts + lib.scripthost.d.ts + lib.webworker.asynciterable.d.ts + lib.webworker.d.ts + lib.webworker.importscripts.d.ts + lib.webworker.iterable.d.ts + tsc.js + tsserver.js + tsserverlibrary.d.ts + tsserverlibrary.js + typescript.d.ts + typescript.js + typesMap.json + typingsInstaller.js + watchGuard.js + _tsc.js + _tsserver.js + _typingsInstaller.js + + +---cs + diagnosticMessages.generated.json + + +---de + diagnosticMessages.generated.json + + +---es + diagnosticMessages.generated.json + + +---fr + diagnosticMessages.generated.json + + +---it + diagnosticMessages.generated.json + + +---ja + diagnosticMessages.generated.json + + +---ko + diagnosticMessages.generated.json + + +---pl + diagnosticMessages.generated.json + + +---pt-br + diagnosticMessages.generated.json + + +---ru + diagnosticMessages.generated.json + + +---tr + diagnosticMessages.generated.json + + +---zh-cn + diagnosticMessages.generated.json + + +---zh-tw + diagnosticMessages.generated.json + + +---unbox-primitive + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---undici-types + agent.d.ts + api.d.ts + balanced-pool.d.ts + cache.d.ts + client.d.ts + connector.d.ts + content-type.d.ts + cookies.d.ts + diagnostics-channel.d.ts + dispatcher.d.ts + env-http-proxy-agent.d.ts + errors.d.ts + eventsource.d.ts + fetch.d.ts + file.d.ts + filereader.d.ts + formdata.d.ts + global-dispatcher.d.ts + global-origin.d.ts + handlers.d.ts + header.d.ts + index.d.ts + interceptors.d.ts + LICENSE + mock-agent.d.ts + mock-client.d.ts + mock-errors.d.ts + mock-interceptor.d.ts + mock-pool.d.ts + package.json + patch.d.ts + pool-stats.d.ts + pool.d.ts + proxy-agent.d.ts + readable.d.ts + README.md + retry-agent.d.ts + retry-handler.d.ts + util.d.ts + webidl.d.ts + websocket.d.ts + + +---unrs-resolver + browser.js + index.d.ts + index.js + package.json + README.md + + +---update-browserslist-db + check-npm-version.js + cli.js + index.d.ts + index.js + LICENSE + package.json + README.md + utils.js + + +---uri-js + LICENSE + package.json + README.md + yarn.lock + + +---dist + +---es5 + uri.all.d.ts + uri.all.js + uri.all.js.map + uri.all.min.d.ts + uri.all.min.js + uri.all.min.js.map + + +---esnext + index.d.ts + index.js + index.js.map + regexps-iri.d.ts + regexps-iri.js + regexps-iri.js.map + regexps-uri.d.ts + regexps-uri.js + regexps-uri.js.map + uri.d.ts + uri.js + uri.js.map + util.d.ts + util.js + util.js.map + + +---schemes + http.d.ts + http.js + http.js.map + https.d.ts + https.js + https.js.map + mailto.d.ts + mailto.js + mailto.js.map + urn-uuid.d.ts + urn-uuid.js + urn-uuid.js.map + urn.d.ts + urn.js + urn.js.map + ws.d.ts + ws.js + ws.js.map + wss.d.ts + wss.js + wss.js.map + + +---which + CHANGELOG.md + LICENSE + package.json + README.md + which.js + + +---bin + node-which + + +---which-boxed-primitive + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---which-builtin-type + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---test + index.js + + +---which-collection + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---which-typed-array + .editorconfig + .eslintrc + .nycrc + CHANGELOG.md + index.d.ts + index.js + LICENSE + package.json + README.md + tsconfig.json + + +---.github + FUNDING.yml + + +---test + index.js + + +---word-wrap + index.d.ts + index.js + LICENSE + package.json + README.md + + +---yallist + LICENSE.md + package.json + README.md + + +---dist + +---commonjs + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---esm + index.d.ts + index.d.ts.map + index.js + index.js.map + package.json + + +---yocto-queue + index.d.ts + index.js + license + package.json + readme.md + ++---public + +---icons + calender.svg + signup.svg + + +---logos + Dark-noText.svg + dark-text.svg + light-noText.svg + light-text.svg + ++---src + +---app + favicon.ico + globals.css + layout.tsx + page.tsx + + +---auth + page.tsx + + +---components + SigninForm.tsx + SignupForm.tsx + + +---containers + SigninContainer.tsx + SignupContainer.tsx + + +---google + +---callback + page.tsx + + +---signin + page.module.css + page.tsx + + +---signup + page.module.css + page.tsx + + +---business-setup + page.module.css + page.tsx + + +---components + Stepper.tsx + WorkingHoursForm.tsx + + +---containers + +---hooks + +---services + +---utils + +---components + +---Button + Button.module.css + index.tsx + + +---shared + Checkbox.tsx + Divider.tsx + + +---Input + index.tsx + styles.css + + +---containers + +---context + +---hooks + +---lib + api.ts + + +---utils + errorMessage.ts + From baad2a90148b362bba00f55b66319ba3727573a9 Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sun, 31 Aug 2025 13:09:27 +0300 Subject: [PATCH 088/561] feat(auth): refactor SigninForm and SignupForm components and move to _components directory feat(business-setup): remove unused Stepper and WorkingHoursForm components along with associated styles and page --- .../SigninForm.tsx | 0 .../SignupForm.tsx | 0 .../app/auth/containers/SigninContainer.tsx | 2 +- .../app/auth/containers/SignupContainer.tsx | 2 +- .../app/business-setup/components/Stepper.tsx | 38 --- .../components/WorkingHoursForm.tsx | 66 ---- client/src/app/business-setup/page.module.css | 251 --------------- client/src/app/business-setup/page.tsx | 294 ------------------ 8 files changed, 2 insertions(+), 651 deletions(-) rename client/src/app/auth/{components => _components}/SigninForm.tsx (100%) rename client/src/app/auth/{components => _components}/SignupForm.tsx (100%) delete mode 100644 client/src/app/business-setup/components/Stepper.tsx delete mode 100644 client/src/app/business-setup/components/WorkingHoursForm.tsx delete mode 100644 client/src/app/business-setup/page.module.css delete mode 100644 client/src/app/business-setup/page.tsx diff --git a/client/src/app/auth/components/SigninForm.tsx b/client/src/app/auth/_components/SigninForm.tsx similarity index 100% rename from client/src/app/auth/components/SigninForm.tsx rename to client/src/app/auth/_components/SigninForm.tsx diff --git a/client/src/app/auth/components/SignupForm.tsx b/client/src/app/auth/_components/SignupForm.tsx similarity index 100% rename from client/src/app/auth/components/SignupForm.tsx rename to client/src/app/auth/_components/SignupForm.tsx diff --git a/client/src/app/auth/containers/SigninContainer.tsx b/client/src/app/auth/containers/SigninContainer.tsx index 016872e..b6537fe 100644 --- a/client/src/app/auth/containers/SigninContainer.tsx +++ b/client/src/app/auth/containers/SigninContainer.tsx @@ -2,7 +2,7 @@ import React, { useState } from "react"; import api, { csrf } from "@/lib/api"; import { getErrorMessage } from "@/utils/errorMessage"; -import SigninForm from "../components/SigninForm"; +import SigninForm from "../_components/SigninForm"; import Link from "next/link"; import Image from "next/image"; import styles from "../signin/page.module.css"; diff --git a/client/src/app/auth/containers/SignupContainer.tsx b/client/src/app/auth/containers/SignupContainer.tsx index 04ff143..aa529bd 100644 --- a/client/src/app/auth/containers/SignupContainer.tsx +++ b/client/src/app/auth/containers/SignupContainer.tsx @@ -2,7 +2,7 @@ import React, { useState } from "react"; import api, { csrf } from "@/lib/api"; import { getErrorMessage } from "@/utils/errorMessage"; -import SignupForm from "../components/SignupForm"; +import SignupForm from "../_components/SignupForm"; import Link from "next/link"; import Image from "next/image"; import styles from "../signup/page.module.css"; diff --git a/client/src/app/business-setup/components/Stepper.tsx b/client/src/app/business-setup/components/Stepper.tsx deleted file mode 100644 index 5e7f7f0..0000000 --- a/client/src/app/business-setup/components/Stepper.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from "react"; -import styles from "../page.module.css"; - -interface Step { - label: string; - icon: string; -} - -interface StepperProps { - steps: Step[]; - currentStep: number; -} - -const Stepper: React.FC = ({ steps, currentStep }) => ( -
- {steps.map((step, idx) => ( - -
-
- {idx + 1} -
-
{step.label.split(" ")[0]}
-
- {idx < steps.length - 1 &&
} - - ))} -
- Step {currentStep + 1} of {steps.length} -
-
-); - -export default Stepper; diff --git a/client/src/app/business-setup/components/WorkingHoursForm.tsx b/client/src/app/business-setup/components/WorkingHoursForm.tsx deleted file mode 100644 index 107e5c5..0000000 --- a/client/src/app/business-setup/components/WorkingHoursForm.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import React from "react"; -import Input from "@/components/shared/Input"; -import styles from "../page.module.css"; - -interface WorkingHour { - open: string; - close: string; - closed: boolean; -} - -interface WorkingHoursFormProps { - days: string[]; - workingHours: WorkingHour[]; - onOpenChange: ( - idx: number, - field: "open" | "close" - ) => (e: React.ChangeEvent) => void; - onClosedToggle: (idx: number) => () => void; -} - -const WorkingHoursForm: React.FC = ({ - days, - workingHours, - onOpenChange, - onClosedToggle, -}) => ( -
- {days.map((day, idx) => ( -
- {day} - - - -
- ))} -
-); - -export default WorkingHoursForm; diff --git a/client/src/app/business-setup/page.module.css b/client/src/app/business-setup/page.module.css deleted file mode 100644 index 04313f9..0000000 --- a/client/src/app/business-setup/page.module.css +++ /dev/null @@ -1,251 +0,0 @@ -.container { - display: flex; - min-height: 100vh; - background: #f7f9fb; -} - -.sidebar { - width: 260px; - background: #0a2940; - border-radius: 16px; - margin-top: 40px; - margin-left: 32px; - padding: 32px 0 32px 0; - display: flex; - flex-direction: column; - align-items: center; - box-shadow: 0 2px 8px 0 rgba(16, 24, 40, 0.05); -} - -.sidebarTitle { - color: #fff; - font-size: 1.15rem; - font-weight: 600; - margin-bottom: 32px; - letter-spacing: 0.01em; -} - -.sidebarSteps { - width: 100%; - display: flex; - flex-direction: column; - gap: 8px; -} - -.sidebarStep { - display: flex; - align-items: center; - gap: 12px; - padding: 12px 24px; - border-radius: 8px; - color: #fff; - font-weight: 500; - font-size: 1rem; - cursor: pointer; - transition: background 0.2s; -} - -.sidebarStepInactive { - background: transparent; - color: #b3c2d1; -} - -.sidebarStepActive { - background: #fff; - color: #0a2940; -} - -.main { - flex: 1; - margin: 40px 32px 0 32px; -} - -.stepper { - display: flex; - align-items: center; - margin-bottom: 32px; - gap: 0; -} - -.step { - display: flex; - flex-direction: column; - align-items: center; - min-width: 80px; -} - -.stepCircle { - width: 32px; - height: 32px; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - font-weight: 700; - font-size: 1.1rem; - border: 2px solid #b3c2d1; - background: #fff; - color: #0a2940; - margin-bottom: 4px; -} - -.stepCircleActive { - background: #0a2940; - color: #fff; - border-color: #0a2940; -} - -.stepLabel { - font-size: 0.85rem; - color: #7a8ca3; - text-align: center; - margin-top: 2px; -} - -.stepConnector { - flex: 1; - height: 2px; - background: #b3c2d1; - margin: 0 8px; -} - -.formCard { - background: #fff; - border-radius: 16px; - box-shadow: 0 2px 8px 0 rgba(16, 24, 40, 0.05); - padding: 40px 32px 32px 32px; - max-width: 900px; -} - -.formTitle { - font-size: 1.5rem; - font-weight: 700; - color: #0a2940; - margin-bottom: 8px; - display: flex; - align-items: center; - gap: 12px; -} - -.formSubtitle { - font-size: 1rem; - color: #7a8ca3; - margin-bottom: 32px; -} - -.grid2 { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 24px; -} - -.grid1 { - display: grid; - grid-template-columns: 1fr; - gap: 24px; -} - -.workingHours { - display: grid; - grid-template-columns: repeat(7, 1fr); - gap: 8px; - margin-top: 8px; -} - -.workingDay { - display: flex; - flex-direction: column; - align-items: center; - background: #f7f9fb; - border-radius: 8px; - padding: 8px 0; -} - -.workingDayClosed { - opacity: 0.5; -} - -.workingLabel { - font-size: 0.85rem; - font-weight: 600; - margin-bottom: 4px; - color: #0a2940; -} - -.workingInput { - width: 60px; - margin-bottom: 4px; -} - -.closedBtn { - font-size: 0.8rem; - padding: 2px 8px; - border-radius: 6px; - border: 1px solid #b3c2d1; - background: #fff; - color: #0a2940; - cursor: pointer; - margin-top: 2px; - transition: background 0.2s; -} - -.closedBtnActive { - background: #e6eef5; - color: #b3c2d1; -} - -.actions { - display: flex; - justify-content: flex-end; - gap: 16px; - margin-top: 32px; -} - -.backBtn { - background: #e6eef5; - color: #0a2940; - border: none; - border-radius: 8px; - padding: 10px 32px; - font-weight: 600; - font-size: 1rem; - cursor: pointer; - transition: background 0.2s; -} - -.nextBtn { - background: #0a2940; - color: #fff; - border: none; - border-radius: 8px; - padding: 10px 32px; - font-weight: 600; - font-size: 1rem; - cursor: pointer; - transition: background 0.2s; -} - -.nextBtn:disabled { - opacity: 0.6; - cursor: not-allowed; -} - -@media (max-width: 900px) { - .container { - flex-direction: column; - } - .sidebar { - width: 100%; - margin: 0 0 24px 0; - border-radius: 12px; - } - .main { - margin: 0 16px; - } - .formCard { - padding: 24px 12px; - } - .workingHours { - grid-template-columns: repeat(2, 1fr); - } -} diff --git a/client/src/app/business-setup/page.tsx b/client/src/app/business-setup/page.tsx deleted file mode 100644 index 72fca96..0000000 --- a/client/src/app/business-setup/page.tsx +++ /dev/null @@ -1,294 +0,0 @@ -"use client"; - -import React, { useState } from "react"; -import Input from "@/components/shared/Input"; -import Button from "@/components/Button"; -import styles from "./page.module.css"; -import Stepper from "./components/Stepper"; -import WorkingHoursForm from "./components/WorkingHoursForm"; - -const industries = [ - "IT", - "Healthcare", - "Education", - "Retail", - "Finance", - "Other", -]; -const timezones = [ - "UTC", - "America/New_York", - "Europe/London", - "Asia/Dubai", - "Asia/Tokyo", -]; -const days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; - -const defaultWorkingHours = [ - { open: "09:00", close: "17:00", closed: false }, - { open: "09:00", close: "17:00", closed: false }, - { open: "09:00", close: "17:00", closed: false }, - { open: "09:00", close: "17:00", closed: false }, - { open: "09:00", close: "17:00", closed: false }, - { open: "09:00", close: "15:00", closed: false }, - { open: "", close: "", closed: true }, -]; - -const BusinessSetupPage = () => { - const steps = [ - { label: "Business Profile", icon: "\u{1F4C4}" }, - { label: "Services & Resources", icon: "\u{1F4CB}" }, - { label: "Booking Rules", icon: "\u{2692}" }, - { label: "Communication", icon: "\u{1F4E7}" }, - { label: "AI Workflow", icon: "\u{1F916}" }, - { label: "Analytics", icon: "\u{1F4CA}" }, - ]; - const [form, setForm] = useState({ - name: "", - industry: "", - address: "", - email: "", - timezone: "", - workingHours: defaultWorkingHours, - }); - - const handleChange = ( - e: React.ChangeEvent - ) => { - const { name, value } = e.target; - setForm((prev) => ({ ...prev, [name]: value })); - }; - - const handleWorkingHourChange = - (idx: number, field: "open" | "close") => - (e: React.ChangeEvent) => { - const value = e.target.value; - setForm((prev) => { - const wh = [...prev.workingHours]; - wh[idx][field] = value; - return { ...prev, workingHours: wh }; - }); - }; - - const handleClosedToggle = (idx: number) => () => { - setForm((prev) => { - const wh = [...prev.workingHours]; - wh[idx].closed = !wh[idx].closed; - if (wh[idx].closed) { - wh[idx].open = ""; - wh[idx].close = ""; - } else { - wh[idx].open = "09:00"; - wh[idx].close = idx === 5 ? "15:00" : "17:00"; - } - return { ...prev, workingHours: wh }; - }); - }; - - const currentStep = 0; - - const handleSubmit = (e: React.FormEvent) => { - e.preventDefault(); - // TODO: handle form submission - }; - - return ( -
- {/* Sidebar */} - - -
- {/* Stepper */} -
- {steps.map((step, idx) => ( - -
-
- {idx + 1} -
-
- {step.label.split(" ")[0]} -
-
- {idx < steps.length - 1 && ( -
- )} - - ))} -
- Step {currentStep + 1} of {steps.length} -
-
- - {/* Form Card */} -
-
- - 📄 - - Business Profile -
-
- Tell us about your business and setup basic information -
-
-
- -
- - -
-
-
- -
-
- -
- - -
-
-
- -
- {days.map((day, idx) => ( -
- {day} - - - -
- ))} -
-
-
- - -
-
-
-
-
- ); -}; - -export default BusinessSetupPage; From beb135653686e1cc182e93c9ce07b5dd4ed3062c Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sun, 31 Aug 2025 13:10:23 +0300 Subject: [PATCH 089/561] feat(styles): enhance global styles with Tailwind CSS and dark mode support --- client/src/app/globals.css | 127 +++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/client/src/app/globals.css b/client/src/app/globals.css index e2e6694..be56b70 100644 --- a/client/src/app/globals.css +++ b/client/src/app/globals.css @@ -67,3 +67,130 @@ button { color: var(--foreground); font-family: 'Poppins', sans-serif; + + + @import 'tailwindcss'; +@import 'tw-animate-css'; + +@custom-variant dark (&:is(.dark *)); + +:root { + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.145 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.145 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.985 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.269 0 0); + --input: oklch(0.269 0 0); + --ring: oklch(0.439 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.269 0 0); + --sidebar-ring: oklch(0.439 0 0); +} + +@theme inline { + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} From 30d4d74ba2d9563318f97242077c72f2c829846e Mon Sep 17 00:00:00 2001 From: Hussein-alayan Date: Sun, 31 Aug 2025 13:31:56 +0300 Subject: [PATCH 090/561] feat: add Business Setup page and UI components --- client/components.json | 21 + client/package-lock.json | 847 +++++++++++- client/package.json | 12 +- .../Components/business-setup.tsx | 1162 +++++++++++++++++ client/src/app/Business-setup/page.jsx | 9 + client/src/app/globals.css | 180 ++- client/src/components/ui/button.tsx | 59 + client/src/components/ui/card.tsx | 92 ++ client/src/components/ui/checkbox.tsx | 32 + client/src/components/ui/input.tsx | 21 + client/src/components/ui/label.tsx | 24 + client/src/components/ui/select.tsx | 185 +++ client/src/components/ui/switch.tsx | 31 + client/src/components/ui/textarea.tsx | 18 + client/src/lib/utils.ts | 6 + client/tailwind.config.js | 11 + 16 files changed, 2607 insertions(+), 103 deletions(-) create mode 100644 client/components.json create mode 100644 client/src/app/Business-setup/Components/business-setup.tsx create mode 100644 client/src/app/Business-setup/page.jsx create mode 100644 client/src/components/ui/button.tsx create mode 100644 client/src/components/ui/card.tsx create mode 100644 client/src/components/ui/checkbox.tsx create mode 100644 client/src/components/ui/input.tsx create mode 100644 client/src/components/ui/label.tsx create mode 100644 client/src/components/ui/select.tsx create mode 100644 client/src/components/ui/switch.tsx create mode 100644 client/src/components/ui/textarea.tsx create mode 100644 client/src/lib/utils.ts create mode 100644 client/tailwind.config.js diff --git a/client/components.json b/client/components.json new file mode 100644 index 0000000..771d288 --- /dev/null +++ b/client/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + } +} diff --git a/client/package-lock.json b/client/package-lock.json index 9d463a1..180080d 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -8,14 +8,23 @@ "name": "slotify", "version": "0.1.0", "dependencies": { + "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.6", "autoprefixer": "^10.4.21", "axios": "^1.11.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", "js-cookie": "^3.0.5", "lightningcss": "^1.30.1", + "lucide-react": "^0.542.0", "next": "15.4.7", "postcss": "^8.5.6", "react": "19.1.0", - "react-dom": "19.1.0" + "react-dom": "19.1.0", + "tailwind-merge": "^3.3.1" }, "devDependencies": { "@eslint/eslintrc": "^3", @@ -28,6 +37,7 @@ "eslint": "^9", "eslint-config-next": "15.4.7", "tailwindcss": "^4", + "tw-animate-css": "^1.3.7", "typescript": "^5" } }, @@ -218,6 +228,44 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.4" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -970,6 +1018,608 @@ "node": ">=12.4.0" } }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -1329,7 +1979,7 @@ "version": "19.1.11", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.11.tgz", "integrity": "sha512-lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -1339,7 +1989,7 @@ "version": "19.1.8", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.8.tgz", "integrity": "sha512-xG7xaBMJCpcK0RpN8jDbAACQo54ycO6h4dSSmgv8+fu6ZIAdANkx/WsawASUjVXYfy+J9AbUpRMNNEsXCDfDBQ==", - "dev": true, + "devOptional": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.0.0" @@ -1965,6 +2615,18 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", @@ -2411,12 +3073,33 @@ "node": ">=18" } }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT" }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -2500,7 +3183,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/damerau-levenshtein": { @@ -2643,6 +3326,12 @@ "node": ">=8" } }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -3572,6 +4261,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -4665,6 +5363,15 @@ "loose-envify": "cli.js" } }, + "node_modules/lucide-react": { + "version": "0.542.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.542.0.tgz", + "integrity": "sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/magic-string": { "version": "0.30.18", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.18.tgz", @@ -5315,6 +6022,75 @@ "dev": true, "license": "MIT" }, + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -5925,6 +6701,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tailwind-merge": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", + "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.12.tgz", @@ -6057,6 +6843,16 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/tw-animate-css": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.7.tgz", + "integrity": "sha512-lvLb3hTIpB5oGsk8JmLoAjeCHV58nKa2zHYn8yWOoG5JJusH3bhJlF2DLAZ/5NmJ+jyH3ssiAx/2KmbhavJy/A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -6263,6 +7059,49 @@ "punycode": "^2.1.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/client/package.json b/client/package.json index 27bfa3a..2625792 100644 --- a/client/package.json +++ b/client/package.json @@ -10,14 +10,23 @@ "test": "echo \"No tests yet\" && exit 0" }, "dependencies": { + "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.6", "autoprefixer": "^10.4.21", "axios": "^1.11.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", "js-cookie": "^3.0.5", "lightningcss": "^1.30.1", + "lucide-react": "^0.542.0", "next": "15.4.7", "postcss": "^8.5.6", "react": "19.1.0", - "react-dom": "19.1.0" + "react-dom": "19.1.0", + "tailwind-merge": "^3.3.1" }, "devDependencies": { "@eslint/eslintrc": "^3", @@ -30,6 +39,7 @@ "eslint": "^9", "eslint-config-next": "15.4.7", "tailwindcss": "^4", + "tw-animate-css": "^1.3.7", "typescript": "^5" } } diff --git a/client/src/app/Business-setup/Components/business-setup.tsx b/client/src/app/Business-setup/Components/business-setup.tsx new file mode 100644 index 0000000..6d56890 --- /dev/null +++ b/client/src/app/Business-setup/Components/business-setup.tsx @@ -0,0 +1,1162 @@ +"use client"; + +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { Textarea } from "@/components/ui/textarea"; +import { Card, CardContent } from "@/components/ui/card"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { Checkbox } from "@/components/ui/checkbox"; +import { Switch } from "@/components/ui/switch"; +import { + Building2, + Briefcase, + Settings, + MessageSquare, + Clock, + ChevronLeft, + ChevronRight, + Plus, + Trash2, + Users, +} from "lucide-react"; +import { cn } from "@/lib/utils"; + +const setupSteps = [ + { id: 1, name: "Business", icon: Building2, description: "Business Profile" }, + { + id: 2, + name: "Services", + icon: Briefcase, + description: "Services & Resources", + }, + { id: 3, name: "Staff", icon: Users, description: "Resources / Staff" }, + { id: 4, name: "Rules", icon: Settings, description: "Booking Rules" }, + { + id: 5, + name: "Communication", + icon: MessageSquare, + description: "Communication / AI Settings", + }, +]; + +const daysOfWeek = [ + { key: "mon", label: "Mon" }, + { key: "tue", label: "Tue" }, + { key: "wed", label: "Wed" }, + { key: "thu", label: "Thu" }, + { key: "fri", label: "Fri" }, + { key: "sat", label: "Sat" }, + { key: "sun", label: "Sun" }, +]; + +const defaultWorkingHours = { + mon: { start: "09:00", end: "17:00", closed: false }, + tue: { start: "09:00", end: "17:00", closed: false }, + wed: { start: "09:00", end: "17:00", closed: false }, + thu: { start: "09:00", end: "17:00", closed: false }, + fri: { start: "09:00", end: "17:00", closed: false }, + sat: { start: "09:00", end: "15:00", closed: false }, + sun: { start: "", end: "", closed: true }, +}; + +export function BusinessSetup() { + const [currentStep, setCurrentStep] = useState(1); + + const [businessData, setBusinessData] = useState({ + businessName: "", + industry: "", + contactEmail: "", + contactPhone: "", + businessAddress: "", + brandVoice: "", + timezone: "", + }); + + const [workingHours, setWorkingHours] = useState(defaultWorkingHours); + + const [services, setServices] = useState([ + { + id: 1, + name: "", + description: "", + duration: 30, + price: 0, + maxClients: 1, + specialRules: "", + }, + ]); + + const [staff, setStaff] = useState([ + { + id: 1, + name: "", + role: "", + availability: { ...defaultWorkingHours }, + specialSkills: "", + maxAppointments: 10, + }, + ]); + + const [bookingRules, setBookingRules] = useState({ + leadTime: 24, + cancellationPolicy: 24, + bufferTime: 15, + maxBookingsPerClient: 5, + }); + + const [communicationSettings, setCommunicationSettings] = useState({ + whatsappApiKey: "", + autoReplyEnabled: false, + responseStyle: "", + notifications: { + newBooking: true, + cancellation: true, + reschedule: true, + reminder: true, + }, + }); + + const handleInputChange = (field: string, value: string) => { + setBusinessData((prev) => ({ ...prev, [field]: value })); + }; + + const handleWorkingHoursChange = ( + day: string, + field: string, + value: string | boolean + ) => { + setWorkingHours((prev) => ({ + ...prev, + [day]: { ...prev[day], [field]: value }, + })); + }; + + const addService = () => { + const newService = { + id: services.length + 1, + name: "", + description: "", + duration: 30, + price: 0, + maxClients: 1, + specialRules: "", + }; + setServices([...services, newService]); + }; + + const removeService = (id: number) => { + setServices(services.filter((service) => service.id !== id)); + }; + + const updateService = (id: number, field: string, value: any) => { + setServices( + services.map((service) => + service.id === id ? { ...service, [field]: value } : service + ) + ); + }; + + const addStaff = () => { + const newStaff = { + id: staff.length + 1, + name: "", + role: "", + availability: { ...defaultWorkingHours }, + specialSkills: "", + maxAppointments: 10, + }; + setStaff([...staff, newStaff]); + }; + + const removeStaff = (id: number) => { + setStaff(staff.filter((member) => member.id !== id)); + }; + + const updateStaff = (id: number, field: string, value: any) => { + setStaff( + staff.map((member) => + member.id === id ? { ...member, [field]: value } : member + ) + ); + }; + + const nextStep = () => { + if (currentStep < setupSteps.length) { + setCurrentStep(currentStep + 1); + } + }; + + const prevStep = () => { + if (currentStep > 1) { + setCurrentStep(currentStep - 1); + } + }; + + return ( +
+ {/* Header */} +
+
+
+
+ +
+ Slotify +
+

Setup your booking platform

+
+
+ + {/* Progress Bar */} +
+
+
+

Setup Progress

+ + Step {currentStep} of {setupSteps.length} + +
+
+ {setupSteps.map((step, index) => ( +
+
step.id + ? "bg-blue-600 text-white" + : "bg-gray-200 text-gray-600" + )} + > + {step.id} +
+ + {step.name} + + {index < setupSteps.length - 1 && ( +
+ )} +
+ ))} +
+
+
+ + {/* Main Content */} +
+
+ {/* Sidebar */} +
+ + +

Setup Steps

+
+ {setupSteps.map((step) => { + const Icon = step.icon; + return ( +
setCurrentStep(step.id)} + > + +
+
{step.description}
+
+
+ ); + })} +
+
+
+
+ + {/* Form Content */} +
+ + + {/* Step 1: Business Profile */} + {currentStep === 1 && ( +
+
+ +
+

+ Business Profile +

+

+ Tell us about your business and setup basic + information +

+
+
+ +
+
+ + + handleInputChange("businessName", e.target.value) + } + className="mt-1" + /> +
+
+ + +
+
+ +
+
+ + + handleInputChange("contactEmail", e.target.value) + } + className="mt-1" + /> +
+
+ + + handleInputChange("contactPhone", e.target.value) + } + className="mt-1" + /> +
+
+ +
+ +