From 06074ccd4c1aafe0ca5b0f24a7472dfe68e9b79c Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sun, 30 Mar 2025 15:39:59 +0330 Subject: [PATCH 01/91] docs(wip): add v13 upgrade guide first draft --- docs/prologue/upgrade-guide.md | 1143 +++++++++++++++++++++++++++++++- 1 file changed, 1140 insertions(+), 3 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index c7639e6fb..a8ff3a06a 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -3,8 +3,1145 @@ sidebar_position: 2 title: Upgrade Guide --- -## Upgrade from 11.0 to 12.0 +Laravel Upgrade +=============== -### WORK IN PROGRESS +#### Upgrading Laravel To 11.0 From 10.x -[//]: # (TODO: Add a description of the changes in the upgrade from 11.0 to 12.0.) +Update your codebase according to the Laravel [upgrade guide](https://laravel.com/docs/11.x/upgrade). + +Apiato Upgrade +============== + +#### Upgrading Apiato To 13.0 From 12.x and Core To 13.0 From 8.x + +Follow this guide to upgrade Apiato and your project. + +Updating Dependencies +--------------------- + +### PHP 8.2.0 Required + +Apiato now requires PHP 8.2.0 or greater. + +### Composer Dependencies + +Do the following steps + +1. Remove all Apiato first-party packages under `app/Containers/Vendor` to prevent some dependency conflicts. They will be installed again after we do a `composer update`. + +2. Move the following dependencies to your application's root `composer.json` file if they are in the Ship or a Container `composer.json` file. + + * `apiato/core` + + * `laravel/passport` + +3. Update the following dependencies in your application's root `composer.json` file. + + * `apiato/core` to `^13.0` + + * `laravel/passport` to `^12.0` + + * `spatie/laravel-permission` to `^6.0` + + * `nunomaduro/collision` to `^8.1` + + * `apiato/documentation-generator-container` to `^4.0` + + * `apiato/localization` to `x` (If installed) + + * `apiato/social-auth` to `x` (If installed) + + * `phpunit/phpunit` to `^11.0` + + * `barryvdh/laravel-ide-helper` to `^3.0` + + * `vimeo/psalm` to `^6.0` + Don’t forget to also upgrade its related dependencies if you have them in your project. + + "psalm/plugin-laravel": "^3.0", + "psalm/plugin-mockery": "^1.2", + "psalm/plugin-phpunit": "^0.19.2", + +4. Remove the following dependencies from your application's root `composer.json` file. + + * `spatie/laravel-ignition` + + Laravel now comes with it’s own error handling page. + + * All Apiato specific dependencies + These dependencies are no longer required as they are now handled by the `apiato/core` dependency. + + * `ext-curl` + + * `ext-gettext` + + * `ext-imagick` + + * `ext-mbstring` + + * `ext-openssl` + + * `ext-pdo` + + * `ext-sodium` + + * `ext-tokenizer` + + * `guzzlehttp/guzzle` + + * `laravel/framework` + + * `laravel/tinker` + +5. Review the upgrade guides for each of these packages to ensure you are aware of any additional breaking changes: + + * [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit/blob/11.0.0/ChangeLog-11.0.md#1100---2024-02-02) + + * [spatie/laravel-permission](https://spatie.be/docs/laravel-permission/v6/upgrading) + + +#### Getting the updated dependencies + +Now that we bumped all dependency versions, let’s get their latest versions pulled in. + +Remove the `vendor` directory to have a clean start + +`rm -rf vendor` + +Now get the latest dependencies + +`composer update` + +At this point, since we haven’t finished the upgrade yet, you will surely get some errors while running this command. And because of the way the `wikimedia/composer-merge-plugin`, the package responsible for merging Container `composer.json` files, works we suggest you run this command again to be sure you get all the latest dependencies correctly pulled in. + +`composer update` + +Namespaces & Renames +-------------------- + +Core abstract classes namespace has been changed from `Apiato\Core\Abstracts` to `Apiato\Core`. + +* `Apiato\Core\Abstracts` → `Apiato\Core` + + +Additionally, some classes have had their name or namespace changed further. + +Update these `from` → `to` + +* `Apiato\Core\Abstracts\Commands\ConsoleCommand` → `Apiato\Core\Console\Command` + +* `Apiato\Core\Abstracts\Criterias` → `Apiato\Core\Criteria` + +* `Apiato\Core\Abstracts\Middlewares` → `Apiato\Core\Middleware` + +* `Apiato\Core\Abstracts\Middlewares\Http\ProcessETagHeadersMiddleware` → `Apiato\Http\Middleware\ProcessETag` + +* `Apiato\Core\Abstracts\Middlewares\Http\ValidateJsonContent` → `Apiato\Http\Middleware\ValidateJsonContent` + +* `Apiato\Core\Abstracts\Providers\MainServiceProvider` → `Apiato\Core\Providers\ServiceProvider` + +* `Apiato\Core\Abstracts\Tests\PhpUnit\TestCase` → `Apiato\Core\Testing\TestCase` + + +### Model + +Here are Model specific changes. + +Update these `from` → `to` + +* `Apiato\Core\Contracts\HasResourceKey` → `Apiato\Http\Resources\ResourceKeyAware` + +* `Apiato\Core\Traits\ModelTrait` → `Apiato\Core\Models\InteractsWithApiato` + +```php +// before +use Apiato\Core\Contracts\HasResourceKey; +use Apiato\Core\Traits\ModelTrait; + +class MyModel extends NotApiatoModel implements HasResourceKey { +use ModelTrait; +} + +// after +use Apiato\Core\Models\InteractsWithApiato; +use Apiato\Http\Resources\ResourceKeyAware; + +class MyModel extends NotApiatoModel implements ResourceKeyAware { +use InteractsWithApiato; +} +``` + +* `Apiato\Core\Traits\HasResourceKeyTrait` → `Apiato\Http\Resources\HasResourceKey` + +```php +// before +use Apiato\Core\Contracts\HasResourceKey; +use Apiato\Core\Traits\HasResourceKeyTrait; + +class MyModel implements HasResourceKey { +use HasResourceKeyTrait; +} + +// after +use Apiato\Http\Resources\HasResourceKey; +use Apiato\Http\Resources\ResourceKeyAware; + +class MyModel implements ResourceKeyAware { +use HasResourceKey; +} +``` + +From this point onward, any time we mention `Apiato\Core` namespace, we mean the old `Apiato\Core\Abstracts` namespace which you just updated. + +App Configuration +----------------- + +Laravel 11 and Apiato 13 configurations has been changed and both of them can be configured via a configuration class now. + +Replace everything in the `bootstrap/app.php` file with following configuration. It is the new Apiato default configuration which you can use as a starting point and further customize it to your needs. + +```php +use Apiato\Foundation\Apiato; +use Apiato\Http\Middleware\ProcessETag; +use Apiato\Http\Middleware\ValidateJsonContent; +// use App\Containers\AppSection\Authentication\UI\WEB\Controllers\HomePageController; +// use App\Containers\AppSection\Authentication\UI\WEB\Controllers\LoginController; +use Illuminate\Foundation\Application; +use Illuminate\Foundation\Configuration\Exceptions; +use Illuminate\Foundation\Configuration\Middleware; + +$basePath = dirname(\_\_DIR\_\_);$apiato = Apiato::configure(basePath: $basePath)->create(); + +return Application::configure(basePath: $basePath) + ->withProviders($apiato->providers()) + ->withEvents($apiato->events()) + ->withRouting( + web: $apiato->webRoutes(), + channels: \_\_DIR\_\_ . '/../app/Ship/Broadcasts/channels.php', + health: '/up', + then: static fn () => $apiato->registerApiRoutes(), + ) + ->withMiddleware(function (Middleware $middleware) { + // These middleware were previously applied via app/Ship/Kernels/HttpKernel class + $middleware->api(append: \[ + ValidateJsonContent::class, + ProcessETag::class, + \]); + // If you are using web routes, update the following middleware to your needs + // $middleware->redirectUsersTo(static function (Request $request): string { + // return action(HomePageController::class); + // }); + // $middleware->redirectGuestsTo(static function (Request $request): string { + // return action(\[LoginController::class, 'showForm'\]); + // }); + }) + ->withCommands($apiato->commands()) + ->withExceptions(static function (Exceptions $exceptions) {}) + ->create(); +``` + +Service Providers +----------------- + +All providers under `Providers` directory in Containers and `Ship` are now loaded automatically. This removes the previous requirement of having a `MainServiceProvider` (with the exact name) per container. Your providers can have any name and it is not required to name one of them `MainServiceProvider`. + +Due to the way Service Providers are registered now, parent providers under `app/Ship/Parents/Providers` won't be registered anymore. So if you want to do something in a provider’s `register` or `boot` method you have to extend from these providers and put them in your Container or Ship `Providers` directory. + +* Move any bootstrapping and registrations you were doing in these Abstract Parent Providers to a Container or the Ship Service Provider. + + +#### Properties + +`$serviceProviders` and `$aliases` properties are removed. + +As previously mentioned, we don’t need to manually register service providers anymore. Hence, we no longer need the `$serviceProviders` property. + +Refactor your code to register or alias your providers in your service provider’s `register` and `boot` methods. + +```php +// before +public array $serviceProviders = \[ + ThirdPartyServiceProvider::class, +\]; + +public array $aliases = \[ + 'something' => ThirdPartyServiceProvider::class, +\]; + +// after +public function register(): void +{ + // remember that you don't need to manually register any of the providers + // that are under the Containers or Ship \`Providers\` directory, because + // those providers are now loaded automatically. + $this->app->register(ThirdPartyServiceProvider::class); + $this->app->alias(ThirdPartyServiceProvider::class, 'something'); +} +``` + +#### Parent method calls + +There is no need to call the `parent::register()` or `parent::boot()` methods in your service providers anymore. Just like Laravel Service Providers, all `register` and `boot` methods of all providers are now called independently and will be called without needing the manual parent call. + +Remove the following method calls in your service providers + +* `parent::register()` + +* `parent::boot()` + + +#### BroadcastServiceProvider + +`Apiato\Core\Abstracts\Providers\BroadcastServiceProvider` has been removed. + +Remove your `App\Ship\Parents\Providers\BroadcastServiceProvider` class and instead configure your broadcasts via `bootstrap/app.php`. + +return Application::configure(basePath: $basePath) + ... + ->withRouting( + channels: \_\_DIR\_\_ . '/../app/Ship/Broadcasts/channels.php', + ) + ... + ->create(); + +#### AuthServiceProvider + +Since Laravel is pushing toward simplifying the framework configurations and [away](https://laravel.com/docs/11.x/authorization#registering-policies) from using the `Illuminate\Foundation\Support\Providers\AuthServiceProvider`, we have removed the `Apiato\Core\Abstracts\Providers\AuthServiceProvider`. Everything that `AuthServiceProvider` was offering is now achievable with all providers. + +If you have been using this provider to manually register your `Policies` and you are not using Larave’s [policy discovery](https://laravel.com/docs/11.x/authorization#policy-discovery) feature, read Laravel’s docs about the [policy manual registration](https://laravel.com/docs/11.x/authorization#manually-registering-policies) and upgrade your code accordingly. + +If you were registering anything in `AuthServiceProvider` `register` and `boot` methods, move those registrations to another service provider. + +Remove all classes that were extending it or it’s subclasses. e.g, + +* `App\Ship\Parents\Providers\AuthServiceProvider` + + * `App\Containers\AppSection\Authentication\Providers\AuthServiceProvider` + + * etc… + + +#### MiddlewareServiceProvider + +`Apiato\Core\Abstracts\Providers\MiddlewareServiceProvider` has been removed. + +Move any middleware [configurations](https://laravel.com/docs/11.x/middleware#registering-middleware) that you were doing in a `MiddlewareServiceProvider`, to the `bootstrap/app.php` and then remove them in the next step. + +Remove all classes that were extending it or it’s subclasses. e.g, + +* `App\Ship\Parents\Providers\MiddlewareServiceProvider` + + * `App\Containers\AppSection\Authentication\Providers\MiddlewareServiceProvider` + + * etc… + + +#### TODO + +Refactor your service providers that are extending from any of the following providers to extend from the `App\Ship\Parents\Providers\ServiceProvider` + +* `App\Ship\Parents\Providers\AuthServiceProvider` + +* `Apiato\Core\Providers\AuthServiceProvider` + +* `Illuminate\Foundation\Support\Providers\AuthServiceProvider` + + +Test middleware override/replace in GESG `RedirectIfAuthenticated` to see if it really works. + +Laravel Passport +---------------- + +### Migration Changes + +Passport 12.0 no longer automatically loads migrations from its own migrations directory. Instead, you should copy the Passport's migrations from Apiato [13.x](https://github.com/apiato/apiato/tree/13.x/app/Containers/AppSection/Authentication/Data/Migrations) branch to your application. + +You can find the migrations in the `app/Containers/AppSection/Authentication/Data/Migrations` directory. Create the `Data/Migrations`directory if it doesn’t exist. + +#### Password Grant Type + +The password grant type is disabled by default. You have to enable it by calling the `enablePasswordGrant` method in the `boot` method of one of your application's service providers: + +```php +public function boot(): void +{ + Passport::enablePasswordGrant(); +} +``` + +Carbon 3 +-------- + +In Carbon v3, PHPDoc is moving to real types so many method calls which were working before will throw a `TypeError`. + +For example this one will throw an error because we are passing a `string`. + +`Passport::tokensExpireIn(Carbon::now()->addMinutes(config('apiato.api.expires-in')));` + +To fix it we have to explicitly cast the string to `(int)` + +`Passport::tokensExpireIn(Carbon::now()->addMinutes((int)config('apiato.api.expires-in')));` + +Review Carbon's [change log](https://github.com/briannesbitt/Carbon/releases/tag/3.0.0) and [documentation](https://carbon.nesbot.com/docs/#api-carbon-3) for detailed information on how to handle these and other changes. + +Value Objects +------------- + +### Removed Trait + +`Apiato\Core\Traits\HasResourceKeyTrait` has been removed from the Core VO (`Apiato\Core\Values\Value`). + +If you were relying on the `getResourceKey` method that trait was providing, you have to add the trait and it’s related interface (`Apiato\Http\Resources\ResourceKeyAware`) to your Ship Parent VO class. + +Remember that `Apiato\Core\Traits\HasResourceKeyTrait` has been renamed and relocated to `Apiato\Http\Resources\HasResourceKey`. + +```php +use Apiato\Core\Values\Value as AbstractValue; +use Apiato\Http\Resources\HasResourceKey; +use Apiato\Http\Resources\ResourceKeyAware; + +abstract class Value extends AbstractValue implements ResourceKeyAware { + use HasResourceKey; +} +``` + +### Readonly + +Value Objects are `readonly` now. + +Add `readonly` to your `App\Ship\Parents\Values` class. + +```php +use Apiato\Core\Values\Value as AbstractValue; + +// Before +abstract class Value extends AbstractValue {} +// After +abstract readonly class Value extends AbstractValue {} +``` + +Refactor all your value objects extending the parent value object and add the `readonly` keyword to them. + +Testing +------- + +Along the idea of `embracing the Laravel way`, testing has been cleared up and simplified. Test your stuff the Laravel way. All testing features Apiato was providing before is now easily achievable via Laravel. + +All Apiato custom testing methods has been removed. + +* `makeCall` + +* `injectId` + +* `endpoint` + +* etc… + + +Since this will be a huge, almost impossible, refactoring for large codebase, we have provided some utility tools to help you with the gradual upgrade. Read about Apiato Legacy Bridge [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Upgrade-Utilities). + +### LazilyRefreshDatabase + +`LazilyRefreshDatabase` trait has been removed from the Core parent TestCase to give you the option of not using it. + +* Add `LazilyRefreshDatabase` trait your `App\Ship\Parents\Tests\TestCase` if you want to use this feature. + + +Request +------- + +If you have a large codebase and you want to do the upgrade gradually, read about Apiato Legacy Bridge [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Upgrade-Utilities). + +### Authorization + +All Apiato custom authorization related properties and methods has been removed. + +* `$access` + +* `hasAccess` + +* `hasAnyPermissionAccess` + +* `hasAnyRoleAccess` + +* `check` + + +Since `$access` is not used by Apiato anymore, Having this property on your request will not have any effect on authorization whatsoever. + +Refactor your code to use Laravel Policies and optionally remove the `$access` property from your requests classes. + +```php +// before +use App\Ship\Parents\Requests\Request as ParentRequest; + +final class DeleteUserRequest extends ParentRequest +{ + protected array $access = \[ + 'permissions' => 'delete', + 'roles' => '', + \]; + + public function authorize(): bool + { + return $this->check(\[ + 'hasAccess', + \]); + } +} + +// after +use App\Containers\AppSection\User\Models\User; +use App\Ship\Parents\Requests\Request as ParentRequest; + +final class DeleteUserRequest extends ParentRequest +{ + public function authorize(): bool + { + return $this->user()->can('delete', \[User::class\]); + } +} +``` + +### URL Parameter Validation + +`$urlParameters` property and it’s getter method, `getUrlParametersArray` has been removed. + +Url parameters are not available for validation in the `rules` method anymore. [Here](https://masteringlaravel.io/daily/2024-05-29-a-nuanced-opinion-on-validating-url-request-parameters) is the reasoning behind this decision. + +* Remove any validations you are doing on the url parameters in the `rules` method. + Keep in mind, by doing this, previously if the user was passing a wrong route/url parameter, he or she would have received a `422`validation error but now he receives a `404` not found error. + +* Remove the `$urlParameters` property from your Requests + +* Remove all calls to the `getUrlParametersArray` method + + +### Hashed Id Decoding + +Request’s `$decode` property now also decodes url parameters without needing to add them to the (now removed) `$urlParameters` property. + +```php +// before +protected array $decode = \[ + 'id', +\]; + +// this was required +protected array $urlParameters = \[ + 'id', +\]; + +// after +protected array $decode = \[ + 'id', +\]; +// $urlParameters is no longer required +``` + +You can access all url parameters from the request just like before. + +`$request->id` // you get the decoded value, e.g, 3 + +### Removed Methods + +The following methods has been removed. + +* `injectData` + +* `withUrlParameters` + +* `mapInput` + +* `getInputByKey` + + +### sanitizeInput Method + +`sanitizeInput` method is renamed to `sanitize`. + +Error Handling +-------------- + +All Apiato custom error handling logics has been removed. + +### Removed methods + +The following methods `debug`, `withErrors` & `getErrors` which were previously available on all exceptions via the Core [Exception](https://github.com/apiato/core/blob/8.x/src/Abstracts/Exceptions/Exception.php), are no longer available. + +### ExceptionsHandler + +`App\Ship\Exceptions\Handlers\ExceptionsHandler` is no longer used. Remove it and configure your exception handling via `bootstrap/app.php` + +* Remove the `App\Ship\Exceptions\Handlers\ExceptionsHandler` class + + +### HTTP & non-HTTP Exceptions + +Exceptions are now separated into 2 group of `Http` and `non-Http` exceptions. + +* Create a parent http exception class named `HttpException` in the `app/Ship/Parents/Exceptions` directory + + namespace App\Ship\Parents\Exceptions; + + use Apiato\Core\Exceptions\HttpException as AbstractException; + + abstract class HttpException extends AbstractException + { + } + + Now you should have two parent exception classes to extend from. `Exception` and `HttpException`. + +* Refactor your http exceptions to extend from `App\Ship\Parents\Exceptions\HttpException` and non-http exception to extend from `App\Ship\Parents\Exceptions\Exception`. + Basically, any exceptions that was extending from `App\Ship\Parents\Exceptions\Exception` should now extend `App\Ship\Parents\Exceptions\HttpException`. + + +### Exception Usage + +The way exceptions could be instantiated has changed. For example, must exceptions cannot be instantiated without passing some required constructor parameters. + +// this was working before but now it doesn't +throw new NotFoundHttpException(); + +Yea we know! Refactoring all your exceptions and their exceptions could be a daunting task! But don’t worry, we’ve got you covered! + +We have created the `RefactorHttpExceptionRector` Rector rule to help you with this refactoring. With it you can easily update your http exceptions and their usages. Read about Apiato Rector rules [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). + +### Removed Exceptions + +All Exceptions under `Apiato\Core\Exceptions` namespace are removed and won’t be thrown by the Core anymore. This is probably not a breaking change since usually they were just being used in the `@throws` phpdoc blocks. + +Remove the usages of them throughout your application. + +* `Apiato\Core\Exceptions\AuthenticationException` + +* `Apiato\Core\Exceptions\GeneratorErrorException` + +* `Apiato\Core\Exceptions\GeneratorErrorException` + +* `Apiato\Core\Exceptions\IncorrectIdException` + +* `Apiato\Core\Exceptions\InvalidTransformerException` + +* `Apiato\Core\Exceptions\MissingJSONHeaderException` + +* `Apiato\Core\Exceptions\MissingTestEndpointException` + +* `Apiato\Core\Exceptions\UndefinedMethodException` + +* `Apiato\Core\Exceptions\UnsupportedFractalIncludeException` + +* `Apiato\Core\Exceptions\WrongConfigurationsException` + +* `Apiato\Core\Exceptions\WrongEndpointFormatException` + + +TODO + +Instead of returning 403 for unauthenticated we return 401, default Laravel, now + +Response +-------- + +### Transforming Responses + +The `$this->transform` method is no longer available in API Controllers. All of it’s functionalities and more are now available via `Apiato\Support\Facades\Response` facade. + +The `Response` facade api is almost identical to the `transform` method. You can find the `Response` facade docs here. + +* Refactor all `$this->transform` usages to use the `Response` facade + + +We have created the `TransformMethodToResponseCreateRector` Rector rule to help you with this refactoring. Read about Apiato Rector rules [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). + +### Fractal + +Update `app/Ship/Configs/fractal.php` config to use the Apiato `Response` class. + +* `'fractal_class' => \Apiato\Http\Response::class` + + +### Filtering Responses + +TODO, link the docs + +The way response filtering was working has changed. Please read the docs and update your code accordingly. + +Repository +---------- + +Some repository methods have strong types or different behaviors now. + +### boot + +`boot` method now has a `void` return type. + +* add the `void` return type to your repositories `boot()` methods + + +### getById + +`getById` method is renamed to `findOrFail` + +### delete + +`delete` method now returns `bool` or throw and exception. + +* add the `bool` return type to your repositories `delete()` methods if you have overridden it. + + +### create + +`create` method now throws `Apiato\Core\Repositories\Exceptions\ResourceCreationFailed` exception instead of `\Exception` + +### update + +`update` method now throws `Apiato\Core\Repositories\Exceptions\ResourceNotFound` exception instead of `\Illuminate\Database\Eloquent\ModelNotFoundException` + +### find + +`find` method now returns `null` and doesn’t throw an exception if it cannot find any results (just like Laravel). + +Do either one of these + +* Refactor `find` method calls to `findOrFail` call to get the old behavior + +* Or keep the old behavior by using the Apiato Legacy Bridge + + +### Keeping the Old behavior + +You can use the Apiato Legacy Bridge `RepositoryTrait` trait if you would like to keep the old behavior of the following methods: + +* `find` + +* `create` + +* `update` + + +Read about Apiato Legacy Bridge [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Upgrade-Utilities). + +Hash Ids +-------- + +`Apiato\Core\Traits\HashIdTrait` trait used in the parent TestCase, Request and some other places has been removed. You should use the `hashids()` helper function instead. It provides the same functionality and much more. + +Refactor these methods and all calls to `Hashids` facade to use the `hashids` helper function instead. + +* `$this->decode(...)` → `hashids()->decode(...)` + + * Previously, `decode` always returned and array but now it returns either an `int` or an `array` depending on passed in hashed id argument. This could be a breaking change for your if you expected it to always return an array. + +* `$this->encode(...)` → `hashids()->encode(...)` + +* `Hashids::decode(...)` → `hashids()->decode(...)` + +* `Hashids::encode(...)` → `hashids()->encode(...)` + +* etc… + + +Jobs +---- + +Core Job class (`Apiato\Core\Jobs\Job`) don’t use any traits or implement any interfaces anymore. Instead, you should add them to your Ship’s parent Job class based on your requirements. e.g., + +```php +namespace App\Ship\Parents\Jobs; + +use Apiato\Core\Jobs\Job as AbstractJob; +use Illuminate\Contracts\Queue\ShouldQueue; +use Illuminate\Foundation\Queue\Queueable; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Queue\SerializesModels; + +abstract class Job extends AbstractJob implements ShouldQueue +{ + use InteractsWithQueue; + use Queueable; + use SerializesModels; +} +``` + +These traits and interface are already used on the Ship’s parent Job class in all new Apiato projects. + +Validation +---------- + +`no_spaces` custom validation rules has been removed. + +If you were using this validation rule, you have to either + +* Remove it’s usages +* Or register it yourself in the `boot` method of one of your application’s service providers +* You can find this rule’s source code [here](https://github.com/apiato/core/blob/8.x/src/Traits/ValidationTrait.php) + +```php +use App\Ship\Parents\Providers\ServiceProvider; +use Illuminate\Support\Facades\Validator; + +class MyServiceProvider extends ServiceProvider + public function boot(): void + { + Validator::extend('no\_spaces', function ($attribute, $value, $parameters, $validator) { + return preg\_match('/^\S\*$/u', $value); + }, 'String should not contain space.'); + + // Validate composite unique ID. + // Usage: unique\_composite:table,this-attribute-column,the-other-attribute-column + // Example: 'values' => 'required|unique\_composite:item\_variant\_values,value,item\_variant\_name\_id', + // 'item\_variant\_name\_id' => 'required', + Validator::extend('unique\_composite', function ($attribute, $value, $parameters, $validator) { + $queryBuilder = DB::table($parameters\[0\]); + + $queryBuilder = is\_array($value) ? $queryBuilder->whereIn($parameters\[1\], $value) : $queryBuilder->where($parameters\[1\], $value); + + $queryBuilder->where($parameters\[2\], $validator->getData()\[$parameters\[2\]\]); + + $queryResult = $queryBuilder->get(); + + return $queryResult->isEmpty(); + }, 'Duplicated record. This record has composite ID and it must be unique.'); + } +} +``` + +Database Seeding +---------------- + +Apiato database seeding process does not rely on the Laravel’s default `database/seeders/DatabaseSeeder.php` anymore. and `Database\Seeders\DatabaseSeeder` will not be called during the seeding operations. Instead, you should put your seeders in the Ship or Containers seeders directory. + +* Remove the `database/seeders/DatabaseSeeder.php` file and move any seeding operations you might have been doing in it to the proper location like `Ship` or `Container` database seeders directories. + + +Removed +------- + +* `Apiato\Core\Abstracts\Middlewares\Http\ProfilerMiddleware` + +* `Apiato\Core\Middleware\Http\Authenticate` + + * Use `Illuminate\Auth\Middleware\Authenticate` instead + + +Added +----- + +* Copy `ValidateAppId` middleware from [Apiato](https://github.com/apiato/apiato/blob/13.x/app/Ship/Middleware/ValidateAppId.php) to your `app/Ship/Middleware` directory + + +Miscellaneous +------------- + +We also encourage you to view the changes in the [apiato/apiato](https://github.com/apiato/apiato) and [apiato/core](https://github.com/apiato/core) GitHub repositories. While many of these changes are not required, you may wish to keep these files in sync with your application. Some of these changes will be covered in this upgrade guide, but others, such as changes to configuration files or comments, will not be. You can easily view the changes with the [GitHub comparison tool](https://github.com/apiato/apiato/compare/12.x...13.x) and choose which updates are important to you. + +Optional +======== + +Namespaces +---------- + +Rename these directories to be in sync with Apiato directory names + +* `app/Ship/Middlewares` → `app/Ship/Middleware` + +* `app/Ship/Parents/Middlewares → app/Ship/Parents/Middleware` + + +DRAFT + +* ShipProvider → renamed to → ShipServiceProvider + +* rename your Container’s and Ship `MainServiceProvider` to `ServiceProvider` + + +Testing +------- + +To generate fake data use the Laravel’s `fake` helper function instead of `$this->faker` property. + +* Remove the `$this->faker` setup from your parent TestCase. I really recommend this. + + +Remove any Apiato old code from your `App\Ship\Parents\Tests\TestCase` abstract class. You don't need any of that setups anymore. But keep your custom logics in there of course! + +```php +// Remove the commented lines +// Your class might be slightly different + +namespace App\Ship\Parents\Tests; + +use Apiato\Core\Testing\TestCase as AbstractTestCase; +use App\Ship\Enums\AuthGuard; +use Faker\Generator; +use Illuminate\Contracts\Console\Kernel as ApiatoConsoleKernel; +use Illuminate\Foundation\Application; +use Illuminate\Foundation\Testing\LazilyRefreshDatabase; + +abstract class TestCase extends AbstractTestCase +{ + use LazilyRefreshDatabase; + + // protected Generator $faker; + + // public function createApplication(): Application + // { + // $app = require \_\_DIR\_\_ . '/../../../../bootstrap/app.php'; + // + // $app->make(ApiatoConsoleKernel::class)->bootstrap(); + // + // // create an instance of faker and make it available in all tests + // $this->faker = $app->make(Generator::class); + // + // return $app; + // } +} +``` + +Application Files +----------------- + +Sync your project root files with Apiato [13.x](https://github.com/apiato/apiato/tree/13.x) branch +The easiest way to do it is to just copy, paste and overwrite the new files on your current files and then check the difference in `git` and adjust them accordingly. + +* /configs + +* artisan + +* package.json + +* phpunit.xml + +* vite.config.js + +* etc… + + +Also don’t forget to add all the newly added files that might not be present in your current project. for example `tailwind.config.js`. + +Upgrade Utilities +----------------- + +### Legacy Bridge + +#### Testing + +You can use the `TestCaseTrait` on your parent TestCase to get access to all the removed testing methods in your tests classes. + +```php +namespace App\Ship\Parents\Tests; + +use Apiato\Core\Testing\TestCase as AbstractTestCase; +use App\Ship\Compatibility\Testing\TestCaseTrait; +use Illuminate\Foundation\Testing\LazilyRefreshDatabase; + +abstract class TestCase extends AbstractTestCase +{ + use TestCaseTrait; + + // if you use "LazilyRefreshDatabase" trait use this instead to resolve method conflict + use LazilyRefreshDatabase; + use TestCaseTrait { + TestCaseTrait::afterRefreshingDatabase insteadof LazilyRefreshDatabase; + } +} +``` + +#### Request + +You can use the `RequestTrait` on your parent Request to get access to all the removed methods in your request classes. + +```php +namespace App\Ship\Parents\Requests; + +use Apiato\Core\Requests\Request as AbstractRequest; +use App\Ship\Compatibility\RequestTrait; + +abstract class Request extends AbstractRequest +{ + use RequestTrait; +} +``` + +### Rector Rules + +We are providing some rector custom rules to help you with the upgrade. Read about Rector [here](https://getrector.com/). +You can get the custom rules via Composer: + +`composer require --dev mohammad-alavi/apiato-rector:dev-latest` + +TODO + +// do we need to add versions for the required? check their docs. +composer required-dev mohammad-alavi/apiato-rector +composer required-dev rector/rector + +`RefactorHttpExceptionRector` look at GESG rector configs and update the docs. + +1. \->withConfiguredRule(RefactorHttpExceptionRector::class, \[ + 'parent\_class' => \App\Ship\Parents\Exceptions\HttpException::class, + \]); + + +* Only refactors exceptions that are extending `App\Ship\Parents\Exceptions\HttpException` + + * Can be configured to look for another parent + +* Cannot handle named parameters, if you used named params when instantiating the exception + +* Must have both `$code` and `$message` properties set on the exception class + +* Cannot refactor `MyException::class` and will skip them + + * e.g, `throw_if(true, MyException::class);` + + +`TransformMethodToResponseCreateRector` + +DRAFT +----- + +Remove all Apiato middleware under `app/Ship/Middleware` and/or if you have customized them, do your customization via the `bootstrap/app.php` (refer to Laravel 11 [docs](https://laravel.com/docs/11.x/middleware#registering-middleware) to learn how to do it). Do the same for any custom middleware you have added in the `app/Ship/HttpKernel` since `HttpKernel` is no longer used. + +Removed + +* `App\Ship\Kernels` directory and all classes within it. + +* `App\Ship\Exceptions\Handlers\ExceptionsHandler`. All your custom exception handing configurations must be done via `bootstrap/app.php` now. + +* string method fix removed [https://laravel.com/docs/10.x/migrations#index-lengths-mysql-mariadb](https://laravel.com/docs/10.x/migrations#index-lengths-mysql-mariadb) + +* Core exceptions are renamed. update your code if u use them. + + * some are also deleted + +* `addRequestCriteria` method updated and doesn't accept repository as first param anymore + + * you should use the `addRequestCriteria` on the repository + +* remind them that ship seeders are not loaded by default. + + * seeder command removed. you can add it easily to your project. give link to repo. + + * config also removed + +* possible BC if resource key is passed → Transformer methods parameter type-hint added + + * nullableItem + + * item + + * collection + +* Possible BC if is overridden by user: ResponseHelper::`setResponseContent`() now has a return type of `string|false`. It is used in tests. + + * also `endpoint($endpoint)` → `endpoint(string $endpoint)`; + +* BC: `SeederLoaderTrait` removed. remove from Apiato DatabaseSeeder + +* BC: trait paths and directory change + +* seeders are removed from core → deployment/testing. added to Apiato. + + * also configs are removed from apiato.php + +* apiato.php config + + * write about all the removed configs, check core config + + * BC: API\_PREFIX=/ config and env var is removed. + + * you can configure it via Apiato:confiugre() in bootstrap/app.php + + * BC: `enable_version_prefix` config removed + + * you can configure it via Apiato:confiugre() in bootstra/app.php + + * `debug`/`API_DEBUG` removed. since this feature has been provided by the custom exception handing and we dont have it anymore. so it is useless. + +* HashIds trait removed from Core, if you used $this->encode/decode methods, you have to replace them with the new hashids()->encode/decode() helper or hashIds::encode/decode() facade. + +* $request->all() + + * no longer has url params in it. But url params still gets decoded if they are present in the `decode` array + + * Url params can still be retrieved via + + * $request->param\_name e,g,. $request->id + + * $request->input($param) + + * $request->route($param) + + * param retrieved by any of the above ways still will be decoded if it is present in the `decode` array. + +* $request->check() removed. call method like noraml humans `return $this->hasAccess();` + + * also document all other removed methods from the `Request` + +* should use either route model binding or the `decode` array. using both results in an exception. + + * you can mix them tho. `decode` some ids and use binding for others. + +* makeCall removed + +```php +$response = $this->patchJson(URL::action(UpdateUserController::class, $user->getHashedKey()), $data); +$response = $this->injectId($user->id, replace: '{user\_id}')->makeCall($data); +``` + +* config: admin\_role removed + +* request include + + * default and available includes must match a relation name on the model + + * \_ - chars are accepted. name must be able to be camelized using Str::camel then match a relation method on the model + + * default includes must be eager loaded manually + + * cannot mix csv and arrray include query param. + + * wrong + + * `['books,children.books']` + + * right + + * `'books,children.books'` or `['books', 'children.books']` + +* request field sets + This feature is disabled by default now you can enable it via fractal config. +```php +'auto\_fieldsets' => \[ + 'enabled' => true, + 'request\_key' => 'fields', // query parameter name used to filter the reponse +\], +``` + + +For Release Notes +----------------- + +`SanitizerTrait` which was providing the `sanitizeInput` to the Request, has been removed. +`sanitizeInput` is now available as macro named `sanitize` on the Request. The sanitization behavior has not been changed, so you just need to refactor it’s usages. + +* refactor `->sanitizeInput()` usages to `->sanitize()` + + +Notes +----- + +It seems like that the `array` rule was not being applied correctly before, for example + +`'permission_ids' => 'array|required',` + +If we passed it this, we wouldn’t get any validation errors but now we do get `The permission ids field must be an array.` + +```php +$data = \[ + 'permission\_ids' => $permission->getHashedKey(), +\]; +``` From 58cd1cea00ec7105f6b453024e33ab48782193e5 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sun, 30 Mar 2025 20:01:52 +0330 Subject: [PATCH 02/91] Update upgrade-guide.md --- docs/prologue/upgrade-guide.md | 1227 +++++++++++--------------------- 1 file changed, 435 insertions(+), 792 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index a8ff3a06a..c4e0854a0 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -3,365 +3,266 @@ sidebar_position: 2 title: Upgrade Guide --- -Laravel Upgrade -=============== +#### Upgrading Laravel to 11.0 from 10.x -#### Upgrading Laravel To 11.0 From 10.x +Follow the official [Laravel 11 upgrade guide](https://laravel.com/docs/11.x/upgrade) to update your codebase accordingly. -Update your codebase according to the Laravel [upgrade guide](https://laravel.com/docs/11.x/upgrade). +#### Upgrading Apiato to 13.0 from 12.x and Core to 13.0 from 8.x -Apiato Upgrade -============== +This guide will walk you through upgrading Apiato and your project to the latest versions. -#### Upgrading Apiato To 13.0 From 12.x and Core To 13.0 From 8.x - -Follow this guide to upgrade Apiato and your project. - -Updating Dependencies ---------------------- +## Updating Dependencies ### PHP 8.2.0 Required -Apiato now requires PHP 8.2.0 or greater. +PHP 8.2.0 or greater is now required. ### Composer Dependencies -Do the following steps - -1. Remove all Apiato first-party packages under `app/Containers/Vendor` to prevent some dependency conflicts. They will be installed again after we do a `composer update`. - -2. Move the following dependencies to your application's root `composer.json` file if they are in the Ship or a Container `composer.json` file. - - * `apiato/core` - - * `laravel/passport` - -3. Update the following dependencies in your application's root `composer.json` file. - - * `apiato/core` to `^13.0` - - * `laravel/passport` to `^12.0` - - * `spatie/laravel-permission` to `^6.0` - - * `nunomaduro/collision` to `^8.1` - - * `apiato/documentation-generator-container` to `^4.0` - - * `apiato/localization` to `x` (If installed) - - * `apiato/social-auth` to `x` (If installed) - - * `phpunit/phpunit` to `^11.0` - - * `barryvdh/laravel-ide-helper` to `^3.0` - - * `vimeo/psalm` to `^6.0` - Don’t forget to also upgrade its related dependencies if you have them in your project. - - "psalm/plugin-laravel": "^3.0", - "psalm/plugin-mockery": "^1.2", - "psalm/plugin-phpunit": "^0.19.2", - -4. Remove the following dependencies from your application's root `composer.json` file. - - * `spatie/laravel-ignition` - - Laravel now comes with it’s own error handling page. - - * All Apiato specific dependencies - These dependencies are no longer required as they are now handled by the `apiato/core` dependency. - - * `ext-curl` - - * `ext-gettext` - - * `ext-imagick` - - * `ext-mbstring` - - * `ext-openssl` - - * `ext-pdo` - - * `ext-sodium` - - * `ext-tokenizer` - - * `guzzlehttp/guzzle` - - * `laravel/framework` - - * `laravel/tinker` - -5. Review the upgrade guides for each of these packages to ensure you are aware of any additional breaking changes: - - * [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit/blob/11.0.0/ChangeLog-11.0.md#1100---2024-02-02) - - * [spatie/laravel-permission](https://spatie.be/docs/laravel-permission/v6/upgrading) - - -#### Getting the updated dependencies - -Now that we bumped all dependency versions, let’s get their latest versions pulled in. - -Remove the `vendor` directory to have a clean start - -`rm -rf vendor` - -Now get the latest dependencies - -`composer update` - -At this point, since we haven’t finished the upgrade yet, you will surely get some errors while running this command. And because of the way the `wikimedia/composer-merge-plugin`, the package responsible for merging Container `composer.json` files, works we suggest you run this command again to be sure you get all the latest dependencies correctly pulled in. - -`composer update` - -Namespaces & Renames --------------------- - -Core abstract classes namespace has been changed from `Apiato\Core\Abstracts` to `Apiato\Core`. - -* `Apiato\Core\Abstracts` → `Apiato\Core` - - -Additionally, some classes have had their name or namespace changed further. - -Update these `from` → `to` - -* `Apiato\Core\Abstracts\Commands\ConsoleCommand` → `Apiato\Core\Console\Command` - -* `Apiato\Core\Abstracts\Criterias` → `Apiato\Core\Criteria` - -* `Apiato\Core\Abstracts\Middlewares` → `Apiato\Core\Middleware` - -* `Apiato\Core\Abstracts\Middlewares\Http\ProcessETagHeadersMiddleware` → `Apiato\Http\Middleware\ProcessETag` - -* `Apiato\Core\Abstracts\Middlewares\Http\ValidateJsonContent` → `Apiato\Http\Middleware\ValidateJsonContent` - -* `Apiato\Core\Abstracts\Providers\MainServiceProvider` → `Apiato\Core\Providers\ServiceProvider` - -* `Apiato\Core\Abstracts\Tests\PhpUnit\TestCase` → `Apiato\Core\Testing\TestCase` - +Perform these steps to update your dependencies: + +1. **Remove First-Party Apiato Packages** + Delete all Apiato first-party packages in `app/Containers/Vendor` to avoid dependency conflicts. + These packages will be reinstalled after running `composer update`. +2. **Consolidate Dependencies** + If the following dependencies are defined in any Ship or Container `composer.json` file, + move them to your application’s root `composer.json` file: + - `apiato/core` + - `laravel/passport` +3. **Update Dependency Versions** + In your root `composer.json` file, update the versions as follows: + - `apiato/core` to `^13.0` + - `laravel/passport` to `^12.0` + - `spatie/laravel-permission` to `^6.0` + - `nunomaduro/collision` to `^8.1` + - `apiato/documentation-generator-container` to `^4.0` + - `apiato/localization` to `x` (if installed) + - `apiato/social-auth` to `x` (if installed) + - `phpunit/phpunit` to `^11.0` + - `barryvdh/laravel-ide-helper` to `^3.0` + - `vimeo/psalm` to `^6.0` + Don’t forget to also update `psalm` plugins if you have them: + ```json + "psalm/plugin-laravel": "^3.0", + "psalm/plugin-mockery": "^1.2", + "psalm/plugin-phpunit": "^0.19.2", + ``` +4. **Remove Unnecessary Dependencies** + Remove these dependencies from your root `composer.json` file: + - `spatie/laravel-ignition` (Laravel now provides its own error page) + - All Apiato-specific dependencies no longer required as they are now managed via `apiato/core`, including: + - PHP extensions: `ext-curl`, `ext-gettext`, `ext-imagick`, `ext-mbstring`, `ext-openssl`, `ext-pdo`, `ext-sodium`, `ext-tokenizer` + - Packages: `guzzlehttp/guzzle`, `laravel/framework`, `laravel/tinker` +5. **Review Package Upgrade Guides** + Check the upgrade guides for each dependency to be aware of additional breaking changes: + - [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit/blob/11.0.0/ChangeLog-11.0.md#1100---2024-02-02) + - [spatie/laravel-permission](https://spatie.be/docs/laravel-permission/v6/upgrading) + +Remove the existing `vendor` directory for a clean start: +```bash +rm -rf vendor +``` +Pull in the latest dependencies: +```bash +composer update +``` +Because of the merging behavior of `wikimedia/composer-merge-plugin`, +run the command a second time to ensure that all dependencies are correctly installed: +```bash +composer update +``` -### Model +## Namespaces & Class Renames -Here are Model specific changes. +Several Core namespaces and class names have changed: -Update these `from` → `to` +The Core abstract classes have been relocated from `Apiato\Core\Abstracts` to `Apiato\Core`. -* `Apiato\Core\Contracts\HasResourceKey` → `Apiato\Http\Resources\ResourceKeyAware` +Old: `Apiato\Core\Abstracts` +New: `Apiato\Core` -* `Apiato\Core\Traits\ModelTrait` → `Apiato\Core\Models\InteractsWithApiato` +In addition, update the following class name or namespace changes: -```php -// before -use Apiato\Core\Contracts\HasResourceKey; -use Apiato\Core\Traits\ModelTrait; +| From | To | +|:-----------------------------------------------------------------------|:---------------------------------------------| +| `Apiato\Core\Abstracts\Commands\ConsoleCommand` | `Apiato\Core\Console\Command` | +| `Apiato\Core\Abstracts\Criterias` | `Apiato\Core\Criteria` | +| `Apiato\Core\Abstracts\Middlewares` | `Apiato\Core\Middleware` | +| `Apiato\Core\Abstracts\Middlewares\Http\ProcessETagHeadersMiddleware` | `Apiato\Http\Middleware\ProcessETag` | +| `Apiato\Core\Abstracts\Middlewares\Http\ValidateJsonContent` | `Apiato\Http\Middleware\ValidateJsonContent` | +| `Apiato\Core\Abstracts\Providers\MainServiceProvider` | `Apiato\Core\Providers\ServiceProvider` | +| `Apiato\Core\Abstracts\Tests\PhpUnit\TestCase` | `Apiato\Core\Testing\TestCase` | -class MyModel extends NotApiatoModel implements HasResourceKey { -use ModelTrait; -} +### Model Changes -// after -use Apiato\Core\Models\InteractsWithApiato; -use Apiato\Http\Resources\ResourceKeyAware; -class MyModel extends NotApiatoModel implements ResourceKeyAware { -use InteractsWithApiato; -} -``` +- `Apiato\Core\Contracts\HasResourceKey` → `Apiato\Http\Resources\ResourceKeyAware` +- `Apiato\Core\Traits\ModelTrait` → `Apiato\Core\Models\InteractsWithApiato` -* `Apiato\Core\Traits\HasResourceKeyTrait` → `Apiato\Http\Resources\HasResourceKey` - -```php -// before -use Apiato\Core\Contracts\HasResourceKey; -use Apiato\Core\Traits\HasResourceKeyTrait; + **Example**: + ```php + // before + use Apiato\Core\Contracts\HasResourceKey; + use Apiato\Core\Traits\ModelTrait; + + class MyModel extends NotApiatoModel implements HasResourceKey { + use ModelTrait; + } -class MyModel implements HasResourceKey { -use HasResourceKeyTrait; -} + // after + use Apiato\Core\Models\InteractsWithApiato; + use Apiato\Http\Resources\ResourceKeyAware; + + class MyModel extends NotApiatoModel implements ResourceKeyAware { + use InteractsWithApiato; + } + ``` -// after -use Apiato\Http\Resources\HasResourceKey; -use Apiato\Http\Resources\ResourceKeyAware; +- `Apiato\Core\Traits\HasResourceKeyTrait` → `Apiato\Http\Resources\HasResourceKey` -class MyModel implements ResourceKeyAware { -use HasResourceKey; -} -``` + **Example**: + ```php + // before + use Apiato\Core\Contracts\HasResourceKey; + use Apiato\Core\Traits\HasResourceKeyTrait; + + class MyModel implements HasResourceKey { + use HasResourceKeyTrait; + } -From this point onward, any time we mention `Apiato\Core` namespace, we mean the old `Apiato\Core\Abstracts` namespace which you just updated. + // after + use Apiato\Http\Resources\HasResourceKey; + use Apiato\Http\Resources\ResourceKeyAware; -App Configuration ------------------ + class MyModel implements ResourceKeyAware { + use HasResourceKey; + } + ``` -Laravel 11 and Apiato 13 configurations has been changed and both of them can be configured via a configuration class now. +## App Configuration -Replace everything in the `bootstrap/app.php` file with following configuration. It is the new Apiato default configuration which you can use as a starting point and further customize it to your needs. +Laravel 11 and Apiato 13 now use a configuration class for setup. +Replace the contents of `bootstrap/app.php` file with the following as a base, and customize it as needed: ```php use Apiato\Foundation\Apiato; use Apiato\Http\Middleware\ProcessETag; use Apiato\Http\Middleware\ValidateJsonContent; -// use App\Containers\AppSection\Authentication\UI\WEB\Controllers\HomePageController; -// use App\Containers\AppSection\Authentication\UI\WEB\Controllers\LoginController; use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; -$basePath = dirname(\_\_DIR\_\_);$apiato = Apiato::configure(basePath: $basePath)->create(); +$basePath = dirname(__DIR__); +$apiato = Apiato::configure(basePath: $basePath)->create(); return Application::configure(basePath: $basePath) ->withProviders($apiato->providers()) ->withEvents($apiato->events()) ->withRouting( web: $apiato->webRoutes(), - channels: \_\_DIR\_\_ . '/../app/Ship/Broadcasts/channels.php', + channels: __DIR__ . '/../app/Ship/Broadcasts/channels.php', health: '/up', then: static fn () => $apiato->registerApiRoutes(), ) ->withMiddleware(function (Middleware $middleware) { - // These middleware were previously applied via app/Ship/Kernels/HttpKernel class - $middleware->api(append: \[ + // Previously applied via app/Ship/Kernels/HttpKernel class + $middleware->api(append: [ ValidateJsonContent::class, ProcessETag::class, - \]); - // If you are using web routes, update the following middleware to your needs - // $middleware->redirectUsersTo(static function (Request $request): string { - // return action(HomePageController::class); - // }); - // $middleware->redirectGuestsTo(static function (Request $request): string { - // return action(\[LoginController::class, 'showForm'\]); - // }); + ]); + + // Uncomment and adjust these if using web routes: + // $middleware->redirectUsersTo(fn ($request): string => action(HomePageController::class)); + // $middleware->redirectGuestsTo(fn ($request): string => action([LoginController::class, 'showForm'])); }) ->withCommands($apiato->commands()) ->withExceptions(static function (Exceptions $exceptions) {}) ->create(); -``` - -Service Providers ------------------ -All providers under `Providers` directory in Containers and `Ship` are now loaded automatically. This removes the previous requirement of having a `MainServiceProvider` (with the exact name) per container. Your providers can have any name and it is not required to name one of them `MainServiceProvider`. +``` -Due to the way Service Providers are registered now, parent providers under `app/Ship/Parents/Providers` won't be registered anymore. So if you want to do something in a provider’s `register` or `boot` method you have to extend from these providers and put them in your Container or Ship `Providers` directory. +## Service Providers -* Move any bootstrapping and registrations you were doing in these Abstract Parent Providers to a Container or the Ship Service Provider. - +### Autoloading -#### Properties +All providers within the `Providers` directories of Containers and Ship are now autoloaded. +There is no longer a requirement to have a specifically named `MainServiceProvider` service provider per container. -`$serviceProviders` and `$aliases` properties are removed. +:::note +Any parent providers under `app/Ship/Parents/Providers` will **NOT** be registered automatically. +If you need to do something in a provider’s `register` or `boot` methods, +extend those providers in a Container or Ship `Providers` directory. +::: -As previously mentioned, we don’t need to manually register service providers anymore. Hence, we no longer need the `$serviceProviders` property. +### Removed Properties -Refactor your code to register or alias your providers in your service provider’s `register` and `boot` methods. +The `$serviceProviders` and `$aliases` properties have been removed. +Refactor your service providers to register or alias dependencies within the `register` and `boot` methods. ```php // before -public array $serviceProviders = \[ +public array $serviceProviders = [ ThirdPartyServiceProvider::class, -\]; +]; -public array $aliases = \[ +public array $aliases = [ 'something' => ThirdPartyServiceProvider::class, -\]; - -// after +]; + +// after public function register(): void { - // remember that you don't need to manually register any of the providers - // that are under the Containers or Ship \`Providers\` directory, because - // those providers are now loaded automatically. + // Reminder: providers under Containers or Ship are autoloaded + // and don't need to be registered manually. $this->app->register(ThirdPartyServiceProvider::class); $this->app->alias(ThirdPartyServiceProvider::class, 'something'); } ``` -#### Parent method calls - -There is no need to call the `parent::register()` or `parent::boot()` methods in your service providers anymore. Just like Laravel Service Providers, all `register` and `boot` methods of all providers are now called independently and will be called without needing the manual parent call. +### Parent Method Calls -Remove the following method calls in your service providers +You no longer need to call `parent::register()` or `parent::boot()` in your service providers. +All service providers’ `register` and `boot` methods are now invoked independently. -* `parent::register()` - -* `parent::boot()` - +### Specific Provider Changes #### BroadcastServiceProvider - -`Apiato\Core\Abstracts\Providers\BroadcastServiceProvider` has been removed. - -Remove your `App\Ship\Parents\Providers\BroadcastServiceProvider` class and instead configure your broadcasts via `bootstrap/app.php`. - -return Application::configure(basePath: $basePath) - ... - ->withRouting( - channels: \_\_DIR\_\_ . '/../app/Ship/Broadcasts/channels.php', - ) - ... - ->create(); +- Removed: `Apiato\Core\Abstracts\Providers\BroadcastServiceProvider` +- Action: + Remove your custom `App\Ship\Parents\Providers\BroadcastServiceProvider` and configure channels in `bootstrap/app.php` + as shown [above](#app-configuration). #### AuthServiceProvider - -Since Laravel is pushing toward simplifying the framework configurations and [away](https://laravel.com/docs/11.x/authorization#registering-policies) from using the `Illuminate\Foundation\Support\Providers\AuthServiceProvider`, we have removed the `Apiato\Core\Abstracts\Providers\AuthServiceProvider`. Everything that `AuthServiceProvider` was offering is now achievable with all providers. - -If you have been using this provider to manually register your `Policies` and you are not using Larave’s [policy discovery](https://laravel.com/docs/11.x/authorization#policy-discovery) feature, read Laravel’s docs about the [policy manual registration](https://laravel.com/docs/11.x/authorization#manually-registering-policies) and upgrade your code accordingly. - -If you were registering anything in `AuthServiceProvider` `register` and `boot` methods, move those registrations to another service provider. - -Remove all classes that were extending it or it’s subclasses. e.g, - -* `App\Ship\Parents\Providers\AuthServiceProvider` - - * `App\Containers\AppSection\Authentication\Providers\AuthServiceProvider` - - * etc… - +- Removed: `Apiato\Core\Abstracts\Providers\AuthServiceProvider` +- Action: + - If you were manually registering policies outside Laravel’s policy discovery, follow the [Laravel manual registration guide](https://laravel.com/docs/11.x/authorization#manually-registering-policies). + - Move any custom registrations from `AuthServiceProvider` to another service provider. + - Remove all classes extending the old `AuthServiceProvider`. + - Refactor any service providers extending the following service providers to extend `App\Ship\Parents\Providers\ServiceProvider`: + - `App\Ship\Parents\Providers\AuthServiceProvider` + - `Apiato\Core\Providers\AuthServiceProvider` + - `Illuminate\Foundation\Support\Providers\AuthServiceProvider` #### MiddlewareServiceProvider +- Removed: `Apiato\Core\Abstracts\Providers\MiddlewareServiceProvider` +- Action: + Migrate any middleware configurations + to `bootstrap/app.php` file as per [Laravel’s middleware registration documentation](https://laravel.com/docs/11.x/middleware#registering-middleware). + Then, remove your old `MiddlewareServiceProvider` classes. -`Apiato\Core\Abstracts\Providers\MiddlewareServiceProvider` has been removed. - -Move any middleware [configurations](https://laravel.com/docs/11.x/middleware#registering-middleware) that you were doing in a `MiddlewareServiceProvider`, to the `bootstrap/app.php` and then remove them in the next step. - -Remove all classes that were extending it or it’s subclasses. e.g, - -* `App\Ship\Parents\Providers\MiddlewareServiceProvider` - - * `App\Containers\AppSection\Authentication\Providers\MiddlewareServiceProvider` - - * etc… - - -#### TODO - -Refactor your service providers that are extending from any of the following providers to extend from the `App\Ship\Parents\Providers\ServiceProvider` - -* `App\Ship\Parents\Providers\AuthServiceProvider` - -* `Apiato\Core\Providers\AuthServiceProvider` - -* `Illuminate\Foundation\Support\Providers\AuthServiceProvider` - - -Test middleware override/replace in GESG `RedirectIfAuthenticated` to see if it really works. - -Laravel Passport ----------------- +## Laravel Passport ### Migration Changes -Passport 12.0 no longer automatically loads migrations from its own migrations directory. Instead, you should copy the Passport's migrations from Apiato [13.x](https://github.com/apiato/apiato/tree/13.x/app/Containers/AppSection/Authentication/Data/Migrations) branch to your application. +Passport 12.0 no longer loads its migrations by default. You must manually copy them from Apiato’s [13.x branch](https://github.com/apiato/apiato/tree/13.x/app/Containers/AppSection/Authentication/Data/Migrations) into your project: -You can find the migrations in the `app/Containers/AppSection/Authentication/Data/Migrations` directory. Create the `Data/Migrations`directory if it doesn’t exist. +1. Create a `Data/Migrations` directory if you don’t already have one: + `app/Containers/AppSection/Authentication/Data/Migrations` +2. Copy the Passport migrations from the 13.x branch to that directory. -#### Password Grant Type +### Password Grant Type -The password grant type is disabled by default. You have to enable it by calling the `enablePasswordGrant` method in the `boot` method of one of your application's service providers: +As of Passport 12.0, the **password grant type is disabled** by default. Enable it by calling `Passport::enablePasswordGrant()` in the `boot` method of one of your application’s service providers: ```php public function boot(): void @@ -370,107 +271,99 @@ public function boot(): void } ``` -Carbon 3 --------- +--- -In Carbon v3, PHPDoc is moving to real types so many method calls which were working before will throw a `TypeError`. +## Carbon 3 -For example this one will throw an error because we are passing a `string`. +In Carbon v3, PHPDoc annotations have been converted to real types. Methods that previously accepted different argument types may now throw a `TypeError`. -`Passport::tokensExpireIn(Carbon::now()->addMinutes(config('apiato.api.expires-in')));` +For instance, this example will now throw an error if `config('apiato.api.expires-in')` returns a string: -To fix it we have to explicitly cast the string to `(int)` +```php +Passport::tokensExpireIn(Carbon::now()->addMinutes(config('apiato.api.expires-in'))); +``` -`Passport::tokensExpireIn(Carbon::now()->addMinutes((int)config('apiato.api.expires-in')));` +To fix it, explicitly cast the string to an integer: -Review Carbon's [change log](https://github.com/briannesbitt/Carbon/releases/tag/3.0.0) and [documentation](https://carbon.nesbot.com/docs/#api-carbon-3) for detailed information on how to handle these and other changes. +```php +Passport::tokensExpireIn(Carbon::now()->addMinutes((int)config('apiato.api.expires-in'))); +``` -Value Objects -------------- +Review Carbon’s [release notes](https://github.com/briannesbitt/Carbon/releases/tag/3.0.0) and [documentation](https://carbon.nesbot.com/docs/#api-carbon-3) for more details. -### Removed Trait +--- -`Apiato\Core\Traits\HasResourceKeyTrait` has been removed from the Core VO (`Apiato\Core\Values\Value`). +## Value Objects -If you were relying on the `getResourceKey` method that trait was providing, you have to add the trait and it’s related interface (`Apiato\Http\Resources\ResourceKeyAware`) to your Ship Parent VO class. +### Removed Trait -Remember that `Apiato\Core\Traits\HasResourceKeyTrait` has been renamed and relocated to `Apiato\Http\Resources\HasResourceKey`. +`Apiato\Core\Traits\HasResourceKeyTrait` has been removed from the Core Value Object (`Apiato\Core\Values\Value`). -```php -use Apiato\Core\Values\Value as AbstractValue; -use Apiato\Http\Resources\HasResourceKey; -use Apiato\Http\Resources\ResourceKeyAware; +- If you relied on the `getResourceKey` method, add that trait and the `Apiato\Http\Resources\ResourceKeyAware` interface to your **Ship Parent VO** class: -abstract class Value extends AbstractValue implements ResourceKeyAware { - use HasResourceKey; -} -``` + ```php + use Apiato\Core\Values\Value as AbstractValue; + use Apiato\Http\Resources\HasResourceKey; + use Apiato\Http\Resources\ResourceKeyAware; + + abstract class Value extends AbstractValue implements ResourceKeyAware + { + use HasResourceKey; + } + ``` ### Readonly -Value Objects are `readonly` now. +Value Objects are now `readonly`. -Add `readonly` to your `App\Ship\Parents\Values` class. +Add the `readonly` keyword to your parent Value object in `App\Ship\Parents\Values`: ```php use Apiato\Core\Values\Value as AbstractValue; // Before abstract class Value extends AbstractValue {} + // After abstract readonly class Value extends AbstractValue {} ``` -Refactor all your value objects extending the parent value object and add the `readonly` keyword to them. +Refactor all Value Objects that extend the parent Value object to also include `readonly`. -Testing -------- +--- -Along the idea of `embracing the Laravel way`, testing has been cleared up and simplified. Test your stuff the Laravel way. All testing features Apiato was providing before is now easily achievable via Laravel. +## Testing -All Apiato custom testing methods has been removed. +Apiato has simplified its testing approach so you can test using “the Laravel way.” Many custom Apiato test methods have been removed: -* `makeCall` - -* `injectId` - -* `endpoint` - -* etc… - +- `makeCall` +- `injectId` +- `endpoint` +- ...and others -Since this will be a huge, almost impossible, refactoring for large codebase, we have provided some utility tools to help you with the gradual upgrade. Read about Apiato Legacy Bridge [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Upgrade-Utilities). +If you have a large codebase and need a gradual upgrade, use the [Apiato Legacy Bridge](#upgrade-utilities). It includes tools to restore old functionality temporarily. -### LazilyRefreshDatabase +### `LazilyRefreshDatabase` -`LazilyRefreshDatabase` trait has been removed from the Core parent TestCase to give you the option of not using it. +The `LazilyRefreshDatabase` trait is no longer forced in the Core parent TestCase. If you want to use it, explicitly add it to `App\Ship\Parents\Tests\TestCase`. -* Add `LazilyRefreshDatabase` trait your `App\Ship\Parents\Tests\TestCase` if you want to use this feature. - +--- -Request -------- +## Request -If you have a large codebase and you want to do the upgrade gradually, read about Apiato Legacy Bridge [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Upgrade-Utilities). +If your codebase is large and you need to upgrade gradually, the [Apiato Legacy Bridge](#upgrade-utilities) can help. ### Authorization -All Apiato custom authorization related properties and methods has been removed. - -* `$access` - -* `hasAccess` - -* `hasAnyPermissionAccess` - -* `hasAnyRoleAccess` - -* `check` - +All custom authorization properties and methods have been removed: -Since `$access` is not used by Apiato anymore, Having this property on your request will not have any effect on authorization whatsoever. +- `$access` +- `hasAccess` +- `hasAnyPermissionAccess` +- `hasAnyRoleAccess` +- `check` -Refactor your code to use Laravel Policies and optionally remove the `$access` property from your requests classes. +If `$access` was on your Request class, it has no effect now. Refactor your requests to use [Laravel Policies](https://laravel.com/docs/11.x/authorization#creating-policies): ```php // before @@ -478,16 +371,14 @@ use App\Ship\Parents\Requests\Request as ParentRequest; final class DeleteUserRequest extends ParentRequest { - protected array $access = \[ + protected array $access = [ 'permissions' => 'delete', 'roles' => '', - \]; - + ]; + public function authorize(): bool { - return $this->check(\[ - 'hasAccess', - \]); + return $this->check(['hasAccess']); } } @@ -499,254 +390,221 @@ final class DeleteUserRequest extends ParentRequest { public function authorize(): bool { - return $this->user()->can('delete', \[User::class\]); + return $this->user()->can('delete', [User::class]); } } ``` ### URL Parameter Validation -`$urlParameters` property and it’s getter method, `getUrlParametersArray` has been removed. +`$urlParameters` and its getter (`getUrlParametersArray`) are removed. **Url parameters no longer appear in `rules()`.** -Url parameters are not available for validation in the `rules` method anymore. [Here](https://masteringlaravel.io/daily/2024-05-29-a-nuanced-opinion-on-validating-url-request-parameters) is the reasoning behind this decision. +- Remove any URL parameter validation you perform in `rules()`. +- Remove the `$urlParameters` property. +- Remove calls to `getUrlParametersArray`. -* Remove any validations you are doing on the url parameters in the `rules` method. - Keep in mind, by doing this, previously if the user was passing a wrong route/url parameter, he or she would have received a `422`validation error but now he receives a `404` not found error. - -* Remove the `$urlParameters` property from your Requests - -* Remove all calls to the `getUrlParametersArray` method - +When a user provides a bad URL parameter, they’ll now receive a `404 Not Found` instead of a `422 Unprocessable Entity`. -### Hashed Id Decoding +### Hashed ID Decoding -Request’s `$decode` property now also decodes url parameters without needing to add them to the (now removed) `$urlParameters` property. +The `$decode` property still decodes URL parameters automatically, **even though** `$urlParameters` is gone: ```php // before -protected array $decode = \[ +protected array $decode = [ 'id', -\]; +]; -// this was required -protected array $urlParameters = \[ +// was required +protected array $urlParameters = [ 'id', -\]; +]; // after -protected array $decode = \[ +protected array $decode = [ 'id', -\]; -// $urlParameters is no longer required -``` +]; -You can access all url parameters from the request just like before. +// $urlParameters is no longer needed +``` -`$request->id` // you get the decoded value, e.g, 3 +You can still retrieve decoded URL parameters via `$request->id`, `$request->input('id')`, or `$request->route('id')`. ### Removed Methods -The following methods has been removed. +- `injectData` +- `withUrlParameters` +- `mapInput` +- `getInputByKey` + +### `sanitizeInput` Method -* `injectData` - -* `withUrlParameters` - -* `mapInput` - -* `getInputByKey` - +`sanitizeInput` has been **renamed** to `sanitize`. -### sanitizeInput Method +--- -`sanitizeInput` method is renamed to `sanitize`. +## Error Handling -Error Handling --------------- +Most Apiato custom error-handling logic has been removed. -All Apiato custom error handling logics has been removed. +### Removed Methods on Exceptions -### Removed methods +- `debug` +- `withErrors` +- `getErrors` -The following methods `debug`, `withErrors` & `getErrors` which were previously available on all exceptions via the Core [Exception](https://github.com/apiato/core/blob/8.x/src/Abstracts/Exceptions/Exception.php), are no longer available. +These methods were previously part of the [Core Exception](https://github.com/apiato/core/blob/8.x/src/Abstracts/Exceptions/Exception.php). They are no longer available. -### ExceptionsHandler +### `ExceptionsHandler` -`App\Ship\Exceptions\Handlers\ExceptionsHandler` is no longer used. Remove it and configure your exception handling via `bootstrap/app.php` +`App\Ship\Exceptions\Handlers\ExceptionsHandler` is no longer used. Remove it and configure your exception handling in `bootstrap/app.php`. -* Remove the `App\Ship\Exceptions\Handlers\ExceptionsHandler` class - +### HTTP vs. Non-HTTP Exceptions -### HTTP & non-HTTP Exceptions +Exceptions are now split into two categories: HTTP and non-HTTP. -Exceptions are now separated into 2 group of `Http` and `non-Http` exceptions. +1. Create a `HttpException` class in `app/Ship/Parents/Exceptions`: + ```php + namespace App\Ship\Parents\Exceptions; -* Create a parent http exception class named `HttpException` in the `app/Ship/Parents/Exceptions` directory - - namespace App\Ship\Parents\Exceptions; - - use Apiato\Core\Exceptions\HttpException as AbstractException; - - abstract class HttpException extends AbstractException - { - } - - Now you should have two parent exception classes to extend from. `Exception` and `HttpException`. - -* Refactor your http exceptions to extend from `App\Ship\Parents\Exceptions\HttpException` and non-http exception to extend from `App\Ship\Parents\Exceptions\Exception`. - Basically, any exceptions that was extending from `App\Ship\Parents\Exceptions\Exception` should now extend `App\Ship\Parents\Exceptions\HttpException`. - + use Apiato\Core\Exceptions\HttpException as AbstractException; -### Exception Usage + abstract class HttpException extends AbstractException + { + } + ``` + You now have two parent classes: `Exception` (non-HTTP) and `HttpException` (HTTP). -The way exceptions could be instantiated has changed. For example, must exceptions cannot be instantiated without passing some required constructor parameters. +2. Make sure your HTTP exceptions extend `App\Ship\Parents\Exceptions\HttpException`, and your non-HTTP exceptions extend `App\Ship\Parents\Exceptions\Exception`. -// this was working before but now it doesn't -throw new NotFoundHttpException(); +### Exception Instantiation -Yea we know! Refactoring all your exceptions and their exceptions could be a daunting task! But don’t worry, we’ve got you covered! +Many exceptions now require constructor parameters. For example, calling `new NotFoundHttpException()` with no arguments no longer works. You might need to pass `$message` or `$code`. -We have created the `RefactorHttpExceptionRector` Rector rule to help you with this refactoring. With it you can easily update your http exceptions and their usages. Read about Apiato Rector rules [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). +If this is cumbersome, see [Apiato Rector Rules](#upgrade-utilities) for automatic refactoring. ### Removed Exceptions -All Exceptions under `Apiato\Core\Exceptions` namespace are removed and won’t be thrown by the Core anymore. This is probably not a breaking change since usually they were just being used in the `@throws` phpdoc blocks. - -Remove the usages of them throughout your application. - -* `Apiato\Core\Exceptions\AuthenticationException` - -* `Apiato\Core\Exceptions\GeneratorErrorException` - -* `Apiato\Core\Exceptions\GeneratorErrorException` - -* `Apiato\Core\Exceptions\IncorrectIdException` - -* `Apiato\Core\Exceptions\InvalidTransformerException` - -* `Apiato\Core\Exceptions\MissingJSONHeaderException` - -* `Apiato\Core\Exceptions\MissingTestEndpointException` - -* `Apiato\Core\Exceptions\UndefinedMethodException` - -* `Apiato\Core\Exceptions\UnsupportedFractalIncludeException` - -* `Apiato\Core\Exceptions\WrongConfigurationsException` - -* `Apiato\Core\Exceptions\WrongEndpointFormatException` - - -TODO - -Instead of returning 403 for unauthenticated we return 401, default Laravel, now - -Response --------- +All exceptions under `Apiato\Core\Exceptions` have been removed. If you used them directly, remove and replace them: + +- `Apiato\Core\Exceptions\AuthenticationException` +- `Apiato\Core\Exceptions\GeneratorErrorException` +- `Apiato\Core\Exceptions\IncorrectIdException` +- `Apiato\Core\Exceptions\InvalidTransformerException` +- `Apiato\Core\Exceptions\MissingJSONHeaderException` +- `Apiato\Core\Exceptions\MissingTestEndpointException` +- `Apiato\Core\Exceptions\UndefinedMethodException` +- `Apiato\Core\Exceptions\UnsupportedFractalIncludeException` +- `Apiato\Core\Exceptions\WrongConfigurationsException` +- `Apiato\Core\Exceptions\WrongEndpointFormatException` + +**Note**: Apiato now returns `401` instead of `403` when a user is unauthenticated (matching Laravel’s default behavior). + +--- + +## Response ### Transforming Responses -The `$this->transform` method is no longer available in API Controllers. All of it’s functionalities and more are now available via `Apiato\Support\Facades\Response` facade. +The `$this->transform` method in API Controllers is removed. Use the **`Apiato\Support\Facades\Response`** facade instead. -The `Response` facade api is almost identical to the `transform` method. You can find the `Response` facade docs here. +Its API closely mirrors the old `$this->transform` methods. Refer to the new `Response` facade documentation for details. -* Refactor all `$this->transform` usages to use the `Response` facade - +**Example**: +```php +// before +return $this->transform($data, Transformer::class); -We have created the `TransformMethodToResponseCreateRector` Rector rule to help you with this refactoring. Read about Apiato Rector rules [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). +// after +use Apiato\Support\Facades\Response; + +return Response::create($data, Transformer::class); +``` + +You can automate these changes using the [TransformMethodToResponseCreateRector](#upgrade-utilities). ### Fractal -Update `app/Ship/Configs/fractal.php` config to use the Apiato `Response` class. +In `app/Ship/Configs/fractal.php`, update the `fractal_class` to: -* `'fractal_class' => \Apiato\Http\Response::class` - +```php +'fractal_class' => \Apiato\Http\Response::class +``` ### Filtering Responses -TODO, link the docs - -The way response filtering was working has changed. Please read the docs and update your code accordingly. +The approach for filtering responses has changed. Refer to the new documentation on filtering responses, then update your code accordingly. -Repository ----------- +--- -Some repository methods have strong types or different behaviors now. +## Repository -### boot +Some repository methods are strongly typed or behave differently. -`boot` method now has a `void` return type. +### `boot()` -* add the `void` return type to your repositories `boot()` methods - +`boot` now has a `void` return type: -### getById +```php +public function boot(): void +{ + // ... +} +``` -`getById` method is renamed to `findOrFail` +### `getById` → `findOrFail` -### delete +`getById` has been renamed to `findOrFail`. -`delete` method now returns `bool` or throw and exception. +### `delete` -* add the `bool` return type to your repositories `delete()` methods if you have overridden it. - +`delete` returns `bool` or throws an exception. If you have overridden `delete`, add the `bool` return type: -### create +```php +public function delete($id): bool +{ + // ... +} +``` -`create` method now throws `Apiato\Core\Repositories\Exceptions\ResourceCreationFailed` exception instead of `\Exception` +### `create` -### update +`create` now throws `Apiato\Core\Repositories\Exceptions\ResourceCreationFailed` instead of `\Exception`. -`update` method now throws `Apiato\Core\Repositories\Exceptions\ResourceNotFound` exception instead of `\Illuminate\Database\Eloquent\ModelNotFoundException` +### `update` -### find +`update` now throws `Apiato\Core\Repositories\Exceptions\ResourceNotFound` instead of `\Illuminate\Database\Eloquent\ModelNotFoundException`. -`find` method now returns `null` and doesn’t throw an exception if it cannot find any results (just like Laravel). +### `find` -Do either one of these +`find` now returns `null` if no result is found (mirroring Laravel’s default `find` behavior). Previously, it might have thrown an exception. -* Refactor `find` method calls to `findOrFail` call to get the old behavior - -* Or keep the old behavior by using the Apiato Legacy Bridge - +- Refactor calls to `find` into `findOrFail`, or +- Retain old behavior by using the Apiato Legacy Bridge. -### Keeping the Old behavior +### Keeping Old Behavior -You can use the Apiato Legacy Bridge `RepositoryTrait` trait if you would like to keep the old behavior of the following methods: +To keep the old behavior of the `find`, `create`, and `update` methods, use the [Legacy Bridge](#upgrade-utilities) `RepositoryTrait`. -* `find` - -* `create` - -* `update` - +--- -Read about Apiato Legacy Bridge [here](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Upgrade-Utilities). +## Hash IDs -Hash Ids --------- +`Apiato\Core\Traits\HashIdTrait` is removed. Use the `hashids()` helper function directly: -`Apiato\Core\Traits\HashIdTrait` trait used in the parent TestCase, Request and some other places has been removed. You should use the `hashids()` helper function instead. It provides the same functionality and much more. +- `$this->decode(...)` → `hashids()->decode(...)` +- `$this->encode(...)` → `hashids()->encode(...)` +- `Hashids::decode(...)` → `hashids()->decode(...)` +- `Hashids::encode(...)` → `hashids()->encode(...)` -Refactor these methods and all calls to `Hashids` facade to use the `hashids` helper function instead. +**Important**: +`decode` now can return an `int` or an `array` depending on the input. Previously, it always returned an array. -* `$this->decode(...)` → `hashids()->decode(...)` - - * Previously, `decode` always returned and array but now it returns either an `int` or an `array` depending on passed in hashed id argument. This could be a breaking change for your if you expected it to always return an array. - -* `$this->encode(...)` → `hashids()->encode(...)` - -* `Hashids::decode(...)` → `hashids()->decode(...)` - -* `Hashids::encode(...)` → `hashids()->encode(...)` - -* etc… - +--- -Jobs ----- +## Jobs -Core Job class (`Apiato\Core\Jobs\Job`) don’t use any traits or implement any interfaces anymore. Instead, you should add them to your Ship’s parent Job class based on your requirements. e.g., +`Apiato\Core\Jobs\Job` no longer implements interfaces or traits. Move them to your Ship’s parent Job class if needed. For example: ```php namespace App\Ship\Parents\Jobs; @@ -765,170 +623,112 @@ abstract class Job extends AbstractJob implements ShouldQueue } ``` -These traits and interface are already used on the Ship’s parent Job class in all new Apiato projects. - -Validation ----------- +--- -`no_spaces` custom validation rules has been removed. +## Validation -If you were using this validation rule, you have to either +`no_spaces` is no longer included by default. If you used it, you can: -* Remove it’s usages -* Or register it yourself in the `boot` method of one of your application’s service providers -* You can find this rule’s source code [here](https://github.com/apiato/core/blob/8.x/src/Traits/ValidationTrait.php) +- Remove references to it, or +- Register it manually in your own service provider. + You can find the source [here](https://github.com/apiato/core/blob/8.x/src/Traits/ValidationTrait.php). +**Example**: ```php -use App\Ship\Parents\Providers\ServiceProvider; use Illuminate\Support\Facades\Validator; - +use App\Ship\Parents\Providers\ServiceProvider; + class MyServiceProvider extends ServiceProvider +{ public function boot(): void { - Validator::extend('no\_spaces', function ($attribute, $value, $parameters, $validator) { - return preg\_match('/^\S\*$/u', $value); + Validator::extend('no_spaces', function ($attribute, $value) { + return preg_match('/^\S*$/u', $value); }, 'String should not contain space.'); - - // Validate composite unique ID. - // Usage: unique\_composite:table,this-attribute-column,the-other-attribute-column - // Example: 'values' => 'required|unique\_composite:item\_variant\_values,value,item\_variant\_name\_id', - // 'item\_variant\_name\_id' => 'required', - Validator::extend('unique\_composite', function ($attribute, $value, $parameters, $validator) { - $queryBuilder = DB::table($parameters\[0\]); - - $queryBuilder = is\_array($value) ? $queryBuilder->whereIn($parameters\[1\], $value) : $queryBuilder->where($parameters\[1\], $value); - - $queryBuilder->where($parameters\[2\], $validator->getData()\[$parameters\[2\]\]); - - $queryResult = $queryBuilder->get(); - - return $queryResult->isEmpty(); - }, 'Duplicated record. This record has composite ID and it must be unique.'); + + // Example of other custom validations... + Validator::extend('unique_composite', ...); } } ``` -Database Seeding ----------------- - -Apiato database seeding process does not rely on the Laravel’s default `database/seeders/DatabaseSeeder.php` anymore. and `Database\Seeders\DatabaseSeeder` will not be called during the seeding operations. Instead, you should put your seeders in the Ship or Containers seeders directory. +--- -* Remove the `database/seeders/DatabaseSeeder.php` file and move any seeding operations you might have been doing in it to the proper location like `Ship` or `Container` database seeders directories. - +## Database Seeding -Removed -------- +Apiato no longer uses Laravel’s `database/seeders/DatabaseSeeder.php`. Instead, place your seeders in the Ship or any Container’s `database/seeders` directory: -* `Apiato\Core\Abstracts\Middlewares\Http\ProfilerMiddleware` - -* `Apiato\Core\Middleware\Http\Authenticate` - - * Use `Illuminate\Auth\Middleware\Authenticate` instead - +- Remove `database/seeders/DatabaseSeeder.php` if present. +- Move your seeding logic into `Ship` or `Container` seeder classes. -Added ------ +--- -* Copy `ValidateAppId` middleware from [Apiato](https://github.com/apiato/apiato/blob/13.x/app/Ship/Middleware/ValidateAppId.php) to your `app/Ship/Middleware` directory - +## Removed Items -Miscellaneous -------------- +- `Apiato\Core\Abstracts\Middlewares\Http\ProfilerMiddleware` +- `Apiato\Core\Middleware\Http\Authenticate` + Use `Illuminate\Auth\Middleware\Authenticate` instead. -We also encourage you to view the changes in the [apiato/apiato](https://github.com/apiato/apiato) and [apiato/core](https://github.com/apiato/core) GitHub repositories. While many of these changes are not required, you may wish to keep these files in sync with your application. Some of these changes will be covered in this upgrade guide, but others, such as changes to configuration files or comments, will not be. You can easily view the changes with the [GitHub comparison tool](https://github.com/apiato/apiato/compare/12.x...13.x) and choose which updates are important to you. +--- -Optional -======== +## Added Items -Namespaces ----------- +- Copy the new `ValidateAppId` middleware from [Apiato 13.x](https://github.com/apiato/apiato/blob/13.x/app/Ship/Middleware/ValidateAppId.php) into `app/Ship/Middleware` if you need this feature. -Rename these directories to be in sync with Apiato directory names +--- -* `app/Ship/Middlewares` → `app/Ship/Middleware` - -* `app/Ship/Parents/Middlewares → app/Ship/Parents/Middleware` - +## Miscellaneous -DRAFT +We recommend reviewing changes in [apiato/apiato](https://github.com/apiato/apiato) and [apiato/core](https://github.com/apiato/core) repositories between versions 12.x and 13.x, using GitHub’s comparison tools. Not all changes are mandatory. Some involve configuration or comments you may wish to sync: -* ShipProvider → renamed to → ShipServiceProvider - -* rename your Container’s and Ship `MainServiceProvider` to `ServiceProvider` - +- [Comparison for apiato/apiato](https://github.com/apiato/apiato/compare/12.x...13.x) -Testing -------- +--- -To generate fake data use the Laravel’s `fake` helper function instead of `$this->faker` property. +## Optional -* Remove the `$this->faker` setup from your parent TestCase. I really recommend this. - +### Namespaces -Remove any Apiato old code from your `App\Ship\Parents\Tests\TestCase` abstract class. You don't need any of that setups anymore. But keep your custom logics in there of course! +Consider renaming these directories for consistency with the new Apiato structure: -```php -// Remove the commented lines -// Your class might be slightly different +- `app/Ship/Middlewares` → `app/Ship/Middleware` +- `app/Ship/Parents/Middlewares` → `app/Ship/Parents/Middleware` -namespace App\Ship\Parents\Tests; +### Testing -use Apiato\Core\Testing\TestCase as AbstractTestCase; -use App\Ship\Enums\AuthGuard; -use Faker\Generator; -use Illuminate\Contracts\Console\Kernel as ApiatoConsoleKernel; -use Illuminate\Foundation\Application; -use Illuminate\Foundation\Testing\LazilyRefreshDatabase; +- Use Laravel’s `fake()` helper for generating fake data instead of `$this->faker`. +- Remove old Apiato-specific code from `App\Ship\Parents\Tests\TestCase`. Keep any custom logic you still need. -abstract class TestCase extends AbstractTestCase -{ - use LazilyRefreshDatabase; - - // protected Generator $faker; - - // public function createApplication(): Application - // { - // $app = require \_\_DIR\_\_ . '/../../../../bootstrap/app.php'; - // - // $app->make(ApiatoConsoleKernel::class)->bootstrap(); - // - // // create an instance of faker and make it available in all tests - // $this->faker = $app->make(Generator::class); - // - // return $app; - // } -} +**Example**: +```php +// Remove all code that's no longer necessary for Apiato testing +// e.g., makeCall, transform method usage, setUp methods from older versions, etc. ``` -Application Files ------------------ +### Project Root Files -Sync your project root files with Apiato [13.x](https://github.com/apiato/apiato/tree/13.x) branch -The easiest way to do it is to just copy, paste and overwrite the new files on your current files and then check the difference in `git` and adjust them accordingly. +Sync your project’s root files with Apiato [13.x](https://github.com/apiato/apiato/tree/13.x), then check your changes with Git. This may include: -* /configs - -* artisan - -* package.json - -* phpunit.xml - -* vite.config.js - -* etc… - +- `/configs` +- `artisan` +- `package.json` +- `phpunit.xml` +- `vite.config.js` +- …and more. -Also don’t forget to add all the newly added files that might not be present in your current project. for example `tailwind.config.js`. +Add any new files (e.g., `tailwind.config.js`) that your project may be missing. -Upgrade Utilities ------------------ +--- + +## Upgrade Utilities ### Legacy Bridge +If you need to gradually transition away from removed Apiato features, the Legacy Bridge can temporarily restore them. + #### Testing -You can use the `TestCaseTrait` on your parent TestCase to get access to all the removed testing methods in your tests classes. +Add `TestCaseTrait` to your parent TestCase: ```php namespace App\Ship\Parents\Tests; @@ -939,9 +739,6 @@ use Illuminate\Foundation\Testing\LazilyRefreshDatabase; abstract class TestCase extends AbstractTestCase { - use TestCaseTrait; - - // if you use "LazilyRefreshDatabase" trait use this instead to resolve method conflict use LazilyRefreshDatabase; use TestCaseTrait { TestCaseTrait::afterRefreshingDatabase insteadof LazilyRefreshDatabase; @@ -951,7 +748,7 @@ abstract class TestCase extends AbstractTestCase #### Request -You can use the `RequestTrait` on your parent Request to get access to all the removed methods in your request classes. +Add `RequestTrait` to your parent Request to keep removed methods: ```php namespace App\Ship\Parents\Requests; @@ -967,181 +764,27 @@ abstract class Request extends AbstractRequest ### Rector Rules -We are providing some rector custom rules to help you with the upgrade. Read about Rector [here](https://getrector.com/). -You can get the custom rules via Composer: - -`composer require --dev mohammad-alavi/apiato-rector:dev-latest` - -TODO - -// do we need to add versions for the required? check their docs. -composer required-dev mohammad-alavi/apiato-rector -composer required-dev rector/rector - -`RefactorHttpExceptionRector` look at GESG rector configs and update the docs. - -1. \->withConfiguredRule(RefactorHttpExceptionRector::class, \[ - 'parent\_class' => \App\Ship\Parents\Exceptions\HttpException::class, - \]); - - -* Only refactors exceptions that are extending `App\Ship\Parents\Exceptions\HttpException` - - * Can be configured to look for another parent - -* Cannot handle named parameters, if you used named params when instantiating the exception - -* Must have both `$code` and `$message` properties set on the exception class - -* Cannot refactor `MyException::class` and will skip them - - * e.g, `throw_if(true, MyException::class);` - - -`TransformMethodToResponseCreateRector` - -DRAFT ------ - -Remove all Apiato middleware under `app/Ship/Middleware` and/or if you have customized them, do your customization via the `bootstrap/app.php` (refer to Laravel 11 [docs](https://laravel.com/docs/11.x/middleware#registering-middleware) to learn how to do it). Do the same for any custom middleware you have added in the `app/Ship/HttpKernel` since `HttpKernel` is no longer used. - -Removed - -* `App\Ship\Kernels` directory and all classes within it. - -* `App\Ship\Exceptions\Handlers\ExceptionsHandler`. All your custom exception handing configurations must be done via `bootstrap/app.php` now. - -* string method fix removed [https://laravel.com/docs/10.x/migrations#index-lengths-mysql-mariadb](https://laravel.com/docs/10.x/migrations#index-lengths-mysql-mariadb) - -* Core exceptions are renamed. update your code if u use them. - - * some are also deleted - -* `addRequestCriteria` method updated and doesn't accept repository as first param anymore - - * you should use the `addRequestCriteria` on the repository - -* remind them that ship seeders are not loaded by default. - - * seeder command removed. you can add it easily to your project. give link to repo. - - * config also removed - -* possible BC if resource key is passed → Transformer methods parameter type-hint added - - * nullableItem - - * item - - * collection - -* Possible BC if is overridden by user: ResponseHelper::`setResponseContent`() now has a return type of `string|false`. It is used in tests. - - * also `endpoint($endpoint)` → `endpoint(string $endpoint)`; - -* BC: `SeederLoaderTrait` removed. remove from Apiato DatabaseSeeder - -* BC: trait paths and directory change - -* seeders are removed from core → deployment/testing. added to Apiato. - - * also configs are removed from apiato.php - -* apiato.php config - - * write about all the removed configs, check core config - - * BC: API\_PREFIX=/ config and env var is removed. - - * you can configure it via Apiato:confiugre() in bootstrap/app.php - - * BC: `enable_version_prefix` config removed - - * you can configure it via Apiato:confiugre() in bootstra/app.php - - * `debug`/`API_DEBUG` removed. since this feature has been provided by the custom exception handing and we dont have it anymore. so it is useless. - -* HashIds trait removed from Core, if you used $this->encode/decode methods, you have to replace them with the new hashids()->encode/decode() helper or hashIds::encode/decode() facade. - -* $request->all() - - * no longer has url params in it. But url params still gets decoded if they are present in the `decode` array - - * Url params can still be retrieved via - - * $request->param\_name e,g,. $request->id - - * $request->input($param) - - * $request->route($param) - - * param retrieved by any of the above ways still will be decoded if it is present in the `decode` array. - -* $request->check() removed. call method like noraml humans `return $this->hasAccess();` - - * also document all other removed methods from the `Request` - -* should use either route model binding or the `decode` array. using both results in an exception. - - * you can mix them tho. `decode` some ids and use binding for others. - -* makeCall removed +Use [Rector](https://getrector.com) for automated refactoring. You can install custom Apiato rules via: -```php -$response = $this->patchJson(URL::action(UpdateUserController::class, $user->getHashedKey()), $data); -$response = $this->injectId($user->id, replace: '{user\_id}')->makeCall($data); -``` - -* config: admin\_role removed - -* request include - - * default and available includes must match a relation name on the model - - * \_ - chars are accepted. name must be able to be camelized using Str::camel then match a relation method on the model - - * default includes must be eager loaded manually - - * cannot mix csv and arrray include query param. - - * wrong - - * `['books,children.books']` - - * right - - * `'books,children.books'` or `['books', 'children.books']` - -* request field sets - This feature is disabled by default now you can enable it via fractal config. -```php -'auto\_fieldsets' => \[ - 'enabled' => true, - 'request\_key' => 'fields', // query parameter name used to filter the reponse -\], +```bash +composer require --dev mohammad-alavi/apiato-rector:dev-latest ``` - - -For Release Notes ------------------ -`SanitizerTrait` which was providing the `sanitizeInput` to the Request, has been removed. -`sanitizeInput` is now available as macro named `sanitize` on the Request. The sanitization behavior has not been changed, so you just need to refactor it’s usages. +Also ensure you have Rector itself: -* refactor `->sanitizeInput()` usages to `->sanitize()` - - -Notes ------ - -It seems like that the `array` rule was not being applied correctly before, for example +```bash +composer require --dev rector/rector +``` -`'permission_ids' => 'array|required',` +- **`RefactorHttpExceptionRector`** + Helps refactor exception classes to the new HTTP exception signature. -If we passed it this, we wouldn’t get any validation errors but now we do get `The permission ids field must be an array.` + ```php + ->withConfiguredRule(RefactorHttpExceptionRector::class, [ + 'parent_class' => \App\Ship\Parents\Exceptions\HttpException::class, + ]); + ``` +- **`TransformMethodToResponseCreateRector`** + Converts `$this->transform(...)` calls to `Response::create(...)`. -```php -$data = \[ - 'permission\_ids' => $permission->getHashedKey(), -\]; -``` +For more details, see the Rector documentation and any instructions in the [Apiato Rector rules repository](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). From 2a4f2c0f22aeef288e2817d3d58ef569aaa6fad5 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sun, 30 Mar 2025 20:08:56 +0330 Subject: [PATCH 03/91] docs: laravel passport --- docs/prologue/upgrade-guide.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index c4e0854a0..cac2c0946 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -252,17 +252,17 @@ All service providers’ `register` and `boot` methods are now invoked independe ## Laravel Passport -### Migration Changes +### Migration Adjustments +Passport 12.0 no longer loads its own migrations automatically. -Passport 12.0 no longer loads its migrations by default. You must manually copy them from Apiato’s [13.x branch](https://github.com/apiato/apiato/tree/13.x/app/Containers/AppSection/Authentication/Data/Migrations) into your project: +Copy Passport migrations from the [Apiato 13.x branch](https://github.com/apiato/apiato/tree/13.x/app/Containers/AppSection/Authentication/Data/Migrations) into your application +(create the `Data/Migrations` directory if it doesn’t exist). -1. Create a `Data/Migrations` directory if you don’t already have one: - `app/Containers/AppSection/Authentication/Data/Migrations` -2. Copy the Passport migrations from the 13.x branch to that directory. +### Enabling the Password Grant Type -### Password Grant Type +As of Passport 12.0, the password grant is disabled by default. -As of Passport 12.0, the **password grant type is disabled** by default. Enable it by calling `Passport::enablePasswordGrant()` in the `boot` method of one of your application’s service providers: +Enable it by calling `enablePasswordGrant` in the `boot` method of one of your service providers: ```php public function boot(): void @@ -271,8 +271,6 @@ public function boot(): void } ``` ---- - ## Carbon 3 In Carbon v3, PHPDoc annotations have been converted to real types. Methods that previously accepted different argument types may now throw a `TypeError`. From 2b7f6740232fccb9563f8abb2c9400c1e2926e15 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sun, 30 Mar 2025 20:12:20 +0330 Subject: [PATCH 04/91] Update upgrade-guide.md --- docs/prologue/upgrade-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index cac2c0946..08a06d447 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -287,9 +287,9 @@ To fix it, explicitly cast the string to an integer: Passport::tokensExpireIn(Carbon::now()->addMinutes((int)config('apiato.api.expires-in'))); ``` +:::info Review Carbon’s [release notes](https://github.com/briannesbitt/Carbon/releases/tag/3.0.0) and [documentation](https://carbon.nesbot.com/docs/#api-carbon-3) for more details. - ---- +::: ## Value Objects From a4d4606b6ff0c1135c70bc7657fc46bd51869ec8 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sun, 30 Mar 2025 20:21:25 +0330 Subject: [PATCH 05/91] docs: value objects --- docs/prologue/upgrade-guide.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 08a06d447..b9e5673a7 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -293,24 +293,25 @@ Review Carbon’s [release notes](https://github.com/briannesbitt/Carbon/release ## Value Objects -### Removed Trait +### HasResourceKeyTrait -`Apiato\Core\Traits\HasResourceKeyTrait` has been removed from the Core Value Object (`Apiato\Core\Values\Value`). +`Apiato\Core\Traits\HasResourceKeyTrait` has been removed from the Core Value Object (`Apiato\Core\Values\Value`) and renamed to `Apiato\Http\Resources\HasResourceKey`. -- If you relied on the `getResourceKey` method, add that trait and the `Apiato\Http\Resources\ResourceKeyAware` interface to your **Ship Parent VO** class: +If your Value Objects are relying on the `HasResourceKeyTrait`, +you need to refactor them to use the new `HasResourceKey` trait and implement the `ResourceKeyAware` interface. - ```php - use Apiato\Core\Values\Value as AbstractValue; - use Apiato\Http\Resources\HasResourceKey; - use Apiato\Http\Resources\ResourceKeyAware; - - abstract class Value extends AbstractValue implements ResourceKeyAware - { - use HasResourceKey; - } - ``` +```php +use Apiato\Core\Values\Value as AbstractValue; +use Apiato\Http\Resources\HasResourceKey; +use Apiato\Http\Resources\ResourceKeyAware; + +abstract class Value extends AbstractValue implements ResourceKeyAware +{ + use HasResourceKey; +} +``` -### Readonly +### Readonly Value Objects Value Objects are now `readonly`. From f72bec550c0fddf27a1f20043acaf70d20c9dc03 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sun, 30 Mar 2025 20:38:40 +0330 Subject: [PATCH 06/91] docs: value objects --- docs/prologue/upgrade-guide.md | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index b9e5673a7..53cd2a585 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -305,7 +305,7 @@ use Apiato\Core\Values\Value as AbstractValue; use Apiato\Http\Resources\HasResourceKey; use Apiato\Http\Resources\ResourceKeyAware; -abstract class Value extends AbstractValue implements ResourceKeyAware +abstract readonly class Value extends AbstractValue implements ResourceKeyAware { use HasResourceKey; } @@ -313,23 +313,9 @@ abstract class Value extends AbstractValue implements ResourceKeyAware ### Readonly Value Objects -Value Objects are now `readonly`. +`Apiato\Core\Values\Value` is now declared as `readonly`. -Add the `readonly` keyword to your parent Value object in `App\Ship\Parents\Values`: - -```php -use Apiato\Core\Values\Value as AbstractValue; - -// Before -abstract class Value extends AbstractValue {} - -// After -abstract readonly class Value extends AbstractValue {} -``` - -Refactor all Value Objects that extend the parent Value object to also include `readonly`. - ---- +Add the `readonly` keyword to your parent Value Object class and all Value Objects that extend it. ## Testing From 6ca000512f518c287b42f6e54b5fdcb4d8f2a723 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sun, 30 Mar 2025 20:48:12 +0330 Subject: [PATCH 07/91] docs: request --- docs/prologue/upgrade-guide.md | 65 ++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 53cd2a585..51914a4be 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -319,37 +319,44 @@ Add the `readonly` keyword to your parent Value Object class and all Value Objec ## Testing -Apiato has simplified its testing approach so you can test using “the Laravel way.” Many custom Apiato test methods have been removed: +The testing utilities provided by Apiato have been simplified to embrace Laravel’s testing approach. +The following methods are no longer available: - `makeCall` - `injectId` - `endpoint` -- ...and others +- ...and others TODO add other methods -If you have a large codebase and need a gradual upgrade, use the [Apiato Legacy Bridge](#upgrade-utilities). It includes tools to restore old functionality temporarily. +:::tip +For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#upgrade-utilities). +::: -### `LazilyRefreshDatabase` +### LazilyRefreshDatabase Trait -The `LazilyRefreshDatabase` trait is no longer forced in the Core parent TestCase. If you want to use it, explicitly add it to `App\Ship\Parents\Tests\TestCase`. +The `LazilyRefreshDatabase` trait has been removed from the Core parent TestCase. ---- +Add `LazilyRefreshDatabase` to your `App\Ship\Parents\Tests\TestCase` if you require this functionality. ## Request -If your codebase is large and you need to upgrade gradually, the [Apiato Legacy Bridge](#upgrade-utilities) can help. +:::tip +For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#upgrade-utilities). +::: ### Authorization All custom authorization properties and methods have been removed: - - `$access` - `hasAccess` - `hasAnyPermissionAccess` - `hasAnyRoleAccess` - `check` -If `$access` was on your Request class, it has no effect now. Refactor your requests to use [Laravel Policies](https://laravel.com/docs/11.x/authorization#creating-policies): +Use [Laravel Policies](https://laravel.com/docs/11.x/authorization#creating-policies) for authorization. +Remove the `$access` property from your request classes. + +**Example Conversion:** ```php // before use App\Ship\Parents\Requests\Request as ParentRequest; @@ -382,51 +389,47 @@ final class DeleteUserRequest extends ParentRequest ### URL Parameter Validation -`$urlParameters` and its getter (`getUrlParametersArray`) are removed. **Url parameters no longer appear in `rules()`.** +The `$urlParameters` property and the `getUrlParametersArray` method have been removed. +URL parameters are no longer available for validation in the `rules` method. -- Remove any URL parameter validation you perform in `rules()`. -- Remove the `$urlParameters` property. +- Remove validations based on URL parameters. +- Remove any reference to the `$urlParameters` property. - Remove calls to `getUrlParametersArray`. -When a user provides a bad URL parameter, they’ll now receive a `404 Not Found` instead of a `422 Unprocessable Entity`. +:::note +Note that invalid URL parameters now result in a 404 error rather than a 422 error. +::: ### Hashed ID Decoding -The `$decode` property still decodes URL parameters automatically, **even though** `$urlParameters` is gone: +The `$decode` property now also decodes URL parameters automatically. ```php // before -protected array $decode = [ - 'id', -]; - -// was required -protected array $urlParameters = [ - 'id', -]; +protected array $decode = ['id']; +protected array $urlParameters = ['id']; // after -protected array $decode = [ - 'id', -]; - -// $urlParameters is no longer needed +protected array $decode = ['id']; +// $urlParameters is no longer needed and +// $request->id will return the decoded value. ``` +TODO: are decoded values still available in the all() method? Or they have to be pulled from the route? You can still retrieve decoded URL parameters via `$request->id`, `$request->input('id')`, or `$request->route('id')`. ### Removed Methods +TODO: check that we haven't missed any methods. +The following methods have been removed from requests: - `injectData` - `withUrlParameters` - `mapInput` - `getInputByKey` -### `sanitizeInput` Method - -`sanitizeInput` has been **renamed** to `sanitize`. +### Sanitization Method ---- +`sanitizeInput` has been renamed to `sanitize`. ## Error Handling From a9ffd9a50dc1050d82e158a48d3058e792c18159 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sun, 30 Mar 2025 21:24:07 +0330 Subject: [PATCH 08/91] docs: exceptions --- docs/prologue/upgrade-guide.md | 53 +++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 51914a4be..8da2647ec 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -432,49 +432,54 @@ The following methods have been removed from requests: `sanitizeInput` has been renamed to `sanitize`. ## Error Handling - -Most Apiato custom error-handling logic has been removed. +All Apiato custom error-handling logics has been removed. ### Removed Methods on Exceptions - - `debug` - `withErrors` - `getErrors` -These methods were previously part of the [Core Exception](https://github.com/apiato/core/blob/8.x/src/Abstracts/Exceptions/Exception.php). They are no longer available. +### ExceptionsHandler -### `ExceptionsHandler` +The custom `App\Ship\Exceptions\Handlers\ExceptionsHandler` is no longer used. -`App\Ship\Exceptions\Handlers\ExceptionsHandler` is no longer used. Remove it and configure your exception handling in `bootstrap/app.php`. +Remove this class and configure exception handling in `bootstrap/app.php` file. ### HTTP vs. Non-HTTP Exceptions +Exceptions are now divided into two groups: **HTTP Exceptions** and **Non-HTTP Exceptions**. -Exceptions are now split into two categories: HTTP and non-HTTP. +Create a parent HTTP exception class in `app/Ship/Parents/Exceptions/HttpException.php`: -1. Create a `HttpException` class in `app/Ship/Parents/Exceptions`: - ```php - namespace App\Ship\Parents\Exceptions; +```php +namespace App\Ship\Parents\Exceptions; - use Apiato\Core\Exceptions\HttpException as AbstractException; +use Apiato\Core\Exceptions\HttpException as AbstractException; - abstract class HttpException extends AbstractException - { - } - ``` - You now have two parent classes: `Exception` (non-HTTP) and `HttpException` (HTTP). +abstract class HttpException extends AbstractException {} +``` + +You now have two parent classes: `Exception` (non-HTTP) and `HttpException` (HTTP). -2. Make sure your HTTP exceptions extend `App\Ship\Parents\Exceptions\HttpException`, and your non-HTTP exceptions extend `App\Ship\Parents\Exceptions\Exception`. +Update your custom exceptions: +- Extend `App\Ship\Parents\Exceptions\HttpException` for HTTP errors. +- Extend `App\Ship\Parents\Exceptions\Exception` for non-HTTP errors. ### Exception Instantiation -Many exceptions now require constructor parameters. For example, calling `new NotFoundHttpException()` with no arguments no longer works. You might need to pass `$message` or `$code`. +Exceptions now require mandatory constructor parameters. +For example, calling `new NotFoundHttpException()` with no arguments no longer works. +You have to pass the `$message` and the `$code` arguments. -If this is cumbersome, see [Apiato Rector Rules](#upgrade-utilities) for automatic refactoring. +Refactor your exception instantiations accordingly. -### Removed Exceptions +:::tip Automate this process using Rector +See [Upgrade Utilities](#upgrade-utilities) for automatic refactoring utilities. +::: -All exceptions under `Apiato\Core\Exceptions` have been removed. If you used them directly, remove and replace them: +### Removed Core Exceptions +All exceptions under the `Apiato\Core\Exceptions` namespace have been removed. +Remove their usages from your application. - `Apiato\Core\Exceptions\AuthenticationException` - `Apiato\Core\Exceptions\GeneratorErrorException` - `Apiato\Core\Exceptions\IncorrectIdException` @@ -486,9 +491,9 @@ All exceptions under `Apiato\Core\Exceptions` have been removed. If you used the - `Apiato\Core\Exceptions\WrongConfigurationsException` - `Apiato\Core\Exceptions\WrongEndpointFormatException` -**Note**: Apiato now returns `401` instead of `403` when a user is unauthenticated (matching Laravel’s default behavior). - ---- +:::note +Apiato now returns `401` instead of `403` when a user is unauthenticated (matching Laravel’s default behavior). +::: ## Response From 2b4e29422151e4508d68e586f5affbd87501cb4a Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 11:34:44 +0330 Subject: [PATCH 09/91] docs: response --- docs/prologue/upgrade-guide.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 8da2647ec..7b7a7b973 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -473,7 +473,7 @@ You have to pass the `$message` and the `$code` arguments. Refactor your exception instantiations accordingly. :::tip Automate this process using Rector -See [Upgrade Utilities](#upgrade-utilities) for automatic refactoring utilities. +See [Upgrade Utilities](#upgrade-utilities) for automated refactoring utilities. ::: ### Removed Core Exceptions @@ -497,12 +497,19 @@ Apiato now returns `401` instead of `403` when a user is unauthenticated (matchi ## Response -### Transforming Responses +### Transformation -The `$this->transform` method in API Controllers is removed. Use the **`Apiato\Support\Facades\Response`** facade instead. +The `$this->transform` method in API Controllers is removed. Use the `Apiato\Support\Facades\Response` facade instead. +TODO: write the docs and link it here Its API closely mirrors the old `$this->transform` methods. Refer to the new `Response` facade documentation for details. +- Replace all `$this->transform` calls with the Response facade. +- Update your `app/Ship/Configs/fractal.php` file to use the Apiato Response class + ```php + 'fractal_class' => \Apiato\Http\Response::class + ``` + **Example**: ```php // before @@ -514,18 +521,13 @@ use Apiato\Support\Facades\Response; return Response::create($data, Transformer::class); ``` -You can automate these changes using the [TransformMethodToResponseCreateRector](#upgrade-utilities). - -### Fractal - -In `app/Ship/Configs/fractal.php`, update the `fractal_class` to: - -```php -'fractal_class' => \Apiato\Http\Response::class -``` +:::tip Automate this process using Rector +See [Upgrade Utilities](#upgrade-utilities) for automated refactoring utilities. +::: -### Filtering Responses +### Filtering +TODO: write the docs and link it here The approach for filtering responses has changed. Refer to the new documentation on filtering responses, then update your code accordingly. --- From 9c799e42a48db50109617de2ad6ae3274866eda9 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 11:50:16 +0330 Subject: [PATCH 10/91] docs: repository --- docs/prologue/upgrade-guide.md | 42 ++++++++++++---------------------- 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 7b7a7b973..cc819c881 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -536,52 +536,38 @@ The approach for filtering responses has changed. Refer to the new documentation Some repository methods are strongly typed or behave differently. -### `boot()` +#### `boot` Method -`boot` now has a `void` return type: +`boot` now has a `void` return type. -```php -public function boot(): void -{ - // ... -} -``` +If you have overridden the `boot` method, adjust your method signature accordingly. -### `getById` → `findOrFail` +#### `getById` Method `getById` has been renamed to `findOrFail`. -### `delete` +#### `delete` Method -`delete` returns `bool` or throws an exception. If you have overridden `delete`, add the `bool` return type: +`delete` method now returns `bool` or throws an exception. -```php -public function delete($id): bool -{ - // ... -} -``` +If you have overridden the `delete` method, adjust your method signature accordingly. -### `create` +#### `create` Method `create` now throws `Apiato\Core\Repositories\Exceptions\ResourceCreationFailed` instead of `\Exception`. -### `update` +#### `update` Method `update` now throws `Apiato\Core\Repositories\Exceptions\ResourceNotFound` instead of `\Illuminate\Database\Eloquent\ModelNotFoundException`. -### `find` +#### `find` Method `find` now returns `null` if no result is found (mirroring Laravel’s default `find` behavior). Previously, it might have thrown an exception. -- Refactor calls to `find` into `findOrFail`, or -- Retain old behavior by using the Apiato Legacy Bridge. - -### Keeping Old Behavior - -To keep the old behavior of the `find`, `create`, and `update` methods, use the [Legacy Bridge](#upgrade-utilities) `RepositoryTrait`. - ---- +:::info Maintaining Previous Behavior +To maintain the previous behavior of the `find`, `create`, and `update` methods, +use the [Legacy Bridge](#upgrade-utilities). +::: ## Hash IDs From 465b04c0ba3d11d22ea0039c5d6ef0c284e2ed5a Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 11:52:38 +0330 Subject: [PATCH 11/91] docs: hash ids --- docs/prologue/upgrade-guide.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index cc819c881..4ec0718dc 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -571,17 +571,16 @@ use the [Legacy Bridge](#upgrade-utilities). ## Hash IDs -`Apiato\Core\Traits\HashIdTrait` is removed. Use the `hashids()` helper function directly: +`Apiato\Core\Traits\HashIdTrait` is removed. Use the `hashids()` helper function instead. - `$this->decode(...)` → `hashids()->decode(...)` - `$this->encode(...)` → `hashids()->encode(...)` - `Hashids::decode(...)` → `hashids()->decode(...)` - `Hashids::encode(...)` → `hashids()->encode(...)` -**Important**: +:::warning `decode` now can return an `int` or an `array` depending on the input. Previously, it always returned an array. - ---- +::: ## Jobs From c4fc5d9490c175449b6182811ab05c635ca1a746 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 11:58:20 +0330 Subject: [PATCH 12/91] docs: jobs --- docs/prologue/upgrade-guide.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 4ec0718dc..2fdfdf852 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -584,7 +584,9 @@ use the [Legacy Bridge](#upgrade-utilities). ## Jobs -`Apiato\Core\Jobs\Job` no longer implements interfaces or traits. Move them to your Ship’s parent Job class if needed. For example: +The Core Job class (Apiato\Core\Jobs\Job) no longer includes any traits or implements interfaces. + +Add necessary traits and interfaces in your Ship’s parent Job class. For example: ```php namespace App\Ship\Parents\Jobs; @@ -603,8 +605,6 @@ abstract class Job extends AbstractJob implements ShouldQueue } ``` ---- - ## Validation `no_spaces` is no longer included by default. If you used it, you can: From 8bb931d9e2b18747c9a44c82d14ab337e60e99b2 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 16:24:18 +0330 Subject: [PATCH 13/91] docs: jobs --- docs/prologue/upgrade-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 2fdfdf852..e9af8f989 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -586,7 +586,7 @@ use the [Legacy Bridge](#upgrade-utilities). The Core Job class (Apiato\Core\Jobs\Job) no longer includes any traits or implements interfaces. -Add necessary traits and interfaces in your Ship’s parent Job class. For example: +Add the necessary traits and interfaces in your Ship’s parent Job class. For example: ```php namespace App\Ship\Parents\Jobs; From bb8e09305812cb1f40bb7955d0273d85558ed90c Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 16:27:01 +0330 Subject: [PATCH 14/91] docs: validation --- docs/prologue/upgrade-guide.md | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index e9af8f989..7e6085030 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -607,32 +607,11 @@ abstract class Job extends AbstractJob implements ShouldQueue ## Validation -`no_spaces` is no longer included by default. If you used it, you can: +The custom `no_spaces` validation rule has been removed. -- Remove references to it, or -- Register it manually in your own service provider. - You can find the source [here](https://github.com/apiato/core/blob/8.x/src/Traits/ValidationTrait.php). +Remove its usage or register it manually in the boot method of your service provider. -**Example**: -```php -use Illuminate\Support\Facades\Validator; -use App\Ship\Parents\Providers\ServiceProvider; - -class MyServiceProvider extends ServiceProvider -{ - public function boot(): void - { - Validator::extend('no_spaces', function ($attribute, $value) { - return preg_match('/^\S*$/u', $value); - }, 'String should not contain space.'); - - // Example of other custom validations... - Validator::extend('unique_composite', ...); - } -} -``` - ---- +See the [source code](https://github.com/apiato/core/blob/8.x/src/Traits/ValidationTrait.php) for reference. ## Database Seeding From 7ee290069934e1575ec1b7b9a4fd7e046716f4aa Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 16:28:27 +0330 Subject: [PATCH 15/91] Update upgrade-guide.md --- docs/prologue/upgrade-guide.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 7e6085030..30e1038f0 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -620,8 +620,6 @@ Apiato no longer uses Laravel’s `database/seeders/DatabaseSeeder.php`. Instead - Remove `database/seeders/DatabaseSeeder.php` if present. - Move your seeding logic into `Ship` or `Container` seeder classes. ---- - ## Removed Items - `Apiato\Core\Abstracts\Middlewares\Http\ProfilerMiddleware` From c2e04e5f292823496a42593414ceb99e3f5c2445 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 16:36:24 +0330 Subject: [PATCH 16/91] docs: testing --- docs/prologue/upgrade-guide.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 30e1038f0..a1993e0aa 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -91,11 +91,9 @@ In addition, update the following class name or namespace changes: | `Apiato\Core\Abstracts\Middlewares\Http\ProcessETagHeadersMiddleware` | `Apiato\Http\Middleware\ProcessETag` | | `Apiato\Core\Abstracts\Middlewares\Http\ValidateJsonContent` | `Apiato\Http\Middleware\ValidateJsonContent` | | `Apiato\Core\Abstracts\Providers\MainServiceProvider` | `Apiato\Core\Providers\ServiceProvider` | -| `Apiato\Core\Abstracts\Tests\PhpUnit\TestCase` | `Apiato\Core\Testing\TestCase` | ### Model Changes - - `Apiato\Core\Contracts\HasResourceKey` → `Apiato\Http\Resources\ResourceKeyAware` - `Apiato\Core\Traits\ModelTrait` → `Apiato\Core\Models\InteractsWithApiato` @@ -327,9 +325,8 @@ The following methods are no longer available: - `endpoint` - ...and others TODO add other methods -:::tip -For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#upgrade-utilities). -::: +### TestCase +The `Apiato\Core\Abstracts\Tests\PhpUnit\TestCase` class namespace has changed to `Apiato\Core\Testing\TestCase`. ### LazilyRefreshDatabase Trait @@ -337,6 +334,10 @@ The `LazilyRefreshDatabase` trait has been removed from the Core parent TestCase Add `LazilyRefreshDatabase` to your `App\Ship\Parents\Tests\TestCase` if you require this functionality. +:::tip +For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#upgrade-utilities). +::: + ## Request :::tip From ba714ba8eb1448e01202cc100e7652597012b6bd Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 17:59:41 +0330 Subject: [PATCH 17/91] Update upgrade-guide.md --- docs/prologue/upgrade-guide.md | 179 ++++++++++++--------------------- 1 file changed, 64 insertions(+), 115 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index a1993e0aa..4754d87cd 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -72,70 +72,11 @@ run the command a second time to ensure that all dependencies are correctly inst composer update ``` -## Namespaces & Class Renames - -Several Core namespaces and class names have changed: +## Abstract Namespace The Core abstract classes have been relocated from `Apiato\Core\Abstracts` to `Apiato\Core`. -Old: `Apiato\Core\Abstracts` -New: `Apiato\Core` - -In addition, update the following class name or namespace changes: - -| From | To | -|:-----------------------------------------------------------------------|:---------------------------------------------| -| `Apiato\Core\Abstracts\Commands\ConsoleCommand` | `Apiato\Core\Console\Command` | -| `Apiato\Core\Abstracts\Criterias` | `Apiato\Core\Criteria` | -| `Apiato\Core\Abstracts\Middlewares` | `Apiato\Core\Middleware` | -| `Apiato\Core\Abstracts\Middlewares\Http\ProcessETagHeadersMiddleware` | `Apiato\Http\Middleware\ProcessETag` | -| `Apiato\Core\Abstracts\Middlewares\Http\ValidateJsonContent` | `Apiato\Http\Middleware\ValidateJsonContent` | -| `Apiato\Core\Abstracts\Providers\MainServiceProvider` | `Apiato\Core\Providers\ServiceProvider` | - -### Model Changes - -- `Apiato\Core\Contracts\HasResourceKey` → `Apiato\Http\Resources\ResourceKeyAware` -- `Apiato\Core\Traits\ModelTrait` → `Apiato\Core\Models\InteractsWithApiato` - - **Example**: - ```php - // before - use Apiato\Core\Contracts\HasResourceKey; - use Apiato\Core\Traits\ModelTrait; - - class MyModel extends NotApiatoModel implements HasResourceKey { - use ModelTrait; - } - - // after - use Apiato\Core\Models\InteractsWithApiato; - use Apiato\Http\Resources\ResourceKeyAware; - - class MyModel extends NotApiatoModel implements ResourceKeyAware { - use InteractsWithApiato; - } - ``` - -- `Apiato\Core\Traits\HasResourceKeyTrait` → `Apiato\Http\Resources\HasResourceKey` - - **Example**: - ```php - // before - use Apiato\Core\Contracts\HasResourceKey; - use Apiato\Core\Traits\HasResourceKeyTrait; - - class MyModel implements HasResourceKey { - use HasResourceKeyTrait; - } - - // after - use Apiato\Http\Resources\HasResourceKey; - use Apiato\Http\Resources\ResourceKeyAware; - - class MyModel implements ResourceKeyAware { - use HasResourceKey; - } - ``` +Existing classes extending these abstract classes should be updated accordingly. ## App Configuration @@ -176,11 +117,16 @@ return Application::configure(basePath: $basePath) ->withCommands($apiato->commands()) ->withExceptions(static function (Exceptions $exceptions) {}) ->create(); - ``` ## Service Providers +The `Apiato\Core\Abstracts\Providers\MainServiceProvider` class has been removed. + +Existing service providers extending this class should be refactored +to extend `Apiato\Core\Providers\ServiceProvider` instead. +e.g, `App\Ship\Parents\Providers\ServiceProvider` + ### Autoloading All providers within the `Providers` directories of Containers and Ship are now autoloaded. @@ -248,6 +194,20 @@ All service providers’ `register` and `boot` methods are now invoked independe to `bootstrap/app.php` file as per [Laravel’s middleware registration documentation](https://laravel.com/docs/11.x/middleware#registering-middleware). Then, remove your old `MiddlewareServiceProvider` classes. +## Middleware + +The following classes have been moved or renamed: +| From | To | +|:-----------------------------------------------------------------------|:---------------------------------------------| +| `Apiato\Core\Abstracts\Middlewares` | `Apiato\Core\Middleware` | +| `Apiato\Core\Abstracts\Middlewares\Http\ProcessETagHeadersMiddleware` | `Apiato\Http\Middleware\ProcessETag` | +| `Apiato\Core\Abstracts\Middlewares\Http\ValidateJsonContent` | `Apiato\Http\Middleware\ValidateJsonContent` | + +The `Apiato\Core\Abstracts\Middlewares\Http\ProfilerMiddleware` class has been removed. + +The `Apiato\Core\Middleware\Http\Authenticate` class has been removed. +Use `Illuminate\Auth\Middleware\Authenticate` instead. + ## Laravel Passport ### Migration Adjustments @@ -256,7 +216,7 @@ Passport 12.0 no longer loads its own migrations automatically. Copy Passport migrations from the [Apiato 13.x branch](https://github.com/apiato/apiato/tree/13.x/app/Containers/AppSection/Authentication/Data/Migrations) into your application (create the `Data/Migrations` directory if it doesn’t exist). -### Enabling the Password Grant Type +### Password Grant As of Passport 12.0, the password grant is disabled by default. @@ -289,32 +249,35 @@ Passport::tokensExpireIn(Carbon::now()->addMinutes((int)config('apiato.api.expir Review Carbon’s [release notes](https://github.com/briannesbitt/Carbon/releases/tag/3.0.0) and [documentation](https://carbon.nesbot.com/docs/#api-carbon-3) for more details. ::: -## Value Objects +## ModelTrait -### HasResourceKeyTrait +The `Apiato\Core\Traits\ModelTrait` trait has been renamed +and moved to `Apiato\Core\Models\InteractsWithApiato`. -`Apiato\Core\Traits\HasResourceKeyTrait` has been removed from the Core Value Object (`Apiato\Core\Values\Value`) and renamed to `Apiato\Http\Resources\HasResourceKey`. +## ResourceKey -If your Value Objects are relying on the `HasResourceKeyTrait`, -you need to refactor them to use the new `HasResourceKey` trait and implement the `ResourceKeyAware` interface. +#### `HasResourceKey` Interface {#hasResourceKeyInterface} -```php -use Apiato\Core\Values\Value as AbstractValue; -use Apiato\Http\Resources\HasResourceKey; -use Apiato\Http\Resources\ResourceKeyAware; +The `Apiato\Core\Contracts\HasResourceKey` interface has been renamed +and moved to `Apiato\Http\Resources\ResourceKeyAware`. -abstract readonly class Value extends AbstractValue implements ResourceKeyAware -{ - use HasResourceKey; -} -``` +#### `HasResourceKey` Trait {#hasResourceKeyTrait} -### Readonly Value Objects +The `Apiato\Core\Traits\HasResourceKeyTrait` trait has been renamed +and moved to `Apiato\Http\Resources\HasResourceKey`. -`Apiato\Core\Values\Value` is now declared as `readonly`. +## Value Objects + +`Apiato\Core\Values\Value` abstract class is now declared as `readonly`. Add the `readonly` keyword to your parent Value Object class and all Value Objects that extend it. +[HasResourceKeyTrait](#hasResourceKeyTrait) has been removed from the Core Value Object (`Apiato\Core\Values\Value`). + +If your Value Objects are relying on the `HasResourceKeyTrait`, +you need to refactor them to use the new [HasResourceKey](#hasResourceKeyTrait) trait +and implement the [ResourceKeyAware](#hasResourceKeyInterface) interface. + ## Testing The testing utilities provided by Apiato have been simplified to embrace Laravel’s testing approach. @@ -325,19 +288,20 @@ The following methods are no longer available: - `endpoint` - ...and others TODO add other methods -### TestCase +:::tip +For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#upgrade-utilities). +::: + +#### `TestCase` Class + The `Apiato\Core\Abstracts\Tests\PhpUnit\TestCase` class namespace has changed to `Apiato\Core\Testing\TestCase`. -### LazilyRefreshDatabase Trait +#### `LazilyRefreshDatabase` Trait The `LazilyRefreshDatabase` trait has been removed from the Core parent TestCase. Add `LazilyRefreshDatabase` to your `App\Ship\Parents\Tests\TestCase` if you require this functionality. -:::tip -For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#upgrade-utilities). -::: - ## Request :::tip @@ -531,8 +495,6 @@ See [Upgrade Utilities](#upgrade-utilities) for automated refactoring utilities. TODO: write the docs and link it here The approach for filtering responses has changed. Refer to the new documentation on filtering responses, then update your code accordingly. ---- - ## Repository Some repository methods are strongly typed or behave differently. @@ -570,6 +532,10 @@ To maintain the previous behavior of the `find`, `create`, and `update` methods, use the [Legacy Bridge](#upgrade-utilities). ::: +### Criteria + +The `Apiato\Core\Abstracts\Criteria` class has been moved to `Apiato\Core\Criteria`. + ## Hash IDs `Apiato\Core\Traits\HashIdTrait` is removed. Use the `hashids()` helper function instead. @@ -621,27 +587,21 @@ Apiato no longer uses Laravel’s `database/seeders/DatabaseSeeder.php`. Instead - Remove `database/seeders/DatabaseSeeder.php` if present. - Move your seeding logic into `Ship` or `Container` seeder classes. -## Removed Items - -- `Apiato\Core\Abstracts\Middlewares\Http\ProfilerMiddleware` -- `Apiato\Core\Middleware\Http\Authenticate` - Use `Illuminate\Auth\Middleware\Authenticate` instead. - ---- - -## Added Items - -- Copy the new `ValidateAppId` middleware from [Apiato 13.x](https://github.com/apiato/apiato/blob/13.x/app/Ship/Middleware/ValidateAppId.php) into `app/Ship/Middleware` if you need this feature. +## Commands ---- +The `Apiato\Core\Abstracts\Commands\ConsoleCommand` class has been renamed +and moved to `Apiato\Core\Console\Command`. ## Miscellaneous -We recommend reviewing changes in [apiato/apiato](https://github.com/apiato/apiato) and [apiato/core](https://github.com/apiato/core) repositories between versions 12.x and 13.x, using GitHub’s comparison tools. Not all changes are mandatory. Some involve configuration or comments you may wish to sync: +We recommend +reviewing changes in [apiato/apiato](https://github.com/apiato/apiato) and [apiato/core](https://github.com/apiato/core) repositories between versions 12.x and 13.x and 8.x and 13.x respectively, +using GitHub’s comparison tools. +Not all changes are mandatory. +Some involve configuration or comments you may wish to sync: - [Comparison for apiato/apiato](https://github.com/apiato/apiato/compare/12.x...13.x) - ---- +- [Comparison for apiato/core](https://github.com/apiato/core/compare/8.x...13.x) ## Optional @@ -663,20 +623,9 @@ Consider renaming these directories for consistency with the new Apiato structur // e.g., makeCall, transform method usage, setUp methods from older versions, etc. ``` -### Project Root Files - -Sync your project’s root files with Apiato [13.x](https://github.com/apiato/apiato/tree/13.x), then check your changes with Git. This may include: +### Added Items -- `/configs` -- `artisan` -- `package.json` -- `phpunit.xml` -- `vite.config.js` -- …and more. - -Add any new files (e.g., `tailwind.config.js`) that your project may be missing. - ---- +- Copy the new `ValidateAppId` middleware from [Apiato 13.x](https://github.com/apiato/apiato/blob/13.x/app/Ship/Middleware/ValidateAppId.php) into `app/Ship/Middleware` if you need this feature. ## Upgrade Utilities From 14a4443a5647fb0e9211146e2827161369860c4f Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 18:57:39 +0330 Subject: [PATCH 18/91] Update upgrade-guide.md --- docs/prologue/upgrade-guide.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index 4754d87cd..b6e437939 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -686,11 +686,11 @@ composer require --dev rector/rector - **`RefactorHttpExceptionRector`** Helps refactor exception classes to the new HTTP exception signature. - ```php - ->withConfiguredRule(RefactorHttpExceptionRector::class, [ - 'parent_class' => \App\Ship\Parents\Exceptions\HttpException::class, - ]); - ``` +```php +->withConfiguredRule(RefactorHttpExceptionRector::class, [ + 'parent_class' => \App\Ship\Parents\Exceptions\HttpException::class, +]); +``` - **`TransformMethodToResponseCreateRector`** Converts `$this->transform(...)` calls to `Response::create(...)`. From e7d6f1db002b5437e68809208ff21bdc278cb2cd Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 4 Apr 2025 19:27:27 +0330 Subject: [PATCH 19/91] Update upgrade-guide.md --- docs/prologue/upgrade-guide.md | 148 ++++++++++++++++++--------------- 1 file changed, 79 insertions(+), 69 deletions(-) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.md index b6e437939..cc2d54575 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.md @@ -11,6 +11,85 @@ Follow the official [Laravel 11 upgrade guide](https://laravel.com/docs/11.x/upg This guide will walk you through upgrading Apiato and your project to the latest versions. +## Upgrade Utilities + +### Legacy Bridge + +The Legacy Bridge is a set of utilities to help you gradually upgrade your codebase. + +TODO: extract this doc to the legacy bridge repo and link the repo here. + +#### Testing + +To access removed testing methods, use the `TestCaseTrait` in your parent TestCase class: + +```php +namespace App\Ship\Parents\Tests; + +use Apiato\Core\Testing\TestCase as AbstractTestCase; +use App\Ship\Compatibility\Testing\TestCaseTrait; TODO change this after package is released +use Illuminate\Foundation\Testing\LazilyRefreshDatabase; + +abstract class TestCase extends AbstractTestCase +{ + use LazilyRefreshDatabase; + use TestCaseTrait { + TestCaseTrait::afterRefreshingDatabase insteadof LazilyRefreshDatabase; + } +} +``` + +#### Request + +To access removed Request methods, use the `RequestTrait` in your parent Request class: + +```php +namespace App\Ship\Parents\Requests; + +use Apiato\Core\Requests\Request as AbstractRequest; +use App\Ship\Compatibility\RequestTrait; TODO change this after package is released + +abstract class Request extends AbstractRequest +{ + use RequestTrait; +} +``` + +### Rector Rules + +Apiato provides custom Rector rules to help automate some aspects of the upgrade process. + +TODO: extract this doc to the rector rules repo and link the repo here. + +#### Setup + +Use [Rector](https://getrector.com) for automated refactoring. You can install custom Apiato rules via: + +For more details, see the Rector documentation and any instructions in the [Apiato Rector rules repository](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). + +```bash +composer require --dev mohammad-alavi/apiato-rector:dev-latest +``` + +Also ensure you have Rector itself: + +```bash +composer require --dev rector/rector +``` + +#### `RefactorHttpExceptionRector` + +Helps refactor exception classes to the new HTTP exception signature. + +```php +->withConfiguredRule(RefactorHttpExceptionRector::class, [ + 'parent_class' => \App\Ship\Parents\Exceptions\HttpException::class, +]); +``` +#### `TransformMethodToResponseCreateRector` + +Converts `$this->transform(...)` calls to `Response::create(...)`. + ## Updating Dependencies ### PHP 8.2.0 Required @@ -626,72 +705,3 @@ Consider renaming these directories for consistency with the new Apiato structur ### Added Items - Copy the new `ValidateAppId` middleware from [Apiato 13.x](https://github.com/apiato/apiato/blob/13.x/app/Ship/Middleware/ValidateAppId.php) into `app/Ship/Middleware` if you need this feature. - -## Upgrade Utilities - -### Legacy Bridge - -If you need to gradually transition away from removed Apiato features, the Legacy Bridge can temporarily restore them. - -#### Testing - -Add `TestCaseTrait` to your parent TestCase: - -```php -namespace App\Ship\Parents\Tests; - -use Apiato\Core\Testing\TestCase as AbstractTestCase; -use App\Ship\Compatibility\Testing\TestCaseTrait; -use Illuminate\Foundation\Testing\LazilyRefreshDatabase; - -abstract class TestCase extends AbstractTestCase -{ - use LazilyRefreshDatabase; - use TestCaseTrait { - TestCaseTrait::afterRefreshingDatabase insteadof LazilyRefreshDatabase; - } -} -``` - -#### Request - -Add `RequestTrait` to your parent Request to keep removed methods: - -```php -namespace App\Ship\Parents\Requests; - -use Apiato\Core\Requests\Request as AbstractRequest; -use App\Ship\Compatibility\RequestTrait; - -abstract class Request extends AbstractRequest -{ - use RequestTrait; -} -``` - -### Rector Rules - -Use [Rector](https://getrector.com) for automated refactoring. You can install custom Apiato rules via: - -```bash -composer require --dev mohammad-alavi/apiato-rector:dev-latest -``` - -Also ensure you have Rector itself: - -```bash -composer require --dev rector/rector -``` - -- **`RefactorHttpExceptionRector`** - Helps refactor exception classes to the new HTTP exception signature. - -```php -->withConfiguredRule(RefactorHttpExceptionRector::class, [ - 'parent_class' => \App\Ship\Parents\Exceptions\HttpException::class, -]); -``` -- **`TransformMethodToResponseCreateRector`** - Converts `$this->transform(...)` calls to `Response::create(...)`. - -For more details, see the Rector documentation and any instructions in the [Apiato Rector rules repository](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). From 47d17cd88cab647e5c52ccf18ab4b3c4304d6ead Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 5 Apr 2025 09:31:40 +0330 Subject: [PATCH 20/91] Update package-lock.json --- package-lock.json | 2388 ++++++++------------------------------------- 1 file changed, 408 insertions(+), 1980 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0f11f5809..a783c608c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,6 @@ "version": "1.17.9", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz", "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==", - "license": "MIT", "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", "@algolia/autocomplete-shared": "1.17.9" @@ -48,7 +47,6 @@ "version": "1.17.9", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz", "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==", - "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.17.9" }, @@ -60,7 +58,6 @@ "version": "1.17.9", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz", "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==", - "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.17.9" }, @@ -73,106 +70,98 @@ "version": "1.17.9", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz", "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==", - "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "node_modules/@algolia/client-abtesting": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.23.0.tgz", - "integrity": "sha512-AyZ+9CUgWXwaaJ2lSwOJSy+/w0MFBPFqLrjWYs/HEpYMzBuFfGNZ7gEM9a7h4j7jY8hSBARBl8qdvInmj5vOEQ==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.23.2.tgz", + "integrity": "sha512-EudQGeYEzviwqPH8WoqP5VTQssE/PW6sEdL0zzOyKt2bWnWoUp5Rnm67sCbxYDR44JpUchbkul0PfWrSYsBPjQ==", "dependencies": { - "@algolia/client-common": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "@algolia/client-common": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.23.0.tgz", - "integrity": "sha512-oeKCPwLBnTEPF/RWr0aaJnrfRDfFRLT5O7KV0OF1NmpEXvmzLmN7RwnwDKsNtPUHNfpJ6esP9xzkPEtJabrZ2w==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.23.2.tgz", + "integrity": "sha512-zmJrkZqWFu+ft+VRcttZZJhw5ElkhBtOArRzQOu9sRnrSSodBOdPRhAfvu8tG93Hv67wh5qQaTBwLxM58AxuMg==", "dependencies": { - "@algolia/client-common": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "@algolia/client-common": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.23.0.tgz", - "integrity": "sha512-9jacdC44vXLSaYKNLkFpbU1J4BbBPi/N7uoPhcGO//8ubRuVzigH6+RfK5FbudmQlqFt0J5DGUCVeTlHtgyUeg==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.23.2.tgz", + "integrity": "sha512-xaE6o4BMdqYBe0iB7JjX6G9/Qeqx6TSs9T4d6VJ0JHPsEyklSwIbKRiomPeYD7vzt2P4t45Io6QBhifOUP+0qg==", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.23.0.tgz", - "integrity": "sha512-/Gw5UitweRsnyb24Td4XhjXmsx8PxFzCI0oW6FZZvyr4kjzB9ECP2IjO+PdDq1A2fzDl/LXQ+u8ROudoVnXnQg==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.23.2.tgz", + "integrity": "sha512-F85hpMszbr5ZGt8gFdl7WOugELRF4z3R1nD9n3t7PZ/2alV7IR75UQY8/jMQDwij/lrnVaKbLeIvKKy6K7ncZw==", "dependencies": { - "@algolia/client-common": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "@algolia/client-common": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.23.0.tgz", - "integrity": "sha512-ivrEZBoXfDatpqpifgHauydxHEe4udNqJ0gy7adR2KODeQ+39MQeaT10I24mu+eylIuiQKJRqORgEdLZycq2qQ==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.23.2.tgz", + "integrity": "sha512-TuGaGKiQvQqFNR4c3Vdl+JBe6dkEPmRzVyIdWLrurOPEmFmVCKRxtSnLr0TVFl6de/JfDAXuchvtvLHFxv9P2A==", "dependencies": { - "@algolia/client-common": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "@algolia/client-common": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.23.0.tgz", - "integrity": "sha512-DjSgJWqTcsnlXEKqDsU7Y2vB/W/VYLlr6UfkzJkMuKB554Ia7IJr4keP2AlHVjjbBG62IDpdh5OkEs/+fbWsOA==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.23.2.tgz", + "integrity": "sha512-fg2tZf7Sf51Icjfrea0dnfbfwlJ7kXMcRsWSJN3DZhEi/Y4mMmK9L0Cq8sby6HDzxy5T8xEWNWC3TMx5FvrJ6w==", "dependencies": { - "@algolia/client-common": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "@algolia/client-common": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.23.0.tgz", - "integrity": "sha512-XAYWUYUhEG4OIdo/N7H/OFFRD9fokfv3bBTky+4Y4/q07bxhnrGSUvcrU6JQ2jJTQyg6kv0ke1EIfiTO/Xxb+g==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.23.2.tgz", + "integrity": "sha512-XiTjt0qgsJk9OqvDpMwTgUaPAYNSQcMILRfSYiorgiyc71yYM7Lq1vRSVxhB0m51mrViWj4rIR6kSiJRXebqvQ==", "dependencies": { - "@algolia/client-common": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "@algolia/client-common": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" @@ -181,85 +170,78 @@ "node_modules/@algolia/events": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", - "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", - "license": "MIT" + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" }, "node_modules/@algolia/ingestion": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.23.0.tgz", - "integrity": "sha512-ULbykzzhhLVofCDU1m/CqSzTyKmjaxA/z1d6o6hgUuR6X7/dll9/G0lu0e4vmWIOItklWWrhU2V8sXD0YGBIHg==", - "license": "MIT", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.23.2.tgz", + "integrity": "sha512-7ClIghvUFZTomBipD8Kor9Z5llcAM3lHUBG3VFOvUsOxOJcaMMONlBXyoFDfI1na+u14lVaGehY2oIEfY1eB0w==", "dependencies": { - "@algolia/client-common": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "@algolia/client-common": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.23.0.tgz", - "integrity": "sha512-oB3wG7CgQJQr+uoijV7bWBphiSHkvGX43At8RGgkDyc7Aeabcp9ik5HgLC1YDgbHVOlQI+tce5HIbDCifzQCIg==", - "license": "MIT", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.23.2.tgz", + "integrity": "sha512-kF7KKd0iIIlaD70flFS+8+DNxRvIzrG9A22iWG5LDX225Kl6pITroq+qIUweqqyyoqJBYuIXKZGDGtnahEwQxw==", "dependencies": { - "@algolia/client-common": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "@algolia/client-common": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.23.0.tgz", - "integrity": "sha512-4PWvCV6VGhnCMAbv2zfQUAlc3ofMs6ovqKlC/xcp7tWaucYd//piHg9CcCM4S0p9OZznEGQMRYPt2uqbk6V9vg==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.23.2.tgz", + "integrity": "sha512-nAgS2O5ww8J4fgW6GAiybAdr0uH7MV74srPdx51cPJRpQBEge4WnYBaOWx1/a53qI0xwNtQudnEyBGUzsSYaAw==", "dependencies": { - "@algolia/client-common": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "@algolia/client-common": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.23.0.tgz", - "integrity": "sha512-bacOsX41pnsupNB0k0Ny+1JDchQxIsZIcp69GKDBT0NgTHG8OayEO141eFalNmGil+GXPY0NUPRpx+5s4RdhGA==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.23.2.tgz", + "integrity": "sha512-yw6IzgQcwr4cZuoQCEoQui9G0rhVRGCyhPhW+gmrXe6oVr4qB50FV6mWGLA170+iqGVjPn/DVuOhExjBzcViTQ==", "dependencies": { - "@algolia/client-common": "5.23.0" + "@algolia/client-common": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.23.0.tgz", - "integrity": "sha512-tVNFREexJWDrvc23evmRgAcb2KLZuVilOIB/rVnQCl0GDbqIWJuQ1lG22HKqvCEQFthHkgVFGLYE74wQ96768g==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.23.2.tgz", + "integrity": "sha512-8rmSybTwIqmGx3P0qkOEUkkyeIewglaKq6yUnxnVkBJbd4USfIZsw9cME1YUEHeZI7aOhTQg9QteUHSKXclF5A==", "dependencies": { - "@algolia/client-common": "5.23.0" + "@algolia/client-common": "5.23.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.23.0.tgz", - "integrity": "sha512-XXHbq2heOZc9EFCc4z+uyHS9YRBygZbYQVsWjWZWx8hdAz+tkBX/jLHM9Xg+3zO0/v8JN6pcZzqYEVsdrLeNLg==", - "license": "MIT", + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.23.2.tgz", + "integrity": "sha512-IHpUiW3d3oVE5tCYqQN7X71/EbXI7f8WxU85eWW1UYEWEknqW3csdGctyIW7+qMHFfxeDymI1Wln/gGHHIXLIw==", "dependencies": { - "@algolia/client-common": "5.23.0" + "@algolia/client-common": "5.23.2" }, "engines": { "node": ">= 14.0.0" @@ -269,7 +251,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -282,7 +263,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz", "integrity": "sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==", - "license": "MIT", "dependencies": { "package-manager-detector": "^0.2.8", "tinyexec": "^0.3.2" @@ -295,7 +275,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } @@ -304,7 +283,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", @@ -318,7 +296,6 @@ "version": "7.26.8", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -327,7 +304,6 @@ "version": "7.26.10", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", @@ -357,7 +333,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -366,7 +341,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", - "license": "MIT", "dependencies": { "@babel/parser": "^7.27.0", "@babel/types": "^7.27.0", @@ -382,7 +356,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "license": "MIT", "dependencies": { "@babel/types": "^7.25.9" }, @@ -394,7 +367,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.26.8", "@babel/helper-validator-option": "^7.25.9", @@ -410,7 +382,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -419,7 +390,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", @@ -440,7 +410,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -449,7 +418,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz", "integrity": "sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==", - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "regexpu-core": "^6.2.0", @@ -466,7 +434,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -475,7 +442,6 @@ "version": "0.6.4", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", - "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -491,7 +457,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", - "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -504,7 +469,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -517,7 +481,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", @@ -534,7 +497,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", - "license": "MIT", "dependencies": { "@babel/types": "^7.25.9" }, @@ -546,7 +508,6 @@ "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -555,7 +516,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-wrap-function": "^7.25.9", @@ -572,7 +532,6 @@ "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", - "license": "MIT", "dependencies": { "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", @@ -589,7 +548,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", - "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -602,7 +560,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -611,7 +568,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -620,7 +576,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -629,7 +584,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", - "license": "MIT", "dependencies": { "@babel/template": "^7.25.9", "@babel/traverse": "^7.25.9", @@ -643,7 +597,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", - "license": "MIT", "dependencies": { "@babel/template": "^7.27.0", "@babel/types": "^7.27.0" @@ -656,7 +609,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", - "license": "MIT", "dependencies": { "@babel/types": "^7.27.0" }, @@ -671,7 +623,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/traverse": "^7.25.9" @@ -687,7 +638,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -702,7 +652,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -717,7 +666,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", @@ -734,7 +682,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/traverse": "^7.25.9" @@ -750,7 +697,6 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -762,7 +708,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -774,7 +719,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -789,7 +733,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -804,7 +747,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -819,7 +761,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -834,7 +775,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -850,7 +790,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -865,7 +804,6 @@ "version": "7.26.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-remap-async-to-generator": "^7.25.9", @@ -882,7 +820,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", @@ -899,7 +836,6 @@ "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" }, @@ -914,7 +850,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz", "integrity": "sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" }, @@ -929,7 +864,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", - "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -945,7 +879,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", - "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -961,7 +894,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-compilation-targets": "^7.25.9", @@ -981,7 +913,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/template": "^7.25.9" @@ -997,7 +928,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1012,7 +942,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1028,7 +957,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1043,7 +971,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1059,7 +986,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1074,7 +1000,6 @@ "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1089,7 +1014,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1104,7 +1028,6 @@ "version": "7.26.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" @@ -1120,7 +1043,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", - "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", @@ -1137,7 +1059,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1152,7 +1073,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1167,7 +1087,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1182,7 +1101,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1197,7 +1115,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", - "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1213,7 +1130,6 @@ "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", - "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.26.0", "@babel/helper-plugin-utils": "^7.25.9" @@ -1229,7 +1145,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", - "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", @@ -1247,7 +1162,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", - "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1263,7 +1177,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1279,7 +1192,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1294,7 +1206,6 @@ "version": "7.26.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" }, @@ -1309,7 +1220,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1324,7 +1234,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", - "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", @@ -1341,7 +1250,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-replace-supers": "^7.25.9" @@ -1357,7 +1265,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1372,7 +1279,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" @@ -1388,7 +1294,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1403,7 +1308,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", - "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1419,7 +1323,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-create-class-features-plugin": "^7.25.9", @@ -1436,7 +1339,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1451,7 +1353,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz", "integrity": "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1466,7 +1367,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1481,7 +1381,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-module-imports": "^7.25.9", @@ -1500,7 +1399,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", - "license": "MIT", "dependencies": { "@babel/plugin-transform-react-jsx": "^7.25.9" }, @@ -1515,7 +1413,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1531,7 +1428,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz", "integrity": "sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5", "regenerator-transform": "^0.15.2" @@ -1547,7 +1443,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1563,7 +1458,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1578,7 +1472,6 @@ "version": "7.26.10", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.26.5", @@ -1598,7 +1491,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1607,7 +1499,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1622,7 +1513,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" @@ -1638,7 +1528,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1653,7 +1542,6 @@ "version": "7.26.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" }, @@ -1668,7 +1556,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz", "integrity": "sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" }, @@ -1683,7 +1570,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-create-class-features-plugin": "^7.27.0", @@ -1702,7 +1588,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1717,7 +1602,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1733,7 +1617,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1749,7 +1632,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" @@ -1765,7 +1647,6 @@ "version": "7.26.9", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.26.8", "@babel/helper-compilation-targets": "^7.26.5", @@ -1848,7 +1729,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1857,7 +1737,6 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1871,7 +1750,6 @@ "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-validator-option": "^7.25.9", @@ -1891,7 +1769,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", @@ -1910,7 +1787,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", - "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1922,7 +1798,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.27.0.tgz", "integrity": "sha512-UWjX6t+v+0ckwZ50Y5ShZLnlk95pP5MyW/pon9tiYzl3+18pkTHTFNTKr7rQbfRXPkowt2QAn30o1b6oswszew==", - "license": "MIT", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -1935,7 +1810,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/parser": "^7.27.0", @@ -1949,7 +1823,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.27.0", @@ -1967,7 +1840,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", - "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" @@ -1979,14 +1851,12 @@ "node_modules/@braintree/sanitize-url": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", - "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", - "license": "MIT" + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==" }, "node_modules/@chevrotain/cst-dts-gen": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "license": "Apache-2.0", "dependencies": { "@chevrotain/gast": "11.0.3", "@chevrotain/types": "11.0.3", @@ -1997,7 +1867,6 @@ "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "license": "Apache-2.0", "dependencies": { "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" @@ -2006,26 +1875,22 @@ "node_modules/@chevrotain/regexp-to-ast": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", - "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", - "license": "Apache-2.0" + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==" }, "node_modules/@chevrotain/types": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", - "license": "Apache-2.0" + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" }, "node_modules/@chevrotain/utils": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", - "license": "Apache-2.0" + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -2045,7 +1910,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "engines": { "node": ">=18" }, @@ -2068,7 +1932,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" } @@ -2087,7 +1950,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "engines": { "node": ">=18" }, @@ -2110,7 +1972,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "dependencies": { "@csstools/color-helpers": "^5.0.2", "@csstools/css-calc": "^2.1.2" @@ -2137,7 +1998,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "engines": { "node": ">=18" }, @@ -2159,7 +2019,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "engines": { "node": ">=18" } @@ -2178,7 +2037,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "engines": { "node": ">=18" }, @@ -2201,7 +2059,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" @@ -2227,7 +2084,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -2239,7 +2095,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2262,7 +2117,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2291,7 +2145,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2320,7 +2173,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", @@ -2348,7 +2200,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2375,7 +2226,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" @@ -2401,7 +2251,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2428,7 +2277,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2457,7 +2305,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2486,7 +2333,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0", @@ -2513,7 +2359,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -2535,7 +2380,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" @@ -2561,7 +2405,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -2573,7 +2416,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2596,7 +2438,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", @@ -2624,7 +2465,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -2646,7 +2486,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -2668,7 +2507,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -2690,7 +2528,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2715,7 +2552,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-tokenizer": "^3.0.3", "@csstools/utilities": "^2.0.0" @@ -2741,7 +2577,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "dependencies": { "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2769,7 +2604,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", @@ -2796,7 +2630,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" @@ -2822,7 +2655,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2847,7 +2679,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2876,7 +2707,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2901,7 +2731,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2928,7 +2757,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", @@ -2957,7 +2785,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -2972,7 +2799,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2995,7 +2821,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", @@ -3022,7 +2847,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", @@ -3049,7 +2873,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/color-helpers": "^5.0.2", "postcss-value-parser": "^4.2.0" @@ -3075,7 +2898,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", @@ -3102,7 +2924,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -3124,7 +2945,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -3136,7 +2956,6 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -3144,14 +2963,12 @@ "node_modules/@docsearch/css": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.9.0.tgz", - "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==", - "license": "MIT" + "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==" }, "node_modules/@docsearch/react": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.9.0.tgz", "integrity": "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==", - "license": "MIT", "dependencies": { "@algolia/autocomplete-core": "1.17.9", "@algolia/autocomplete-preset-algolia": "1.17.9", @@ -3183,7 +3000,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.7.0.tgz", "integrity": "sha512-0H5uoJLm14S/oKV3Keihxvh8RV+vrid+6Gv+2qhuzbqHanawga8tYnsdpjEyt36ucJjqlby2/Md2ObWjA02UXQ==", - "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", "@babel/generator": "^7.25.9", @@ -3209,7 +3025,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.7.0.tgz", "integrity": "sha512-CUUT9VlSGukrCU5ctZucykvgCISivct+cby28wJwCC/fkQFgAHRp/GKv2tx38ZmXb7nacrKzFTcp++f9txUYGg==", - "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", "@docusaurus/babel": "3.7.0", @@ -3253,7 +3068,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3274,7 +3088,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3288,7 +3101,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.7.0.tgz", "integrity": "sha512-b0fUmaL+JbzDIQaamzpAFpTviiaU4cX3Qz8cuo14+HGBCwa0evEK0UYCBFY3n4cLzL8Op1BueeroUD2LYAIHbQ==", - "license": "MIT", "dependencies": { "@docusaurus/babel": "3.7.0", "@docusaurus/bundler": "3.7.0", @@ -3349,7 +3161,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.7.0.tgz", "integrity": "sha512-X9GYgruZBSOozg4w4dzv9uOz8oK/EpPVQXkp0MM6Tsgp/nRIU9hJzJ0Pxg1aRa3xCeEQTOimZHcocQFlLwYajQ==", - "license": "MIT", "dependencies": { "cssnano-preset-advanced": "^6.1.2", "postcss": "^8.4.38", @@ -3364,7 +3175,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.7.0.tgz", "integrity": "sha512-z7g62X7bYxCYmeNNuO9jmzxLQG95q9QxINCwpboVcNff3SJiHJbGrarxxOVMVmAh1MsrSfxWkVGv4P41ktnFsA==", - "license": "MIT", "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" @@ -3377,7 +3187,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.7.0.tgz", "integrity": "sha512-OFBG6oMjZzc78/U3WNPSHs2W9ZJ723ewAcvVJaqS0VgyeUfmzUV8f1sv+iUHA0DtwiR5T5FjOxj6nzEE8LY6VA==", - "license": "MIT", "dependencies": { "@docusaurus/logger": "3.7.0", "@docusaurus/utils": "3.7.0", @@ -3416,7 +3225,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.7.0.tgz", "integrity": "sha512-g7WdPqDNaqA60CmBrr0cORTrsOit77hbsTj7xE2l71YhBn79sxdm7WMK7wfhcaafkbpIh7jv5ef5TOpf1Xv9Lg==", - "license": "MIT", "dependencies": { "@docusaurus/types": "3.7.0", "@types/history": "^4.7.11", @@ -3435,7 +3243,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3456,7 +3263,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3470,7 +3276,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.7.0.tgz", "integrity": "sha512-EFLgEz6tGHYWdPU0rK8tSscZwx+AsyuBW/r+tNig2kbccHYGUJmZtYN38GjAa3Fda4NU+6wqUO5kTXQSRBQD3g==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/logger": "3.7.0", @@ -3504,7 +3309,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3525,7 +3329,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3539,7 +3342,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz", "integrity": "sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/logger": "3.7.0", @@ -3571,7 +3373,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3592,7 +3393,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3606,7 +3406,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.7.0.tgz", "integrity": "sha512-YJSU3tjIJf032/Aeao8SZjFOrXJbz/FACMveSMjLyMH4itQyZ2XgUIzt4y+1ISvvk5zrW4DABVT2awTCqBkx0Q==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/mdx-loader": "3.7.0", @@ -3629,7 +3428,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3650,7 +3448,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3664,7 +3461,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.7.0.tgz", "integrity": "sha512-Qgg+IjG/z4svtbCNyTocjIwvNTNEwgRjSXXSJkKVG0oWoH0eX/HAPiu+TS1HBwRPQV+tTYPWLrUypYFepfujZA==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", @@ -3685,7 +3481,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3706,7 +3501,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3720,7 +3514,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.7.0.tgz", "integrity": "sha512-otIqiRV/jka6Snjf+AqB360XCeSv7lQC+DKYW+EUZf6XbuE8utz5PeUQ8VuOcD8Bk5zvT1MC4JKcd5zPfDuMWA==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", @@ -3739,7 +3532,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3760,7 +3552,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3774,7 +3565,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.7.0.tgz", "integrity": "sha512-M3vrMct1tY65ModbyeDaMoA+fNJTSPe5qmchhAbtqhDD/iALri0g9LrEpIOwNaoLmm6lO88sfBUADQrSRSGSWA==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", @@ -3794,7 +3584,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3815,7 +3604,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3829,7 +3617,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.7.0.tgz", "integrity": "sha512-X8U78nb8eiMiPNg3jb9zDIVuuo/rE1LjGDGu+5m5CX4UBZzjMy+klOY2fNya6x8ACyE/L3K2erO1ErheP55W/w==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", @@ -3848,7 +3635,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3869,7 +3655,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3883,7 +3668,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.7.0.tgz", "integrity": "sha512-bTRT9YLZ/8I/wYWKMQke18+PF9MV8Qub34Sku6aw/vlZ/U+kuEuRpQ8bTcNOjaTSfYsWkK4tTwDMHK2p5S86cA==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/logger": "3.7.0", @@ -3907,7 +3691,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3928,7 +3711,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -3942,7 +3724,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.7.0.tgz", "integrity": "sha512-HByXIZTbc4GV5VAUkZ2DXtXv1Qdlnpk3IpuImwSnEzCDBkUMYcec5282hPjn6skZqB25M1TYCmWS91UbhBGxQg==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/types": "3.7.0", @@ -3965,7 +3746,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -3986,7 +3766,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -4000,7 +3779,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.7.0.tgz", "integrity": "sha512-nPHj8AxDLAaQXs+O6+BwILFuhiWbjfQWrdw2tifOClQoNfuXDjfjogee6zfx6NGHWqshR23LrcN115DmkHC91Q==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/plugin-content-blog": "3.7.0", @@ -4029,7 +3807,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -4050,7 +3827,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -4064,7 +3840,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.7.0.tgz", "integrity": "sha512-MnLxG39WcvLCl4eUzHr0gNcpHQfWoGqzADCly54aqCofQX6UozOS9Th4RK3ARbM9m7zIRv3qbhggI53dQtx/hQ==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/logger": "3.7.0", @@ -4105,7 +3880,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -4126,7 +3900,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -4140,7 +3913,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.7.0.tgz", "integrity": "sha512-8eJ5X0y+gWDsURZnBfH0WabdNm8XMCXHv8ENy/3Z/oQKwaB/EHt5lP9VsTDTf36lKEp0V6DjzjFyFIB+CetL0A==", - "license": "MIT", "dependencies": { "@docusaurus/mdx-loader": "3.7.0", "@docusaurus/module-type-aliases": "3.7.0", @@ -4168,7 +3940,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.7.0.tgz", "integrity": "sha512-7kNDvL7hm+tshjxSxIqYMtsLUPsEBYnkevej/ext6ru9xyLgCed+zkvTfGzTWNeq8rJIEe2YSS8/OV5gCVaPCw==", - "license": "MIT", "dependencies": { "@docusaurus/core": "3.7.0", "@docusaurus/module-type-aliases": "3.7.0", @@ -4190,7 +3961,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -4211,7 +3981,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -4225,7 +3994,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.7.0.tgz", "integrity": "sha512-Al/j5OdzwRU1m3falm+sYy9AaB93S1XF1Lgk9Yc6amp80dNxJVplQdQTR4cYdzkGtuQqbzUA8+kaoYYO0RbK6g==", - "license": "MIT", "dependencies": { "@docsearch/react": "^3.8.1", "@docusaurus/core": "3.7.0", @@ -4256,7 +4024,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.7.0.tgz", "integrity": "sha512-Ewq3bEraWDmienM6eaNK7fx+/lHMtGDHQyd1O+4+3EsDxxUmrzPkV7Ct3nBWTuE0MsoZr3yNwQVKjllzCMuU3g==", - "license": "MIT", "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" @@ -4270,7 +4037,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.0.0.tgz", "integrity": "sha512-Qb+l/hmCOVemReuzvvcFdk84bUmUFyD0Zi81y651ie3VwMrXqC7C0E7yZLKMOsLj/vkqsxHbtkAuYMI89YzNzg==", "dev": true, - "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", @@ -4291,7 +4057,6 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -4305,7 +4070,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.7.0.tgz", "integrity": "sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA==", - "license": "MIT", "dependencies": { "@docusaurus/logger": "3.7.0", "@docusaurus/types": "3.7.0", @@ -4336,7 +4100,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.7.0.tgz", "integrity": "sha512-IZeyIfCfXy0Mevj6bWNg7DG7B8G+S6o6JVpddikZtWyxJguiQ7JYr0SIZ0qWd8pGNuMyVwriWmbWqMnK7Y5PwA==", - "license": "MIT", "dependencies": { "@docusaurus/types": "3.7.0", "tslib": "^2.6.0" @@ -4349,7 +4112,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -4370,7 +4132,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -4384,7 +4145,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.7.0.tgz", "integrity": "sha512-w8eiKk8mRdN+bNfeZqC4nyFoxNyI1/VExMKAzD9tqpJfLLbsa46Wfn5wcKH761g9WkKh36RtFV49iL9lh1DYBA==", - "license": "MIT", "dependencies": { "@docusaurus/logger": "3.7.0", "@docusaurus/utils": "3.7.0", @@ -4403,7 +4163,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", - "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -4424,7 +4183,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -4438,7 +4196,6 @@ "version": "6.7.2", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", - "license": "MIT", "engines": { "node": ">=6" } @@ -4447,7 +4204,6 @@ "version": "6.7.2", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", - "license": "MIT", "dependencies": { "@fortawesome/fontawesome-common-types": "6.7.2" }, @@ -4459,7 +4215,6 @@ "version": "6.7.2", "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.7.2.tgz", "integrity": "sha512-zu0evbcRTgjKfrr77/2XX+bU+kuGfjm0LbajJHVIgBWNIDzrhpRxiCPNT8DW5AdmSsq7Mcf9D1bH0aSeSUSM+Q==", - "license": "(CC-BY-4.0 AND MIT)", "dependencies": { "@fortawesome/fontawesome-common-types": "6.7.2" }, @@ -4471,7 +4226,6 @@ "version": "6.7.2", "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.2.tgz", "integrity": "sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==", - "license": "(CC-BY-4.0 AND MIT)", "dependencies": { "@fortawesome/fontawesome-common-types": "6.7.2" }, @@ -4483,7 +4237,6 @@ "version": "6.7.2", "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz", "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==", - "license": "(CC-BY-4.0 AND MIT)", "dependencies": { "@fortawesome/fontawesome-common-types": "6.7.2" }, @@ -4495,7 +4248,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", - "license": "MIT", "dependencies": { "prop-types": "^15.8.1" }, @@ -4507,14 +4259,12 @@ "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "license": "BSD-3-Clause" + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -4522,14 +4272,12 @@ "node_modules/@iconify/types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", - "license": "MIT" + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==" }, "node_modules/@iconify/utils": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", - "license": "MIT", "dependencies": { "@antfu/install-pkg": "^1.0.0", "@antfu/utils": "^8.1.0", @@ -4545,7 +4293,6 @@ "version": "15.15.0", "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "license": "MIT", "engines": { "node": ">=18" }, @@ -4558,7 +4305,6 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -4576,7 +4322,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -4589,7 +4334,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -4604,7 +4348,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -4616,7 +4359,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -4633,7 +4375,6 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -4647,7 +4388,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -4656,7 +4396,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -4665,7 +4404,6 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -4674,14 +4412,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -4690,14 +4426,12 @@ "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "license": "MIT" + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" }, "node_modules/@mdx-js/mdx": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -4733,7 +4467,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", - "license": "MIT", "dependencies": { "@types/mdx": "^2.0.0" }, @@ -4750,7 +4483,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.4.0.tgz", "integrity": "sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==", - "license": "MIT", "dependencies": { "langium": "3.3.1" } @@ -4759,7 +4491,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -4772,7 +4503,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", "engines": { "node": ">= 8" } @@ -4781,7 +4511,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -4795,7 +4524,6 @@ "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.3.4.tgz", "integrity": "sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", "@npmcli/package-json": "^5.1.1", @@ -4821,7 +4549,6 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } @@ -4831,7 +4558,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -4841,7 +4567,6 @@ "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "ini": "^4.1.3", @@ -4862,7 +4587,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -4872,7 +4596,6 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=16" } @@ -4881,15 +4604,13 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/@npmcli/git/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -4905,7 +4626,6 @@ "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/name-from-folder": "^2.0.0", "glob": "^10.2.2", @@ -4921,7 +4641,6 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -4931,7 +4650,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -4952,7 +4670,6 @@ "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" }, @@ -4968,7 +4685,6 @@ "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -4978,7 +4694,6 @@ "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", @@ -4997,7 +4712,6 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -5007,7 +4721,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -5028,7 +4741,6 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, - "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -5038,7 +4750,6 @@ "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" }, @@ -5054,7 +4765,6 @@ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", "dev": true, - "license": "ISC", "dependencies": { "which": "^4.0.0" }, @@ -5067,7 +4777,6 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=16" } @@ -5077,7 +4786,6 @@ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -5093,7 +4801,6 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -5103,7 +4810,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", - "license": "MIT", "engines": { "node": ">=12.22.0" } @@ -5112,7 +4818,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", - "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, @@ -5123,14 +4828,12 @@ "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "license": "ISC" + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "node_modules/@pnpm/npm-conf": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", - "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", @@ -5143,14 +4846,12 @@ "node_modules/@polka/url": { "version": "1.0.0-next.28", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", - "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", - "license": "MIT" + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==" }, "node_modules/@sentry-internal/browser-utils": { "version": "8.55.0", "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.55.0.tgz", "integrity": "sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==", - "license": "MIT", "dependencies": { "@sentry/core": "8.55.0" }, @@ -5162,7 +4863,6 @@ "version": "8.55.0", "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.55.0.tgz", "integrity": "sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==", - "license": "MIT", "dependencies": { "@sentry/core": "8.55.0" }, @@ -5174,7 +4874,6 @@ "version": "8.55.0", "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.55.0.tgz", "integrity": "sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==", - "license": "MIT", "dependencies": { "@sentry-internal/browser-utils": "8.55.0", "@sentry/core": "8.55.0" @@ -5187,7 +4886,6 @@ "version": "8.55.0", "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.55.0.tgz", "integrity": "sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==", - "license": "MIT", "dependencies": { "@sentry-internal/replay": "8.55.0", "@sentry/core": "8.55.0" @@ -5200,7 +4898,6 @@ "version": "8.55.0", "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.55.0.tgz", "integrity": "sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==", - "license": "MIT", "dependencies": { "@sentry-internal/browser-utils": "8.55.0", "@sentry-internal/feedback": "8.55.0", @@ -5216,7 +4913,6 @@ "version": "8.55.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.55.0.tgz", "integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==", - "license": "MIT", "engines": { "node": ">=14.18" } @@ -5225,7 +4921,6 @@ "version": "8.55.0", "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.55.0.tgz", "integrity": "sha512-/qNBvFLpvSa/Rmia0jpKfJdy16d4YZaAnH/TuKLAtm0BWlsPQzbXCU4h8C5Hsst0Do0zG613MEtEmWpWrVOqWA==", - "license": "MIT", "dependencies": { "@sentry/browser": "8.55.0", "@sentry/core": "8.55.0", @@ -5242,7 +4937,6 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -5250,26 +4944,22 @@ "node_modules/@sideway/formula": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "license": "BSD-3-Clause" + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "license": "BSD-3-Clause" + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "license": "MIT" + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -5281,7 +4971,6 @@ "version": "2.2.40", "resolved": "https://registry.npmjs.org/@sista/ai-assistant-react/-/ai-assistant-react-2.2.40.tgz", "integrity": "sha512-hEN8uR+Z9URoVEXpsm2Wu1iEurFCS2RKOOjJp99SIJBpks7ezc+UUha9vLoZqm79sS9CjOuxafZR2x1SuBvQnQ==", - "license": "CC BY-NC-ND 3.0", "dependencies": { "@sentry/react": "^8.19.0", "howler": "^2.2.4", @@ -5297,7 +4986,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", - "license": "MIT", "dependencies": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.1.0", @@ -5308,7 +4996,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -5324,7 +5011,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -5340,7 +5026,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -5356,7 +5041,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -5372,7 +5056,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -5388,7 +5071,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -5404,7 +5086,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -5420,7 +5101,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -5436,7 +5116,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", - "license": "MIT", "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", @@ -5462,7 +5141,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", - "license": "MIT", "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -5482,7 +5160,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", - "license": "MIT", "dependencies": { "@babel/types": "^7.21.3", "entities": "^4.4.0" @@ -5499,7 +5176,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", - "license": "MIT", "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -5521,7 +5197,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", - "license": "MIT", "dependencies": { "cosmiconfig": "^8.1.3", "deepmerge": "^4.3.1", @@ -5542,7 +5217,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", - "license": "MIT", "dependencies": { "@babel/core": "^7.21.3", "@babel/plugin-transform-react-constant-elements": "^7.21.3", @@ -5565,7 +5239,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.1" }, @@ -5577,7 +5250,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "license": "ISC", "engines": { "node": ">=10.13.0" } @@ -5586,7 +5258,6 @@ "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -5596,7 +5267,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5606,7 +5276,6 @@ "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.3.tgz", "integrity": "sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5615,7 +5284,6 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5624,7 +5292,6 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", - "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -5634,7 +5301,6 @@ "version": "7.4.3", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", - "license": "MIT", "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", @@ -5671,14 +5337,12 @@ "node_modules/@types/d3-array": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", - "license": "MIT" + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" }, "node_modules/@types/d3-axis": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", - "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -5687,7 +5351,6 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", - "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -5695,20 +5358,17 @@ "node_modules/@types/d3-chord": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", - "license": "MIT" + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==" }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "license": "MIT" + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" }, "node_modules/@types/d3-contour": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", - "license": "MIT", "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" @@ -5717,20 +5377,17 @@ "node_modules/@types/d3-delaunay": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", - "license": "MIT" + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==" }, "node_modules/@types/d3-dispatch": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", - "license": "MIT" + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==" }, "node_modules/@types/d3-drag": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", - "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -5738,20 +5395,17 @@ "node_modules/@types/d3-dsv": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", - "license": "MIT" + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==" }, "node_modules/@types/d3-ease": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "license": "MIT" + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" }, "node_modules/@types/d3-fetch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", - "license": "MIT", "dependencies": { "@types/d3-dsv": "*" } @@ -5759,20 +5413,17 @@ "node_modules/@types/d3-force": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", - "license": "MIT" + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==" }, "node_modules/@types/d3-format": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", - "license": "MIT" + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==" }, "node_modules/@types/d3-geo": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "license": "MIT", "dependencies": { "@types/geojson": "*" } @@ -5780,14 +5431,12 @@ "node_modules/@types/d3-hierarchy": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", - "license": "MIT" + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==" }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "license": "MIT", "dependencies": { "@types/d3-color": "*" } @@ -5795,32 +5444,27 @@ "node_modules/@types/d3-path": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT" + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==" }, "node_modules/@types/d3-polygon": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", - "license": "MIT" + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==" }, "node_modules/@types/d3-quadtree": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", - "license": "MIT" + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==" }, "node_modules/@types/d3-random": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", - "license": "MIT" + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==" }, "node_modules/@types/d3-scale": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "license": "MIT", "dependencies": { "@types/d3-time": "*" } @@ -5828,20 +5472,17 @@ "node_modules/@types/d3-scale-chromatic": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", - "license": "MIT" + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==" }, "node_modules/@types/d3-selection": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", - "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", - "license": "MIT" + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==" }, "node_modules/@types/d3-shape": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", - "license": "MIT", "dependencies": { "@types/d3-path": "*" } @@ -5849,26 +5490,22 @@ "node_modules/@types/d3-time": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "license": "MIT" + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==" }, "node_modules/@types/d3-time-format": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", - "license": "MIT" + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==" }, "node_modules/@types/d3-timer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT" + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" }, "node_modules/@types/d3-transition": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", - "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -5877,7 +5514,6 @@ "version": "3.0.8", "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", - "license": "MIT", "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" @@ -5887,7 +5523,6 @@ "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "license": "MIT", "dependencies": { "@types/ms": "*" } @@ -5896,7 +5531,6 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -5906,7 +5540,6 @@ "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -5915,14 +5548,12 @@ "node_modules/@types/estree": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "license": "MIT" + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -5931,7 +5562,6 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -5943,7 +5573,6 @@ "version": "5.0.6", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", - "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -5955,7 +5584,6 @@ "version": "4.19.6", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", - "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -5966,20 +5594,17 @@ "node_modules/@types/geojson": { "version": "7946.0.16", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", - "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", - "license": "MIT" + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==" }, "node_modules/@types/gtag.js": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", - "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", - "license": "MIT" + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==" }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -5987,39 +5612,33 @@ "node_modules/@types/history": { "version": "4.7.11", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", - "license": "MIT" + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" }, "node_modules/@types/hosted-git-info": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/hosted-git-info/-/hosted-git-info-3.0.5.tgz", "integrity": "sha512-Dmngh7U003cOHPhKGyA7LWqrnvcTyILNgNPmNCxlx7j8MIi54iBliiT8XqVLIQ3GchoOjVAyBzNJVyuaJjqokg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "license": "MIT" + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "license": "MIT" + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "license": "MIT" + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" }, "node_modules/@types/http-proxy": { "version": "1.17.16", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6028,20 +5647,17 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", "integrity": "sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "license": "MIT" + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -6050,7 +5666,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } @@ -6058,14 +5673,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -6073,35 +5686,30 @@ "node_modules/@types/mdx": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", - "license": "MIT" + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "license": "MIT" + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT" + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" }, "node_modules/@types/node": { - "version": "22.13.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", - "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", - "license": "MIT", + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/node-forge": { "version": "1.3.11", "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6109,32 +5717,27 @@ "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "license": "MIT" + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/prismjs": { "version": "1.26.5", "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", - "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==", - "license": "MIT" + "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==" }, "node_modules/@types/qs": { "version": "6.9.18", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", - "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", - "license": "MIT" + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "license": "MIT" + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/react": { - "version": "19.0.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", - "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", - "license": "MIT", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.0.tgz", + "integrity": "sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==", "dependencies": { "csstype": "^3.0.2" } @@ -6143,7 +5746,6 @@ "version": "5.1.20", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", - "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*" @@ -6153,7 +5755,6 @@ "version": "5.0.11", "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", - "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", @@ -6164,7 +5765,6 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", - "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", @@ -6174,14 +5774,12 @@ "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "license": "MIT" + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" }, "node_modules/@types/sax": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6190,7 +5788,6 @@ "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -6200,7 +5797,6 @@ "version": "1.9.4", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "license": "MIT", "dependencies": { "@types/express": "*" } @@ -6209,7 +5805,6 @@ "version": "1.15.7", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -6220,7 +5815,6 @@ "version": "0.3.36", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6229,34 +5823,29 @@ "version": "8.1.3", "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/text-table": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/@types/text-table/-/text-table-0.2.5.tgz", "integrity": "sha512-hcZhlNvMkQG/k1vcZ6yHOl6WAYftQ2MLfTHcYRZ2xYZFD8tGVnE3qFV0lj1smQeDSR7/yY0PyuUalauf33bJeA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", "optional": true }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/@types/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==", - "license": "MIT", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dependencies": { "@types/node": "*" } @@ -6265,7 +5854,6 @@ "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -6273,20 +5861,17 @@ "node_modules/@types/yargs-parser": { "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "license": "MIT" + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -6295,26 +5880,22 @@ "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "license": "MIT" + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "license": "MIT" + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "license": "MIT" + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -6324,14 +5905,12 @@ "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "license": "MIT" + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -6343,7 +5922,6 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -6352,7 +5930,6 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -6360,14 +5937,12 @@ "node_modules/@webassemblyjs/utf8": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "license": "MIT" + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -6383,7 +5958,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -6396,7 +5970,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -6408,7 +5981,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -6422,7 +5994,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -6431,21 +6002,18 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "license": "BSD-3-Clause" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "license": "Apache-2.0" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -6454,7 +6022,6 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -6467,7 +6034,6 @@ "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" } @@ -6476,7 +6042,6 @@ "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" }, @@ -6488,7 +6053,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6497,7 +6061,6 @@ "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -6509,7 +6072,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -6518,7 +6080,6 @@ "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "license": "MIT", "dependencies": { "acorn": "^8.11.0" }, @@ -6530,7 +6091,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -6539,7 +6099,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -6552,7 +6111,6 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -6568,7 +6126,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -6585,7 +6142,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -6594,24 +6150,23 @@ } }, "node_modules/algoliasearch": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.23.0.tgz", - "integrity": "sha512-7TCj+hLx6fZKppLL74lYGDEltSBNSu4vqRwgqeIKZ3VQ0q3aOrdEN0f1sDWcvU1b+psn2wnl7aHt9hWtYatUUA==", - "license": "MIT", - "dependencies": { - "@algolia/client-abtesting": "5.23.0", - "@algolia/client-analytics": "5.23.0", - "@algolia/client-common": "5.23.0", - "@algolia/client-insights": "5.23.0", - "@algolia/client-personalization": "5.23.0", - "@algolia/client-query-suggestions": "5.23.0", - "@algolia/client-search": "5.23.0", - "@algolia/ingestion": "1.23.0", - "@algolia/monitoring": "1.23.0", - "@algolia/recommend": "5.23.0", - "@algolia/requester-browser-xhr": "5.23.0", - "@algolia/requester-fetch": "5.23.0", - "@algolia/requester-node-http": "5.23.0" + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.23.2.tgz", + "integrity": "sha512-IhKP22Czzg8Y9HaF6aIb5aAHK2HBj4VAzLLnKEPUnxqDwxpryH9sXbm0NkeY7Cby9GlF81wF+AG/VulKDFBphg==", + "dependencies": { + "@algolia/client-abtesting": "5.23.2", + "@algolia/client-analytics": "5.23.2", + "@algolia/client-common": "5.23.2", + "@algolia/client-insights": "5.23.2", + "@algolia/client-personalization": "5.23.2", + "@algolia/client-query-suggestions": "5.23.2", + "@algolia/client-search": "5.23.2", + "@algolia/ingestion": "1.23.2", + "@algolia/monitoring": "1.23.2", + "@algolia/recommend": "5.23.2", + "@algolia/requester-browser-xhr": "5.23.2", + "@algolia/requester-fetch": "5.23.2", + "@algolia/requester-node-http": "5.23.2" }, "engines": { "node": ">= 14.0.0" @@ -6621,7 +6176,6 @@ "version": "3.24.3", "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.24.3.tgz", "integrity": "sha512-3QKg5lzSfUiPN8Hn1ViHEGv6PjK7i4SFEDLzwlSzPO/4mVOsyos7B7/AsEtFQW5KHHPiCq6DyJl+mzg7CYlEgw==", - "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1" }, @@ -6633,7 +6187,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "license": "ISC", "dependencies": { "string-width": "^4.1.0" } @@ -6641,14 +6194,12 @@ "node_modules/ansi-align/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/ansi-align/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6662,7 +6213,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -6677,7 +6227,6 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -6692,7 +6241,6 @@ "engines": [ "node >= 0.8.0" ], - "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -6701,7 +6249,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", "engines": { "node": ">=8" } @@ -6710,7 +6257,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6725,7 +6271,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6737,26 +6282,22 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "license": "MIT" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "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==", - "license": "Python-2.0" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", "engines": { "node": ">=8" } @@ -6765,7 +6306,6 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "license": "MIT", "bin": { "astring": "bin/astring" } @@ -6774,7 +6314,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "license": "ISC", "engines": { "node": ">= 4.0.0" } @@ -6797,7 +6336,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "browserslist": "^4.24.4", "caniuse-lite": "^1.0.30001702", @@ -6820,7 +6358,6 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", - "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -6837,7 +6374,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "license": "MIT", "dependencies": { "object.assign": "^4.1.0" } @@ -6846,7 +6382,6 @@ "version": "0.4.13", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.4", @@ -6860,7 +6395,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -6869,7 +6403,6 @@ "version": "0.11.1", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", - "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.3", "core-js-compat": "^3.40.0" @@ -6882,7 +6415,6 @@ "version": "0.6.4", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", - "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.4" }, @@ -6894,7 +6426,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6903,20 +6434,17 @@ "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==", - "license": "MIT" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "license": "MIT" + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "license": "MIT", "engines": { "node": "*" } @@ -6925,7 +6453,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", "engines": { "node": ">=8" }, @@ -6937,7 +6464,6 @@ "version": "1.20.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -6961,7 +6487,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6970,7 +6495,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6979,7 +6503,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -6990,14 +6513,12 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/bonjour-service": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -7006,14 +6527,12 @@ "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "node_modules/boxen": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", - "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^6.2.0", @@ -7035,7 +6554,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7045,7 +6563,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -7071,7 +6588,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", @@ -7088,14 +6604,12 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7104,7 +6618,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", - "license": "MIT", "engines": { "node": ">=14.16" } @@ -7113,7 +6626,6 @@ "version": "10.2.14", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", - "license": "MIT", "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", @@ -7131,7 +6643,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", @@ -7149,7 +6660,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==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -7162,7 +6672,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -7178,7 +6687,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", "engines": { "node": ">=6" } @@ -7187,7 +6695,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -7197,7 +6704,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -7209,7 +6715,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "license": "MIT", "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", @@ -7218,9 +6723,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001707", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", - "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", + "version": "1.0.30001710", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001710.tgz", + "integrity": "sha512-B5C0I0UmaGqHgo5FuqJ7hBd4L57A4dDD+Xi+XX1nXOoxGeDdY4Ko38qJYOyqznBVJEqON5p8P1x5zRR3+rsnxA==", "funding": [ { "type": "opencollective", @@ -7234,14 +6739,12 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7251,7 +6754,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7267,7 +6769,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "license": "MIT", "engines": { "node": ">=10" } @@ -7276,7 +6777,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7286,7 +6786,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7296,7 +6795,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7306,7 +6804,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7316,7 +6813,6 @@ "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", @@ -7337,7 +6833,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", @@ -7354,7 +6849,6 @@ "version": "11.0.3", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "license": "Apache-2.0", "dependencies": { "@chevrotain/cst-dts-gen": "11.0.3", "@chevrotain/gast": "11.0.3", @@ -7368,7 +6862,6 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "license": "MIT", "dependencies": { "lodash-es": "^4.17.21" }, @@ -7380,7 +6873,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -7404,7 +6896,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "license": "MIT", "engines": { "node": ">=6.0" } @@ -7419,7 +6910,6 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } @@ -7428,7 +6918,6 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -7440,7 +6929,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7449,7 +6937,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "license": "MIT", "engines": { "node": ">=6" } @@ -7458,7 +6945,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -7470,7 +6956,6 @@ "version": "0.6.5", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -7484,14 +6969,12 @@ "node_modules/cli-table3/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/cli-table3/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7506,7 +6989,6 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -7520,15 +7002,13 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7543,7 +7023,6 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7560,7 +7039,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -7574,7 +7052,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -7583,7 +7060,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7593,7 +7069,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7604,26 +7079,22 @@ "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==", - "license": "MIT" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "license": "MIT" + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, "node_modules/combine-promises": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", - "license": "MIT", "engines": { "node": ">=10" } @@ -7632,7 +7103,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7642,7 +7112,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "license": "MIT", "engines": { "node": ">= 6" } @@ -7650,14 +7119,12 @@ "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "license": "ISC" + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -7669,7 +7136,6 @@ "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7678,7 +7144,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", - "license": "MIT", "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", @@ -7696,7 +7161,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7705,7 +7169,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -7713,14 +7176,12 @@ "node_modules/compression/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/concat-stream": { "version": "2.0.0", @@ -7730,7 +7191,6 @@ "engines": [ "node >= 6.0" ], - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -7743,7 +7203,6 @@ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.2", "date-fns": "^2.30.0", @@ -7771,7 +7230,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7783,16 +7241,14 @@ } }, "node_modules/confbox": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.1.tgz", - "integrity": "sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==", - "license": "MIT" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==" }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -7802,7 +7258,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", - "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^6.0.1", "graceful-fs": "^4.2.6", @@ -7821,7 +7276,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "license": "MIT", "engines": { "node": ">=0.8" } @@ -7830,7 +7284,6 @@ "version": "3.4.2", "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "license": "MIT", "engines": { "node": "^14.18.0 || >=16.10.0" } @@ -7839,7 +7292,6 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7848,7 +7300,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7856,14 +7307,12 @@ "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/cookie": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7871,14 +7320,12 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/copy-text-to-clipboard": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -7890,7 +7337,6 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", @@ -7914,7 +7360,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -7926,7 +7371,6 @@ "version": "13.2.2", "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", @@ -7945,7 +7389,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -7958,7 +7401,6 @@ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz", "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==", "hasInstallScript": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -7968,7 +7410,6 @@ "version": "3.41.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", - "license": "MIT", "dependencies": { "browserslist": "^4.24.4" }, @@ -7982,7 +7423,6 @@ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz", "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==", "hasInstallScript": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -7991,14 +7431,12 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cose-base": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", - "license": "MIT", "dependencies": { "layout-base": "^1.0.0" } @@ -8007,7 +7445,6 @@ "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -8033,7 +7470,6 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -8047,7 +7483,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "license": "MIT", "dependencies": { "type-fest": "^1.0.1" }, @@ -8062,7 +7497,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -8084,7 +7518,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -8099,7 +7532,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -8112,7 +7544,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", - "license": "ISC", "engines": { "node": "^14 || ^16 || >=18" }, @@ -8134,7 +7565,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0", @@ -8161,7 +7591,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -8173,7 +7602,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -8186,7 +7614,6 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", - "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -8221,7 +7648,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "cssnano": "^6.0.1", @@ -8275,7 +7701,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -8287,7 +7712,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -8303,7 +7727,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -8316,7 +7739,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -8337,14 +7759,12 @@ "type": "github", "url": "https://github.com/sponsors/csstools" } - ], - "license": "MIT-0" + ] }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -8356,7 +7776,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", - "license": "MIT", "dependencies": { "cssnano-preset-default": "^6.1.2", "lilconfig": "^3.1.1" @@ -8376,7 +7795,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", - "license": "MIT", "dependencies": { "autoprefixer": "^10.4.19", "browserslist": "^4.23.0", @@ -8397,7 +7815,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", - "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "css-declaration-sorter": "^7.2.0", @@ -8441,7 +7858,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", - "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -8453,7 +7869,6 @@ "version": "5.0.5", "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", - "license": "MIT", "dependencies": { "css-tree": "~2.2.0" }, @@ -8466,7 +7881,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", - "license": "MIT", "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" @@ -8479,20 +7893,17 @@ "node_modules/csso/node_modules/mdn-data": { "version": "2.0.28", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "license": "CC0-1.0" + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/cytoscape": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.31.1.tgz", - "integrity": "sha512-Hx5Mtb1+hnmAKaZZ/7zL1Y5HTFYOjdDswZy/jD+1WINRU8KVi1B7+vlHdsTwY+VCFucTreoyu1RDzQJ9u0d2Hw==", - "license": "MIT", + "version": "3.31.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.31.2.tgz", + "integrity": "sha512-/eOXg2uGdMdpGlEes5Sf6zE+jUG+05f3htFNQIxLxduOH/SsaUZiPBfAwP1btVIVzsnhiNOdi+hvDRLYfMZjGw==", "engines": { "node": ">=0.10" } @@ -8501,7 +7912,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", - "license": "MIT", "dependencies": { "cose-base": "^1.0.0" }, @@ -8513,7 +7923,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", - "license": "MIT", "dependencies": { "cose-base": "^2.2.0" }, @@ -8525,7 +7934,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", - "license": "MIT", "dependencies": { "layout-base": "^2.0.0" } @@ -8533,14 +7941,12 @@ "node_modules/cytoscape-fcose/node_modules/layout-base": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", - "license": "MIT" + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -8581,7 +7987,6 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -8593,7 +7998,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8602,7 +8006,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -8618,7 +8021,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -8630,7 +8032,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8639,7 +8040,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "license": "ISC", "dependencies": { "d3-array": "^3.2.0" }, @@ -8651,7 +8051,6 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "license": "ISC", "dependencies": { "delaunator": "5" }, @@ -8663,7 +8062,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8672,7 +8070,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -8685,7 +8082,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "license": "ISC", "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -8710,7 +8106,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", "engines": { "node": ">= 10" } @@ -8719,7 +8114,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "license": "BSD-3-Clause", "engines": { "node": ">=12" } @@ -8728,7 +8122,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" }, @@ -8740,7 +8133,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -8754,7 +8146,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8763,7 +8154,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -8775,7 +8165,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8784,7 +8173,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -8796,7 +8184,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8805,7 +8192,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8814,7 +8200,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8823,7 +8208,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8832,7 +8216,6 @@ "version": "0.12.3", "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", - "license": "BSD-3-Clause", "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" @@ -8842,7 +8225,6 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "license": "BSD-3-Clause", "dependencies": { "internmap": "^1.0.0" } @@ -8850,14 +8232,12 @@ "node_modules/d3-sankey/node_modules/d3-path": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", - "license": "BSD-3-Clause" + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" }, "node_modules/d3-sankey/node_modules/d3-shape": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" } @@ -8865,14 +8245,12 @@ "node_modules/d3-sankey/node_modules/internmap": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "license": "ISC" + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -8888,7 +8266,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -8901,7 +8278,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8910,7 +8286,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", "dependencies": { "d3-path": "^3.1.0" }, @@ -8922,7 +8297,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -8934,7 +8308,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -8946,7 +8319,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "license": "ISC", "engines": { "node": ">=12" } @@ -8955,7 +8327,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -8974,7 +8345,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -8990,7 +8360,6 @@ "version": "7.0.11", "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", - "license": "MIT", "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" @@ -9001,7 +8370,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.21.0" }, @@ -9016,20 +8384,17 @@ "node_modules/dayjs": { "version": "1.11.13", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "license": "MIT" + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -9046,7 +8411,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", - "license": "MIT", "dependencies": { "character-entities": "^2.0.0" }, @@ -9059,7 +8423,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -9074,7 +8437,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -9086,7 +8448,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -9095,7 +8456,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9104,7 +8464,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -9116,7 +8475,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "license": "MIT", "engines": { "node": ">=10" } @@ -9125,7 +8483,6 @@ "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==", - "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -9142,7 +8499,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", "engines": { "node": ">=8" } @@ -9151,7 +8507,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -9168,7 +8523,6 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "license": "MIT", "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", @@ -9190,7 +8544,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" } @@ -9199,7 +8552,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9208,7 +8560,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -9217,7 +8568,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -9226,14 +8576,12 @@ "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "license": "MIT" + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" }, "node_modules/detect-port": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", - "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "4" @@ -9250,7 +8598,6 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "^2.6.0" @@ -9267,7 +8614,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -9275,14 +8621,12 @@ "node_modules/detect-port-alt/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", "dependencies": { "dequal": "^2.0.0" }, @@ -9295,7 +8639,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -9307,7 +8650,6 @@ "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -9319,7 +8661,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "license": "MIT", "dependencies": { "utila": "~0.4" } @@ -9328,7 +8669,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -9347,14 +8687,12 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -9366,10 +8704,9 @@ } }, "node_modules/dompurify": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", - "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", - "license": "(MPL-2.0 OR Apache-2.0)", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz", + "integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==", "optionalDependencies": { "@types/trusted-types": "^2.0.7" } @@ -9378,7 +8715,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -9392,7 +8728,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -9402,7 +8737,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -9417,7 +8751,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "license": "MIT", "engines": { "node": ">=8" } @@ -9426,7 +8759,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -9439,44 +8771,37 @@ "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "license": "MIT" + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.5.128", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz", - "integrity": "sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==", - "license": "ISC" + "version": "1.5.132", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.132.tgz", + "integrity": "sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==" }, "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==", - "license": "MIT" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/emojilib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", - "license": "MIT" + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "license": "MIT", "engines": { "node": ">= 4" } @@ -9485,7 +8810,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.1.0.tgz", "integrity": "sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9495,7 +8819,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9504,7 +8827,6 @@ "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -9517,7 +8839,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -9529,14 +8850,12 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -9545,7 +8864,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -9554,7 +8872,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -9562,14 +8879,12 @@ "node_modules/es-module-lexer": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "license": "MIT" + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==" }, "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==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -9581,7 +8896,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", - "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", @@ -9597,7 +8911,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", - "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", @@ -9613,7 +8926,6 @@ "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" } @@ -9622,7 +8934,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -9633,14 +8944,12 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "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==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -9652,7 +8961,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -9665,7 +8973,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -9678,7 +8985,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -9690,7 +8996,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -9699,7 +9004,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -9708,7 +9012,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" }, @@ -9721,7 +9024,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", - "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", @@ -9737,7 +9039,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -9747,7 +9048,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" @@ -9761,7 +9061,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", - "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", @@ -9776,7 +9075,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.3.2.tgz", "integrity": "sha512-hYH1aSvQI63Cvq3T3loaem6LW4u72F187zW4FHpTrReJSm6W66vYTFNO1vH/chmcOulp1HlAj1pxn8Ag0oXI5Q==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" }, @@ -9788,7 +9086,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", - "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" @@ -9802,7 +9099,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -9811,7 +9107,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -9820,7 +9115,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", - "license": "MIT", "engines": { "node": ">=6.0.0" }, @@ -9832,7 +9126,6 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9852,14 +9145,12 @@ "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -9868,7 +9159,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -9891,7 +9181,6 @@ "version": "4.21.2", "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -9937,7 +9226,6 @@ "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -9949,7 +9237,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -9957,20 +9244,17 @@ "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/express/node_modules/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "node_modules/express/node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9978,20 +9262,17 @@ "node_modules/exsolve": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz", - "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==", - "license": "MIT" + "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==" }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -10002,14 +9283,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "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==", - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -10024,8 +9303,7 @@ "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==", - "license": "MIT" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-uri": { "version": "3.0.6", @@ -10040,14 +9318,12 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -10056,7 +9332,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", - "license": "MIT", "dependencies": { "format": "^0.2.0" }, @@ -10069,7 +9344,6 @@ "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -10081,7 +9355,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", - "license": "MIT", "dependencies": { "xml-js": "^1.6.11" }, @@ -10093,7 +9366,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -10108,7 +9380,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -10117,7 +9388,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -10137,7 +9407,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -10153,7 +9422,6 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -10161,14 +9429,12 @@ "node_modules/file-loader/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==", - "license": "MIT" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/file-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -10186,7 +9452,6 @@ "version": "8.0.7", "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "license": "BSD-3-Clause", "engines": { "node": ">= 0.4.0" } @@ -10195,7 +9460,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -10207,7 +9471,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -10225,7 +9488,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -10233,14 +9495,12 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/find-cache-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" @@ -10256,7 +9516,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -10272,7 +9531,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -10287,7 +9545,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -10302,7 +9559,6 @@ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, - "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" @@ -10319,7 +9575,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC", "engines": { "node": ">=14" }, @@ -10331,7 +9586,6 @@ "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.8.3", "@types/json-schema": "^7.0.5", @@ -10370,7 +9624,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -10386,7 +9639,6 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -10395,7 +9647,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", @@ -10411,7 +9662,6 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -10425,14 +9675,12 @@ "node_modules/fork-ts-checker-webpack-plugin/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==", - "license": "MIT" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.4", "ajv": "^6.12.2", @@ -10450,7 +9698,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -10459,7 +9706,6 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "license": "ISC", "engines": { "node": ">= 6" } @@ -10468,7 +9714,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "license": "MIT", "engines": { "node": ">= 14.17" } @@ -10485,7 +9730,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10494,7 +9738,6 @@ "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": "*" }, @@ -10507,7 +9750,6 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10516,7 +9758,6 @@ "version": "11.3.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -10529,21 +9770,18 @@ "node_modules/fs-monkey": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "license": "Unlicense" + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -10556,7 +9794,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10565,7 +9802,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -10575,7 +9811,6 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -10584,7 +9819,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -10607,14 +9841,12 @@ "node_modules/get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "license": "ISC" + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, "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==", - "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -10627,7 +9859,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -10638,15 +9869,13 @@ "node_modules/github-slugger": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", - "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", - "license": "ISC" + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10666,7 +9895,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -10677,14 +9905,12 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause" + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "license": "MIT", "dependencies": { "ini": "2.0.0" }, @@ -10699,7 +9925,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "license": "ISC", "engines": { "node": ">=10" } @@ -10708,7 +9933,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -10720,7 +9944,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -10734,7 +9957,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10746,7 +9968,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "license": "MIT", "engines": { "node": ">=4" } @@ -10755,7 +9976,6 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -10775,7 +9995,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10787,7 +10006,6 @@ "version": "12.6.1", "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", - "license": "MIT", "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", @@ -10812,7 +10030,6 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", - "license": "MIT", "engines": { "node": ">=14.16" }, @@ -10823,14 +10040,12 @@ "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==", - "license": "ISC" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "license": "MIT", "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", @@ -10845,7 +10060,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -10854,7 +10068,6 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -10867,7 +10080,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "license": "MIT", "dependencies": { "duplexer": "^0.1.2" }, @@ -10881,20 +10093,17 @@ "node_modules/hachure-fill": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", - "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", - "license": "MIT" + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==" }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "license": "MIT" + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, "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==", - "license": "MIT", "engines": { "node": ">=8" } @@ -10903,7 +10112,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -10915,7 +10123,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10927,7 +10134,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -10939,7 +10145,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -10951,7 +10156,6 @@ "version": "8.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -10971,7 +10175,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -10984,7 +10187,6 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -11009,7 +10211,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -11037,7 +10238,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -11064,7 +10264,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -11083,7 +10282,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11093,7 +10291,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -11106,7 +10303,6 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -11123,7 +10319,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "license": "MIT", "bin": { "he": "bin/he" } @@ -11132,7 +10327,6 @@ "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", @@ -11146,7 +10340,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } @@ -11156,7 +10349,6 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, @@ -11168,20 +10360,17 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/howler": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.4.tgz", - "integrity": "sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==", - "license": "MIT" + "integrity": "sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==" }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -11192,14 +10381,12 @@ "node_modules/hpack.js/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11213,22 +10400,20 @@ "node_modules/hpack.js/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/html-entities": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.5.tgz", - "integrity": "sha512-24CG9o869vSa86BGCf7x65slrAztzFTU5VBQzEIwqjhKuB4zCC7xlH/7NCcZ1EN5MdmGx9lUqugfutuT6J+jKQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "funding": [ { "type": "github", @@ -11238,20 +10423,17 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ], - "license": "MIT" + ] }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "license": "MIT" + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" }, "node_modules/html-minifier-terser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", - "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "~5.3.2", @@ -11272,7 +10454,6 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", "engines": { "node": ">=14" } @@ -11281,7 +10462,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "license": "MIT", "engines": { "node": ">=8" }, @@ -11293,7 +10473,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11303,7 +10482,6 @@ "version": "5.6.3", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", - "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -11335,7 +10513,6 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "license": "MIT", "engines": { "node": ">= 12" } @@ -11344,7 +10521,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -11372,7 +10548,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -11383,20 +10558,17 @@ "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "license": "BSD-2-Clause" + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "license": "MIT" + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -11411,14 +10583,12 @@ "node_modules/http-parser-js": { "version": "0.5.9", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz", - "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==", - "license": "MIT" + "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -11432,7 +10602,6 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", - "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -11456,7 +10625,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -11468,7 +10636,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", - "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" @@ -11481,7 +10648,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -11490,7 +10656,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -11502,7 +10667,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -11514,16 +10678,14 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/image-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.0.tgz", - "integrity": "sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w==", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", "dependencies": { "queue": "6.0.2" }, @@ -11538,7 +10700,6 @@ "version": "9.0.21", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -11548,7 +10709,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -11564,7 +10724,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "license": "MIT", "engines": { "node": ">=8" } @@ -11574,7 +10733,6 @@ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11584,7 +10742,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -11593,7 +10750,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "license": "MIT", "engines": { "node": ">=8" } @@ -11602,7 +10758,6 @@ "version": "0.2.0-alpha.45", "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.45.tgz", "integrity": "sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==", - "license": "MIT", "engines": { "node": ">=12" } @@ -11612,7 +10767,6 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -11621,26 +10775,22 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/inline-style-parser": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", - "license": "MIT" + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" }, "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", "engines": { "node": ">=12" } @@ -11649,7 +10799,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -11658,7 +10807,6 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } @@ -11667,7 +10815,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "license": "MIT", "engines": { "node": ">= 10" } @@ -11676,7 +10823,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11686,7 +10832,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" @@ -11699,14 +10844,12 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -11718,7 +10861,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "license": "MIT", "dependencies": { "ci-info": "^3.2.0" }, @@ -11730,7 +10872,6 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -11745,7 +10886,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11755,7 +10895,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -11770,14 +10909,12 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", "integrity": "sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11786,7 +10923,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11795,7 +10931,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", "engines": { "node": ">=8" } @@ -11804,7 +10939,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -11816,7 +10950,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11826,7 +10959,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -11842,7 +10974,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -11854,7 +10985,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -11863,7 +10993,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11872,7 +11001,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "license": "MIT", "engines": { "node": ">=6" } @@ -11881,7 +11009,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "license": "MIT", "engines": { "node": ">=8" } @@ -11890,7 +11017,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -11902,7 +11028,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -11914,7 +11039,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11923,7 +11047,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "license": "MIT", "engines": { "node": ">=6" } @@ -11932,7 +11055,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", "engines": { "node": ">=8" }, @@ -11943,14 +11065,12 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "license": "MIT" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -11962,7 +11082,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", - "license": "MIT", "engines": { "node": ">=12" } @@ -11970,20 +11089,17 @@ "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "license": "MIT" + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11993,7 +11109,6 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -12008,7 +11123,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -12025,7 +11139,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "license": "MIT", "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -12040,7 +11153,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12055,7 +11167,6 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -12064,7 +11175,6 @@ "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", @@ -12076,14 +11186,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "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==", - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -12095,7 +11203,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -12106,26 +11213,22 @@ "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==", - "license": "MIT" + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -12137,7 +11240,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -12153,7 +11255,6 @@ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], - "license": "MIT", "dependencies": { "commander": "^8.3.0" }, @@ -12165,7 +11266,6 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "license": "MIT", "engines": { "node": ">= 12" } @@ -12174,7 +11274,6 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -12188,7 +11287,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12197,7 +11295,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "license": "MIT", "engines": { "node": ">=6" } @@ -12205,14 +11302,12 @@ "node_modules/kolorist": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "license": "MIT" + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" }, "node_modules/langium": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", - "license": "MIT", "dependencies": { "chevrotain": "~11.0.3", "chevrotain-allstar": "~0.3.0", @@ -12228,7 +11323,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", - "license": "MIT", "dependencies": { "package-json": "^8.1.0" }, @@ -12243,7 +11337,6 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", - "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -12252,14 +11345,12 @@ "node_modules/layout-base": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", - "license": "MIT" + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "license": "MIT", "engines": { "node": ">=6" } @@ -12269,7 +11360,6 @@ "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-1.0.0.tgz", "integrity": "sha512-gpgBvPn7IFIAL32f0o6Nsh2g+5uOvkt4eK9epTfgE4YVxBxwVhJ/p1888lMm/u8mXdu1ETLSi6zeEmkBI+0F3w==", "dev": true, - "license": "MIT", "bin": { "levenshtein-edit-distance": "cli.js" } @@ -12278,7 +11368,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -12289,15 +11378,13 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/load-plugin": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-6.0.3.tgz", "integrity": "sha512-kc0X2FEUZr145odl68frm+lMJuQ23+rTXYmR6TImqPtbpmXC4vVXbWKDQ9IzndA0HfyQamWfKLhzsqGSTxE63w==", "dev": true, - "license": "MIT", "dependencies": { "@npmcli/config": "^8.0.0", "import-meta-resolve": "^4.0.0" @@ -12311,7 +11398,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "license": "MIT", "engines": { "node": ">=6.11.5" } @@ -12320,7 +11406,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -12334,7 +11419,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", - "license": "MIT", "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.0.1", @@ -12351,7 +11435,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -12365,38 +11448,32 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT" + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "license": "MIT" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "license": "MIT" + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "license": "MIT" + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -12406,7 +11483,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -12418,7 +11494,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -12427,7 +11502,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -12439,7 +11513,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -12448,7 +11521,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", - "license": "MIT", "engines": { "node": ">=16" }, @@ -12460,7 +11532,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -12470,7 +11541,6 @@ "version": "15.0.7", "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.7.tgz", "integrity": "sha512-dgLIeKGLx5FwziAnsk4ONoGwHwGPJzselimvlVskE9XLN4Orv9u2VA3GWw/lYUqjfA0rUT/6fqKwfZJapP9BEg==", - "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -12482,7 +11552,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -12491,7 +11560,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -12512,7 +11580,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", @@ -12528,7 +11595,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -12540,7 +11606,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -12573,14 +11638,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/mdast-util-frontmatter": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -12598,7 +11661,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -12610,7 +11672,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", - "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", @@ -12629,7 +11690,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", @@ -12656,7 +11716,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12675,14 +11734,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/mdast-util-gfm-footnote": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", @@ -12699,7 +11756,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -12714,7 +11770,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -12731,7 +11786,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -12747,7 +11801,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", - "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", @@ -12764,7 +11817,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", - "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -12782,7 +11834,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", - "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -12806,7 +11857,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", - "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -12824,7 +11874,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" @@ -12838,7 +11887,6 @@ "version": "13.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -12859,7 +11907,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -12880,7 +11927,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" }, @@ -12892,14 +11938,12 @@ "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "license": "CC0-1.0" + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -12908,7 +11952,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -12920,7 +11963,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -12928,14 +11970,12 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", "engines": { "node": ">= 8" } @@ -12944,7 +11984,6 @@ "version": "11.6.0", "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.6.0.tgz", "integrity": "sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==", - "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^7.0.4", "@iconify/utils": "^2.1.33", @@ -12976,7 +12015,6 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", "bin": { "uuid": "dist/esm/bin/uuid" } @@ -12985,7 +12023,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13004,7 +12041,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", @@ -13039,7 +12075,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", @@ -13073,7 +12108,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13093,7 +12127,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13112,14 +12145,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-directive": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", - "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -13148,7 +12179,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13168,7 +12198,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13187,14 +12216,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-frontmatter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", - "license": "MIT", "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -13220,7 +12247,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13239,14 +12265,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-gfm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", - "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", @@ -13266,7 +12290,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", @@ -13292,7 +12315,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13311,14 +12333,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-gfm-footnote": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", - "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", @@ -13348,7 +12368,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13368,7 +12387,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13387,14 +12405,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-gfm-strikethrough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", - "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -13421,14 +12437,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-gfm-table": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", - "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -13455,7 +12469,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13475,7 +12488,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13494,14 +12506,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-gfm-tagfilter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", - "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -13514,7 +12524,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", - "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -13541,7 +12550,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13561,7 +12569,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13580,8 +12587,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-mdx-expression": { "version": "3.0.1", @@ -13597,7 +12603,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -13623,7 +12628,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13643,7 +12647,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13662,14 +12665,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-mdx-jsx": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -13701,7 +12702,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13721,7 +12721,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13740,14 +12739,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-extension-mdx-md": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", - "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -13760,7 +12757,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", - "license": "MIT", "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", @@ -13780,7 +12776,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -13811,7 +12806,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13830,8 +12824,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-factory-destination": { "version": "2.0.1", @@ -13847,7 +12840,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -13868,7 +12860,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13887,8 +12878,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-factory-label": { "version": "2.0.1", @@ -13904,7 +12894,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -13926,7 +12915,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13945,8 +12933,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-factory-mdx-expression": { "version": "2.0.3", @@ -13962,7 +12949,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -13989,7 +12975,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14009,7 +12994,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14028,8 +13012,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-factory-space": { "version": "1.1.0", @@ -14045,7 +13028,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-types": "^1.0.0" @@ -14064,8 +13046,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-factory-title": { "version": "2.0.1", @@ -14081,7 +13062,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -14103,7 +13083,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14123,7 +13102,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14142,8 +13120,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-factory-whitespace": { "version": "2.0.1", @@ -14159,7 +13136,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -14181,7 +13157,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14201,7 +13176,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14220,8 +13194,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-character": { "version": "1.2.0", @@ -14237,7 +13210,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^1.0.0", "micromark-util-types": "^1.0.0" @@ -14256,8 +13228,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-chunked": { "version": "2.0.1", @@ -14273,7 +13244,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -14291,8 +13261,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-classify-character": { "version": "2.0.1", @@ -14308,7 +13277,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -14329,7 +13297,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14348,8 +13315,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-combine-extensions": { "version": "2.0.1", @@ -14365,7 +13331,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14385,7 +13350,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -14403,8 +13367,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-decode-string": { "version": "2.0.1", @@ -14420,7 +13383,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -14442,7 +13404,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14461,8 +13422,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-encode": { "version": "2.0.1", @@ -14477,8 +13437,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-events-to-acorn": { "version": "2.0.3", @@ -14494,7 +13453,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", @@ -14518,8 +13476,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-html-tag-name": { "version": "2.0.1", @@ -14534,8 +13491,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-normalize-identifier": { "version": "2.0.1", @@ -14551,7 +13507,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -14569,8 +13524,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-resolve-all": { "version": "2.0.1", @@ -14586,7 +13540,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" } @@ -14605,7 +13558,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", @@ -14626,7 +13578,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14645,8 +13596,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-subtokenize": { "version": "2.1.0", @@ -14662,7 +13612,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -14683,8 +13632,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-symbol": { "version": "1.1.0", @@ -14699,8 +13647,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark-util-types": { "version": "2.0.2", @@ -14715,8 +13662,7 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromark/node_modules/micromark-factory-space": { "version": "2.0.1", @@ -14732,7 +13678,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14752,7 +13697,6 @@ "url": "https://opencollective.com/unified" } ], - "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -14771,14 +13715,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ], - "license": "MIT" + ] }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -14791,7 +13733,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -14803,7 +13744,6 @@ "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -14812,7 +13752,6 @@ "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "license": "MIT", "dependencies": { "mime-db": "~1.33.0" }, @@ -14824,7 +13763,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", "engines": { "node": ">=6" } @@ -14833,7 +13771,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -14845,7 +13782,6 @@ "version": "2.9.2", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", - "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -14864,14 +13800,12 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14883,7 +13817,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14893,7 +13826,6 @@ "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" } @@ -14902,7 +13834,6 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", - "license": "MIT", "dependencies": { "acorn": "^8.14.0", "pathe": "^2.0.1", @@ -14913,14 +13844,12 @@ "node_modules/mlly/node_modules/confbox": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "license": "MIT" + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==" }, "node_modules/mlly/node_modules/pkg-types": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "license": "MIT", "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", @@ -14931,7 +13860,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "license": "MIT", "engines": { "node": ">=10" } @@ -14939,14 +13867,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -14965,7 +13891,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -14977,7 +13902,6 @@ "version": "0.6.4", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -14985,14 +13909,12 @@ "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -15002,7 +13924,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", - "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.6.0", "char-regex": "^1.0.2", @@ -15017,7 +13938,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -15025,15 +13945,13 @@ "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" + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" }, "node_modules/nopt": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "^2.0.0" }, @@ -15049,7 +13967,6 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -15063,7 +13980,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15072,7 +13988,6 @@ "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" } @@ -15081,7 +13996,6 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", - "license": "MIT", "engines": { "node": ">=14.16" }, @@ -15094,7 +14008,6 @@ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -15107,7 +14020,6 @@ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -15117,7 +14029,6 @@ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", @@ -15133,7 +14044,6 @@ "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz", "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", "dev": true, - "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -15148,7 +14058,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -15159,14 +14068,12 @@ "node_modules/nprogress": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", - "license": "MIT" + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -15178,7 +14085,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", - "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -15198,7 +14104,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -15214,7 +14119,6 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -15222,14 +14126,12 @@ "node_modules/null-loader/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==", - "license": "MIT" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/null-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -15247,7 +14149,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15256,7 +14157,6 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -15268,7 +14168,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -15277,7 +14176,6 @@ "version": "4.1.7", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -15296,14 +14194,12 @@ "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "license": "MIT" + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -15315,7 +14211,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -15324,7 +14219,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", "dependencies": { "wrappy": "1" } @@ -15333,7 +14227,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -15348,7 +14241,6 @@ "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -15365,7 +14257,6 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "license": "(WTFPL OR MIT)", "bin": { "opener": "bin/opener-bin.js" } @@ -15374,7 +14265,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "license": "MIT", "engines": { "node": ">=12.20" } @@ -15383,7 +14273,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -15398,7 +14287,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -15413,7 +14301,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -15428,7 +14315,6 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -15441,7 +14327,6 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "license": "MIT", "engines": { "node": ">= 4" } @@ -15450,7 +14335,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", "engines": { "node": ">=6" } @@ -15459,7 +14343,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", - "license": "MIT", "dependencies": { "got": "^12.1.0", "registry-auth-token": "^5.0.1", @@ -15477,14 +14360,12 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" + "dev": true }, "node_modules/package-manager-detector": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", - "license": "MIT", "dependencies": { "quansync": "^0.2.7" } @@ -15493,7 +14374,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -15503,7 +14383,6 @@ "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==", - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -15515,7 +14394,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", - "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", @@ -15533,14 +14411,12 @@ "node_modules/parse-entities/node_modules/@types/unist": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -15557,14 +14433,12 @@ "node_modules/parse-numeric-range": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", - "license": "ISC" + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" }, "node_modules/parse5": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", - "license": "MIT", "dependencies": { "entities": "^4.5.0" }, @@ -15576,7 +14450,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" @@ -15589,7 +14462,6 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -15598,7 +14470,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -15607,14 +14478,12 @@ "node_modules/path-data-parser": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", - "license": "MIT" + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==" }, "node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -15623,7 +14492,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15631,14 +14499,12 @@ "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "license": "(WTFPL OR MIT)" + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" }, "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==", - "license": "MIT", "engines": { "node": ">=8" } @@ -15646,15 +14512,13 @@ "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==", - "license": "MIT" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -15670,14 +14534,12 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/path-to-regexp": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", - "license": "MIT", "dependencies": { "isarray": "0.0.1" } @@ -15686,7 +14548,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "license": "MIT", "engines": { "node": ">=8" } @@ -15694,20 +14555,17 @@ "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "license": "MIT" + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==" }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" + "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==", - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -15719,7 +14577,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "license": "MIT", "dependencies": { "find-up": "^6.3.0" }, @@ -15734,7 +14591,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz", "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", - "license": "MIT", "dependencies": { "confbox": "^0.2.1", "exsolve": "^1.0.1", @@ -15745,7 +14601,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "license": "MIT", "dependencies": { "find-up": "^3.0.0" }, @@ -15757,7 +14612,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -15769,7 +14623,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -15782,7 +14635,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -15797,7 +14649,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -15809,7 +14660,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", "engines": { "node": ">=4" } @@ -15817,14 +14667,12 @@ "node_modules/points-on-curve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", - "license": "MIT" + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==" }, "node_modules/points-on-path": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", - "license": "MIT", "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" @@ -15848,7 +14696,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", @@ -15872,7 +14719,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -15887,7 +14733,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -15900,7 +14745,6 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0" @@ -15916,7 +14760,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -15941,7 +14784,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", @@ -15970,7 +14812,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" @@ -15996,7 +14837,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" @@ -16012,7 +14852,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", - "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", @@ -16030,7 +14869,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", - "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" @@ -16056,7 +14894,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "dependencies": { "@csstools/cascade-layer-name-parser": "^2.0.4", "@csstools/css-parser-algorithms": "^3.0.4", @@ -16084,7 +14921,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "dependencies": { "@csstools/cascade-layer-name-parser": "^2.0.4", "@csstools/css-parser-algorithms": "^3.0.4", @@ -16113,7 +14949,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "dependencies": { "@csstools/cascade-layer-name-parser": "^2.0.4", "@csstools/css-parser-algorithms": "^3.0.4", @@ -16131,7 +14966,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16154,7 +14988,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -16169,7 +15002,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16182,7 +15014,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", - "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -16194,7 +15025,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", - "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -16206,7 +15036,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", - "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -16218,7 +15047,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", - "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -16230,7 +15058,6 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" }, @@ -16255,7 +15082,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0", @@ -16282,7 +15108,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -16297,7 +15122,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16320,7 +15144,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -16335,7 +15158,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16348,7 +15170,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "license": "MIT", "peerDependencies": { "postcss": "^8.1.0" } @@ -16367,7 +15188,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -16389,7 +15209,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" @@ -16415,7 +15234,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", @@ -16434,7 +15252,6 @@ "version": "7.3.4", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", - "license": "MIT", "dependencies": { "cosmiconfig": "^8.3.5", "jiti": "^1.20.0", @@ -16466,7 +15283,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16481,7 +15297,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", - "license": "MIT", "dependencies": { "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" @@ -16497,7 +15312,6 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^6.1.1" @@ -16513,7 +15327,6 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", - "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", @@ -16531,7 +15344,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16546,7 +15358,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", - "license": "MIT", "dependencies": { "colord": "^2.9.3", "cssnano-utils": "^4.0.2", @@ -16563,7 +15374,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", - "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "cssnano-utils": "^4.0.2", @@ -16580,7 +15390,6 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" }, @@ -16595,7 +15404,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -16607,7 +15415,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", @@ -16624,7 +15431,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16637,7 +15443,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", - "license": "ISC", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -16652,7 +15457,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16665,7 +15469,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -16690,7 +15493,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/selector-resolve-nested": "^3.0.0", "@csstools/selector-specificity": "^5.0.0", @@ -16717,7 +15519,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -16739,7 +15540,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "engines": { "node": ">=18" }, @@ -16751,7 +15551,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16764,7 +15563,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", - "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -16776,7 +15574,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16791,7 +15588,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16806,7 +15602,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16821,7 +15616,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16836,7 +15630,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16851,7 +15644,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", - "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" @@ -16867,7 +15659,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16882,7 +15673,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16907,7 +15697,6 @@ "url": "https://liberapay.com/mrcgrtz" } ], - "license": "MIT", "engines": { "node": ">=18" }, @@ -16919,7 +15708,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", - "license": "MIT", "dependencies": { "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" @@ -16945,7 +15733,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16960,7 +15747,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "license": "MIT", "peerDependencies": { "postcss": "^8" } @@ -16979,7 +15765,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -17004,7 +15789,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "@csstools/postcss-cascade-layers": "^5.0.1", "@csstools/postcss-color-function": "^4.0.8", @@ -17091,7 +15875,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -17106,7 +15889,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -17119,7 +15901,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -17134,7 +15915,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", - "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0" @@ -17150,7 +15930,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -17165,7 +15944,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "license": "MIT", "peerDependencies": { "postcss": "^8.0.3" } @@ -17184,7 +15962,6 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -17199,7 +15976,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -17212,7 +15988,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -17225,7 +16000,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", - "license": "MIT", "dependencies": { "sort-css-media-queries": "2.2.0" }, @@ -17240,7 +16014,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "svgo": "^3.2.0" @@ -17256,7 +16029,6 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" }, @@ -17270,14 +16042,12 @@ "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" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/postcss-zindex": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", - "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -17289,7 +16059,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -17299,7 +16068,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", - "license": "MIT", "engines": { "node": ">=4" } @@ -17308,7 +16076,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz", "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==", - "license": "MIT", "dependencies": { "@types/prismjs": "^1.26.0", "clsx": "^2.0.0" @@ -17321,7 +16088,6 @@ "version": "1.30.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", - "license": "MIT", "engines": { "node": ">=6" } @@ -17331,7 +16097,6 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -17339,22 +16104,19 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -17367,7 +16129,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -17380,7 +16141,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -17391,7 +16151,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -17402,7 +16161,6 @@ "resolved": "https://registry.npmjs.org/propose/-/propose-0.0.5.tgz", "integrity": "sha512-Jary1vb+ap2DIwOGfyiadcK4x1Iu3pzpkDBy8tljFPmQvnc9ES3m1PMZOMiWOG50cfoAyYNtGeBzrp+Rlh4G9A==", "dev": true, - "license": "MIT", "dependencies": { "levenshtein-edit-distance": "^1.0.0" } @@ -17410,14 +16168,12 @@ "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "license": "ISC" + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -17430,7 +16186,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -17439,7 +16194,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", "engines": { "node": ">=6" } @@ -17448,7 +16202,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", - "license": "MIT", "dependencies": { "escape-goat": "^4.0.0" }, @@ -17463,7 +16216,6 @@ "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -17487,14 +16239,12 @@ "type": "individual", "url": "https://github.com/sponsors/sxzz" } - ], - "license": "MIT" + ] }, "node_modules/queue": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "license": "MIT", "dependencies": { "inherits": "~2.0.3" } @@ -17516,14 +16266,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -17535,7 +16283,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -17544,7 +16291,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -17553,7 +16299,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -17568,7 +16313,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -17577,7 +16321,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -17589,7 +16332,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -17604,7 +16346,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -17613,7 +16354,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, @@ -17625,7 +16365,6 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.0", "address": "^1.1.2", @@ -17660,7 +16399,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -17676,7 +16414,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", - "license": "MIT", "engines": { "node": ">= 12.13.0" } @@ -17685,7 +16422,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -17700,7 +16436,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -17715,7 +16450,6 @@ "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==", - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -17730,7 +16464,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", "engines": { "node": ">=8" } @@ -17739,7 +16472,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -17751,7 +16483,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -17763,21 +16494,18 @@ "node_modules/react-error-overlay": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", - "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", - "license": "MIT" + "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==" }, "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", - "license": "MIT" + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" }, "node_modules/react-helmet-async": { "name": "@slorber/react-helmet-async", "version": "1.3.0", "resolved": "https://registry.npmjs.org/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz", "integrity": "sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==", - "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", @@ -17794,7 +16522,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", - "license": "MIT", "peerDependencies": { "react": "*" } @@ -17802,14 +16529,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-json-view-lite": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz", "integrity": "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -17822,7 +16547,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", - "license": "MIT", "dependencies": { "@types/react": "*" }, @@ -17834,7 +16558,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.3" }, @@ -17850,7 +16573,6 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", @@ -17870,7 +16592,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2" }, @@ -17883,7 +16604,6 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", @@ -17902,7 +16622,6 @@ "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -17916,7 +16635,6 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, - "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -17925,7 +16643,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -17939,7 +16656,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -17950,8 +16666,7 @@ "node_modules/reading-time": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", - "license": "MIT" + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" }, "node_modules/rechoir": { "version": "0.6.2", @@ -17968,7 +16683,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", @@ -17983,7 +16697,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", - "license": "MIT", "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", @@ -18000,7 +16713,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", @@ -18016,7 +16728,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", @@ -18032,7 +16743,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "license": "MIT", "dependencies": { "minimatch": "^3.0.5" }, @@ -18043,14 +16753,12 @@ "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "license": "MIT" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", - "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -18061,14 +16769,12 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -18077,7 +16783,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", - "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", @@ -18094,7 +16799,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", - "license": "MIT", "dependencies": { "@pnpm/npm-conf": "^2.1.0" }, @@ -18106,7 +16810,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", - "license": "MIT", "dependencies": { "rc": "1.2.8" }, @@ -18120,14 +16823,12 @@ "node_modules/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "license": "MIT" + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==" }, "node_modules/regjsparser": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", - "license": "BSD-2-Clause", "dependencies": { "jsesc": "~3.0.2" }, @@ -18139,7 +16840,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -18151,7 +16851,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", @@ -18166,7 +16865,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -18181,7 +16879,6 @@ "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -18191,7 +16888,6 @@ "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", "dev": true, - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", @@ -18208,7 +16904,6 @@ "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-12.0.1.tgz", "integrity": "sha512-2NAEOACoTgo+e+YAaCTODqbrWyhMVmlUyjxNCkTrDRHHQvH6+NbrnqVvQaLH/Q8Ket3v90A43dgAJmXv8y5Tkw==", "dev": true, - "license": "MIT", "dependencies": { "import-meta-resolve": "^4.0.0", "markdown-extensions": "^2.0.0", @@ -18227,7 +16922,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", @@ -18243,7 +16937,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.2", "emoticon": "^4.0.1", @@ -18259,7 +16952,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-frontmatter": "^2.0.0", @@ -18275,7 +16967,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", @@ -18293,7 +16984,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", - "license": "MIT", "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" @@ -18307,7 +16997,6 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -18320,10 +17009,9 @@ } }, "node_modules/remark-rehype": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", - "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", - "license": "MIT", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -18340,7 +17028,6 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", - "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", @@ -18356,7 +17043,6 @@ "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-13.1.0.tgz", "integrity": "sha512-z+glZ4zoRyrWimQHtoqJEFJdPoIR1R1SDr/JoWjmS6EsYlyhxNuCHtIt165gmV7ltOSFJ+rGsipqRGfBPInd7A==", "dev": true, - "license": "MIT", "dependencies": { "@types/hosted-git-info": "^3.0.0", "@types/mdast": "^4.0.0", @@ -18379,14 +17065,12 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -18399,7 +17083,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -18415,7 +17098,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -18429,7 +17111,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -18444,7 +17125,6 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -18458,7 +17138,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -18474,7 +17153,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -18486,7 +17164,6 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "license": "MIT", "engines": { "node": ">=0.10" } @@ -18496,7 +17173,6 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -18505,7 +17181,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -18521,14 +17196,12 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "license": "MIT" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "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==", - "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -18547,14 +17220,12 @@ "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "license": "MIT" + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, "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==", - "license": "MIT", "engines": { "node": ">=4" } @@ -18562,14 +17233,12 @@ "node_modules/resolve-pathname": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", - "license": "MIT" + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" }, "node_modules/responselike": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "license": "MIT", "dependencies": { "lowercase-keys": "^3.0.0" }, @@ -18585,7 +17254,6 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } @@ -18594,7 +17262,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -18605,7 +17272,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -18619,14 +17285,12 @@ "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "license": "Unlicense" + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" }, "node_modules/roughjs": { "version": "4.6.6", "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", - "license": "MIT", "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", @@ -18638,7 +17302,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", - "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0", @@ -18670,7 +17333,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -18678,15 +17340,13 @@ "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", - "license": "BSD-3-Clause" + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, "node_modules/rxjs": { "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -18708,26 +17368,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "license": "ISC" + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } @@ -18736,7 +17392,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -18755,14 +17410,12 @@ "version": "2.17.3", "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", - "license": "MIT", "peer": true }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" @@ -18774,14 +17427,12 @@ "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "license": "MIT" + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", - "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -18794,7 +17445,6 @@ "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -18806,7 +17456,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", - "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -18821,7 +17470,6 @@ "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -18845,7 +17493,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -18853,14 +17500,12 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/send/node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -18869,7 +17514,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -18878,7 +17522,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -18887,7 +17530,6 @@ "version": "6.1.6", "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", - "license": "MIT", "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", @@ -18901,14 +17543,12 @@ "node_modules/serve-handler/node_modules/path-to-regexp": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", - "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", - "license": "MIT" + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==" }, "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -18926,7 +17566,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -18935,7 +17574,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -18944,7 +17582,6 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -18958,26 +17595,22 @@ "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "license": "ISC" + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "license": "ISC" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -18986,7 +17619,6 @@ "version": "1.16.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -19001,7 +17633,6 @@ "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==", - "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -19017,14 +17648,12 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -19035,14 +17664,12 @@ "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", - "license": "MIT" + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" }, "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==", - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -19054,7 +17681,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", "engines": { "node": ">=8" } @@ -19063,7 +17689,6 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -19075,7 +17700,6 @@ "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -19092,7 +17716,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -19111,7 +17734,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -19127,7 +17749,6 @@ "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==", - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -19145,7 +17766,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -19163,14 +17783,12 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", - "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", @@ -19183,14 +17801,12 @@ "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "license": "MIT" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, "node_modules/sitemap": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", - "license": "MIT", "dependencies": { "@types/node": "^17.0.5", "@types/sax": "^1.2.1", @@ -19208,14 +17824,12 @@ "node_modules/sitemap/node_modules/@types/node": { "version": "17.0.45", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "license": "MIT" + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" }, "node_modules/skin-tone": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", - "license": "MIT", "dependencies": { "unicode-emoji-modifier-base": "^1.0.0" }, @@ -19227,7 +17841,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", "engines": { "node": ">=8" } @@ -19236,7 +17849,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -19246,7 +17858,6 @@ "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -19257,7 +17868,6 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -19266,7 +17876,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", - "license": "MIT", "engines": { "node": ">= 6.3.0" } @@ -19275,7 +17884,6 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "license": "BSD-3-Clause", "engines": { "node": ">= 8" } @@ -19284,7 +17892,6 @@ "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" } @@ -19293,7 +17900,6 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -19303,7 +17909,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -19312,7 +17917,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -19329,7 +17933,6 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -19339,15 +17942,13 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -19357,14 +17958,12 @@ "version": "3.0.21", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", - "dev": true, - "license": "CC0-1.0" + "dev": true }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -19380,7 +17979,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -19393,14 +17991,12 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/srcset": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -19412,22 +18008,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/std-env": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz", - "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==", - "license": "MIT" + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==" }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -19436,7 +18029,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -19455,7 +18047,6 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -19469,14 +18060,12 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -19488,7 +18077,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -19503,7 +18091,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -19517,7 +18104,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "license": "BSD-2-Clause", "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", @@ -19531,7 +18117,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -19545,7 +18130,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -19557,7 +18141,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -19566,7 +18149,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -19575,7 +18157,6 @@ "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==", - "license": "MIT", "engines": { "node": ">=8" }, @@ -19587,7 +18168,6 @@ "version": "1.1.16", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", - "license": "MIT", "dependencies": { "style-to-object": "1.0.8" } @@ -19596,7 +18176,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", - "license": "MIT", "dependencies": { "inline-style-parser": "0.2.4" } @@ -19605,7 +18184,6 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", - "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "postcss-selector-parser": "^6.0.16" @@ -19620,14 +18198,12 @@ "node_modules/stylis": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", - "license": "MIT" + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==" }, "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==", - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -19639,7 +18215,6 @@ "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==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -19650,14 +18225,12 @@ "node_modules/svg-parser": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "license": "MIT" + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" }, "node_modules/svgo": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", - "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", @@ -19682,7 +18255,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", "engines": { "node": ">= 10" } @@ -19691,7 +18263,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "license": "MIT", "engines": { "node": ">=6" } @@ -19700,7 +18271,6 @@ "version": "5.39.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", - "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -19718,7 +18288,6 @@ "version": "5.3.14", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -19752,7 +18321,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -19766,7 +18334,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -19780,44 +18347,37 @@ "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "license": "MIT" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "license": "MIT" + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "license": "MIT" + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, "node_modules/tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "license": "MIT" + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, "node_modules/tinyexec": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "license": "MIT" + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" }, "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==", - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -19829,7 +18389,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", "engines": { "node": ">=0.6" } @@ -19838,7 +18397,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "license": "MIT", "engines": { "node": ">=6" } @@ -19848,7 +18406,6 @@ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, - "license": "MIT", "bin": { "tree-kill": "cli.js" } @@ -19857,7 +18414,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -19867,7 +18423,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -19877,7 +18432,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "license": "MIT", "engines": { "node": ">=6.10" } @@ -19885,14 +18439,12 @@ "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==", - "license": "0BSD" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -19904,7 +18456,6 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -19917,7 +18468,6 @@ "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" } @@ -19926,7 +18476,6 @@ "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" }, @@ -19938,23 +18487,20 @@ "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "license": "Apache-2.0", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "peer": true, "bin": { "tsc": "bin/tsc", @@ -19967,20 +18513,17 @@ "node_modules/ufo": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", - "license": "MIT" + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "license": "MIT", "engines": { "node": ">=4" } @@ -19989,7 +18532,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", - "license": "MIT", "engines": { "node": ">=4" } @@ -19998,7 +18540,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -20011,7 +18552,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", - "license": "MIT", "engines": { "node": ">=4" } @@ -20020,7 +18560,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "license": "MIT", "engines": { "node": ">=4" } @@ -20029,7 +18568,6 @@ "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -20049,7 +18587,6 @@ "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-11.0.1.tgz", "integrity": "sha512-WEQghE91+0s3xPVs0YW6a5zUduNLjmANswX7YbBfksHNDGMjHxaWCql4SR7c9q0yov/XiIEdk6r/LqfPjaYGcw==", "dev": true, - "license": "MIT", "dependencies": { "@types/text-table": "^0.2.0", "chalk": "^5.0.0", @@ -20071,7 +18608,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -20084,7 +18620,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, - "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -20097,7 +18632,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -20113,7 +18647,6 @@ "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.2.2.tgz", "integrity": "sha512-15g/gWE7qQl9tQ3nAEbMd5h9HV1EACtFs6N9xaRBZICoCwnNGbal1kOs++ICf4aiTdItZxU2s/kYWhW7htlqJg==", "dev": true, - "license": "MIT", "dependencies": { "@types/concat-stream": "^2.0.0", "@types/debug": "^4.0.0", @@ -20147,7 +18680,6 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -20157,7 +18689,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -20178,7 +18709,6 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } @@ -20188,7 +18718,6 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, - "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -20198,7 +18727,6 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -20208,7 +18736,6 @@ "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" }, @@ -20224,7 +18751,6 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", @@ -20244,7 +18770,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=14.16" }, @@ -20256,7 +18781,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, @@ -20272,7 +18796,6 @@ "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.1.0.tgz", "integrity": "sha512-mOlg8Mp33pR0eeFpo5d2902ojqFFOKMMG2hF8bmH7ZlhnmjFgh0NI3/ZDwdaBJNbvrS7LZFVrBVtIE9KZ9s7vQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -20285,7 +18808,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -20298,7 +18820,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -20311,7 +18832,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -20324,7 +18844,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -20337,7 +18856,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", @@ -20352,7 +18870,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -20366,7 +18883,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -20375,7 +18891,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -20398,7 +18913,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -20414,7 +18928,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", - "license": "BSD-2-Clause", "dependencies": { "boxen": "^7.0.0", "chalk": "^5.0.1", @@ -20442,7 +18955,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", - "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.1", @@ -20464,7 +18976,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", - "license": "MIT", "engines": { "node": ">=14.16" }, @@ -20476,7 +18987,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -20488,7 +18998,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -20497,7 +19006,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "mime-types": "^2.1.27", @@ -20524,7 +19032,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -20540,7 +19047,6 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -20548,14 +19054,12 @@ "node_modules/url-loader/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==", - "license": "MIT" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/url-loader/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" } @@ -20564,7 +19068,6 @@ "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" }, @@ -20576,7 +19079,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -20593,20 +19095,17 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "license": "MIT" + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" }, "node_modules/utility-types": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", - "license": "MIT", "engines": { "node": ">= 4" } @@ -20615,7 +19114,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -20628,7 +19126,6 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -20638,7 +19135,6 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -20649,7 +19145,6 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -20657,14 +19152,12 @@ "node_modules/value-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", - "license": "MIT" + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -20673,7 +19166,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" @@ -20687,7 +19179,6 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" @@ -20701,7 +19192,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" @@ -20716,7 +19206,6 @@ "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-8.1.1.tgz", "integrity": "sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==", "dev": true, - "license": "MIT", "dependencies": { "@types/supports-color": "^8.0.0", "string-width": "^6.0.0", @@ -20737,7 +19226,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -20749,15 +19237,13 @@ "version": "10.4.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/vfile-reporter/node_modules/string-width": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", "dev": true, - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^10.2.1", @@ -20775,7 +19261,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -20791,7 +19276,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -20804,7 +19288,6 @@ "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-4.0.0.tgz", "integrity": "sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==", "dev": true, - "license": "MIT", "dependencies": { "vfile": "^6.0.0", "vfile-message": "^4.0.0" @@ -20819,7 +19302,6 @@ "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-3.0.0.tgz", "integrity": "sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==", "dev": true, - "license": "MIT", "dependencies": { "vfile": "^6.0.0", "vfile-message": "^4.0.0" @@ -20833,7 +19315,6 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -20842,7 +19323,6 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", - "license": "MIT", "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, @@ -20854,7 +19334,6 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" @@ -20863,33 +19342,28 @@ "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", - "license": "MIT" + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==" }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "license": "MIT" + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" }, "node_modules/vscode-uri": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", - "license": "MIT" + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" }, "node_modules/walk-up-path": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/watchpack": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -20902,7 +19376,6 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } @@ -20911,7 +19384,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -20921,7 +19393,6 @@ "version": "5.98.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", @@ -20967,7 +19438,6 @@ "version": "4.10.2", "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", - "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", @@ -20993,7 +19463,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", "engines": { "node": ">= 10" } @@ -21002,7 +19471,6 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", - "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -21025,7 +19493,6 @@ "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" } @@ -21034,7 +19501,6 @@ "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" }, @@ -21046,7 +19512,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -21055,7 +19520,6 @@ "version": "4.15.2", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -21114,7 +19578,6 @@ "version": "8.18.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -21135,7 +19598,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -21149,7 +19611,6 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -21158,7 +19619,6 @@ "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" } @@ -21167,7 +19627,6 @@ "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" }, @@ -21179,7 +19638,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-6.0.1.tgz", "integrity": "sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==", - "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", @@ -21200,14 +19658,12 @@ "node_modules/webpackbar/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/webpackbar/node_modules/markdown-table": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "license": "MIT", "dependencies": { "repeat-string": "^1.0.0" }, @@ -21220,7 +19676,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -21234,7 +19689,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -21251,7 +19705,6 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -21265,7 +19718,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } @@ -21274,7 +19726,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -21289,7 +19740,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "license": "MIT", "dependencies": { "string-width": "^5.0.1" }, @@ -21303,14 +19753,12 @@ "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "license": "MIT" + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -21329,7 +19777,6 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -21346,15 +19793,13 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -21368,7 +19813,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -21380,7 +19824,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -21392,7 +19835,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -21406,14 +19848,12 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -21425,7 +19865,6 @@ "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -21446,7 +19885,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -21458,7 +19896,6 @@ "version": "1.6.11", "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", - "license": "MIT", "dependencies": { "sax": "^1.2.4" }, @@ -21471,7 +19908,6 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } @@ -21479,15 +19915,13 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "license": "ISC" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", "dev": true, - "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -21500,7 +19934,6 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -21519,7 +19952,6 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } @@ -21528,15 +19960,13 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -21550,7 +19980,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", - "license": "MIT", "engines": { "node": ">=12.20" }, @@ -21562,7 +19991,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" From ca0d49ef24c084e88aa0f9cfe3bc5c9ee565aa8f Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 5 Apr 2025 09:32:07 +0330 Subject: [PATCH 21/91] refactor: change file extension --- .../{upgrade-guide.md => upgrade-guide.mdx} | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename docs/prologue/{upgrade-guide.md => upgrade-guide.mdx} (97%) diff --git a/docs/prologue/upgrade-guide.md b/docs/prologue/upgrade-guide.mdx similarity index 97% rename from docs/prologue/upgrade-guide.md rename to docs/prologue/upgrade-guide.mdx index cc2d54575..4e18072ef 100644 --- a/docs/prologue/upgrade-guide.md +++ b/docs/prologue/upgrade-guide.mdx @@ -104,7 +104,7 @@ Perform these steps to update your dependencies: Delete all Apiato first-party packages in `app/Containers/Vendor` to avoid dependency conflicts. These packages will be reinstalled after running `composer update`. 2. **Consolidate Dependencies** - If the following dependencies are defined in any Ship or Container `composer.json` file, + If the following dependencies are defined in the Ship or any Container `composer.json` file, move them to your application’s root `composer.json` file: - `apiato/core` - `laravel/passport` @@ -333,14 +333,14 @@ Review Carbon’s [release notes](https://github.com/briannesbitt/Carbon/release The `Apiato\Core\Traits\ModelTrait` trait has been renamed and moved to `Apiato\Core\Models\InteractsWithApiato`. -## ResourceKey +## Resource Key -#### `HasResourceKey` Interface {#hasResourceKeyInterface} +#### `HasResourceKey` Interface {#has-resource-key-interface} The `Apiato\Core\Contracts\HasResourceKey` interface has been renamed and moved to `Apiato\Http\Resources\ResourceKeyAware`. -#### `HasResourceKey` Trait {#hasResourceKeyTrait} +#### `HasResourceKey` Trait {#has-resource-key-trait} The `Apiato\Core\Traits\HasResourceKeyTrait` trait has been renamed and moved to `Apiato\Http\Resources\HasResourceKey`. @@ -351,11 +351,11 @@ and moved to `Apiato\Http\Resources\HasResourceKey`. Add the `readonly` keyword to your parent Value Object class and all Value Objects that extend it. -[HasResourceKeyTrait](#hasResourceKeyTrait) has been removed from the Core Value Object (`Apiato\Core\Values\Value`). +[HasResourceKeyTrait](#has-resource-key-trait) has been removed from the Core Value Object (`Apiato\Core\Values\Value`). If your Value Objects are relying on the `HasResourceKeyTrait`, -you need to refactor them to use the new [HasResourceKey](#hasResourceKeyTrait) trait -and implement the [ResourceKeyAware](#hasResourceKeyInterface) interface. +you need to refactor them to use the new [HasResourceKey](#has-resource-key-trait) trait +and implement the [ResourceKeyAware](#has-resource-key-interface) interface. ## Testing From d5535b1f1ec64803b4b05edd7a690a92e134ef8c Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 5 Apr 2025 11:03:39 +0330 Subject: [PATCH 22/91] docs: composer dependencies --- docs/prologue/upgrade-guide.mdx | 93 ++++++++++++++++++++------------- 1 file changed, 57 insertions(+), 36 deletions(-) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index 4e18072ef..537687646 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -97,45 +97,66 @@ Converts `$this->transform(...)` calls to `Response::create(...)`. PHP 8.2.0 or greater is now required. ### Composer Dependencies - -Perform these steps to update your dependencies: - -1. **Remove First-Party Apiato Packages** - Delete all Apiato first-party packages in `app/Containers/Vendor` to avoid dependency conflicts. - These packages will be reinstalled after running `composer update`. -2. **Consolidate Dependencies** - If the following dependencies are defined in the Ship or any Container `composer.json` file, - move them to your application’s root `composer.json` file: - - `apiato/core` - - `laravel/passport` -3. **Update Dependency Versions** - In your root `composer.json` file, update the versions as follows: - - `apiato/core` to `^13.0` - - `laravel/passport` to `^12.0` - - `spatie/laravel-permission` to `^6.0` - - `nunomaduro/collision` to `^8.1` - - `apiato/documentation-generator-container` to `^4.0` - - `apiato/localization` to `x` (if installed) - - `apiato/social-auth` to `x` (if installed) - - `phpunit/phpunit` to `^11.0` - - `barryvdh/laravel-ide-helper` to `^3.0` - - `vimeo/psalm` to `^6.0` +Perform these steps to update your dependencies. + +#### Remove First-Party Apiato Packages +Delete all Apiato first-party packages in `app/Containers/Vendor` to avoid dependency conflicts. +These packages will be reinstalled after running `composer update`. + +#### Consolidate Dependencies +If the following dependencies are defined in the Ship or any Container `composer.json` file, +move them to your application’s root `composer.json` file: +- `apiato/core` +- `laravel/passport` + +#### Update Dependency Versions +Update the following dependencies in your `composer.json` files: + +require + - `apiato/core` to `^13.0` + - `laravel/passport` to `^12.0` + - `spatie/laravel-permission` to `^6.0` + - `apiato/documentation-generator-container` to `^4.0` + - `apiato/localization` to `x` (if installed) TODO + - `apiato/social-auth` to `x` (if installed) TODO + +require-dev + - `nunomaduro/collision` to `^8.1` + - `phpunit/phpunit` to `^11.0` + - `barryvdh/laravel-ide-helper` to `^3.0` + - `vimeo/psalm` to `^6.0` Don’t forget to also update `psalm` plugins if you have them: ```json "psalm/plugin-laravel": "^3.0", "psalm/plugin-mockery": "^1.2", "psalm/plugin-phpunit": "^0.19.2", ``` -4. **Remove Unnecessary Dependencies** - Remove these dependencies from your root `composer.json` file: - - `spatie/laravel-ignition` (Laravel now provides its own error page) - - All Apiato-specific dependencies no longer required as they are now managed via `apiato/core`, including: - - PHP extensions: `ext-curl`, `ext-gettext`, `ext-imagick`, `ext-mbstring`, `ext-openssl`, `ext-pdo`, `ext-sodium`, `ext-tokenizer` - - Packages: `guzzlehttp/guzzle`, `laravel/framework`, `laravel/tinker` -5. **Review Package Upgrade Guides** - Check the upgrade guides for each dependency to be aware of additional breaking changes: - - [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit/blob/11.0.0/ChangeLog-11.0.md#1100---2024-02-02) - - [spatie/laravel-permission](https://spatie.be/docs/laravel-permission/v6/upgrading) + +#### Remove Unnecessary Dependencies +Remove these dependencies from your root `composer.json` file: + +`spatie/laravel-ignition` (Laravel now provides its own error page) + +Following dependencies are also no longer required as they are now either managed by `apiato/core` or Laravel Framework itself. + +PHP extensions +- `ext-curl` +- `ext-gettext` +- `ext-mbstring` +- `ext-openssl` +- `ext-pdo` +- `ext-sodium` +- `ext-tokenizer` + +Packages +- `guzzlehttp/guzzle` +- `laravel/framework` +- `laravel/tinker` + +#### Review Package Upgrade Guides +Check the upgrade guides for each dependency to be aware of additional breaking changes: +- [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit/blob/11.0.0/ChangeLog-11.0.md#1100---2024-02-02) +- [spatie/laravel-permission](https://spatie.be/docs/laravel-permission/v6/upgrading) Remove the existing `vendor` directory for a clean start: ```bash @@ -155,7 +176,7 @@ composer update The Core abstract classes have been relocated from `Apiato\Core\Abstracts` to `Apiato\Core`. -Existing classes extending these abstract classes should be updated accordingly. +Update your codebase to use this new namespace. ## App Configuration @@ -257,7 +278,7 @@ All service providers’ `register` and `boot` methods are now invoked independe #### AuthServiceProvider - Removed: `Apiato\Core\Abstracts\Providers\AuthServiceProvider` -- Action: +- Action: - If you were manually registering policies outside Laravel’s policy discovery, follow the [Laravel manual registration guide](https://laravel.com/docs/11.x/authorization#manually-registering-policies). - Move any custom registrations from `AuthServiceProvider` to another service provider. - Remove all classes extending the old `AuthServiceProvider`. @@ -501,7 +522,7 @@ use Apiato\Core\Exceptions\HttpException as AbstractException; abstract class HttpException extends AbstractException {} ``` - + You now have two parent classes: `Exception` (non-HTTP) and `HttpException` (HTTP). Update your custom exceptions: From 8cf77b02274aa227a69ca0b289446ed8b091e01a Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 5 Apr 2025 18:35:42 +0330 Subject: [PATCH 23/91] Update upgrade-guide.mdx --- docs/prologue/upgrade-guide.mdx | 320 ++++++++++++++++++++------------ 1 file changed, 198 insertions(+), 122 deletions(-) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index 537687646..b0fc08786 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -17,7 +17,7 @@ This guide will walk you through upgrading Apiato and your project to the latest The Legacy Bridge is a set of utilities to help you gradually upgrade your codebase. -TODO: extract this doc to the legacy bridge repo and link the repo here. +TODO: extract this doc to the legacy bridge repo and link the repo here. Also update the referenced class namespaces. #### Testing @@ -57,38 +57,61 @@ abstract class Request extends AbstractRequest ### Rector Rules -Apiato provides custom Rector rules to help automate some aspects of the upgrade process. +Apiato provides custom [Rector](https://getrector.com) rules to help automate some aspects of the upgrade process. -TODO: extract this doc to the rector rules repo and link the repo here. +TODO: extract this doc to the rector rules repo and link the repo here. Also update the referenced class namespaces. -#### Setup - -Use [Rector](https://getrector.com) for automated refactoring. You can install custom Apiato rules via: +For more details, see the Rector documentation and instructions in the [Apiato Rector rules repository](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). -For more details, see the Rector documentation and any instructions in the [Apiato Rector rules repository](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). +#### Setup ```bash -composer require --dev mohammad-alavi/apiato-rector:dev-latest +composer require --dev mohammad-alavi/apiato-rector dev-latest ``` -Also ensure you have Rector itself: +Also ensure you have Rector itself installed: ```bash composer require --dev rector/rector ``` -#### `RefactorHttpExceptionRector` +#### Rules -Helps refactor exception classes to the new HTTP exception signature. +#### `TransformMethodToResponseFacadeRector` +Converts `$this->transform(...)` calls to `Response::create(...)`. ```php -->withConfiguredRule(RefactorHttpExceptionRector::class, [ - 'parent_class' => \App\Ship\Parents\Exceptions\HttpException::class, -]); +use MohammadAlavi\ApiatoRector\Rules\TransformMethodToResponseFacadeRector; +use Rector\Config\RectorConfig; + +return RectorConfig::configure() + ->withPaths([ + __DIR__ . '/app', + __DIR__ . '/config', + ]) + ->withImportNames(true, false, false, true) + ->withRules([ + TransformMethodToResponseFacadeRector::class, + ]); ``` -#### `TransformMethodToResponseCreateRector` -Converts `$this->transform(...)` calls to `Response::create(...)`. +#### `RefactorHttpExceptionRector` +Helps refactor exception classes to the new HTTP exception signature. + +```php +use MohammadAlavi\ApiatoRector\Rules\RefactorHttpExceptionRector; +use Rector\Config\RectorConfig; + +return RectorConfig::configure() + ->withPaths([ + __DIR__ . '/app', + __DIR__ . '/config', + ]) + ->withImportNames(true, false, false, true) + ->withConfiguredRule(RefactorHttpExceptionRector::class, [ + 'parent_class' => \App\Ship\Parents\Exceptions\HttpException::class, + ]); +``` ## Updating Dependencies @@ -180,10 +203,13 @@ Update your codebase to use this new namespace. ## App Configuration -Laravel 11 and Apiato 13 now use a configuration class for setup. +Laravel 11 and Apiato 13 configurations are simplified, and both now provide a fluid API for configuration. + Replace the contents of `bootstrap/app.php` file with the following as a base, and customize it as needed: ```php +create(); ``` -## Service Providers +Move any custom middleware registrations from `app/Ship/Kernels/HttpKernel.php` to the `bootstrap/app.php` file. + +Move any custom configurations from `app/Ship/Kernels/ConsoleKernel.php` and `App\Ship\Kernels\HttpKernel` to the `bootstrap/app.php` file. + +Remove `App\Ship\Kernels\HttpKernel` and `App\Ship\Kernels\ConsoleKernel` classes. + +## Testing + +#### `TestCase` Class +The `Apiato\Core\Abstracts\Tests\PhpUnit\TestCase` class namespace has changed to `Apiato\Core\Testing\TestCase`. + +#### `LazilyRefreshDatabase` Trait +The `Illuminate\Foundation\Testing\LazilyRefreshDatabase` trait has been removed from the Core TestCase. +Add `LazilyRefreshDatabase` to your `App\Ship\Parents\Tests\TestCase` if you want this functionality. + +#### Removed Methods +The testing utilities provided by Apiato have been simplified to embrace Laravel’s testing approach. + +The following methods are no longer available: +- `getTestingUser` +- `getTestingUserWithoutAccess` +- `makeCall` +- `injectId` +- `endpoint` +- `getAuth` +- `setResponseObjectAndContent` +- `getResponseContentArray` +- `getResponseContent` +- `setResponseContent` +- `getResponseContentObject` +- `auth` +- `url` +- etc... + +:::tip +For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#upgrade-utilities). +::: + +[HasResourceKeyTrait](#has-resource-key-trait) has been removed from the Core Value Object (`Apiato\Core\Values\Value`). + +If your Value Objects are relying on the `HasResourceKeyTrait`, +you need to refactor them to use the new [HasResourceKey](#has-resource-key-trait) trait +and implement the [ResourceKeyAware](#has-resource-key-interface) interface. + +## Service Providers The `Apiato\Core\Abstracts\Providers\MainServiceProvider` class has been removed. Existing service providers extending this class should be refactored -to extend `Apiato\Core\Providers\ServiceProvider` instead. -e.g, `App\Ship\Parents\Providers\ServiceProvider` +to extend `Apiato\Core\Providers\ServiceProvider` class instead. +e.g, `App\Ship\Parents\Providers\ServiceProvider` class. ### Autoloading @@ -238,6 +308,36 @@ If you need to do something in a provider’s `register` or `boot` methods, extend those providers in a Container or Ship `Providers` directory. ::: +### Specific Provider Changes + +#### AuthServiceProvider +The `Apiato\Core\Abstracts\Providers\AuthServiceProvider` class has been removed. + +- If you were manually registering policies outside Laravel’s policy discovery, follow the [Laravel manual registration guide](https://laravel.com/docs/11.x/authorization#manually-registering-policies). +- Refactor all service providers extending the following service providers to extend `App\Ship\Parents\Providers\ServiceProvider`: + - `App\Ship\Parents\Providers\AuthServiceProvider` + - `Apiato\Core\Abstracts\Providers\AuthServiceProvider` + - `Illuminate\Foundation\Support\Providers\AuthServiceProvider` +- Move any custom registrations from `App\Ship\Parents\Providers\AuthServiceProvider` to another service provider and then remove it. + +#### MiddlewareServiceProvider +The `Apiato\Core\Abstracts\Providers\MiddlewareServiceProvider` class has been removed. + +Migrate your middleware configurations +to the `bootstrap/app.php` file as per [Laravel’s middleware registration documentation](https://laravel.com/docs/11.x/middleware#registering-middleware). +Then, remove your old `MiddlewareServiceProvider` classes. + +#### BroadcastServiceProvider +- Removed: `Apiato\Core\Abstracts\Providers\BroadcastServiceProvider` +- Action: +Remove your custom `App\Ship\Parents\Providers\BroadcastServiceProvider` and configure channels in `bootstrap/app.php` +as shown [above](#app-configuration). + +### Parent Method Calls + +You no longer need to call `parent::register()` or `parent::boot()` in your service providers. +All service providers’ `register` and `boot` methods are now invoked independently. + ### Removed Properties The `$serviceProviders` and `$aliases` properties have been removed. @@ -263,37 +363,6 @@ public function register(): void } ``` -### Parent Method Calls - -You no longer need to call `parent::register()` or `parent::boot()` in your service providers. -All service providers’ `register` and `boot` methods are now invoked independently. - -### Specific Provider Changes - -#### BroadcastServiceProvider -- Removed: `Apiato\Core\Abstracts\Providers\BroadcastServiceProvider` -- Action: - Remove your custom `App\Ship\Parents\Providers\BroadcastServiceProvider` and configure channels in `bootstrap/app.php` - as shown [above](#app-configuration). - -#### AuthServiceProvider -- Removed: `Apiato\Core\Abstracts\Providers\AuthServiceProvider` -- Action: - - If you were manually registering policies outside Laravel’s policy discovery, follow the [Laravel manual registration guide](https://laravel.com/docs/11.x/authorization#manually-registering-policies). - - Move any custom registrations from `AuthServiceProvider` to another service provider. - - Remove all classes extending the old `AuthServiceProvider`. - - Refactor any service providers extending the following service providers to extend `App\Ship\Parents\Providers\ServiceProvider`: - - `App\Ship\Parents\Providers\AuthServiceProvider` - - `Apiato\Core\Providers\AuthServiceProvider` - - `Illuminate\Foundation\Support\Providers\AuthServiceProvider` - -#### MiddlewareServiceProvider -- Removed: `Apiato\Core\Abstracts\Providers\MiddlewareServiceProvider` -- Action: - Migrate any middleware configurations - to `bootstrap/app.php` file as per [Laravel’s middleware registration documentation](https://laravel.com/docs/11.x/middleware#registering-middleware). - Then, remove your old `MiddlewareServiceProvider` classes. - ## Middleware The following classes have been moved or renamed: @@ -308,6 +377,29 @@ The `Apiato\Core\Abstracts\Middlewares\Http\ProfilerMiddleware` class has been r The `Apiato\Core\Middleware\Http\Authenticate` class has been removed. Use `Illuminate\Auth\Middleware\Authenticate` instead. +## Resource Key + +#### `HasResourceKey` Interface {#has-resource-key-interface} + +The `Apiato\Core\Contracts\HasResourceKey` interface has been renamed +and moved to `Apiato\Http\Resources\ResourceKeyAware`. + +#### `HasResourceKey` Trait {#has-resource-key-trait} + +The `Apiato\Core\Traits\HasResourceKeyTrait` trait has been renamed +and moved to `Apiato\Http\Resources\HasResourceKey`. + +## ModelTrait + +The `Apiato\Core\Abstracts\Traits\ModelTrait` trait has been renamed +and moved to `Apiato\Core\Models\InteractsWithApiato`. + +## Value Objects + +`Apiato\Core\Values\Value` abstract class is now declared as `readonly`. + +Add the `readonly` keyword to your parent Value Object class and all Value Objects that extend it. + ## Laravel Passport ### Migration Adjustments @@ -329,6 +421,37 @@ public function boot(): void } ``` +### Deferrable Provider +Remove the `Illuminate\Contracts\Support\DeferrableProvider` from the service provider that configures Passport. + +For example +```php +// before +use App\Ship\Parents\Providers\ServiceProvider as ParentAuthServiceProvider; +use Illuminate\Contracts\Support\DeferrableProvider; +use Laravel\Passport\Passport; + +class AuthServiceProvider extends ParentAuthServiceProvider implements DeferrableProvider +{ + public function boot(): void + { + Passport::enablePasswordGrant(); + } +} + +// after +use App\Ship\Parents\Providers\ServiceProvider as ParentAuthServiceProvider; +use Laravel\Passport\Passport; + +class AuthServiceProvider extends ParentAuthServiceProvider +{ + public function boot(): void + { + Passport::enablePasswordGrant(); + } +} +``` + ## Carbon 3 In Carbon v3, PHPDoc annotations have been converted to real types. Methods that previously accepted different argument types may now throw a `TypeError`. @@ -349,79 +472,40 @@ Passport::tokensExpireIn(Carbon::now()->addMinutes((int)config('apiato.api.expir Review Carbon’s [release notes](https://github.com/briannesbitt/Carbon/releases/tag/3.0.0) and [documentation](https://carbon.nesbot.com/docs/#api-carbon-3) for more details. ::: -## ModelTrait - -The `Apiato\Core\Traits\ModelTrait` trait has been renamed -and moved to `Apiato\Core\Models\InteractsWithApiato`. - -## Resource Key - -#### `HasResourceKey` Interface {#has-resource-key-interface} - -The `Apiato\Core\Contracts\HasResourceKey` interface has been renamed -and moved to `Apiato\Http\Resources\ResourceKeyAware`. - -#### `HasResourceKey` Trait {#has-resource-key-trait} - -The `Apiato\Core\Traits\HasResourceKeyTrait` trait has been renamed -and moved to `Apiato\Http\Resources\HasResourceKey`. - -## Value Objects - -`Apiato\Core\Values\Value` abstract class is now declared as `readonly`. - -Add the `readonly` keyword to your parent Value Object class and all Value Objects that extend it. - -[HasResourceKeyTrait](#has-resource-key-trait) has been removed from the Core Value Object (`Apiato\Core\Values\Value`). - -If your Value Objects are relying on the `HasResourceKeyTrait`, -you need to refactor them to use the new [HasResourceKey](#has-resource-key-trait) trait -and implement the [ResourceKeyAware](#has-resource-key-interface) interface. - -## Testing +## Request -The testing utilities provided by Apiato have been simplified to embrace Laravel’s testing approach. +### Removed Methods -The following methods are no longer available: -- `makeCall` -- `injectId` -- `endpoint` -- ...and others TODO add other methods +The following methods have been removed from requests: +- `injectData` +- `withUrlParameters` +- `getAccessArray` +- `getDecodeArray` +- `getUrlParametersArray` +- `hasAccess` +- `hasAnyPermissionAccess` +- `hasAnyRoleAccess` +- `check` +- `mapInput` +- `getInputByKey` :::tip For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#upgrade-utilities). ::: -#### `TestCase` Class - -The `Apiato\Core\Abstracts\Tests\PhpUnit\TestCase` class namespace has changed to `Apiato\Core\Testing\TestCase`. - -#### `LazilyRefreshDatabase` Trait - -The `LazilyRefreshDatabase` trait has been removed from the Core parent TestCase. - -Add `LazilyRefreshDatabase` to your `App\Ship\Parents\Tests\TestCase` if you require this functionality. - -## Request +### Authorization -:::tip -For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#upgrade-utilities). -::: +Custom authorization features have been removed and `$access` property is no longer used. -### Authorization +- Use [Laravel Policies](https://laravel.com/docs/11.x/authorization#creating-policies) for authorization. +- Remove the `$access` property from your request classes. -All custom authorization properties and methods have been removed: -- `$access` - `hasAccess` - `hasAnyPermissionAccess` - `hasAnyRoleAccess` - `check` -Use [Laravel Policies](https://laravel.com/docs/11.x/authorization#creating-policies) for authorization. - -Remove the `$access` property from your request classes. - -**Example Conversion:** +#### Example Conversion: ```php // before use App\Ship\Parents\Requests\Request as ParentRequest; @@ -483,16 +567,7 @@ protected array $decode = ['id']; TODO: are decoded values still available in the all() method? Or they have to be pulled from the route? You can still retrieve decoded URL parameters via `$request->id`, `$request->input('id')`, or `$request->route('id')`. -### Removed Methods -TODO: check that we haven't missed any methods. - -The following methods have been removed from requests: -- `injectData` -- `withUrlParameters` -- `mapInput` -- `getInputByKey` - -### Sanitization Method +### Input Sanitization `sanitizeInput` has been renamed to `sanitize`. @@ -567,13 +642,14 @@ Apiato now returns `401` instead of `403` when a user is unauthenticated (matchi The `$this->transform` method in API Controllers is removed. Use the `Apiato\Support\Facades\Response` facade instead. TODO: write the docs and link it here + Its API closely mirrors the old `$this->transform` methods. Refer to the new `Response` facade documentation for details. -- Replace all `$this->transform` calls with the Response facade. -- Update your `app/Ship/Configs/fractal.php` file to use the Apiato Response class +Update your `app/Ship/Configs/fractal.php` file to use the Apiato Response class ```php 'fractal_class' => \Apiato\Http\Response::class ``` +Replace all `$this->transform` calls with the Response facade. **Example**: ```php @@ -634,7 +710,7 @@ use the [Legacy Bridge](#upgrade-utilities). ### Criteria -The `Apiato\Core\Abstracts\Criteria` class has been moved to `Apiato\Core\Criteria`. +The `Apiato\Core\Abstracts\Criterias` class has been moved to `Apiato\Core\Criteria`. ## Hash IDs From b8435fbff9269719bfbe9873833cf0d7f7e1eca7 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 5 Apr 2025 19:22:52 +0330 Subject: [PATCH 24/91] Update upgrade-guide.mdx --- docs/prologue/upgrade-guide.mdx | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index b0fc08786..08b085fe7 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -327,6 +327,33 @@ Migrate your middleware configurations to the `bootstrap/app.php` file as per [Laravel’s middleware registration documentation](https://laravel.com/docs/11.x/middleware#registering-middleware). Then, remove your old `MiddlewareServiceProvider` classes. +Let's +say you have customized Laravel's `Illuminate\Auth\Middleware\RedirectIfAuthenticated` middleware +and registered it in your `MiddlewareServiceProvider`: + +```php +class MiddlewareServiceProvider extends ParentMiddlewareServiceProvider +{ + protected array $middlewareAliases = [ + 'guest' => RedirectIfAuthenticated::class, + ]; +} +``` + +You can now configure it in `bootstrap/app.php` like this: +```php +return Application::configure(basePath: $basePath) + ... + ->withMiddleware(function (Middleware $middleware) { + $middleware->api( + replace: [ + 'guest' => RedirectIfAuthenticated::class, + ] + ); + ... + ->create(); +``` + #### BroadcastServiceProvider - Removed: `Apiato\Core\Abstracts\Providers\BroadcastServiceProvider` - Action: From cea723b851d5af3ef3fc612e71f6032c3ee03aa7 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 5 Apr 2025 19:30:11 +0330 Subject: [PATCH 25/91] Update upgrade-guide.mdx --- docs/prologue/upgrade-guide.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index 08b085fe7..6ed5e4f08 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -404,6 +404,9 @@ The `Apiato\Core\Abstracts\Middlewares\Http\ProfilerMiddleware` class has been r The `Apiato\Core\Middleware\Http\Authenticate` class has been removed. Use `Illuminate\Auth\Middleware\Authenticate` instead. +Custom middleware like `ProcessETag` and `ValidateJsonContent` must now be registered in the `bootstrap/app.php` file. +Take a look at the [App Configuration](#app-configuration) section for details. + ## Resource Key #### `HasResourceKey` Interface {#has-resource-key-interface} From 5fa1c0059341d9383cde01bd5934f68a18462dc9 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 5 Apr 2025 19:31:57 +0330 Subject: [PATCH 26/91] Update upgrade-guide.mdx --- docs/prologue/upgrade-guide.mdx | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index 6ed5e4f08..1ebfffdd3 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -752,7 +752,8 @@ The `Apiato\Core\Abstracts\Criterias` class has been moved to `Apiato\Core\Crite - `Hashids::encode(...)` → `hashids()->encode(...)` :::warning -`decode` now can return an `int` or an `array` depending on the input. Previously, it always returned an array. +`decode` method now returns an `int` or an `array` depending on the input. +Previously, it always returned an `array`. ::: ## Jobs @@ -808,27 +809,3 @@ Some involve configuration or comments you may wish to sync: - [Comparison for apiato/apiato](https://github.com/apiato/apiato/compare/12.x...13.x) - [Comparison for apiato/core](https://github.com/apiato/core/compare/8.x...13.x) - -## Optional - -### Namespaces - -Consider renaming these directories for consistency with the new Apiato structure: - -- `app/Ship/Middlewares` → `app/Ship/Middleware` -- `app/Ship/Parents/Middlewares` → `app/Ship/Parents/Middleware` - -### Testing - -- Use Laravel’s `fake()` helper for generating fake data instead of `$this->faker`. -- Remove old Apiato-specific code from `App\Ship\Parents\Tests\TestCase`. Keep any custom logic you still need. - -**Example**: -```php -// Remove all code that's no longer necessary for Apiato testing -// e.g., makeCall, transform method usage, setUp methods from older versions, etc. -``` - -### Added Items - -- Copy the new `ValidateAppId` middleware from [Apiato 13.x](https://github.com/apiato/apiato/blob/13.x/app/Ship/Middleware/ValidateAppId.php) into `app/Ship/Middleware` if you need this feature. From dc287c55aeccbb25be3ea0ece6ded9632b673932 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sun, 6 Apr 2025 20:07:19 +0330 Subject: [PATCH 27/91] Update upgrade-guide.mdx --- docs/prologue/upgrade-guide.mdx | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index 1ebfffdd3..bc8043d3f 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -750,12 +750,17 @@ The `Apiato\Core\Abstracts\Criterias` class has been moved to `Apiato\Core\Crite - `$this->encode(...)` → `hashids()->encode(...)` - `Hashids::decode(...)` → `hashids()->decode(...)` - `Hashids::encode(...)` → `hashids()->encode(...)` +- etc... :::warning `decode` method now returns an `int` or an `array` depending on the input. Previously, it always returned an `array`. ::: +:::info +`HashIdTrait` was being used in the Controller and Request class. +::: + ## Jobs The Core Job class (Apiato\Core\Jobs\Job) no longer includes any traits or implements interfaces. @@ -799,6 +804,25 @@ Apiato no longer uses Laravel’s `database/seeders/DatabaseSeeder.php`. Instead The `Apiato\Core\Abstracts\Commands\ConsoleCommand` class has been renamed and moved to `Apiato\Core\Console\Command`. +## Notifications +The `notification.channels` configuration has been removed. + +You can no longer add a notification channel to all notifications +by adding it to the `notification.channels` array in the configuration file. + +```php +abstract class Notification extends LaravelNotification +{ + // This method has been removed from the parent class + public function via($notifiable): array + { + return config('notification.channels'); + } +} +``` + +If you depend on this feature, you can add the removed method to your parent notification class. + ## Miscellaneous We recommend From 7cdd338dd7168cfd5de1223ceb577bd8b3a9f3d4 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 7 Apr 2025 10:35:30 +0330 Subject: [PATCH 28/91] Update upgrade-guide.mdx --- docs/prologue/upgrade-guide.mdx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index bc8043d3f..340087d6b 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -131,6 +131,7 @@ If the following dependencies are defined in the Ship or any Container `composer move them to your application’s root `composer.json` file: - `apiato/core` - `laravel/passport` +- `spatie/laravel-permission` #### Update Dependency Versions Update the following dependencies in your `composer.json` files: @@ -140,8 +141,8 @@ require - `laravel/passport` to `^12.0` - `spatie/laravel-permission` to `^6.0` - `apiato/documentation-generator-container` to `^4.0` - - `apiato/localization` to `x` (if installed) TODO - - `apiato/social-auth` to `x` (if installed) TODO + - `apiato/localization` to `^3.0` (if installed) TODO + - `apiato/social-auth` to `^4.0` (if installed) TODO require-dev - `nunomaduro/collision` to `^8.1` From 0d1aabed2117ae1684eed1f039fcb748eb102078 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 7 Apr 2025 12:15:55 +0330 Subject: [PATCH 29/91] docs: upgrade utils --- docs/prologue/upgrade-guide.mdx | 102 +++----------------------------- 1 file changed, 7 insertions(+), 95 deletions(-) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index 340087d6b..6feefc744 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -14,104 +14,16 @@ This guide will walk you through upgrading Apiato and your project to the latest ## Upgrade Utilities ### Legacy Bridge - -The Legacy Bridge is a set of utilities to help you gradually upgrade your codebase. - -TODO: extract this doc to the legacy bridge repo and link the repo here. Also update the referenced class namespaces. - -#### Testing - -To access removed testing methods, use the `TestCaseTrait` in your parent TestCase class: - -```php -namespace App\Ship\Parents\Tests; - -use Apiato\Core\Testing\TestCase as AbstractTestCase; -use App\Ship\Compatibility\Testing\TestCaseTrait; TODO change this after package is released -use Illuminate\Foundation\Testing\LazilyRefreshDatabase; - -abstract class TestCase extends AbstractTestCase -{ - use LazilyRefreshDatabase; - use TestCaseTrait { - TestCaseTrait::afterRefreshingDatabase insteadof LazilyRefreshDatabase; - } -} -``` - -#### Request - -To access removed Request methods, use the `RequestTrait` in your parent Request class: - -```php -namespace App\Ship\Parents\Requests; - -use Apiato\Core\Requests\Request as AbstractRequest; -use App\Ship\Compatibility\RequestTrait; TODO change this after package is released - -abstract class Request extends AbstractRequest -{ - use RequestTrait; -} -``` +The [Legacy Bridge](https://github.com/apiato/legacy-bridge) is a set of utilities +to help you gradually upgrade your codebase. ### Rector Rules +Apiato provides a set of [custom Rector rules](https://github.com/mohammad-alavi/apiato-rector) +to help automate some aspects of the upgrade process. -Apiato provides custom [Rector](https://getrector.com) rules to help automate some aspects of the upgrade process. - -TODO: extract this doc to the rector rules repo and link the repo here. Also update the referenced class namespaces. - -For more details, see the Rector documentation and instructions in the [Apiato Rector rules repository](https://openforests.atlassian.net/wiki/spaces/EL/pages/3181445160/Upgrade+Guide#Rector-Rules). - -#### Setup - -```bash -composer require --dev mohammad-alavi/apiato-rector dev-latest -``` - -Also ensure you have Rector itself installed: - -```bash -composer require --dev rector/rector -``` - -#### Rules - -#### `TransformMethodToResponseFacadeRector` -Converts `$this->transform(...)` calls to `Response::create(...)`. - -```php -use MohammadAlavi\ApiatoRector\Rules\TransformMethodToResponseFacadeRector; -use Rector\Config\RectorConfig; - -return RectorConfig::configure() - ->withPaths([ - __DIR__ . '/app', - __DIR__ . '/config', - ]) - ->withImportNames(true, false, false, true) - ->withRules([ - TransformMethodToResponseFacadeRector::class, - ]); -``` - -#### `RefactorHttpExceptionRector` -Helps refactor exception classes to the new HTTP exception signature. - -```php -use MohammadAlavi\ApiatoRector\Rules\RefactorHttpExceptionRector; -use Rector\Config\RectorConfig; - -return RectorConfig::configure() - ->withPaths([ - __DIR__ . '/app', - __DIR__ . '/config', - ]) - ->withImportNames(true, false, false, true) - ->withConfiguredRule(RefactorHttpExceptionRector::class, [ - 'parent_class' => \App\Ship\Parents\Exceptions\HttpException::class, - ]); -``` +:::info Rector +Learn more about [Rector](https://getrector.com) +::: ## Updating Dependencies From 806b7b31db37f199ba23fd4e5d80da2f626a0f6c Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 7 Apr 2025 12:18:42 +0330 Subject: [PATCH 30/91] style: remove empty line --- docs/prologue/upgrade-guide.mdx | 38 --------------------------------- 1 file changed, 38 deletions(-) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index 6feefc744..7729d0a90 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -4,11 +4,9 @@ title: Upgrade Guide --- #### Upgrading Laravel to 11.0 from 10.x - Follow the official [Laravel 11 upgrade guide](https://laravel.com/docs/11.x/upgrade) to update your codebase accordingly. #### Upgrading Apiato to 13.0 from 12.x and Core to 13.0 from 8.x - This guide will walk you through upgrading Apiato and your project to the latest versions. ## Upgrade Utilities @@ -28,7 +26,6 @@ Learn more about [Rector](https://getrector.com) ## Updating Dependencies ### PHP 8.2.0 Required - PHP 8.2.0 or greater is now required. ### Composer Dependencies @@ -109,13 +106,11 @@ composer update ``` ## Abstract Namespace - The Core abstract classes have been relocated from `Apiato\Core\Abstracts` to `Apiato\Core`. Update your codebase to use this new namespace. ## App Configuration - Laravel 11 and Apiato 13 configurations are simplified, and both now provide a fluid API for configuration. Replace the contents of `bootstrap/app.php` file with the following as a base, and customize it as needed: @@ -211,7 +206,6 @@ to extend `Apiato\Core\Providers\ServiceProvider` class instead. e.g, `App\Ship\Parents\Providers\ServiceProvider` class. ### Autoloading - All providers within the `Providers` directories of Containers and Ship are now autoloaded. There is no longer a requirement to have a specifically named `MainServiceProvider` service provider per container. @@ -274,12 +268,10 @@ Remove your custom `App\Ship\Parents\Providers\BroadcastServiceProvider` and con as shown [above](#app-configuration). ### Parent Method Calls - You no longer need to call `parent::register()` or `parent::boot()` in your service providers. All service providers’ `register` and `boot` methods are now invoked independently. ### Removed Properties - The `$serviceProviders` and `$aliases` properties have been removed. Refactor your service providers to register or alias dependencies within the `register` and `boot` methods. @@ -304,7 +296,6 @@ public function register(): void ``` ## Middleware - The following classes have been moved or renamed: | From | To | |:-----------------------------------------------------------------------|:---------------------------------------------| @@ -323,22 +314,18 @@ Take a look at the [App Configuration](#app-configuration) section for details. ## Resource Key #### `HasResourceKey` Interface {#has-resource-key-interface} - The `Apiato\Core\Contracts\HasResourceKey` interface has been renamed and moved to `Apiato\Http\Resources\ResourceKeyAware`. #### `HasResourceKey` Trait {#has-resource-key-trait} - The `Apiato\Core\Traits\HasResourceKeyTrait` trait has been renamed and moved to `Apiato\Http\Resources\HasResourceKey`. ## ModelTrait - The `Apiato\Core\Abstracts\Traits\ModelTrait` trait has been renamed and moved to `Apiato\Core\Models\InteractsWithApiato`. ## Value Objects - `Apiato\Core\Values\Value` abstract class is now declared as `readonly`. Add the `readonly` keyword to your parent Value Object class and all Value Objects that extend it. @@ -352,7 +339,6 @@ Copy Passport migrations from the [Apiato 13.x branch](https://github.com/apiato (create the `Data/Migrations` directory if it doesn’t exist). ### Password Grant - As of Passport 12.0, the password grant is disabled by default. Enable it by calling `enablePasswordGrant` in the `boot` method of one of your service providers: @@ -396,7 +382,6 @@ class AuthServiceProvider extends ParentAuthServiceProvider ``` ## Carbon 3 - In Carbon v3, PHPDoc annotations have been converted to real types. Methods that previously accepted different argument types may now throw a `TypeError`. For instance, this example will now throw an error if `config('apiato.api.expires-in')` returns a string: @@ -418,7 +403,6 @@ Review Carbon’s [release notes](https://github.com/briannesbitt/Carbon/release ## Request ### Removed Methods - The following methods have been removed from requests: - `injectData` - `withUrlParameters` @@ -437,7 +421,6 @@ For a gradual upgrade in large codebases, refer to the [Apiato Legacy Bridge](#u ::: ### Authorization - Custom authorization features have been removed and `$access` property is no longer used. - Use [Laravel Policies](https://laravel.com/docs/11.x/authorization#creating-policies) for authorization. @@ -480,7 +463,6 @@ final class DeleteUserRequest extends ParentRequest ``` ### URL Parameter Validation - The `$urlParameters` property and the `getUrlParametersArray` method have been removed. URL parameters are no longer available for validation in the `rules` method. @@ -493,7 +475,6 @@ Note that invalid URL parameters now result in a 404 error rather than a 422 err ::: ### Hashed ID Decoding - The `$decode` property now also decodes URL parameters automatically. ```php @@ -511,7 +492,6 @@ TODO: are decoded values still available in the all() method? Or they have to be You can still retrieve decoded URL parameters via `$request->id`, `$request->input('id')`, or `$request->route('id')`. ### Input Sanitization - `sanitizeInput` has been renamed to `sanitize`. ## Error Handling @@ -523,7 +503,6 @@ All Apiato custom error-handling logics has been removed. - `getErrors` ### ExceptionsHandler - The custom `App\Ship\Exceptions\Handlers\ExceptionsHandler` is no longer used. Remove this class and configure exception handling in `bootstrap/app.php` file. @@ -548,7 +527,6 @@ Update your custom exceptions: - Extend `App\Ship\Parents\Exceptions\Exception` for non-HTTP errors. ### Exception Instantiation - Exceptions now require mandatory constructor parameters. For example, calling `new NotFoundHttpException()` with no arguments no longer works. You have to pass the `$message` and the `$code` arguments. @@ -581,7 +559,6 @@ Apiato now returns `401` instead of `403` when a user is unauthenticated (matchi ## Response ### Transformation - The `$this->transform` method in API Controllers is removed. Use the `Apiato\Support\Facades\Response` facade instead. TODO: write the docs and link it here @@ -610,40 +587,32 @@ See [Upgrade Utilities](#upgrade-utilities) for automated refactoring utilities. ::: ### Filtering - TODO: write the docs and link it here The approach for filtering responses has changed. Refer to the new documentation on filtering responses, then update your code accordingly. ## Repository - Some repository methods are strongly typed or behave differently. #### `boot` Method - `boot` now has a `void` return type. If you have overridden the `boot` method, adjust your method signature accordingly. #### `getById` Method - `getById` has been renamed to `findOrFail`. #### `delete` Method - `delete` method now returns `bool` or throws an exception. If you have overridden the `delete` method, adjust your method signature accordingly. #### `create` Method - `create` now throws `Apiato\Core\Repositories\Exceptions\ResourceCreationFailed` instead of `\Exception`. #### `update` Method - `update` now throws `Apiato\Core\Repositories\Exceptions\ResourceNotFound` instead of `\Illuminate\Database\Eloquent\ModelNotFoundException`. #### `find` Method - `find` now returns `null` if no result is found (mirroring Laravel’s default `find` behavior). Previously, it might have thrown an exception. :::info Maintaining Previous Behavior @@ -652,11 +621,9 @@ use the [Legacy Bridge](#upgrade-utilities). ::: ### Criteria - The `Apiato\Core\Abstracts\Criterias` class has been moved to `Apiato\Core\Criteria`. ## Hash IDs - `Apiato\Core\Traits\HashIdTrait` is removed. Use the `hashids()` helper function instead. - `$this->decode(...)` → `hashids()->decode(...)` @@ -675,7 +642,6 @@ Previously, it always returned an `array`. ::: ## Jobs - The Core Job class (Apiato\Core\Jobs\Job) no longer includes any traits or implements interfaces. Add the necessary traits and interfaces in your Ship’s parent Job class. For example: @@ -698,7 +664,6 @@ abstract class Job extends AbstractJob implements ShouldQueue ``` ## Validation - The custom `no_spaces` validation rule has been removed. Remove its usage or register it manually in the boot method of your service provider. @@ -706,14 +671,12 @@ Remove its usage or register it manually in the boot method of your service prov See the [source code](https://github.com/apiato/core/blob/8.x/src/Traits/ValidationTrait.php) for reference. ## Database Seeding - Apiato no longer uses Laravel’s `database/seeders/DatabaseSeeder.php`. Instead, place your seeders in the Ship or any Container’s `database/seeders` directory: - Remove `database/seeders/DatabaseSeeder.php` if present. - Move your seeding logic into `Ship` or `Container` seeder classes. ## Commands - The `Apiato\Core\Abstracts\Commands\ConsoleCommand` class has been renamed and moved to `Apiato\Core\Console\Command`. @@ -737,7 +700,6 @@ abstract class Notification extends LaravelNotification If you depend on this feature, you can add the removed method to your parent notification class. ## Miscellaneous - We recommend reviewing changes in [apiato/apiato](https://github.com/apiato/apiato) and [apiato/core](https://github.com/apiato/core) repositories between versions 12.x and 13.x and 8.x and 13.x respectively, using GitHub’s comparison tools. From dc39b14916025fa2cd992356761b6d03af21e20e Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 7 Apr 2025 18:43:30 +0330 Subject: [PATCH 31/91] Update upgrade-guide.mdx --- docs/prologue/upgrade-guide.mdx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index 7729d0a90..d4c68f5ce 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -312,6 +312,10 @@ Custom middleware like `ProcessETag` and `ValidateJsonContent` must now be regis Take a look at the [App Configuration](#app-configuration) section for details. ## Resource Key +If you have custom models that don't extend the `App\Ship\Parents\Models` models, +you need to implement the `Apiato\Http\Resources\ResourceKeyAware` interface +and use the `Apiato\Http\Resources\HasResourceKey` trait. +e.g., `App\Containers\AppSection\Authorization\Models\Roles`. #### `HasResourceKey` Interface {#has-resource-key-interface} The `Apiato\Core\Contracts\HasResourceKey` interface has been renamed @@ -330,6 +334,11 @@ and moved to `Apiato\Core\Models\InteractsWithApiato`. Add the `readonly` keyword to your parent Value Object class and all Value Objects that extend it. +## Models +Models `$resourceKey` property is no longer used. + +If you were customizing the resource key in your models, you can now do so by overriding the `getResourceKey` method. + ## Laravel Passport ### Migration Adjustments @@ -676,6 +685,13 @@ Apiato no longer uses Laravel’s `database/seeders/DatabaseSeeder.php`. Instead - Remove `database/seeders/DatabaseSeeder.php` if present. - Move your seeding logic into `Ship` or `Container` seeder classes. + +These commands have been removed: +- `apiato:seed-deploy` +- `apiato:seed-test` + +Create your own custom command to seed your database. + ## Commands The `Apiato\Core\Abstracts\Commands\ConsoleCommand` class has been renamed and moved to `Apiato\Core\Console\Command`. From 1b2713c666a0c2e516fac2e73376f04a8cc9efb3 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 11 Apr 2025 19:46:57 +0330 Subject: [PATCH 32/91] Update upgrade-guide.mdx --- docs/prologue/upgrade-guide.mdx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index d4c68f5ce..28b651cc2 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -715,6 +715,20 @@ abstract class Notification extends LaravelNotification If you depend on this feature, you can add the removed method to your parent notification class. +## API Prefix + +## Subdomain +The `apiato.api.subdomain` configuration option has been removed. + +You can now configure subdomains in the `bootstrap/app.php` file, +using the `Apiato` configuration class `withRouting` method. TODO add doc link + +## Version Prefix +The `apiato.api.enable_version_prefix` configuration option has been removed. + +You can now configure version prefixes in the `bootstrap/app.php` file, +using the `Apiato` configuration class `withRouting` method. TODO add doc link + ## Miscellaneous We recommend reviewing changes in [apiato/apiato](https://github.com/apiato/apiato) and [apiato/core](https://github.com/apiato/core) repositories between versions 12.x and 13.x and 8.x and 13.x respectively, From 2e8e1669b0199fb16f48162ebf491dfe8cbb41b5 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 11 Apr 2025 19:47:13 +0330 Subject: [PATCH 33/91] Update release-notes.md --- docs/prologue/release-notes.md | 132 ++++++++++++++++++++------------- 1 file changed, 81 insertions(+), 51 deletions(-) diff --git a/docs/prologue/release-notes.md b/docs/prologue/release-notes.md index ab39185e7..d04b53dd0 100644 --- a/docs/prologue/release-notes.md +++ b/docs/prologue/release-notes.md @@ -11,7 +11,7 @@ while minor and patch releases may be released as often as every week. Minor and patch releases should never contain breaking changes. When referencing the Apiato framework or its components from your application or package, -you should always use a version constraint such as `^12.0`, +you should always use a version constraint such as `^13.0`, since major releases of Apiato do include breaking changes. However, we strive to always ensure you may update to a new major release in one day or less. @@ -24,56 +24,86 @@ For all Apiato releases, bug fixes are provided for 18 months and security fixes | 10 | 7.3 - 8.1 | April 25th, 2021 | October 25th, 2022 | April 25th, 2023 | | 11 | 8.0 - 8.2 | April 27th, 2022 | October 27th, 2023 | April 27th, 2024 | | 12 | 8.1 - 8.2 | June 4th, 2023 | December 4th, 2024 | June 4th, 2025 | -| 13 | 8.2 | Q1 2024 | August 5th, 2025 | February 3rd, 2026 | +| 13 | 8.2 - 8.4 | April 13th, 2025 | October 27th, 2026 | April 27th, 2027 | (*) Supported PHP versions -## Apiato 12 - -**Full Changelog**: https://github.com/apiato/apiato/compare/v11.3.2...v12.0.0 - -#### PHP 8.1 -Apiato 12.x requires a minimum PHP version of 8.1. - -### Breaking Changes - -* Upgraded to Laravel v10 (All Laravel files (e.g. configs, .env, etc...) are now synced with the latest Laravel changes) -* Updated Composer dependencies to their latest version -* Laravel Passport route registration & customization has changed. Passport routes are now reside in a dedicated [route file](https://github.com/apiato/apiato/blob/3d368c0ead610bfd9d5566ad7652419346732e53/app/Containers/AppSection/Authentication/UI/API/Routes/Passport.v1.private.php) (Instead of registering them in the provider). -* Middleware `$routeMiddleware` field is renamed to `$middlewareAliases` -* Trimmed down the TestCase by removing some useless traits including: -``` -TestsMockHelperTrait -TestsResponseHelperTrait -``` -* `encode()` method return value has changed -> In case of unencodable value (e.g. `null`), now returns `null` instead of `''` -* `decode()` method return value has changed -> In case of undecodable value (e.g. `null`), now returns `null` instead of `[]` -* [StateKeeperTrait](https://github.com/apiato/core/blob/cbf2acacf42ee442db5a301773c26944a049bfc1/Traits/StateKeeperTrait.php) is removed from `Request` - -### None Breaking Changes - -* Everything is refactored to use `constructor` injection instead of directly using the Service Container like so `app(CreateUserByCredentialsTask::class)->run()` -* Added more tests and refactored the rest -* Switched to `invokable` controllers -```php -\\ from -Route::get('profile', [GetAuthenticatedUserController::class, 'getAuthenticatedUser']); -\\ to -Route::get('profile', GetAuthenticatedUserController::class); -``` -* All rotues are moved into the private documentation. e.g. - `RefreshProxyForWebClient.v1.public.php` -> `RefreshProxyForWebClient.v1.private.php` -* Added some getter methods to the [Request](https://github.com/apiato/core/blob/789606b41f1024c2da506bb6765d2fbfa85897cd/Abstracts/Requests/Request.php) including: -``` -withUrlParameters() -getAccessArray() -getDecodeArray() -getUrlParametersArray() -``` -* Added a `TestAssertionHelperTrait` to the TestCase which provides some usefull assertions - -### Bug Fixes -* `withMeta()` method on [ResponseTrait](https://github.com/apiato/core/blob/789606b41f1024c2da506bb6765d2fbfa85897cd/Traits/ResponseTrait.php) now correctly includes added meta data -* Calling invokable controllers from routes [#174](https://github.com/apiato/core/issues/174) -* Exception when try to generate an WEB CRUD Controller from generator [#171](https://github.com/apiato/core/issues/171) -* PHP 8.1 warning on passing null to explode [#176](https://github.com/apiato/core/issues/176) +## Apiato 13 + +A lot of files have been moved around, renamed or removed. +See the **Full Changelog**: https://github.com/apiato/core/compare/v12.0.0...v13.0.0. + +Possible breaking changes are document in the [upgrade guide](https://apiato.io/docs/prologue/upgrade-guide). + +See the Core changelog. + +TODO add link to docs for every new thing that has a docs page. +Also move the docs written under them to their respective doc page. + +## Notable Changes +* update min PHP version to `^8.2` +* update min Laravel version to `^11.23` +* allow configuration using a config class (Similar to Laravel) +* allow publishing `apiato.php` configs +* rename generate command from `apiato:generate` to `apiato:make` +* add `Apiato\Support\Facades\Response` facade which provides: + * eager loading requested includes + * improved filtering of the response + * excluding includes +* add `Collection::containsDecodedHash` macro +* add `Collection::decode` macro +* add `Config::unset` macro +* add `apiato` helper function +* add `shared_path` helper function +* add `hashids` helper function +* add `ValidateAppId` middleware + +### Configs + +#### Removed +* `app/Ship/Configs/notification.php` config file +* `apiato.api.prefix` + configure via Apiato::config +* `apiato.api.enable_version_prefix` + configure via Apiato::config +* `apiato.requests.allow-roles-to-access-all-routes` +* `apiato.requests.force-valid-includes` +* `apiato.requests.params` +* `apiato.seeders` +* `apiato.tests` +* `appSection-authentication.require_email_verification` +* `appSection-authentication.email_verification_link_expiration_time_in_minute` + Apiato now uses Laravel email verification. Use `MustVerifyEmail` interface. read Laravel docs to learn more about how to and available configs. +* `appSection-authentication.login` + login with multiple field feature has been removed +* `appSection-authentication.allowed-reset-password-urls` +* `appSection-authentication.allowed-verify-email-urls` + +#### Changed +* `apiato.api.expires-in` renamed and moved to `appSection-authentication.tokens-expire-in` +* `apiato.api.refresh-expires-in` renamed and moved to `appSection-authentication.refresh-tokens-expire-in` +* `apiato.throttle` renamed to `apiato.rate-limiter` + +#### Added +* `apiato.defaults.app` +* `apiato.rate-limiter.name` +* `apiato.apps.web.url` + +### Commands + +#### Removed +* `apiato` + use `php artisan about` instead +* `apiato:seed-deploy` +* `apiato:seed-test` + +### Misc + +#### Removed +* `Apiato\Core\Middlewares\Http\ProfilerMiddleware` middleware class +* `no_spaces` [custom validation rule](https://github.com/apiato/core/blob/8.x/src/Traits/ValidationTrait.php) +* `uncamelize` helper function +* all custom test assertions (except [assertDatabaseTable](https://github.com/apiato/core/blob/065c8e7600048c2d0c3168993d99535511eb418c/src/Traits/TestTraits/PhpUnit/TestAssertionHelperTrait.php#L77)) + +### Error Handling +Error handling is completely reworked. See to the [upgrade guide](https://apiato.io/docs/prologue/upgrade-guide) for more Details. From ba8de42956575f26304b81b026718b87f197facb Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 11 Apr 2025 21:39:00 +0330 Subject: [PATCH 34/91] docs: code gen command change --- docs/architecture-concepts/container.md | 8 +-- docs/components/main-components/actions.md | 4 +- .../components/main-components/controllers.md | 4 +- docs/components/main-components/exceptions.md | 4 +- docs/components/main-components/models.md | 4 +- docs/components/main-components/requests.md | 4 +- docs/components/main-components/routes.md | 8 ++- docs/components/main-components/subactions.md | 4 +- docs/components/main-components/tasks.md | 4 +- .../main-components/transformers.md | 4 +- .../components/optional-components/configs.md | 4 +- docs/components/optional-components/events.md | 8 +-- .../optional-components/factories.md | 4 +- docs/components/optional-components/jobs.md | 4 +- docs/components/optional-components/mail.md | 4 +- .../optional-components/middlewares.md | 8 +-- .../optional-components/migrations.md | 4 +- .../optional-components/notifications.md | 4 +- .../optional-components/policies.md | 8 +-- .../repository/repositories.md | 8 +-- .../components/optional-components/seeders.md | 28 +------- .../optional-components/service-providers.md | 4 +- docs/components/optional-components/tests.md | 26 +------ docs/components/optional-components/values.md | 4 +- docs/framework-features/code-generator.md | 68 +++++++++---------- 25 files changed, 97 insertions(+), 137 deletions(-) diff --git a/docs/architecture-concepts/container.md b/docs/architecture-concepts/container.md index fe87899ac..4064ad29d 100644 --- a/docs/architecture-concepts/container.md +++ b/docs/architecture-concepts/container.md @@ -26,10 +26,10 @@ In summary, a Container represents a cohesive set of related functionalities. It can be a specific feature or a wrapper around a RESTful API resource. To generate new containers along with all their [components](components.md), -you may use the `apiato:generate:container` interactive command: +you may use the `apiato:make:container` interactive command: ``` -php artisan apiato:generate:container +php artisan apiato:make:container ``` ## Composer Dependencies @@ -48,8 +48,8 @@ The choice of location depends on what is most relevant and convenient for your Each Container has the option to include a `readme.md` file at its root, which serves to explain the Container's purpose and how to use it. -To generate new readme files, you may use the `apiato:generate:readme` interactive command: +To generate new readme files, you may use the `apiato:make:readme` interactive command: ``` -php artisan apiato:generate:readme +php artisan apiato:make:readme ``` diff --git a/docs/components/main-components/actions.md b/docs/components/main-components/actions.md index 52638ec34..1694b7235 100644 --- a/docs/components/main-components/actions.md +++ b/docs/components/main-components/actions.md @@ -12,10 +12,10 @@ tags: Actions serve as the embodiment of the application's Use Cases, encapsulating the various operations that users or software can execute within the application. -To generate new actions you may use the `apiato:generate:action` interactive command: +To generate new actions you may use the `apiato:make:action` interactive command: ```shell -php artisan apiato:generate:action +php artisan apiato:make:action ``` Additionally, to retrieve a list of the existing actions in your Apiato application, diff --git a/docs/components/main-components/controllers.md b/docs/components/main-components/controllers.md index 01caa0734..636dd5e55 100644 --- a/docs/components/main-components/controllers.md +++ b/docs/components/main-components/controllers.md @@ -16,10 +16,10 @@ tags: serving the requested data and constructing the corresponding response. To generate new controllers -you may use the `apiato:generate:controller` interactive command: +you may use the `apiato:make:controller` interactive command: ``` -php artisan apiato:generate:controller +php artisan apiato:make:controller ``` ## Definition & Principles diff --git a/docs/components/main-components/exceptions.md b/docs/components/main-components/exceptions.md index fefcc139b..64dec1580 100644 --- a/docs/components/main-components/exceptions.md +++ b/docs/components/main-components/exceptions.md @@ -9,10 +9,10 @@ tags: Exceptions are used to handle errors and exceptions in the application. -To generate new exceptions you may use the `apiato:generate:exception` interactive command: +To generate new exceptions you may use the `apiato:make:exception` interactive command: ``` -php artisan apiato:generate:exception +php artisan apiato:make:exception ``` ## Definition & Principles diff --git a/docs/components/main-components/models.md b/docs/components/main-components/models.md index 3a67d3c7a..6721f0563 100644 --- a/docs/components/main-components/models.md +++ b/docs/components/main-components/models.md @@ -13,10 +13,10 @@ and providing an abstraction for interacting with that data. They encapsulate the business logic and rules associated with the data, as well as facilitate the communication with the underlying database. -To generate new models you may use the `apiato:generate:model` interactive command: +To generate new models you may use the `apiato:make:model` interactive command: ``` -php artisan apiato:generate:model +php artisan apiato:make:model ``` ## Definition & Principles diff --git a/docs/components/main-components/requests.md b/docs/components/main-components/requests.md index 8b4f6d973..fe7e42da5 100644 --- a/docs/components/main-components/requests.md +++ b/docs/components/main-components/requests.md @@ -14,10 +14,10 @@ tags: being handled by your application as well as retrieve the input, cookies, and files that were submitted with the request. -To generate new requests you may use the `apiato:generate:request` interactive command: +To generate new requests you may use the `apiato:make:request` interactive command: ``` -php artisan apiato:generate:request +php artisan apiato:make:request ``` ## Definition & Principles diff --git a/docs/components/main-components/routes.md b/docs/components/main-components/routes.md index ab779486b..3cc3ed42e 100644 --- a/docs/components/main-components/routes.md +++ b/docs/components/main-components/routes.md @@ -11,10 +11,14 @@ tags: [Routes](https://laravel.com/docs/routing) are responsible for mapping incoming HTTP requests to their corresponding controller functions. -To generate new routes you may use the `apiato:generate:route` interactive command: +Apiato introduces a new approach to route organization +and does not use the default `routes/web.php` and `routes/api.php` files. +Therefore, you won't find these files in Apiato. + +To generate new routes, you may use the `apiato:make:route` interactive command: ``` -php artisan apiato:generate:route +php artisan apiato:make:route ``` ## Definition & Principles diff --git a/docs/components/main-components/subactions.md b/docs/components/main-components/subactions.md index ecf06a692..c634903cc 100644 --- a/docs/components/main-components/subactions.md +++ b/docs/components/main-components/subactions.md @@ -17,10 +17,10 @@ SubActions serve to share a predefined set of Tasks. All the features and capabilities available for regular Actions are also applicable to SubActions. -To generate new SubActions you may use the `apiato:generate:subaction` interactive command: +To generate new SubActions you may use the `apiato:make:subaction` interactive command: ``` -php artisan apiato:generate:subaction +php artisan apiato:make:subaction ``` ## Definition & Principles diff --git a/docs/components/main-components/tasks.md b/docs/components/main-components/tasks.md index 57305b8fc..d6f73689b 100644 --- a/docs/components/main-components/tasks.md +++ b/docs/components/main-components/tasks.md @@ -15,10 +15,10 @@ They play a vital role in encapsulating functionalities that are utilized by multiple Actions spanning various Containers within your application. -To generate new tasks you may use the `apiato:generate:task` interactive command: +To generate new tasks you may use the `apiato:make:task` interactive command: ```shell -php artisan apiato:generate:task +php artisan apiato:make:task ``` Additionally, to retrieve a list of the existing tasks in your Apiato application, diff --git a/docs/components/main-components/transformers.md b/docs/components/main-components/transformers.md index a1375c0fc..8edf51da0 100644 --- a/docs/components/main-components/transformers.md +++ b/docs/components/main-components/transformers.md @@ -20,10 +20,10 @@ you can refer to the [official documentation of Fractal](https://fractal.thephpl which is the underlying library used for handling transformations in Apiato. To generate new transformers -you may use the `apiato:generate:transformer` interactive command: +you may use the `apiato:make:transformer` interactive command: ``` -php artisan apiato:generate:transformer +php artisan apiato:make:transformer ``` ## Definition & Principles diff --git a/docs/components/optional-components/configs.md b/docs/components/optional-components/configs.md index edf5e8293..a6b152fa7 100644 --- a/docs/components/optional-components/configs.md +++ b/docs/components/optional-components/configs.md @@ -10,10 +10,10 @@ Apiato configs are just Laravel configs, and they function in the exact same way However, they come with additional rules and conventions specific to Apiato. To generate new configs -you may use the `apiato:generate:configuration` interactive command: +you may use the `apiato:make:configuration` interactive command: ``` -php artisan apiato:generate:configuration +php artisan apiato:make:configuration ``` ## Rules diff --git a/docs/components/optional-components/events.md b/docs/components/optional-components/events.md index 0a409367c..24b45f29c 100644 --- a/docs/components/optional-components/events.md +++ b/docs/components/optional-components/events.md @@ -17,8 +17,8 @@ However, they come with additional rules and conventions specific to Apiato. To generate new events and listeners you may use the following interactive commands: ``` -php artisan apiato:generate:event -php artisan apiato:generate:listener +php artisan apiato:make:event +php artisan apiato:make:listener ``` ## Rules @@ -104,10 +104,10 @@ class EventServiceProvider extends ParentEventServiceProvider ``` To generate an event service provider -you may use the `apiato:generate:provider` interactive command: +you may use the `apiato:make:provider` interactive command: ``` -php artisan apiato:generate:provider +php artisan apiato:make:provider ``` Remember to also register the `EventServiceProvider` in the container's `MainServiceProvider`: diff --git a/docs/components/optional-components/factories.md b/docs/components/optional-components/factories.md index e027ea18c..504ed451f 100644 --- a/docs/components/optional-components/factories.md +++ b/docs/components/optional-components/factories.md @@ -13,10 +13,10 @@ Apiato factories are just [Laravel Factories](https://laravel.com/docs/eloquent- and they function in the exact same way as Laravel factories. However, they come with additional rules and conventions specific to Apiato. -To generate new factories you may use the `apiato:generate:factory` interactive command: +To generate new factories you may use the `apiato:make:factory` interactive command: ``` -php artisan apiato:generate:factory +php artisan apiato:make:factory ``` ## Rules diff --git a/docs/components/optional-components/jobs.md b/docs/components/optional-components/jobs.md index 04f4bf786..73ba6278c 100644 --- a/docs/components/optional-components/jobs.md +++ b/docs/components/optional-components/jobs.md @@ -11,10 +11,10 @@ Apiato jobs are just [Laravel Jobs](https://laravel.com/docs/queues), and they function in the exact same way as Laravel jobs. However, they come with additional rules and conventions specific to Apiato. -To generate new jobs you may use the `apiato:generate:job` interactive command: +To generate new jobs you may use the `apiato:make:job` interactive command: ``` -php artisan apiato:generate:job +php artisan apiato:make:job ``` ## Rules diff --git a/docs/components/optional-components/mail.md b/docs/components/optional-components/mail.md index 601f59b5e..2e942bf81 100644 --- a/docs/components/optional-components/mail.md +++ b/docs/components/optional-components/mail.md @@ -11,10 +11,10 @@ Apiato mails are just [Laravel Mails](https://laravel.com/docs/mail), and they function in the exact same way as Laravel mails. However, they come with additional rules and conventions specific to Apiato. -To generate new mails you may use the `apiato:generate:mail` interactive command: +To generate new mails you may use the `apiato:make:mail` interactive command: ``` -php artisan apiato:generate:mail +php artisan apiato:make:mail ``` ## Rules diff --git a/docs/components/optional-components/middlewares.md b/docs/components/optional-components/middlewares.md index 86b6ce409..313af18ff 100644 --- a/docs/components/optional-components/middlewares.md +++ b/docs/components/optional-components/middlewares.md @@ -15,10 +15,10 @@ and they function in the exact same way as Laravel middlewares. However, they come with additional rules and conventions specific to Apiato. To generate new middlewares -you may use the `apiato:generate:middleware` interactive command: +you may use the `apiato:make:middleware` interactive command: ``` -php artisan apiato:generate:middleware +php artisan apiato:make:middleware ``` ## Rules @@ -90,10 +90,10 @@ class MiddlewareServiceProvider extends ParentMiddlewareServiceProvider ``` To generate a middleware service provider -you may use the `apiato:generate:provider` interactive command: +you may use the `apiato:make:provider` interactive command: ``` -php artisan apiato:generate:provider +php artisan apiato:make:provider ``` Remember to also register the `MiddlewareServiceProvider` in the container's `MainServiceProvider`: diff --git a/docs/components/optional-components/migrations.md b/docs/components/optional-components/migrations.md index 14bd12ccb..25b5c82f5 100644 --- a/docs/components/optional-components/migrations.md +++ b/docs/components/optional-components/migrations.md @@ -11,10 +11,10 @@ Apiato migrations are just [Laravel Migrations](https://laravel.com/docs/migrati and they function in the exact same way as Laravel migrations. However, they come with additional rules and conventions specific to Apiato. -To generate new migrations you may use the `apiato:generate:migration` interactive command: +To generate new migrations you may use the `apiato:make:migration` interactive command: ``` -php artisan apiato:generate:migration +php artisan apiato:make:migration ``` ## Rules diff --git a/docs/components/optional-components/notifications.md b/docs/components/optional-components/notifications.md index 8b73a0527..830debe7b 100644 --- a/docs/components/optional-components/notifications.md +++ b/docs/components/optional-components/notifications.md @@ -11,10 +11,10 @@ Apiato notifications are just [Laravel Notifications](https://laravel.com/docs/n and they function in the exact same way as Laravel notifications. However, they come with additional rules and conventions specific to Apiato. -To generate new notifications you may use the `apiato:generate:notification` interactive command: +To generate new notifications you may use the `apiato:make:notification` interactive command: ``` -php artisan apiato:generate:notification +php artisan apiato:make:notification ``` ## Rules diff --git a/docs/components/optional-components/policies.md b/docs/components/optional-components/policies.md index 66de347e5..d0a078448 100644 --- a/docs/components/optional-components/policies.md +++ b/docs/components/optional-components/policies.md @@ -12,10 +12,10 @@ Apiato policies are just [Laravel Policies](https://laravel.com/docs/authorizati and they function in the exact same way as Laravel policies. However, they come with additional rules and conventions specific to Apiato. -To generate new policies you may use the `apiato:generate:policy` interactive command: +To generate new policies you may use the `apiato:make:policy` interactive command: ``` -php artisan apiato:generate:policy +php artisan apiato:make:policy ``` ## Rules @@ -72,10 +72,10 @@ class AuthServiceProvider extends ParentAuthProvider ``` To generate an event service provider -you may use the `apiato:generate:provider` interactive command: +you may use the `apiato:make:provider` interactive command: ``` -php artisan apiato:generate:provider +php artisan apiato:make:provider ``` Remember to also register the `AuthServiceProvider` in the container's `MainServiceProvider`: diff --git a/docs/components/optional-components/repository/repositories.md b/docs/components/optional-components/repository/repositories.md index 2b36cb815..2ce327b76 100644 --- a/docs/components/optional-components/repository/repositories.md +++ b/docs/components/optional-components/repository/repositories.md @@ -27,16 +27,16 @@ create clean and organized codebases by abstracting the intricacies of data access and manipulation from the core business logic. To generate new repositories -you may use the `apiato:generate:repository` interactive command: +you may use the `apiato:make:repository` interactive command: ``` -php artisan apiato:generate:repository +php artisan apiato:make:repository ``` -You can also generate a model and its repository at the same time by using the `apiato:generate:model` interactive command: +You can also generate a model and its repository at the same time by using the `apiato:make:model` interactive command: ``` -php artisan apiato:generate:model +php artisan apiato:make:model ``` ## Rules diff --git a/docs/components/optional-components/seeders.md b/docs/components/optional-components/seeders.md index e2cc4a9fb..94117a22d 100644 --- a/docs/components/optional-components/seeders.md +++ b/docs/components/optional-components/seeders.md @@ -11,10 +11,10 @@ Apiato seeders are just [Laravel Seeders](https://laravel.com/docs/seeding), and they function in the exact same way as Laravel seeders. However, they come with additional rules and conventions specific to Apiato. -To generate new seeders you may use the `apiato:generate:seeder` interactive command: +To generate new seeders you may use the `apiato:make:seeder` interactive command: ``` -php artisan apiato:generate:seeder +php artisan apiato:make:seeder ``` ## Rules @@ -72,27 +72,3 @@ For instance, `UserPermissionsSeeder_1` will be loaded before `UserPermissionsSe 2. Subsequently, it proceeds to load seeders with names containing `_2`. 3. This pattern continues until it loads all seeders with names containing `_n`. 4. Lastly, any remaining seeders without the `_n` suffix are loaded. - -## Special Seeders - -### Testing - -For testing purposes, Apiato offers a special seeder class to seed testing data. -You can find this seeder class at `app/Ship/Seeders/SeedTestingData.php`. -It's important to note that this seeder is not loaded automatically by Apiato. -Instead, you can manually trigger the seeding process by running the following command: - -``` -php artisan apiato:seed-test -``` - -### Deployment - -In addition to the testing seeder, Apiato also provides a special seeder class for production data seeding. -You can locate this seeder class at `app/Ship/Seeders/SeedDeploymentData.php`. -Similar to the testing seeder, the deployment seeder is not automatically loaded by Apiato. -You can call this seeder and populate your database with production data by executing the following command: - -``` -php artisan apiato:seed-deployment -``` diff --git a/docs/components/optional-components/service-providers.md b/docs/components/optional-components/service-providers.md index c2a72ec6e..2c28c45f1 100644 --- a/docs/components/optional-components/service-providers.md +++ b/docs/components/optional-components/service-providers.md @@ -13,10 +13,10 @@ and they function in the exact same way as Laravel service providers. However, they come with additional rules and conventions specific to Apiato. To generate new service providers -you may use the `apiato:generate:provider` interactive command: +you may use the `apiato:make:provider` interactive command: ``` -php artisan apiato:generate:provider +php artisan apiato:make:provider ``` There are two distinct types of service providers within a container: diff --git a/docs/components/optional-components/tests.md b/docs/components/optional-components/tests.md index 228df5f21..b2a87a6e8 100644 --- a/docs/components/optional-components/tests.md +++ b/docs/components/optional-components/tests.md @@ -18,9 +18,9 @@ You can refer to Laravel documentation on [HTTP tests](https://laravel.com/docs/ To generate new tests you may use the following interactive commands: ``` -php artisan apiato:generate:test:unit -php artisan apiato:generate:test:functional -php artisan apiato:generate:test:testcase +php artisan apiato:make:test:unit +php artisan apiato:make:test:functional +php artisan apiato:make:test:testcase ``` ## Definitions @@ -645,23 +645,3 @@ ensuring that the expected hashed IDs are present within your model collections. :::caution Deprecation Notice This method will be removed in the next major release and will not be available in test classes. ::: - -## Create Live Testing Data - -To test your application using live testing data, -such as creating items in an inventory, you can utilize the feature designed specifically for this purpose. -It allows for the automatic generation of testing data, -which can be helpful during staging or when real people are testing your application. - -To create your live testing data, navigate to the `app/Ship/Seeder/SeedTestingData.php` seeder class. -Within this class, you can define the logic and data generation process for your testing data. - -Once you have defined your testing data, -you can run the following command in your terminal: - -``` -php artisan apiato:seed-test -``` - -This command triggers the seeding process specifically for testing data, -populating your application with the generated data. diff --git a/docs/components/optional-components/values.md b/docs/components/optional-components/values.md index 4ec0ea85c..3b218958e 100644 --- a/docs/components/optional-components/values.md +++ b/docs/components/optional-components/values.md @@ -16,10 +16,10 @@ Value Objects are particularly well-suited for use with Laravel [attributes cast which allows us to cast a Value Object to a specific type, enabling seamless integration with Eloquent models and database operations. -To generate new values you may use the `apiato:generate:value` interactive command: +To generate new values you may use the `apiato:make:value` interactive command: ``` -php artisan apiato:generate:value +php artisan apiato:make:value ``` ## Rules diff --git a/docs/framework-features/code-generator.md b/docs/framework-features/code-generator.md index bfd2d2446..0a4f580ed 100644 --- a/docs/framework-features/code-generator.md +++ b/docs/framework-features/code-generator.md @@ -10,54 +10,54 @@ Apiato comes with a powerful code generator that can help you to generate all th Apiato code generator is valuable tool that can significantly accelerate the development process by automating the creation of boilerplate code based on user inputs. -For example, with the `apiato:generate:container` command, +For example, with the `apiato:make:container` command, you can quickly generate a complete container with fully functional CRUD operations, complete with test coverage. To access the latest list of code generator commands you may run the following command: ``` -php artisan list apiato:generate +php artisan list apiato:make ``` ## Available Commands ``` -php artisan apiato:generate:action Create a Action file for a Container -php artisan apiato:generate:configuration Create a Configuration file for a Container -php artisan apiato:generate:container Create a Container for apiato from scratch -php artisan apiato:generate:container:api Create a Container for apiato from scratch (API Part) -php artisan apiato:generate:container:web Create a Container for apiato from scratch (WEB Part) -php artisan apiato:generate:controller Create a controller for a container -php artisan apiato:generate:event Create a new Event class and its corresponding Listener -php artisan apiato:generate:exception Create a new Exception class -php artisan apiato:generate:factory Create a new Model Factory class for a given Model -php artisan apiato:generate:job Create a new Job class -php artisan apiato:generate:listener Create a new Event Listener class -php artisan apiato:generate:mail Create a new Mail class -php artisan apiato:generate:middleware Create a new Middleware class -php artisan apiato:generate:migration Create an "empty" migration file for a Container -php artisan apiato:generate:model Create a new Model class -php artisan apiato:generate:notification Create a new Notification class -php artisan apiato:generate:policy Create a new Policy class -php artisan apiato:generate:provider Create a Service Provider for a Container -php artisan apiato:generate:readme Create a README file for a Container -php artisan apiato:generate:repository Create a new Repository class -php artisan apiato:generate:request Create a new Request class -php artisan apiato:generate:route Create a new Route class -php artisan apiato:generate:seeder Create a new Seeder class -php artisan apiato:generate:subaction Create a new SubAction class -php artisan apiato:generate:task Create a Task file for a Container -php artisan apiato:generate:test:functional Create a Functional Test file. -php artisan apiato:generate:test:testcase Create the TestCase file. -php artisan apiato:generate:test:unit Create a Unit Test file. -php artisan apiato:generate:transformer Create a new Transformer class for a given Model -php artisan apiato:generate:value Create a new Value class +php artisan apiato:make:action Create a Action file for a Container +php artisan apiato:make:configuration Create a Configuration file for a Container +php artisan apiato:make:container Create a Container for apiato from scratch +php artisan apiato:make:container:api Create a Container for apiato from scratch (API Part) +php artisan apiato:make:container:web Create a Container for apiato from scratch (WEB Part) +php artisan apiato:make:controller Create a controller for a container +php artisan apiato:make:event Create a new Event class and its corresponding Listener +php artisan apiato:make:exception Create a new Exception class +php artisan apiato:make:factory Create a new Model Factory class for a given Model +php artisan apiato:make:job Create a new Job class +php artisan apiato:make:listener Create a new Event Listener class +php artisan apiato:make:mail Create a new Mail class +php artisan apiato:make:middleware Create a new Middleware class +php artisan apiato:make:migration Create an "empty" migration file for a Container +php artisan apiato:make:model Create a new Model class +php artisan apiato:make:notification Create a new Notification class +php artisan apiato:make:policy Create a new Policy class +php artisan apiato:make:provider Create a Service Provider for a Container +php artisan apiato:make:readme Create a README file for a Container +php artisan apiato:make:repository Create a new Repository class +php artisan apiato:make:request Create a new Request class +php artisan apiato:make:route Create a new Route class +php artisan apiato:make:seeder Create a new Seeder class +php artisan apiato:make:subaction Create a new SubAction class +php artisan apiato:make:task Create a Task file for a Container +php artisan apiato:make:test:functional Create a Functional Test file. +php artisan apiato:make:test:testcase Create the TestCase file. +php artisan apiato:make:test:unit Create a Unit Test file. +php artisan apiato:make:transformer Create a new Transformer class for a given Model +php artisan apiato:make:value Create a new Value class ``` ## Stub Customization -The `apiato:generate` commands utilize "stub" files that are pre-filled with values based on your input. +The `apiato:make` commands utilize "stub" files that are pre-filled with values based on your input. If you wish to make modifications to the files generated by Apiato, you can create your own custom stub files and place them in the `app/Ship/Generators/CustomStubs` directory. These custom stubs will then override the default stubs used by Apiato. @@ -71,7 +71,7 @@ To illustrate the process, let's assume you want to customize the creation of an 2. Copy the `action.stub` file and paste it into the `app/Ship/Generators/CustomStubs/actions` directory. 3. Make the desired changes to the copied `action.stub` file according to your requirements. -By completing these steps, whenever you run the `php artisan apiato:generate:action` command, +By completing these steps, whenever you run the `php artisan apiato:make:action` command, your customized stub file will be employed instead of the default one, applying your modifications to the generated `action` files. From 7078d4cc768e569d9c6e5dc1e4f8554940095d28 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 11 Apr 2025 21:39:06 +0330 Subject: [PATCH 35/91] Create advance-configuration.mdx --- .../advance-configuration.mdx | 279 ++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 docs/framework-features/advance-configuration.mdx diff --git a/docs/framework-features/advance-configuration.mdx b/docs/framework-features/advance-configuration.mdx new file mode 100644 index 000000000..7b5e9ec8e --- /dev/null +++ b/docs/framework-features/advance-configuration.mdx @@ -0,0 +1,279 @@ +--- +sidebar_position: 0 +title: Advance Configuration +tags: + - framework-feature + - advance-configuration +--- + +Apiato provides a fluent configuration API that allows you to customize how your application loads resources, routes, +providers, and more. Apiato uses a set of sensible defaults for loading resources and configuring components. +This documentation explains how to use the `Apiato::configure()` method and its various options to customize your Apiato application. + + +## Basic Usage + +To use the configuration builder, you can call the `Apiato::configure()` method in your application's bootstrap file (e.g., `bootstrap/app.php`). + +```php +$apiato = Apiato::configure(basePath: '/path/to/app')->create(); +``` + +## Core Configuration Methods + +### configure + +Initializes the Apiato configuration builder with an optional base path. + +```php +$builder = Apiato::configure('/path/to/app'); +``` + +If no base path is provided, Apiato will attempt to determine it from: +1. The `APP_BASE_PATH` environment variable +2. The Composer autoloader location + +### useSharedPath + +Sets the path for shared components (defaults to `app/Ship`). + +```php +$builder->useSharedPath('/path/to/shared'); +``` + +## Resource Loading Methods + +Each of these methods accepts directory paths or glob patterns. + +### withConfigs + +Registers configuration file paths. + +```php +$builder->withConfigs( + shared_path('Configs'), + '/app/Containers/ExampleSection/ExampleContainer/Configs' +); +``` + +### withEvents + +Registers event discovery paths. + +```php +$builder->withEvents( + shared_path('Listeners'), + '/app/Containers/ExampleSection/ExampleContainer/Listeners' +); +``` + +### withCommands + +Registers console command paths. + +```php +$builder->withCommands( + shared_path('Commands'), + '/app/Containers/ExampleSection/ExampleContainer/UI/CLI/Commands' +); +``` + +### withHelpers + +Registers helper file paths. + +```php +$builder->withHelpers( + shared_path('Helpers'), + '/app/Containers/ExampleSection/ExampleContainer/Helpers' +); +``` + +### withMigrations + +Registers migration paths. + +```php +$builder->withMigrations( + shared_path('Migrations'), + '/app/Containers/ExampleSection/ExampleContainer/Data/Migrations' +); +``` + +## Component Configuration Methods + +These methods accept optional callbacks for advanced configuration: + +### withProviders + +Configures service provider loading. + +```php +$builder->withProviders(function (Provider $provider) { + $provider->loadFrom( + shared_path('Providers'), + '/app/Containers/ExampleSection/ExampleContainer/Providers' + ); + + // Replace providers + $provider->replace([ + OldProvider::class => NewProvider::class, + ]); + + // Merge additional providers + $provider->merge([ + CustomProvider::class, + ]); + + // Exclude providers + $provider->except([ + UnwantedProvider::class, + ]); +}); +``` + +### withSeeders + +Configures database seeder loading. + +```php +$builder->withSeeders(function (Seeding $seeding) { + $seeding->loadFrom('/app/Containers/ExampleSection/ExampleContainer/Data/Seeders'); + + // Custom seeder sorting + $seeding->sortUsing(function (array $classMapGroupedByDirectory) { + // Custom sorting logic + return $sortedClassNames; + }); +}); +``` + +### withTranslations + +Configures translation loading. + +```php +$builder->withTranslations(function (Localization $localization) { + $localization->loadFrom( + shared_path('Languages'), + '/app/Containers/ExampleSection/ExampleContainer/Languages' + ); + + // Custom namespace builder + $localization->buildNamespaceUsing(function (string $path) { + return $namespace; + }); +}); +``` + +### withViews + +Configures view loading. + +```php +$builder->withViews(function (View $view) { + $view->loadFrom( + shared_path('Views'), + shared_path('Mails/Templates'), + '/app/Containers/ExampleSection/ExampleContainer/UI/WEB/Views' + ); + + // Custom namespace builder + $view->buildNamespaceUsing(function (string $path) { + return $namespace; + }); +}); +``` + +### withRouting + +Configures API and web routing. + +```php +$builder->withRouting(function (Routing $routing) { + $routing->prefixApiUrlsWith('api/') + ->loadApiRoutesFrom('/app/Containers/ExampleSection/ExampleContainer/UI/API/Routes') + ->loadWebRoutesFrom('/app/Containers/ExampleSection/ExampleContainer/UI/WEB/Routes'); + + // Disable API version auto-prefixing + $routing->disableApiVersionAutoPrefix(); + + // Custom API version resolver + $routing->resolveApiVersionUsing(function (string $file) { + return $version; + }); +}); +``` + +### withFactories + +Configures model factory resolution. + +```php +$builder->withFactories(function (Factory $factory) { + $factory->resolveFactoryNameUsing(function (string $modelName) { + return $factoryClassName; + }); +}); +``` + +### withRepositories + +Configures repository-model binding. + +```php +$builder->withRepositories(function (Repository $repository) { + $repository->resolveModelNameUsing(function (string $repositoryName) { + return $modelClassName; + }); +}); +``` + +### create + +Finalizes the configuration and returns the Apiato instance. + +```php +$apiato = $builder->create(); +``` + +## Complete Example + +```php +$basePath = dirname(__DIR__); + +$apiato = Apiato::configure(basePath: $basePath) + ->useSharedPath(join_paths($basePath, 'app/Ship')) + ->withConfigs( + shared_path('Configs'), + ...glob($basePath . '/app/Containers/*/*/Configs', GLOB_ONLYDIR) + ) + ->withEvents( + shared_path('Listeners'), + ...glob($basePath . '/app/Containers/*/*/Listeners', GLOB_ONLYDIR) + ) + ->withCommands( + shared_path('Commands'), + ...glob($basePath . '/app/Containers/*/*/UI/CLI/Commands', GLOB_ONLYDIR) + ) + ->withHelpers( + shared_path('Helpers'), + ...glob($basePath . '/app/Containers/*/*/Helpers', GLOB_ONLYDIR) + ) + ->withMigrations( + shared_path('Migrations'), + ...glob($basePath . '/app/Containers/*/*/Data/Migrations', GLOB_ONLYDIR) + ) + ->withRouting(function (Routing $routing) use ($basePath) { + $routing->prefixApiUrlsWith('api/') + ->loadApiRoutesFrom( + ...glob($basePath . '/app/Containers/*/*/UI/API/Routes', GLOB_ONLYDIR) + ) + ->loadWebRoutesFrom( + ...glob($basePath . '/app/Containers/*/*/UI/WEB/Routes', GLOB_ONLYDIR) + ); + }) + ->withFactories() + ->withRepositories() + ->create(); +``` From e639e3c1e21a448b17e505b55e530a2704ad90bb Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 11 Apr 2025 21:39:41 +0330 Subject: [PATCH 36/91] docs: routing configuration --- .../customized-laravel-components.md | 39 ------------------- docs/getting-started/installation.mdx | 10 +---- 2 files changed, 1 insertion(+), 48 deletions(-) delete mode 100644 docs/getting-started/customized-laravel-components.md diff --git a/docs/getting-started/customized-laravel-components.md b/docs/getting-started/customized-laravel-components.md deleted file mode 100644 index 8d181c290..000000000 --- a/docs/getting-started/customized-laravel-components.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -sidebar_position: 3 -title: Customized Laravel Components ---- - -Apiato provides a refined organization for Laravel default class locations. -Here, you can find the default Laravel components and their corresponding locations within Apiato. - -## Kernels - -- **Http Kernel** is moved from `app/Http` to `app/Ship/Kernels` and renamed to `HttpKernel`. - -- **Console Kernel** is moved from `app/Console` to `app/Ship/Kernels` and renamed to `ConsoleKernel`. - -## Middlewares - -- **Middlewares** are moved from `app/Http/Middleware` to `app/Ship/Middlewares`. - -## Handler - -- Exception **Handler** is moved from `app/Exceptions` to `app/Ship/Exceptions/Handlers` and renamed to `ExceptionsHandler`. - -## Providers - -- For information about the new locations of **Providers**, please refer to [this link](../components/optional-components/service-providers.md#laravel-service-providers). - -## Routes - -### Web and API - -Apiato introduces a new approach to route organization and does not use the default `routes/web.php` and `routes/api.php` files. Therefore, you won't find these files in Apiato. To learn more, please visit [this link](../components/main-components/routes.md). - -### Channels - -- The **channels.php** file has been relocated from `routes` to `app/Ship/Broadcasts`. - -### Console - -- The **console.php** file has been moved from `routes` to `app/Ship/Commands` and renamed to `closures.php`. diff --git a/docs/getting-started/installation.mdx b/docs/getting-started/installation.mdx index f50231154..2a9c89998 100644 --- a/docs/getting-started/installation.mdx +++ b/docs/getting-started/installation.mdx @@ -130,14 +130,7 @@ Attempting to do so could expose sensitive files present within your application By default, Apiato uses `api` as a subdomain for all endpoints and adds only the API version as a prefix, resulting in URLs like `api.apiato.test/v1`. -However, you can change this behavior. - -For example, if you'd like to achieve urls like `apiato.test/api/`, follow these steps: - -1. Open your `.env` file and modify the API domain by updating the `API_URL` value from `http://api.apiato.test` to `http://apiato.test` to remove the subdomain. -2. In the `app/Ship/Configs/apiato.php` configuration file: - - Set the `prefix` to `api/`. - - Set `enable_version_prefix` to `false`. +However, you can customize this behavior using the [Apiato configuration](../framework-features/advance-configuration.mdx) class. ## Generating API Documentation @@ -171,6 +164,5 @@ Now that you have created your Apiato project, you may be wondering what to lear If you're looking for a place to start, you should check out the following resources: * [Apiato Architecture](../architecture-concepts/readme.md) -* [Customized Laravel Components](customized-laravel-components.md) * [Framework Features](../framework-features/index.md) * [Container Installer](../pacakges/readme.md) From 51e1ec8b3c12c0b45a6840961844a98e9246b696 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Fri, 11 Apr 2025 21:39:49 +0330 Subject: [PATCH 37/91] Update release-notes.md --- docs/prologue/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/prologue/release-notes.md b/docs/prologue/release-notes.md index d04b53dd0..177ca85cc 100644 --- a/docs/prologue/release-notes.md +++ b/docs/prologue/release-notes.md @@ -35,7 +35,7 @@ See the **Full Changelog**: https://github.com/apiato/core/compare/v12.0.0...v13 Possible breaking changes are document in the [upgrade guide](https://apiato.io/docs/prologue/upgrade-guide). -See the Core changelog. +See the Core changelog. TODO: add link TODO add link to docs for every new thing that has a docs page. Also move the docs written under them to their respective doc page. From 75a8def8b184cda7e2f23a0d7011ea881575edca Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 10:12:55 +0330 Subject: [PATCH 38/91] Update routes.md --- docs/components/main-components/routes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/components/main-components/routes.md b/docs/components/main-components/routes.md index 3cc3ed42e..2aff15731 100644 --- a/docs/components/main-components/routes.md +++ b/docs/components/main-components/routes.md @@ -90,8 +90,8 @@ By following to this naming convention, the endpoint inside the specified route file will automatically become accessible by appending the version number to the URL. #### Some Examples: -| Route File Name | Route File Content | Generated Route | -|-----------------------------|---------------------------------------------------------------|--------------------------------------------| +| Route File Name | Route File Content | Generated Route | +|-----------------------------|---------------------------------------------------------------|-------------------------------------------| | `CreateOrder.v1.public.php` | `Route::post('orders', CreateOrderController::class);` | [POST] `http://api.apiato.test/v1/orders` | | `CreateOrder.v2.public.php` | `Route::post('orders', AnotherCreateOrderController::class);` | [POST] `http://api.apiato.test/v2/orders` | | `ListOrders.v1.private.php` | `Route::get('orders', ListOrdersController::class);` | [GET] `http://api.apiato.test/v1/orders` | From a4f48ea09faed081974ff8a5c30355f6cd04b4c0 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 10:22:48 +0330 Subject: [PATCH 39/91] Update advance-configuration.mdx --- docs/framework-features/advance-configuration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework-features/advance-configuration.mdx b/docs/framework-features/advance-configuration.mdx index 7b5e9ec8e..177de4985 100644 --- a/docs/framework-features/advance-configuration.mdx +++ b/docs/framework-features/advance-configuration.mdx @@ -185,7 +185,7 @@ $builder->withViews(function (View $view) { }); ``` -### withRouting +### withRouting {#routing} Configures API and web routing. From 80de19e737665b7cd12647cede0100b4cae578eb Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 10:22:50 +0330 Subject: [PATCH 40/91] Update routes.md --- docs/components/main-components/routes.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/components/main-components/routes.md b/docs/components/main-components/routes.md index 2aff15731..82c2151fb 100644 --- a/docs/components/main-components/routes.md +++ b/docs/components/main-components/routes.md @@ -75,11 +75,10 @@ Web Route files can have any appropriate name. ## API Versioning -Apiato provides a streamlined approach to implementing API versioning within your application. -This feature is enabled by default. +This feature is `enabled` by default. -If you wish to disable API versioning, -navigate to the `app/Ship/Configs/apiato.php` configuration file and set the `enable_version_prefix` to `false`. +Apiato provides a streamlined approach to implementing API versioning within your application. +You can manage multiple versions of your API by creating separate route files for each version. Once API versioning is enabled, you can create new API endpoints and define their version numbers directly in the route file names. @@ -97,6 +96,11 @@ the endpoint inside the specified route file will automatically become accessibl | `ListOrders.v1.private.php` | `Route::get('orders', ListOrdersController::class);` | [GET] `http://api.apiato.test/v1/orders` | +### Configuration + +You can configure the API versioning feature +using the [Apiato Configuration](../../framework-features/advance-configuration.mdx#routing) class. + ## Public & Private Routes Apiato supports two types of endpoints, `Public` and `Private`, out of the box. From ea78567f24395e75cc2410385caa2f7e5992fdaf Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:12:04 +0330 Subject: [PATCH 41/91] Update registration.mdx --- docs/security/registration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/security/registration.mdx b/docs/security/registration.mdx index 5be04bdfa..b855c3fc0 100644 --- a/docs/security/registration.mdx +++ b/docs/security/registration.mdx @@ -36,7 +36,7 @@ You should receive a response similar to the following: ```json { "data": { - "object": "User", + "type": "User", "id": "XbPW7awNkzl83LD6", "name": null, "email": "john@doe.com", From 0f85e99a6796f5c8f7c4f2b16b7f18ebc9afa573 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:12:06 +0330 Subject: [PATCH 42/91] Update localization.md --- docs/pacakges/localization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pacakges/localization.md b/docs/pacakges/localization.md index 21a764874..ffc7e6317 100644 --- a/docs/pacakges/localization.md +++ b/docs/pacakges/localization.md @@ -136,7 +136,7 @@ You will get a response like this: { "data": [ { - "object": "Localization", + "type": "Localization", "id": "de", // The language code (same as 'language.code') "language": { "code": "de", // The language code From ad8a0242a6c8e905a5de2460c010f46842b5eb41 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:12:08 +0330 Subject: [PATCH 43/91] Update transformers.md --- .../main-components/transformers.md | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/docs/components/main-components/transformers.md b/docs/components/main-components/transformers.md index 8edf51da0..72007cd4f 100644 --- a/docs/components/main-components/transformers.md +++ b/docs/components/main-components/transformers.md @@ -68,7 +68,7 @@ class UserTransformer extends ParentTransformer public function transform(User $user) { return [ - 'object' => $user->getResourceKey(), + 'type' => $user->getResourceKey(), 'id' => $user->getHashedKey(), 'name' => $user->name, // ... @@ -168,11 +168,11 @@ This will include the `roles` data in the response: { "data": [ { - "object": "User", + "type": "User", "id": "0one37vjk49rp5ym", "roles": [ { - "object": "Role", + "type": "Role", "id": "bmo7y84xpgeza06k" }, // ... @@ -238,18 +238,15 @@ ultimately enhancing the efficiency and usability of your API. ## Resource Key The resource key is a string that helps identify the object type in the response payload. -A resource key is automatically generated based on the model's class name, but you can customize it as needed. - -### Custom Resource Key - -You can set the resource key on the respective model -by setting the `$resourceKey` property or overriding the `getResourceKey` method: +A resource key is automatically generated based on the model's class name, +but you can customize it by overriding the `getResourceKey` method: ```php -class User extends ParentUserModel +use Apiato\Http\Resources\ResourceKeyAware; +use Illuminate\Database\Eloquent\Model; + +class User extends Model implements ResourceKeyAware { - protected $resourceKey = 'User'; - // or public function getResourceKey(): string { return 'User'; @@ -261,10 +258,6 @@ class User extends ParentUserModel Retrieve the resource key from the model by calling the `getResourceKey` method. -If no `resourceKey` is defined on the model, the `getResourceKey` method will return the short class name of the model. -For instance, if no resource key is defined for `App\Containers\AppSection\User\Models\User::class`, -the default resource key will be `User`. - #### Transformer Example ```php use App\Containers\AppSection\User\Models\User; @@ -275,7 +268,7 @@ class UserTransformer extends ParentTransformer public function transform(User $user) { return [ - 'object' => $user->getResourceKey(), // <-- here + 'type' => $user->getResourceKey(), // <-- here 'id' => $user->getHashedKey(), 'name' => $user->name, ]; @@ -287,7 +280,7 @@ class UserTransformer extends ParentTransformer ```json { "data": { - "object": "User", // <-- ResourceKey + "type": "User", // <-- ResourceKey "id": "XbPW7awNkzl83LD6", "name": "Mohammad Alavi" } @@ -347,7 +340,7 @@ A very basic response of the `DataArraySerializer` will look like this: ```json { "data": { - "object": "User", + "type": "User", "id": "XbPW7awNkzl83LD6", "name": "Mohammad Alavi" } From 2b00b9d5c0de607d0a37b096ae4552f65ae8fb28 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:12:11 +0330 Subject: [PATCH 44/91] Update controllers.md --- .../components/main-components/controllers.md | 112 ++---------------- 1 file changed, 13 insertions(+), 99 deletions(-) diff --git a/docs/components/main-components/controllers.md b/docs/components/main-components/controllers.md index 636dd5e55..f9ecab33e 100644 --- a/docs/components/main-components/controllers.md +++ b/docs/components/main-components/controllers.md @@ -37,7 +37,6 @@ Read [**Porto SAP Documentation (#Controllers)**](https://github.com/Mahmoudz/Po - MUST extend the `App\Ship\Parents\Controllers\WebController` class. - Controllers: - MUST only call the `run` or `transactionalRun` method of Actions. - - SHOULD pass the Request object to the Action instead of passing data from the request. ## Folder Structure @@ -96,113 +95,28 @@ class Controller extends WebController } ``` -:::tip -In case you want to handle the same Action differently based on the UI type (e.g., API, Web, CLI), you can set the -UI on Action with `setUI` method. +## Response -```php -$action = app(Action::class); -$action->setUI('web'); -``` +You can use the `Apiato\Support\Facades\Response` facade to create a new response object. -and get the UI in your Action with `getUI` method. +The `Response` class extends `Spatie\Fractal\Fractal` to enhance its functionality for API responses. +It adds methods for resource key management, meta information, and standardized HTTP responses. -```php -$action->getUI(); // will return 'web' -``` +:::info Further Reading +For more detailed information, +please refer to [Fractal](https://fractal.thephpleague.com/transformers/) and [Laravel Fractal Wrapper](https://github.com/spatie/laravel-fractal) documentations. ::: -## Response Helpers Methods - -### transform -This method is incredibly useful and will be used in most cases. +Here are some examples of how to use the `Response` facade: -- The first required parameter accepts data as an object or a Collection of objects. -- The second required parameter is the transformer class. -- The third optional parameter allows you to specify the [includes](transformers.md#including-relationships) that should be returned in the response. -- The fourth optional parameter lets you include metadata in the response. This metadata will be returned under the `meta` key in the `custom` key. - -```php -// With Includes -$this->transform($resource, ResourceTransformer::class, ['foo', 'bar']); -``` ```php -// With Meta -$this->transform($resource, ResourceTransformer::class, meta: ['foo' => 'bar', 'baz' => 1]); +Response::create($user)->transformWith(UserTransformer::class)->json(null, 200); -// Response -{ - "data": {}, - "meta": { - "include": [...], - "custom": { - "foo": "bar", - "baz": 1 - }, - "pagination": {} - } -} -``` -### withMeta -This method enables you to add metadata to the response, -and it MUST be used in conjunction with the `transform` method. -This is different from the `meta` parameter in the `transform` method. -This metadata will be returned directly under the `meta` key. - -You can use this method in conjunction with the `meta` parameter in the `transform` method. - -```php -$metaData = ['foo' => 999, 'bar']; +Response::create()->transformWith(UserTransformer::class)->ok($user); -$this->withMeta($metaData)->transform($sample, SampleTransformer::class, meta: ['foo' => 'bar', 'baz' => 1]); +Response::create($user, UserTransformer::class)->created(); -// Response -{ - "data": {}, - "meta": { - "foo": 999, - "0": "bar", - "include": [...], - "custom": { - "foo": "bar", - "baz": 1 - }, - "pagination": {} - } -} -``` +Response::create($user, UserTransformer::class)->parseIncludes(['permissions'])->toArray(); -### json -This method allows you to pass an array of data that will be represented as JSON. -```php -$this->json($data) -``` - -### created -This method allows you to return a response with a `201` status code. -```php -$this->created($data) -``` - -### deleted -This method allows you to return a response with a `202` status code. -```php -$this->deleted($deletedModel) - -// Response -{ - "message": "Model (1) Deleted Successfully." -} -``` - -### accepted -This method allows you to return a response with a `202` status code. -```php -$this->accepted($data) -``` - -### noContent -This method allows you to return a response with a `204` status code. -```php -$this->noContent() +Response::ok(); ``` From ac16c193a11c80f70c09b35f270c13b79df78db6 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:39:10 +0330 Subject: [PATCH 45/91] Update requests.md --- docs/components/main-components/requests.md | 122 ++++++-------------- 1 file changed, 35 insertions(+), 87 deletions(-) diff --git a/docs/components/main-components/requests.md b/docs/components/main-components/requests.md index fe7e42da5..494ef65ee 100644 --- a/docs/components/main-components/requests.md +++ b/docs/components/main-components/requests.md @@ -14,7 +14,7 @@ tags: being handled by your application as well as retrieve the input, cookies, and files that were submitted with the request. -To generate new requests you may use the `apiato:make:request` interactive command: +To generate new requests, you may use the `apiato:make:request` interactive command: ``` php artisan apiato:make:request @@ -124,114 +124,62 @@ the validation rules defined in `RegisterUserRequest` will be automatically appl before the `__invoke` method is executed. If the validation fails, an appropriate error response will be generated. -## Request Properties - Apiato introduces new properties to the Request Class that enhance its functionality. -### access - -The `$access` property allows you to define Roles and Permissions that can access a specific endpoint. -It's used by the `hasAccess` method to check if a user has the required Roles and Permissions to use that endpoint. - -```php -class DemoRequest extends ParentRequest -{ - protected array $access = [ - 'permissions' => 'delete-users', - 'roles' => 'manager' - ]; - - public function authorize(): bool - { - return $this->hasAccess(); - } -} -``` - -You can also use the `array notation` or `pipe` to define multiple Roles and Permissions. - -```php -class DemoRequest extends ParentRequest -{ - protected $access = [ - 'permissions' => ['delete-users', 'another-permissions'], - 'roles' => 'manager|admin', - ]; - - // ... -} -``` - -:::tip -If there's no need to set any roles or permissions, -you can simply set the `$permissions` or `$roles` property to an empty string `''`, an empty array `[]`, or `null`. -::: - -### decode +## Hash ID Decoding +When you enable the [Hash ID](../../security/hash-id.md) feature, your application can receive Hashed IDs from users. +These Hashed IDs need to be decoded before they can be used. The `$decode` property is used to handle the decoding of Hashed IDs from the incoming Request. - -When you enable the [Hash ID](../../security/hash-id.md) feature, your application can receive Hashed IDs from users. -These Hashed IDs need to be decoded before they can be effectively validated. -Apiato facilitates this process -by providing a property in its Requests class where you can specify which Hashed IDs need to be decoded. -This ensures that the validation procedure seamlessly integrates with Hashed IDs. +It is an array that contains the names of the fields in the Request that should be decoded. +When the Request is processed, Apiato will automatically decode these fields for you. ```php class DemoRequest extends ParentRequest { protected array $decode = [ - 'user_id', - 'item_id', + 'author_id', + 'ids.*', + 'authors.*.id', ]; - - // ... } -``` - -:::note -Keep in mind that validation rules relying on your ID, such as `exists:users,id`, -will not function correctly unless you decode the ID before passing it to the validation process. -::: -### urlParameters +// Example usage +// In all cases, the author_id fields will be automatically decoded +$request->input('author_id'); +$request->all('author_id'); +$request->author_id -The `$urlParameters` property simplifies the process of applying validation rules to URL parameters. +// Nested fields are also supported +$request->input('ids'); +$request->input('authors.*.id') +``` -By default, Laravel doesn't provide validation for URL parameters (`/stores/999/items`). -However, by using the `$urlParameters` property, you can enable validation for these parameters. -By specifying the desired URL parameters within this property, -you not only enable validation but also gain direct access to these parameters from the Request object. +You can also decode route parameters. +But the decoded values will not be available via `input` or `all`. +Instead, you can access them using the `route` method. ```php -// URL: /stores/{id}/items -// GET /stores/999/items +// endpoint +/users/{id} + +// request class DemoRequest extends ParentRequest { - protected array $urlParameters = [ + protected array $decode = [ 'id', ]; - - public function rules(): array - { - return [ - 'id' => 'integer', // url parameter - ]; - } } + +// usage +$request->route('id'); ``` ## Helper Methods -### hasAccess - -The `hasAccess` method assesses a user's access rights based on the Request's `$access` property. -If the user has any of the specified Roles or Permissions, the method will return `true` otherwise it will -return `false`. - -### sanitizeInput +### sanitize -The `sanitizeInput` method is employed to cleanse request data before its utilization within the application. +The `sanitize` method is employed to cleanse request data before its utilization within the application. Particularly useful for `PATCH` requests, where you may want @@ -250,7 +198,7 @@ To circumvent these `if` blocks, you might utilize `array_filter($data)` to remo However, be aware that in PHP, both `false` and an empty string `''` are considered as `empty`. For streamlining data sanitization when using `application/json` instead of `x-www-form-urlencoded`, -Apiato provides the convenient `sanitizeInput` method. +Apiato provides the convenient `sanitize` method. Consider the following request: @@ -270,11 +218,11 @@ Consider the following request: } ``` -The `sanitizeInput` method enables you to specify a list of fields, +The `sanitize` method enables you to specify a list of fields, employing dot notation, to be accessed and extracted from the request. ```php -$data = $request->sanitizeInput([ +$data = $request->sanitize([ 'data.description', 'data.is_private', 'data.address', @@ -307,7 +255,7 @@ In essence, the method filters the request, retaining only the defined values. You can also assign default values during the data sanitization process: ```php -$sanitizedData = $request->sanitizeInput([ +$sanitizedData = $request->sanitize([ 'name' => 'John', // If name is not provided, the default value will be set 'product.company.address' => 'Somewhere in the world', // dot notation is supported 'email', From 471604943a6b8c6c78a88b7550a82567f8b66e88 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:41:29 +0330 Subject: [PATCH 46/91] Update requests.md --- docs/components/main-components/requests.md | 103 +------------------- 1 file changed, 1 insertion(+), 102 deletions(-) diff --git a/docs/components/main-components/requests.md b/docs/components/main-components/requests.md index 494ef65ee..a38d90b2e 100644 --- a/docs/components/main-components/requests.md +++ b/docs/components/main-components/requests.md @@ -175,9 +175,7 @@ class DemoRequest extends ParentRequest $request->route('id'); ``` -## Helper Methods - -### sanitize +## Sanitizing Input The `sanitize` method is employed to cleanse request data before its utilization within the application. @@ -263,105 +261,6 @@ $sanitizedData = $request->sanitize([ ]); ``` -### getInputByKey - -The `getInputByKey` method retrieves data from the `request` by specifying the field name. -Similar to `$request->input('key.here')`, this method operates on the `decoded` values instead of the original data. - -Consider the following request: - -```json -{ - "id": "XbPW7awNkzl83LD6" -} -``` - -While `$request->input('id')` would return `"XbPW7awNkzl83LD6"`, -`$request->getInputByKey('id')` would return the decoded value -(e.g., `4`). - -Moreover, you can set a `default` value to be returned if the key is absent or unset, like this: - -```php -$request->getInputByKey('data.name', 'Undefined') -``` - -### mapInput - -In certain cases, you might need to remap input from the request to different fields. -While manual field mapping is possible, you can also leverage the `mapInput` method for this purpose. -This helper method allows you to "redefine" keys within the request, making subsequent processing easier. - -Consider the following request: - -```json -{ - "data": { - "name": "John Doe" - } -} -``` - -However, for processing purposes, you require the `username` field instead of `data.name`. - -You can use the helper as follows: - -```php -$request->mapInput([ - 'data.name' => 'username', -]); -``` - -The resulting structure would be: - -```json -{ - "username": "John Doe" -} -``` - -And you can access the value as follows: - -```php -$request->input('username'); -``` - -### injectData - -The `injectData` method allows you to inject data into the request. -This can be particularly helpful during testing -when you wish to provide data directly to the request instead of sending it through the request body. - -```php -$request = RegisterUserRequest::injectData($data); -``` - -### withUrlParameters - -The `withUrlParameters` method enables you to inject URL parameters into the request. -This is especially useful when you need to include properties in the request that are not part of the request body -but are required for the request to be processed. -This method is often used in conjunction with the `injectData` method. - -```php -$request = RegisterUserRequest::injectData($data) - ->withUrlParameters(['id' => 123]); -``` - -## Bypassing Authorization - -To grant certain Roles access to all endpoints within the system without the need -to define the role in each Request object, -you can follow this approach. -This is particularly beneficial when you want to provide unrestricted access to users with the `admin` role. -To implement this, define the relevant roles in `app/Ship/Configs/apiato.php` as shown below: - -```php -'requests' => [ - 'allow-roles-to-access-all-routes' => ['admin'], -], -``` - ## Force Accept Header Typically, when making calls to a JSON API, you should include the `accept: application/json` HTTP header. From 6803a01d5a18e5abc3277fda9d499a4ee9877e0b Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:53:29 +0330 Subject: [PATCH 47/91] Update models.md --- docs/components/main-components/models.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/components/main-components/models.md b/docs/components/main-components/models.md index 6721f0563..3ffe0930c 100644 --- a/docs/components/main-components/models.md +++ b/docs/components/main-components/models.md @@ -51,16 +51,17 @@ Models are defined exactly as you would define them in Laravel. ## Model Trait If your model does not extend the `App\Ship\Parents\Models\Model` or the `App\Ship\Parents\Models\UserModel` class, -it is essential to incorporate the `ModelTrait` trait into your model. +it is essential to implement the `ResourceKeyAware` interface +and use the `InteractsWithApiato` trait in your model. By doing so, your model will benefit from various functionalities provided by the trait, such as hash ids and other features necessary for proper integration with the framework. ```php -use Apiato\Core\Traits\ModelTrait; +use Apiato\Core\Models\InteractsWithApiato; +use Apiato\Http\Resources\ResourceKeyAware; -class Demo +class Demo implements ResourceKeyAware { - use ModelTrait; - ... + use InteractsWithApiato; } ``` From 91571476d71b291767c0ad5366a76702280d2477 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:53:30 +0330 Subject: [PATCH 48/91] Update routes.md --- docs/components/main-components/routes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/main-components/routes.md b/docs/components/main-components/routes.md index 82c2151fb..74232910d 100644 --- a/docs/components/main-components/routes.md +++ b/docs/components/main-components/routes.md @@ -98,7 +98,7 @@ the endpoint inside the specified route file will automatically become accessibl ### Configuration -You can configure the API versioning feature +You can customize the API versioning and routing behavior using the [Apiato Configuration](../../framework-features/advance-configuration.mdx#routing) class. ## Public & Private Routes From a9f4d12c77d82eb3c166d4d2bb6bdead58967a67 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:53:32 +0330 Subject: [PATCH 49/91] Update views.md --- docs/components/main-components/views.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/components/main-components/views.md b/docs/components/main-components/views.md index d3dc30986..fa8c92772 100644 --- a/docs/components/main-components/views.md +++ b/docs/components/main-components/views.md @@ -56,3 +56,7 @@ These views will be namespaced using the word `ship` instead of the Section and For example, you would access such a view like this: `view(ship::welcome-page)`. +### Configuration + +You can customize the view namespacing and loading paths +using the [Apiato Configuration](../../framework-features/advance-configuration.mdx#views) class. From be9e51da25e2eacd591681fdfe10b89c643b1c78 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 15:53:33 +0330 Subject: [PATCH 50/91] Update advance-configuration.mdx --- docs/framework-features/advance-configuration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework-features/advance-configuration.mdx b/docs/framework-features/advance-configuration.mdx index 177de4985..a1bc7cd17 100644 --- a/docs/framework-features/advance-configuration.mdx +++ b/docs/framework-features/advance-configuration.mdx @@ -166,7 +166,7 @@ $builder->withTranslations(function (Localization $localization) { }); ``` -### withViews +### withViews {#views} Configures view loading. From a3cf5496830a8f735e902281c670e981ede1e225 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 16:28:27 +0330 Subject: [PATCH 51/91] Update exceptions.md --- docs/components/main-components/exceptions.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/components/main-components/exceptions.md b/docs/components/main-components/exceptions.md index 64dec1580..c76191e75 100644 --- a/docs/components/main-components/exceptions.md +++ b/docs/components/main-components/exceptions.md @@ -9,7 +9,7 @@ tags: Exceptions are used to handle errors and exceptions in the application. -To generate new exceptions you may use the `apiato:make:exception` interactive command: +To generate new exceptions, you may use the `apiato:make:exception` interactive command: ``` php artisan apiato:make:exception @@ -25,7 +25,6 @@ Read [**Porto SAP Documentation (#Exceptions)**](https://github.com/Mahmoudz/Por - All general Exceptions MUST be placed in the `app/Ship/Exceptions` directory. - All Exceptions MUST extend the `App\Ship\Parents\Exceptions\Exception` class. - The parent extension SHOULD be aliased as `ParentException`. -- Every Exception MUST have at least two properties: `code` and `message`. ## Folder Structure From 0c22d47340b6ca16c5f033dea2b2e0278c04726a Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 16:28:28 +0330 Subject: [PATCH 52/91] Update models.md --- docs/components/main-components/models.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/main-components/models.md b/docs/components/main-components/models.md index 3ffe0930c..a0e4cd8e3 100644 --- a/docs/components/main-components/models.md +++ b/docs/components/main-components/models.md @@ -48,7 +48,7 @@ app Models are defined exactly as you would define them in Laravel. -## Model Trait +## Custom Models {#custom-models} If your model does not extend the `App\Ship\Parents\Models\Model` or the `App\Ship\Parents\Models\UserModel` class, it is essential to implement the `ResourceKeyAware` interface From f9e178fc0bdd691b683a0b1868fe86a3acc53561 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 16:28:29 +0330 Subject: [PATCH 53/91] Update views.md --- docs/components/main-components/views.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/main-components/views.md b/docs/components/main-components/views.md index fa8c92772..428ca4dde 100644 --- a/docs/components/main-components/views.md +++ b/docs/components/main-components/views.md @@ -38,7 +38,7 @@ app Views are defined exactly as you would define them in Laravel. -## Namespaces +## Namespaces {#namespaces} All views are namespaced using the camelCase of their Section name followed by `@` and then the camelCase of their Container name. From 19e2000f769a9d712e11e401046b770ed945eed6 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 16:28:31 +0330 Subject: [PATCH 54/91] Update commands.md --- docs/components/optional-components/commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/optional-components/commands.md b/docs/components/optional-components/commands.md index 58b22ec76..e3d538766 100644 --- a/docs/components/optional-components/commands.md +++ b/docs/components/optional-components/commands.md @@ -16,7 +16,7 @@ However, they come with additional rules and conventions specific to Apiato. - All container-specific Commands MUST be placed in the `app/Containers/{Section}/{Container}/UI/CLI/Commands` directory. - All general Commands MUST be placed in the `app/Ship/Commands` directory. - All Commands: - - MUST extend the `App\Ship\Parents\Commands\ConsoleCommand` class. + - MUST extend the `App\Ship\Parents\Commands\Command` class. - The parent extension SHOULD be aliased as `ConsoleCommand`. - SHOULD call an Action to perform its job, and SHOULD NOT contain any business logic. From 605b5d2b80405dd6c0951c6d64e87269fd105886 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 16:28:32 +0330 Subject: [PATCH 55/91] Update events.md --- docs/components/optional-components/events.md | 139 +----------------- 1 file changed, 3 insertions(+), 136 deletions(-) diff --git a/docs/components/optional-components/events.md b/docs/components/optional-components/events.md index 24b45f29c..f66a0b5ae 100644 --- a/docs/components/optional-components/events.md +++ b/docs/components/optional-components/events.md @@ -35,7 +35,7 @@ php artisan apiato:make:listener - Events MUST be placed in the `app/Ship/Events` directory. - Listeners MUST be placed in the `app/Ship/Listeners` directory. - Listeners CAN listen to all cross-container & cross-section events. -- Events & Listeners MUST be registered in the location where you intend to handle that event. +- Events & Listeners MUST be registered in the location where you intend to handle that event. (unless using [event discovery](https://laravel.com/docs/events#event-discovery)) - If you intend to handle an event in: - A container, the Listener MUST be registered in `App\Containers\{Section}\{Container}\Providers\EventServiceProvider` class. - The Ship, the Listener MUST be registered in `App\Ship\Providers\EventServiceProvider` class. @@ -78,146 +78,13 @@ app Events and Listeners are defined exactly as you would define them in Laravel. -## Registering Events & Listeners - -The registration of events and listeners depends on where you intend to respond to events. -Listeners can be registered in both Containers and Ship Events Service Providers. - -### Manually Registering Events - -#### In The Container - -Registering events and listeners in the container can be done -by adding them to the `listen` array in the `App\Containers\{Section}\{Container}\Providers\EventServiceProvider` class. - -```php -use App\Ship\Parents\Providers\EventServiceProvider as ParentEventServiceProvider; - -class EventServiceProvider extends ParentEventServiceProvider -{ - protected $listen = [ - OrderShipped::class => [ - SendShipmentNotification::class, - ], - ]; -} -``` - -To generate an event service provider -you may use the `apiato:make:provider` interactive command: - -``` -php artisan apiato:make:provider -``` - -Remember to also register the `EventServiceProvider` in the container's `MainServiceProvider`: - -```php -use App\Ship\Parents\Providers\MainServiceProvider as ParentMainServiceProvider; - -class MainServiceProvider extends ParentMainServiceProvider -{ - protected array $serviceProviders = [ - EventServiceProvider::class, - ]; -} -``` - -#### In The Ship - -Registering events and listeners in the Ship can be done -by adding them to the `listen` array in the `App\Ship\Providers\EventServiceProvider` class. - ### Event Discovery > Available since Core v8.15.0 Instead of registering events and listeners manually in the `$listen` array of the `EventServiceProvider`s, -you can enable Laravel's [automatic event discovery](https://laravel.com/docs/events#event-discovery). +you can enable Laravel's [event discovery](https://laravel.com/docs/events#event-discovery). When event discovery is enabled, Apiato will automatically find and register your events and listeners by scanning your application's `app/Containers/{Section}/{Container}/Listeners` directory. -In addition, any explicitly defined events listed in the `EventServiceProvider`s will still be registered. - -Event discovery is enabled by default, -but you can disable it by overriding the `shouldDiscoverEvents` method of your Container's `EventServiceProvider`: - -```php -/** - * Determine if events and listeners should be automatically discovered. - */ -public function shouldDiscoverEvents(): bool -{ - return false; -} -``` - -## Events & Listeners Registration Flow - -If you are manually registering events and listeners and wish to understand the registration process, -here is a breakdown of the registration flow. - -Consider the following folder structure: - -```php -app -├── Containers -│ └── Section -│ └── Container -│ ├── Events -│ │ ├── DemoEvent.php ────►─┐ -│ │ └── ... │ -│ ├── Listeners │ -│ │ ├── DemoListener.php ─►─┤ -│ │ └── ... │ -│ └── Providers ▼ -│ ├── EventServiceProvider.php ─────────►─────────┐ -│ ├── MainServiceProvider.php ◄───registered─in─◄─┘ -│ └── ... -└── Ship - ├── Events - │ ├── ShipDemoEvent.php ──►─┐ - │ └── ... │ - ├── Listeners │ - │ ├── ShipDemoListener.php ►┤ - │ └── ... │ - └── Providers ▼ - ├── EventServiceProvider.php ─────────►─────────┐ - ├── ShipProvider.php ◄───registered─in─◄─┘ - └── ... -``` - -The following diagram illustrates the registration flow of events and listeners in the above folder structure: - -```mermaid -graph LR - subgraph Container - MainServiceProvider - EventServiceProvider - DemoEvent - DemoListener - end - - MainServiceProvider -->|loads| EventServiceProvider - EventServiceProvider -->|registered in| MainServiceProvider - DemoEvent -->|registered in| EventServiceProvider - DemoListener -->|registered in| EventServiceProvider - - subgraph Ship - ShipProvider - ShipEventServiceProvider[EventServiceProvider] - ShipDemoEvent - ShipDemoListener - end - - subgraph Application - SPLoader[[Service Provider Loader]]-- loads-->MainServiceProvider - SPLoader-- loads-->ShipProvider - end - - ShipProvider -->|loads| ShipEventServiceProvider - ShipEventServiceProvider -->|registered in| ShipProvider - ShipDemoEvent -->|registered in| ShipEventServiceProvider - ShipDemoListener -->|registered in| ShipEventServiceProvider -``` - +In addition, any explicitly defined events listed your `EventServiceProvider`s will still be registered. From 02562cd64f5e5c0bf68b961bd8560c6a8cb424e2 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 16:28:33 +0330 Subject: [PATCH 56/91] Update factories.md --- .../optional-components/factories.md | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/docs/components/optional-components/factories.md b/docs/components/optional-components/factories.md index 504ed451f..eead72f85 100644 --- a/docs/components/optional-components/factories.md +++ b/docs/components/optional-components/factories.md @@ -44,7 +44,7 @@ app Factories are defined exactly as you would define them in Laravel. -## Model & Factory Discovery Conventions +## Model & Factory Discovery When you use a factory, Laravel relies on conventions to determine the appropriate factory for the model. By default, @@ -54,20 +54,15 @@ that has a class name matching the model name and is suffixed with `Factory`. However, in the case of Apiato, factories are distributed across the Containers, and they are not all within the same namespace. As a result, Apiato follows a different convention to locate the appropriate factory for a model. -This is achieved by utilizing the `Apiato\Core\Traits\FactoryLocatorTrait` trait, -which is incorporated into the `Apiato\Core\Traits\ModelTrait` trait used by all Apiato models. -Therefore, -if your model does not extend the `App\Ship\Parents\Models\Model` or the `App\Ship\Parents\Models\UserModel` class, -it is essential to include the `ModelTrait` trait in your model. -By doing so, Apiato will be able to locate the appropriate factory and use it for the model when needed. +Apiato will look for factories in `app/Containers/{Section}/{Container}/Data/Factories` directories +that has a class name matching the model name and is suffixed with `Factory`. -```php -use Apiato\Core\Traits\ModelTrait; +If these conventions do not apply to your particular application or factory, you may configure the factory discovery +via the [Apiato Configuration](../../framework-features/advance-configuration.mdx#factories) class. -class Demo -{ - use ModelTrait; - ... -} -``` +:::note Custom Models +Apiato factory discovery feature depends on some features available in Apiato models. +If your model does not extend the `App\Ship\Parents\Models\Model` or the `App\Ship\Parents\Models\UserModel` class, +refer to the [Custom Models](../../components/main-components/models/#custom-models) section for more information. +::: From 62d2cad1fa383e10de56fba57097c327b5aef18c Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 16:28:34 +0330 Subject: [PATCH 57/91] Update mail.md --- docs/components/optional-components/mail.md | 39 ++------------------- 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/docs/components/optional-components/mail.md b/docs/components/optional-components/mail.md index 2e942bf81..6ca8c0404 100644 --- a/docs/components/optional-components/mail.md +++ b/docs/components/optional-components/mail.md @@ -50,43 +50,8 @@ app ## Code Example -```php -use ... -use App\Ship\Parents\Mails\Mail as ParentAction; - -class WelcomeMail extends ParentMail ShouldQueue -{ - use Queueable; - - public function __construct(protected User $recipient) - { - } - - public function build() - { - return $this->view('appSection@user::welcome') - ->to($this->user->email, $this->user->name) - ->with([ - 'name' => $this->user->name, - ]); - } -} -``` +Mails are defined exactly as you would define them in Laravel. ## Template Namespaces -All templates are namespaced -using the camelCase of their Section name followed by `@` and then the camelCase of their Container name. - -For example, -if you have a template named `welcome` in the `app/Containers/MySection/MyContainer/Mails/Templates` directory, -you can access it like this: `view(mySection@myContainer::welcome)`. - -Attempting to access the template without the namespace, -such as `view('welcome')`, will result in the template not being found. - -An exception to this namespace convention is for template files -located in the `app/Ship/Mails/Templates` directory. -These templates will be namespaced using the word `ship` instead of the Section and Container names. - -For example, you would access such a template like this: `view(ship::welcome)`. +Refer to [Views](../main-components/views/#namespaces) documentation for more information on template namespaces. From a80c3be251ea879b0064090c065d284d60fb8caf Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 16:28:35 +0330 Subject: [PATCH 58/91] Update advance-configuration.mdx --- docs/framework-features/advance-configuration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework-features/advance-configuration.mdx b/docs/framework-features/advance-configuration.mdx index a1bc7cd17..dba496c37 100644 --- a/docs/framework-features/advance-configuration.mdx +++ b/docs/framework-features/advance-configuration.mdx @@ -205,7 +205,7 @@ $builder->withRouting(function (Routing $routing) { }); ``` -### withFactories +### withFactories {#factories} Configures model factory resolution. From 5d61282946c4d5eda7fd4280304d2192f89bfa94 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:25:52 +0330 Subject: [PATCH 59/91] Update advance-configuration.mdx --- docs/framework-features/advance-configuration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework-features/advance-configuration.mdx b/docs/framework-features/advance-configuration.mdx index dba496c37..e02ab2a42 100644 --- a/docs/framework-features/advance-configuration.mdx +++ b/docs/framework-features/advance-configuration.mdx @@ -132,7 +132,7 @@ $builder->withProviders(function (Provider $provider) { }); ``` -### withSeeders +### withSeeders {#seeders} Configures database seeder loading. From 50f9e1319d735bc3aa45abefc2296658e4564a45 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:26:49 +0330 Subject: [PATCH 60/91] Update routes.md --- docs/components/main-components/routes.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/components/main-components/routes.md b/docs/components/main-components/routes.md index 74232910d..a09f48506 100644 --- a/docs/components/main-components/routes.md +++ b/docs/components/main-components/routes.md @@ -80,6 +80,9 @@ This feature is `enabled` by default. Apiato provides a streamlined approach to implementing API versioning within your application. You can manage multiple versions of your API by creating separate route files for each version. +You may customize the API versioning behavior +using the [Apiato Configuration](../../framework-features/advance-configuration.mdx#routing) class. + Once API versioning is enabled, you can create new API endpoints and define their version numbers directly in the route file names. The route file names must adhere to the following naming convention: @@ -95,12 +98,6 @@ the endpoint inside the specified route file will automatically become accessibl | `CreateOrder.v2.public.php` | `Route::post('orders', AnotherCreateOrderController::class);` | [POST] `http://api.apiato.test/v2/orders` | | `ListOrders.v1.private.php` | `Route::get('orders', ListOrdersController::class);` | [GET] `http://api.apiato.test/v1/orders` | - -### Configuration - -You can customize the API versioning and routing behavior -using the [Apiato Configuration](../../framework-features/advance-configuration.mdx#routing) class. - ## Public & Private Routes Apiato supports two types of endpoints, `Public` and `Private`, out of the box. From 5fbb6efcb60b84efb2560f4fceeeac18742e5ea0 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:26:51 +0330 Subject: [PATCH 61/91] Update views.md --- docs/components/main-components/views.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/main-components/views.md b/docs/components/main-components/views.md index 428ca4dde..44e946401 100644 --- a/docs/components/main-components/views.md +++ b/docs/components/main-components/views.md @@ -58,5 +58,5 @@ For example, you would access such a view like this: `view(ship::welcome-page)`. ### Configuration -You can customize the view namespacing and loading paths +You may customize the view namespacing and loading paths using the [Apiato Configuration](../../framework-features/advance-configuration.mdx#views) class. From b9917233f8a049ebd5ea4b99c05e7fd4b4fd85cf Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:26:52 +0330 Subject: [PATCH 62/91] Update configs.md --- docs/components/optional-components/configs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/components/optional-components/configs.md b/docs/components/optional-components/configs.md index a6b152fa7..d8edbc617 100644 --- a/docs/components/optional-components/configs.md +++ b/docs/components/optional-components/configs.md @@ -19,10 +19,10 @@ php artisan apiato:make:configuration ## Rules - Containers MAY have as many config files as they need. -- All container-specific and third-party package config files MUST be placed in the `app/Containers/{Section}/{Container}/Configs` directory. +- All container-specific config files MUST be placed in the `app/Containers/{Section}/{Container}/Configs` directory. - All general config files MUST be placed in the `app/Ship/Configs` directory. - All Laravel config files MUST be kept in the root `config` folder. -- You MUST NOT add any non-Laravel or third-party config files to the root `config` folder. +- You MUST NOT add any config files to the root `config` folder. ## Folder Structure From bb54b9c00bf36c2d4befd63cd4dec20fbca4f3e5 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:26:53 +0330 Subject: [PATCH 63/91] Update factories.md --- docs/components/optional-components/factories.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/optional-components/factories.md b/docs/components/optional-components/factories.md index eead72f85..c43109467 100644 --- a/docs/components/optional-components/factories.md +++ b/docs/components/optional-components/factories.md @@ -58,7 +58,7 @@ As a result, Apiato follows a different convention to locate the appropriate fac Apiato will look for factories in `app/Containers/{Section}/{Container}/Data/Factories` directories that has a class name matching the model name and is suffixed with `Factory`. -If these conventions do not apply to your particular application or factory, you may configure the factory discovery +If these conventions do not apply to your particular application, you may configure the factory discovery via the [Apiato Configuration](../../framework-features/advance-configuration.mdx#factories) class. :::note Custom Models From 82a5f80aa97cef02eec27ea083fe0c54b4a48787 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:26:55 +0330 Subject: [PATCH 64/91] Update middlewares.md --- .../optional-components/middlewares.md | 137 +----------------- 1 file changed, 4 insertions(+), 133 deletions(-) diff --git a/docs/components/optional-components/middlewares.md b/docs/components/optional-components/middlewares.md index 313af18ff..60ef1ca58 100644 --- a/docs/components/optional-components/middlewares.md +++ b/docs/components/optional-components/middlewares.md @@ -14,7 +14,7 @@ Apiato middlewares are just [Laravel Middlewares](https://laravel.com/docs/middl and they function in the exact same way as Laravel middlewares. However, they come with additional rules and conventions specific to Apiato. -To generate new middlewares +To generate new middleware, you may use the `apiato:make:middleware` interactive command: ``` @@ -25,35 +25,22 @@ php artisan apiato:make:middleware - All container-specific Middlewares: - MUST be placed in the `app/Containers/{Section}/{Container}/Middlewares` directory. - - MUST be registered in their respective container's `App\Containers\{Section}\{Container}\Providers\MiddlewareServiceProvider` class. - All general Middlewares: - MUST be placed in the `app/Ship/Middlewares` directory. - - MUST be registered in the `App\Ship\Kernels\HttpKernel` class. -- All non-Laravel or third-party package Middlewares MUST extend the `App\Ship\Parents\Middlewares\Middleware` class. +- All Middlewares MUST extend the `App\Ship\Parents\Middlewares\Middleware` class. - The parent extension SHOULD be aliased as `ParentMiddleware`. ## Folder Structure -The highlighted sections showcase middleware registration points: - ```php app ├── Containers │ └── Section │ └── Container -│ ├── Middlewares -│ │ ├── DemoMiddleware.php -│ │ └── ... -│ └── Providers - // highlight-start -│ ├── MiddlewareServiceProvider.php - // highlight-end +│ └── Middlewares +│ ├── DemoMiddleware.php │ └── ... └── Ship - ├── Kernels - // highlight-start - │ └── HttpKernel.php - // highlight-end └── Middlewares ├── AnotherMiddleware.php └── ... @@ -62,119 +49,3 @@ app ## Code Example Middlewares are defined exactly as you would define them in Laravel. - -## Registering Middleware - -The registration process for a middleware varies depending on its intended scope within the application. -Different places are designated for different levels of middleware usage. - -In essence, the decision of where to register a middleware boils down to two key factors: -the scope of middleware usage and the logical location for its registration. - -### Container Middlewares - -If a middleware usage is specific to a container, -it must be registered in the `App\Containers\{Section}\{Container}\Providers\MiddlewareServiceProvider` class. - -```php -use ... -use App\Ship\Parents\Providers\MiddlewareServiceProvider as ParentMiddlewareServiceProvider; - -class MiddlewareServiceProvider extends ParentMiddlewareServiceProvider -{ - protected array $middlewares = []; - protected array $middlewareGroups = []; - protected array $middlewarePriority = []; - protected array $middlewareAliases = []; -} -``` - -To generate a middleware service provider -you may use the `apiato:make:provider` interactive command: - -``` -php artisan apiato:make:provider -``` - -Remember to also register the `MiddlewareServiceProvider` in the container's `MainServiceProvider`: - -```php -use ... -use App\Ship\Parents\Providers\MainServiceProvider as ParentMainServiceProvider; - -class MainServiceProvider extends ParentMainServiceProvider -{ - protected array $serviceProviders = [ - MiddlewareServiceProvider::class, - ]; -} -``` - -### General Middlewares - -General middlewares must be registered in the `App\Ship\Kernels\HttpKernel` class. - -### Third Party Middlewares - -When dealing with third-party packages that require middleware registration in the `App\Ship\Kernels\HttpKernel` class, -you should follow these guidelines: - -- **Specific Container Usage**: If the package is used within a particular container, register its middleware in that container `App\Containers\{Section}\{Container}\Providers\MiddlewareServiceProvider` class. - -- **Framework-wide Usage**: If the package is generic and used throughout the entire application, you can register its middleware in the `App\Ship\Kernels\HttpKernel` class. - -## Middleware Registration Flow - -If you want to understand the middleware registration process, -here is a breakdown of the registration flow. - -Consider the following folder structure: - -```php -app -├── Containers -│ └── Section -│ └── Container -│ ├── Middlewares -│ │ ├── DemoMiddleware.php ─►─┐ -│ │ └── ... │ -│ └── Providers ▼ -│ ├── MiddlewareServiceProvider.php ─────►─────┐ -│ ├── MainServiceProvider.php ◄─registered─in─◄┘ -│ └── ... -└── Ship - ├── Kernels - │ ├── HttpKernel.php ◄─registered─in─◄┐ - │ └── ... │ - └── Middlewares │ - ├── AnotherMiddleware.php ─────►────┘ - └── ... -``` - -The following diagram illustrates the registration flow of middlewares in the above folder structure: - -```mermaid -graph LR - subgraph Container - MainServiceProvider - MiddlewareServiceProvider - DemoMiddleware - end - - MainServiceProvider -->|loads| MiddlewareServiceProvider - MiddlewareServiceProvider -->|registered in| MainServiceProvider - DemoMiddleware -->|registered in| MiddlewareServiceProvider - - subgraph Ship - HttpKernel - ShipDemoMiddleware - end - - subgraph Application - SPLoader[[Service Provider Loader]]-- loads-->MainServiceProvider - SPLoader-- loads-->HttpKernel - end - - HttpKernel -->|loads| ShipDemoMiddleware - ShipDemoMiddleware -->|registered in| HttpKernel -``` From 5c90ceaeaf367c7bfcddcb2843ad3471a92740dd Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:26:56 +0330 Subject: [PATCH 65/91] Update notifications.md --- .../optional-components/notifications.md | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/docs/components/optional-components/notifications.md b/docs/components/optional-components/notifications.md index 830debe7b..0543a329c 100644 --- a/docs/components/optional-components/notifications.md +++ b/docs/components/optional-components/notifications.md @@ -44,19 +44,6 @@ app Notifications are defined exactly as you would define them in Laravel. -## Default Notification Channels - -In Apiato, you have the ability to set default notification channels that will be used for all your notifications. -This configuration can be found in the `notification.php` file located in the `app/Ship/Configs` directory. - -By specifying default notification channels in this configuration file, -you establish a consistent choice of channels for your notifications throughout the application. - -However, should you need to customize the notification channels for specific notification classes, -or if you prefer to define channels on a per-notification basis, -you can do so by overriding the `via` method within the respective notification class. -This allows you to tailor the channel selection based on individual notification requirements or use cases. - ## Database Notifications Migration When setting up database notifications, @@ -68,4 +55,4 @@ However, Apiato already provides a migration file named `xxxx_xx_xx_xxxxxx_create_notifications_table.php` in the `app/Ship/Migrations` directory. As a result, you don't need to manually generate the migration file. You can directly run the migrations using the `php artisan migrate` command, -and the notifications table will be created for you. +and the `notifications` table will be created for you. From 2ec7e80da737f863f6de2f4c37b2c5b80378ee4b Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:26:57 +0330 Subject: [PATCH 66/91] Update policies.md --- .../optional-components/policies.md | 114 +----------------- 1 file changed, 3 insertions(+), 111 deletions(-) diff --git a/docs/components/optional-components/policies.md b/docs/components/optional-components/policies.md index d0a078448..a96ea65f9 100644 --- a/docs/components/optional-components/policies.md +++ b/docs/components/optional-components/policies.md @@ -12,7 +12,7 @@ Apiato policies are just [Laravel Policies](https://laravel.com/docs/authorizati and they function in the exact same way as Laravel policies. However, they come with additional rules and conventions specific to Apiato. -To generate new policies you may use the `apiato:make:policy` interactive command: +To generate new policies, you may use the `apiato:make:policy` interactive command: ``` php artisan apiato:make:policy @@ -29,20 +29,13 @@ php artisan apiato:make:policy ## Folder Structure -The highlighted section showcases the policy registration point: - ```php app └── Containers └── Section └── Container - ├── Policies - │ ├── UserPolicy.php - │ └── ... - └── Providers - // highlight-start - ├── AuthServiceProvider.php - // highlight-end + └── Policies + ├── UserPolicy.php └── ... ``` @@ -50,48 +43,6 @@ app Policies are defined exactly as you would define them in Laravel. -## Registering Policies - -Once the policy class has been created, it needs to be registered. -Registering policies is -how we can inform Apiato which policy to use when authorizing actions against a given model type. - -Registering policies can be done -by adding them to the `policies` array in the `App\Containers\{Section}\{Container}\Providers\AuthServiceProvider` class. - -```php -use ... -use App\Ship\Parents\Providers\AuthServiceProvider as ParentAuthProvider; - -class AuthServiceProvider extends ParentAuthProvider -{ - protected $policies = [ - Post::class => PostPolicy::class, - ]; -} -``` - -To generate an event service provider -you may use the `apiato:make:provider` interactive command: - -``` -php artisan apiato:make:provider -``` - -Remember to also register the `AuthServiceProvider` in the container's `MainServiceProvider`: - -```php -use ... -use App\Ship\Parents\Providers\MainServiceProvider as ParentMainServiceProvider; - -class MainServiceProvider extends ParentMainServiceProvider -{ - protected array $serviceProviders = [ - AuthServiceProvider::class, - ]; -} -``` - ### Policy Auto-Discovery Apiato offers a policy auto-discovery feature that eliminates the need for manual registration of model policies. @@ -103,62 +54,3 @@ To summarize: - Policies must be stored within the `app/Containers/{section}/{container}/Policies` directory. - The policy name should mirror the corresponding model's name while appending a `Policy` suffix. For instance, a `User` model corresponds to a `UserPolicy` policy class. - -## Policy Registration Flow - -In case you are going to register your policies manually, and don't want to use the auto-discovery feature, -you may want to understand the policy registration process. -Here is a breakdown of the registration flow. - -Consider the following folder structure: - -```php -app -└── Containers - └── Section - └── Container - ├── Policies - │ ├── DemoPolicy.php ─►─┐ - │ └── ... │ - └── Providers ▼ - ├── AuthServiceProvider.php ─────────►───────┐ - ├── MainServiceProvider.php ◄─registered─in─◄┘ - └── ... - -``` - -The following diagram illustrates the registration flow of policies in the above folder structure: - -```mermaid -graph LR - subgraph Container - MainServiceProvider - AuthServiceProvider - DemoPolicy - end - - MainServiceProvider -->|loads| AuthServiceProvider - AuthServiceProvider -->|registered in| MainServiceProvider - DemoPolicy -->|registered in| AuthServiceProvider - - subgraph Application - SPLoader[[Service Provider Loader]]-- loads-->MainServiceProvider - end -``` - -## Helper Methods -> Available since Core v8.7.0 - -All models are equipped with the `owns` and `isOwnedBy` methods, -made available through the `Apiato\Core\Traits\CanOwnTrait` trait. -These methods offer a convenient way to determine if a model is owned by another model or if a model owns another model. - -These methods support all types of relationships, as demonstrated below: - -```php -// Check if a user owns a post -$user->owns($post); - -// Check if a post is owned by a user -$post->isOwnedBy($user); -``` From 683398568da195057a184ea3bfbefe143e3329d5 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:26:59 +0330 Subject: [PATCH 67/91] Update seeders.md --- .../components/optional-components/seeders.md | 29 ++++--------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/docs/components/optional-components/seeders.md b/docs/components/optional-components/seeders.md index 94117a22d..55975f149 100644 --- a/docs/components/optional-components/seeders.md +++ b/docs/components/optional-components/seeders.md @@ -11,7 +11,7 @@ Apiato seeders are just [Laravel Seeders](https://laravel.com/docs/seeding), and they function in the exact same way as Laravel seeders. However, they come with additional rules and conventions specific to Apiato. -To generate new seeders you may use the `apiato:make:seeder` interactive command: +To generate new seeders, you may use the `apiato:make:seeder` interactive command: ``` php artisan apiato:make:seeder @@ -19,8 +19,8 @@ php artisan apiato:make:seeder ## Rules -- All container-specific and third-party package Seeders MUST be placed in the `app/Containers/{Section}/{Container}/Data/Seeders` directory. -- All non-Laravel or third-party package Seeders MUST extend the `App\Ship\Parents\Seeders\Seeder` class. +- All container-specific Seeders MUST be placed in the `app/Containers/{Section}/{Container}/Data/Seeders` directory. +- All Seeders MUST extend the `App\Ship\Parents\Seeders\Seeder` class. ## Folder Structure @@ -40,20 +40,6 @@ app Seeders are defined exactly as you would define them in Laravel. -## Naming Conventions - -To avoid conflicts between containers' seeder classes, it is crucial to follow specific naming conventions. -If two seeder classes have the same name but exist in different containers, Apiato will not be able to load one of them, -leading to unintended consequences and potential data inconsistencies. - -To ensure smooth and error-free seeding, adhere to the following naming conventions: - -#### Prepend Container Name - -Always prepend the seeders of each container with the container name. -For example, if you have containers named `User` and `Item`, -the seeder classes should be named `UserPermissionsSeeder` and `ItemPermissionsSeeder`, respectively. - #### Prepend Section Name In situations where two seeder classes have the same name but exist in different containers, @@ -65,10 +51,5 @@ Apiato enables the loading of seeders in a specific order. To organize the seeding of classes, simply add `_1`, `_2`, and so on, to your class names. For instance, `UserPermissionsSeeder_1` will be loaded before `UserPermissionsSeeder_2`. -1. By default, Laravel invokes the `run` method of the `database/seeders/DatabaseSeeder.php` class. -2. The `run` method within `DatabaseSeeder` calls the `runLoadingSeeders` method of the `Apiato\Core\Loaders\SeederLoaderTrait.php` trait. -3. The `runLoadingSeeders` method, in turn, loads all the seeders within each container following this sequence: - 1. It first loads all the seeders whose names contain `_1`. - 2. Subsequently, it proceeds to load seeders with names containing `_2`. - 3. This pattern continues until it loads all seeders with names containing `_n`. - 4. Lastly, any remaining seeders without the `_n` suffix are loaded. +You may customize the sorting resolution logic +using the [Apiato Configuration](../../framework-features/advance-configuration.mdx#seeders) class. From 10cb36002ea6ff26f79629aa65583897a2e622fe Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:27:07 +0330 Subject: [PATCH 68/91] Update service-providers.md --- .../optional-components/service-providers.md | 52 ++++++++----------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/docs/components/optional-components/service-providers.md b/docs/components/optional-components/service-providers.md index 2c28c45f1..944423643 100644 --- a/docs/components/optional-components/service-providers.md +++ b/docs/components/optional-components/service-providers.md @@ -30,19 +30,13 @@ ensuring the seamless functioning of your application's components. - You MUST NOT register any Service Provider in the `config/app.php` (except Laravel default service providers). - Each Container: - MAY have one or many Service Providers. - - MUST have a `Main Service Provider` -> `App\Containers\{Section}\{Container}\Providers\MainServiceProvider` class. - - MUST be named `MainServiceProvider`. - - MUST extend the `App\Ship\Parents\Providers\MainServiceProvider` class. - - The parent extension SHOULD be aliased as `ParentMainServiceProvider`. - All container-specific Service Providers: - MUST be placed in the `app/Containers/{Section}/{Container}/Providers` directory. - - MUST be registered in their respective container's `App\Containers\{Section}\{Container}\Providers\MainServiceProvider` class. - All general Service Providers: - MUST be placed in the `app/Ship/Providers` directory. - - MUST be registered in the `App\Ship\Prviders\ShipProvider` class. -- All non-Laravel or third-party package Service Providers: - - MUST extend the `App\Ship\Parents\Providers\MainServiceProvider` class. - - The parent extension SHOULD be aliased as `ParentMainServiceProvider`. +- All Service Providers: + - MUST extend the `App\Ship\Parents\Providers\ServiceProvider` class. + - The parent extension SHOULD be aliased as `ParentServiceProvider`. - When using Laravel [default service providers](#laravel-service-providers): - `AuthServiceProvider` MUST extend `App\Ship\Parents\Providers\AuthServiceProvider`. - `BroadcastServiceProvider` MUST extend `App\Ship\Parents\Providers\BroadcastServiceProvider`. @@ -55,8 +49,8 @@ ensuring the seamless functioning of your application's components. The highlighted sections showcase service provider registration points: -- `MainServiceProvider.php` acts as the central registration point for custom service providers specific to a container. -- `ShipProvider.php` acts as the central registration point for the Ship (general) service providers. +- `ServiceProvider.php` acts as the central registration point for custom service providers specific to a container. +- `ShipServiceProvider.php` acts as the central registration point for the Ship (general) service providers. ```php app @@ -68,7 +62,7 @@ app │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php // highlight-start -│ ├── MainServiceProvider.php +│ ├── ServiceProvider.php // highlight-end │ ├── MiddlewareServiceProvider.php │ ├── RouteServiceProvider.php @@ -78,7 +72,7 @@ app └── Providers ├── RouteServiceProvider.php // highlight-start - ├── ShipProvider.php + ├── ShipServiceProvider.php // highlight-end └── ... ``` @@ -88,9 +82,9 @@ app #### Main Service Provider: ```php -use App\Ship\Parents\Providers\MainServiceProvider as ParentMainServiceProvider; +use App\Ship\Parents\Providers\ServiceProvider as ParentServiceProvider; -class MainServiceProvider extends ParentMainServiceProvider +class ServiceProvider extends ParentServiceProvider { public array $serviceProviders = [ CustomServiceProvider::class, @@ -122,7 +116,7 @@ Main Service Providers will register all service providers listed in their `$ser #### Additional Service Providers To register a provider, -add the provider's class name to the `serviceProviders` array in the `App\Containers\{Section}\{Container}\Providers\MainServiceProvider` class. +add the provider's class name to the `serviceProviders` array in the `App\Containers\{Section}\{Container}\Providers\ServiceProvider` class. ```php public array $serviceProviders = [ @@ -132,7 +126,7 @@ public array $serviceProviders = [ ]; ``` -You can also list aliases in the `$aliases` property of the `App\Containers\{Section}\{Container}\Providers\MainServiceProvider` class. +You can also list aliases in the `$aliases` property of the `App\Containers\{Section}\{Container}\Providers\ServiceProvider` class. ```php public array $aliases = [ @@ -149,7 +143,7 @@ to ensure that anything that needs to be registered or booted in the parent clas ### General Service Providers -General service providers must be registered in the `App\Ship\Providers\ShipProvider` class. +General service providers must be registered in the `App\Ship\Providers\ShipServiceProvider` class. This can be done by adding the provider class name to the `serviceProviders` array. ```php @@ -165,9 +159,9 @@ public array $serviceProviders = [ When dealing with third-party packages that require service provider registration in `config/app.php`, you should follow these guidelines: -- **Specific Container Usage**: If the package is used within a particular container, register its service provider in that container `App\Containers\{Section}\{Container}\Providers\MainServiceProvider` class. +- **Specific Container Usage**: If the package is used within a particular container, register its service provider in that container `App\Containers\{Section}\{Container}\Providers\ServiceProvider` class. -- **Framework-wide Usage**: If the package is generic and used throughout the entire application, you can register its service provider in the `App\Ship\Prviders\ShipProvider` class. However, avoid registering it directly in `config/app.php`. +- **Framework-wide Usage**: If the package is generic and used throughout the entire application, you can register its service provider in the `App\Ship\Prviders\ShipServiceProvider` class. However, avoid registering it directly in `config/app.php`. ## Laravel Service Providers @@ -178,8 +172,8 @@ have been restructured in Apiato to reside in the `app/Ship/Parents/Providers` d Here's the mapping of Laravel's default service providers to their new locations in Apiato: -- `App\Providers\AppServiceProvider` → `App\Ship\Parents\Providers\MainServiceProvider` - - Note: Laravel `AppServiceProvider` is renamed to `MainServiceProvider` in Apiato. +- `App\Providers\AppServiceProvider` → `App\Ship\Parents\Providers\ServiceProvider` + - Note: Laravel `AppServiceProvider` is renamed to `ServiceProvider` in Apiato. - `App\Providers\AuthServiceProvider` → `App\Ship\Parents\Providers\AuthServiceProvider` - `App\Providers\BroadcastServiceProvider` → `App\Ship\Parents\Providers\BroadcastServiceProvider` - `App\Providers\EventServiceProvider` → `App\Ship\Parents\Providers\EventServiceProvider` @@ -192,12 +186,12 @@ the `App\Containers\AppSection\Authentication\Providers\AuthServiceProvider` cla Those providers are not auto registered by default, thus writing any code there will not be available, unless you extend them. -Once extended, the child Service Provider should be registered in its container `MainServiceProvider`, +Once extended, the child Service Provider should be registered in its container `ServiceProvider`, which makes it available. :::note Do note that the `App\Ship\Parents\Providers\RouteServiceProvider` is a unique case. -Because it's required by Apiato, it is registered by the `App\Ship\Prviders\ShipProvider` and is loaded automatically. +Because it's required by Apiato, it is registered by the `App\Ship\Prviders\ShipServiceProvider` and is loaded automatically. ::: ## Service Providers Registration Flow @@ -215,20 +209,20 @@ app │ │ └── Providers │ │ ├── CustomServiceProvider.php ─────────►────────┐ │ │ ├── EventServiceProvider.php ─────────►────────┤ -│ │ ├── MainServiceProvider.php ◄──registered─in─◄─┘ +│ │ ├── ServiceProvider.php ◄──registered─in─◄─┘ │ │ └── ... │ └── ContainerB │ └── Providers │ ├── AnotherCustomServiceProvider.php ────────►────────┐ │ ├── EventServiceProvider.php ────────►────────┤ -│ ├── MainServiceProvider.php ◄──registered─in─◄─┤ +│ ├── ServiceProvider.php ◄──registered─in─◄─┤ │ ├── MiddlewareServiceProvider.php ────────►────────┘ │ └── ... └── Ship └── Providers ├── CustomGeneralServiceProvider.php ────────►────────┐ ├── RouteServiceProvider.php ────────►────────┤ - ├── ShipProvider.php ◄──registered─in─◄─┘ + ├── ShipServiceProvider.php ◄──registered─in─◄─┘ └── ... ``` @@ -237,7 +231,7 @@ The following diagram illustrates the registration flow of service providers in ```mermaid graph TB subgraph ContainerB[Container B] - BMP[MainServiceProvider] + BMP[ServiceProvider] BEP[EventServiceProvider] subgraph BServiceProviders[Service Providers] AnotherCustomServiceProvider @@ -248,7 +242,7 @@ graph TB end subgraph ContainerA[Container A] - AMP[MainServiceProvider] + AMP[ServiceProvider] subgraph AServiceProviders[Service Providers] CustomServiceProvider EventServiceProvider From f5846220a93d5535269fd95c5cdaf4edad0d7147 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 17:27:08 +0330 Subject: [PATCH 69/91] Update social-authentication.md --- docs/pacakges/social-authentication.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pacakges/social-authentication.md b/docs/pacakges/social-authentication.md index b059257e3..69f3efddb 100644 --- a/docs/pacakges/social-authentication.md +++ b/docs/pacakges/social-authentication.md @@ -142,7 +142,7 @@ For testing purposes Apiato provides two web endpoints ::: ## Social Authentication Container Customization {#social-auth-customization} -You can customize this container by publishing its config and modifying its values +You may customize this container by publishing its config and modifying its values ``` php artisan vendor:publish ``` From e53002c17d7da360ee3506e37f8a60ad0853e011 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 20:28:33 +0330 Subject: [PATCH 70/91] Update exceptions.md --- docs/components/main-components/exceptions.md | 59 ++----------------- 1 file changed, 4 insertions(+), 55 deletions(-) diff --git a/docs/components/main-components/exceptions.md b/docs/components/main-components/exceptions.md index c76191e75..f15b837e9 100644 --- a/docs/components/main-components/exceptions.md +++ b/docs/components/main-components/exceptions.md @@ -23,8 +23,10 @@ Read [**Porto SAP Documentation (#Exceptions)**](https://github.com/Mahmoudz/Por - All container-specific Exceptions MUST be placed in the `app/Containers/{Section}/{Container}/Exceptions` directory. - All general Exceptions MUST be placed in the `app/Ship/Exceptions` directory. -- All Exceptions MUST extend the `App\Ship\Parents\Exceptions\Exception` class. +- All application Exceptions MUST extend the `App\Ship\Parents\Exceptions\Exception` class. - The parent extension SHOULD be aliased as `ParentException`. +- All Http Exceptions MUST extend the `App\Ship\Parents\Exceptions\HttpException` class. + - The parent extension SHOULD be aliased as `ParentHttpException`. ## Folder Structure @@ -46,57 +48,4 @@ app ## Code Example -You can override those values while throwing the error. - -```php -use App\Ship\Parents\Exceptions\Exception as ParentException; - -class DemoException extends ParentException -{ - protected $code = Response::HTTP_CONFLICT; - protected $message = 'This is a demo exception.'; -} -``` - -## Helpers Methods - -### withErrors - -```php -// Example 1 -throw (new AccountFailedException())->withErrors(['email' => 'The email has already been taken.']); -// Example 2 -throw (new AccountFailedException())->withErrors(['email' => ['The email has already been taken.', 'Another message']]); -``` - -You can also use translation strings. -Translation strings are automatically translated if the translations are found. -To handle localization, you can use the [Localization Container](../../pacakges/localization.md). - -```php -// Example 1 -throw (new AccountFailedException())->withErrors(['email' => 'appSection@user::exceptions.email-taken']); -// Example 2 -throw (new AccountFailedException())->withErrors(['email' => 'appSection@user::exceptions.email-taken', 'Another not translated message']); -``` - -Response: -```json -{ - "message": "The exception error message.", - "errors": { - "email": [ - "The email has already been taken.", - "Another not translated message" - ] - } -} -``` -### debug - -The `debug` method is used for logging error messages during debugging and development. -The `debug` method accepts `string` or `\Exception` instance - -```php -throw (new AccountFailedException())->debug($e); -``` +Exceptions are defined exactly as you would define them in Laravel. From 7f48f1f24edbccc8b6c14004d84de83862503978 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 20:28:35 +0330 Subject: [PATCH 71/91] Update service-providers.md --- .../optional-components/service-providers.md | 206 +----------------- 1 file changed, 10 insertions(+), 196 deletions(-) diff --git a/docs/components/optional-components/service-providers.md b/docs/components/optional-components/service-providers.md index 944423643..fc0605f57 100644 --- a/docs/components/optional-components/service-providers.md +++ b/docs/components/optional-components/service-providers.md @@ -12,19 +12,13 @@ Apiato service providers are just [Laravel Service Providers](https://laravel.co and they function in the exact same way as Laravel service providers. However, they come with additional rules and conventions specific to Apiato. -To generate new service providers +To generate new service providers, you may use the `apiato:make:provider` interactive command: ``` php artisan apiato:make:provider ``` -There are two distinct types of service providers within a container: -the `Main Service Provider` and additional service providers. -The Main Service Provider serves as the central registration point for all custom service providers within the container. -It orchestrates the setup and integration of these custom providers, -ensuring the seamless functioning of your application's components. - ## Rules - You MUST NOT register any Service Provider in the `config/app.php` (except Laravel default service providers). @@ -38,225 +32,45 @@ ensuring the seamless functioning of your application's components. - MUST extend the `App\Ship\Parents\Providers\ServiceProvider` class. - The parent extension SHOULD be aliased as `ParentServiceProvider`. - When using Laravel [default service providers](#laravel-service-providers): - - `AuthServiceProvider` MUST extend `App\Ship\Parents\Providers\AuthServiceProvider`. - - `BroadcastServiceProvider` MUST extend `App\Ship\Parents\Providers\BroadcastServiceProvider`. - `EventServiceProvider` MUST extend `App\Ship\Parents\Providers\EventServiceProvider`. - - `MiddlewareServiceProvider` MUST extend `App\Ship\Parents\Providers\MiddlewareServiceProvider`. - `RouteServiceProvider` MUST extend `App\Ship\Parents\Providers\RouteServiceProvider`. - The parent extension SHOULD be aliased as `Parent{ServiceProviderName}`. For example: `ParentAuthServiceProvider`. ## Folder Structure -The highlighted sections showcase service provider registration points: - -- `ServiceProvider.php` acts as the central registration point for custom service providers specific to a container. -- `ShipServiceProvider.php` acts as the central registration point for the Ship (general) service providers. - ```php app ├── Containers │ └── Section │ └── Container │ └── Providers -│ ├── AuthServiceProvider.php -│ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php - // highlight-start │ ├── ServiceProvider.php - // highlight-end -│ ├── MiddlewareServiceProvider.php -│ ├── RouteServiceProvider.php │ ├── CustomServiceProvider.php │ └── ... └── Ship └── Providers - ├── RouteServiceProvider.php - // highlight-start ├── ShipServiceProvider.php - // highlight-end + ├── CustomServiceProvider.php └── ... ``` ## Code Example -#### Main Service Provider: - -```php -use App\Ship\Parents\Providers\ServiceProvider as ParentServiceProvider; - -class ServiceProvider extends ParentServiceProvider -{ - public array $serviceProviders = [ - CustomServiceProvider::class, - MiddlewareServiceProvider::class, - PassportServiceProvider::class, - ]; - - public array $aliases = []; -} -``` - -## Register Providers - -The registration process for a service provider varies depending on its intended scope within the application. -Different places are designated for different levels of service provider usage. - -In essence, the decision of where to register a service provider boils down to two key factors: -the scope of service provider usage and the logical location for its registration. - -### Container Service Providers - -#### Main Service Provider - -A container `Main Service Provider` will be automatically registered by Apiato -so manual registration isn't necessary. -In turn, -Main Service Providers will register all service providers listed in their `$serviceProviders` property. - -#### Additional Service Providers - -To register a provider, -add the provider's class name to the `serviceProviders` array in the `App\Containers\{Section}\{Container}\Providers\ServiceProvider` class. - -```php -public array $serviceProviders = [ - CustomServiceProvider::class, - AnotherCustomServiceProvider::class, - EventsServiceProvider::class, -]; -``` - -You can also list aliases in the `$aliases` property of the `App\Containers\{Section}\{Container}\Providers\ServiceProvider` class. - -```php -public array $aliases = [ - 'CustomAlias' => CustomFacade::class, - 'AnotherCustomAlias' => AnotherCustomFacade::class, -]; -``` - -:::note -If you override the `register` or the `boot` methods in any Service Provider, -you must also call the `parent::register()` and `parent::boot()` methods respectively, -to ensure that anything that needs to be registered or booted in the parent class is done so. -::: - -### General Service Providers +Service Providers are defined exactly as you would define them in Laravel. -General service providers must be registered in the `App\Ship\Providers\ShipServiceProvider` class. -This can be done by adding the provider class name to the `serviceProviders` array. +## Service Providers Registration +Normally, service providers are registered in the `bootstrap/providers.php` file. +However, in Apiato, this is handled automatically. -```php -public array $serviceProviders = [ - CustomServiceProvider::class, - AnotherCustomServiceProvider::class, - EventsServiceProvider::class, -]; -``` +All providers within the `Providers` directories of Containers and Ship are automatically registered. +This means you don't need to manually register them in the `bootstrap/providers.php` file. -### Third Party Service Providers +#### Third-Party Service Providers -When dealing with third-party packages that require service provider registration in `config/app.php`, +When dealing with third-party packages that require service provider registration in `bootstrap/providers.php` file, you should follow these guidelines: - **Specific Container Usage**: If the package is used within a particular container, register its service provider in that container `App\Containers\{Section}\{Container}\Providers\ServiceProvider` class. - **Framework-wide Usage**: If the package is generic and used throughout the entire application, you can register its service provider in the `App\Ship\Prviders\ShipServiceProvider` class. However, avoid registering it directly in `config/app.php`. - -## Laravel Service Providers - -Apiato introduces a refined organization for Laravel service providers. -By default, Laravel standard service providers, -located in the `app/providers` directory, -have been restructured in Apiato to reside in the `app/Ship/Parents/Providers` directory. - -Here's the mapping of Laravel's default service providers to their new locations in Apiato: - -- `App\Providers\AppServiceProvider` → `App\Ship\Parents\Providers\ServiceProvider` - - Note: Laravel `AppServiceProvider` is renamed to `ServiceProvider` in Apiato. -- `App\Providers\AuthServiceProvider` → `App\Ship\Parents\Providers\AuthServiceProvider` -- `App\Providers\BroadcastServiceProvider` → `App\Ship\Parents\Providers\BroadcastServiceProvider` -- `App\Providers\EventServiceProvider` → `App\Ship\Parents\Providers\EventServiceProvider` -- `App\Providers\RouteServiceProvider` → `App\Ship\Parents\Providers\RouteServiceProvider` - -You should not modify these providers directly. -Instead, extend them within your container's `Providers` directory. -For instance, -the `App\Containers\AppSection\Authentication\Providers\AuthServiceProvider` class extends `App\Ship\Parents\Providers\AuthServiceProvider`. - -Those providers are not auto registered by default, -thus writing any code there will not be available, unless you extend them. -Once extended, the child Service Provider should be registered in its container `ServiceProvider`, -which makes it available. - -:::note -Do note that the `App\Ship\Parents\Providers\RouteServiceProvider` is a unique case. -Because it's required by Apiato, it is registered by the `App\Ship\Prviders\ShipServiceProvider` and is loaded automatically. -::: - -## Service Providers Registration Flow - -If you want to understand the service provider registration process, -here is a breakdown of the registration flow. - -Consider the following folder structure: - -```markdown -app -├── Containers -│ └── Section -│ ├── ContainerA -│ │ └── Providers -│ │ ├── CustomServiceProvider.php ─────────►────────┐ -│ │ ├── EventServiceProvider.php ─────────►────────┤ -│ │ ├── ServiceProvider.php ◄──registered─in─◄─┘ -│ │ └── ... -│ └── ContainerB -│ └── Providers -│ ├── AnotherCustomServiceProvider.php ────────►────────┐ -│ ├── EventServiceProvider.php ────────►────────┤ -│ ├── ServiceProvider.php ◄──registered─in─◄─┤ -│ ├── MiddlewareServiceProvider.php ────────►────────┘ -│ └── ... -└── Ship - └── Providers - ├── CustomGeneralServiceProvider.php ────────►────────┐ - ├── RouteServiceProvider.php ────────►────────┤ - ├── ShipServiceProvider.php ◄──registered─in─◄─┘ - └── ... -``` - -The following diagram illustrates the registration flow of service providers in the above folder structure: - -```mermaid -graph TB - subgraph ContainerB[Container B] - BMP[ServiceProvider] - BEP[EventServiceProvider] - subgraph BServiceProviders[Service Providers] - AnotherCustomServiceProvider - BEP - MiddlewareServiceProvider - end - BMP - end - - subgraph ContainerA[Container A] - AMP[ServiceProvider] - subgraph AServiceProviders[Service Providers] - CustomServiceProvider - EventServiceProvider - end - AMP - end - - subgraph Application - SPLoader[[Service Provider Loader]]-- loads-->AMP - SPLoader-- loads-->BMP - end - - AMP -->|loads| AServiceProviders - AServiceProviders -->|registered in| AMP - BMP -->|loads| BServiceProviders - BServiceProviders -->|registered in| BMP -``` From 51cbf8b6bd174ce12ff45f8985feb40536360db8 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 20:28:36 +0330 Subject: [PATCH 72/91] Update tests.md --- docs/components/optional-components/tests.md | 521 +------------------ 1 file changed, 1 insertion(+), 520 deletions(-) diff --git a/docs/components/optional-components/tests.md b/docs/components/optional-components/tests.md index b2a87a6e8..fe5df7db5 100644 --- a/docs/components/optional-components/tests.md +++ b/docs/components/optional-components/tests.md @@ -25,12 +25,10 @@ php artisan apiato:make:test:testcase ## Definitions ---- #### Unit tests Unit tests are tests that focus on a very small, isolated portion of your code. In fact, most unit tests probably focus on a single method. ---- #### Functional tests Functional tests may test a larger portion of your code, including how several objects interact with each other or even a full HTTP request to a JSON endpoint. @@ -110,354 +108,12 @@ app └── ShipTestCase.php ``` -## Writing Tests - -Unit tests are defined in the same manner as you would define them in Laravel. -However, Functional tests follow a distinct approach. -Here's an example of how to write functional tests: - -```php -namespace App\Containers\AppSection\User\Tests\Functional\API; - -use App\Containers\AppSection\User\Data\Factories\UserFactory; -use App\Containers\AppSection\User\Tests\Functional\ApiTestCase; -use Illuminate\Testing\Fluent\AssertableJson; -use PHPUnit\Framework\Attributes\CoversNothing; -use PHPUnit\Framework\Attributes\Group; - -#[Group('user')] -#[CoversNothing] -class FindUserByIdTest extends ApiTestCase -{ - protected string $endpoint = 'get@v1/users/{id}'; - protected bool $auth = true; - protected array $access = [ - 'permissions' => 'search-users', - 'roles' => '', - ]; - - public function testFindUser(): void - { - $user = $this->getTestingUser(); - - $response = $this->injectId($user->id)->makeCall(); - - $response->assertOk(); - $response->assertJson( - static fn (AssertableJson $json) => $json->has('data') - ->where('data.id', \Hashids::encode($user->id)) - ->etc() - ); - } -} -``` - -To learn more about the properties and methods used, -such as `endpoint` and `makeCall`, please read to the following section. - -## Functional Tests - -### Properties -Certain test helper methods access properties defined in your test class to execute their tasks effectively. -Below, we will explore these properties and their corresponding methods: - ---- -#### endpoint - -The `$endpoint` property is used -to define the endpoints you want to access when making a call using the `makeCall` method. -It is defined as a string in the following format: `method@url`. - -```php -class FindUserByIdTest extends ApiTestCase -{ - // highlight-start - protected string $endpoint = 'get@v1/profile'; - // highlight-end - - public function testGetAuthenticatedUser(): void - { - $user = $this->getTestingUser(); - - $response = $this->makeCall(); - // You can override the "endpoint" property in specific test methods - // $response = $this->endpoint('get@v1/users')->makeCall(); - - $response->assertOk(); - // other assertions... - } -} -``` - ---- -#### auth - -The `$auth` property is used to determine whether the endpoint being called requires authentication or not in your test class. -If you do not explicitly define the `$auth` property in your test class, it will be defaulted to `true` automatically. - -In the context of testing, when `auth` is set to true, -the `makeCall` method will handle authentication by creating a testing user -(if one is not already available) and injecting their access token into the headers before making the API call. - -```php -class ListUsersTest extends ApiTestCase -{ - protected string $endpoint = 'get@v1/users'; - // highlight-start - protected bool $auth = false; - // highlight-end - - public function testListUsers(): void - { - $response = $this->makeCall(); - // You can override the "auth" property in specific test methods - // $response = $this->auth(true)->makeCall(); - - $response->assertOk(); - // other assertions... - } -} -``` - ---- -#### access - -The `$access` property is used -to define roles or permissions that you want to assign to your testing users within a test class. -When you use the `getTestingUser` method, -the testing user instance will automatically inherit all the roles and permissions specified in the `$access` property. - -By setting the desired roles and permissions in the `$access` property, -you can conveniently configure the testing user with the necessary access rights for your test scenarios. -This ensures that the testing user has the appropriate privileges when interacting with the application during testing. - -```php -class DeleteUserTest extends ApiTestCase -{ - protected string $endpoint = 'delete@v1/users/{id}'; - // highlight-start - protected array $access = [ - 'permissions' => 'delete-users', - 'roles' => 'admin', - ]; - // highlight-end - - public function testDeleteUser(): void - { - // The testing user will have the "delete-users" permission and "admin" role. - // highlight-start - $user = $this->getTestingUser(); - // highlight-end - - $response = $this->injectId($user->id)->makeCall(); - - $response->assertNoContent(); - } -} -``` - -### Methods {#methods} - -[makeCall](#makecall) -[injectId](#injectid) -[getTestingUser](#gettestinguser) -[getTestingUserWithoutAccess](#gettestinguserwithoutaccess) -[endpoint](#endpoint-method) -[auth](#auth-method) - ---- -#### makeCall - -To make a request to your application, you may invoke the `makeCall` method within your functional test. -This method combines the functionalities of [Laravel HTTP test](https://laravel.com/docs/http-tests#testing-json-apis) helpers with the [properties](#properties) -defined in your functional test to make a request to the application. - -The `makeCall` method returns an instance of `Illuminate\Testing\TestResponse`, -which provides a variety of [helpful assertions](https://laravel.com/docs/http-tests#fluent-json-testing) -that allow you to inspect your application's responses. - -```php -$this->makeCall(); - -$this->makeCall([ - 'email' => $userDetails['email'], - 'password' => $userDetails['password'], -]); - -$this->makeCall($data, $headers); -``` - ---- -#### injectId - -The `injectId` method enables you to inject an ID into the endpoint you want to test within your functional tests. - -```php -// user with ID 100 -// endpoint = 'get@v1/users/{id}' - -$this->injectId($user->id)->makeCall(); -``` - -In this example, the original endpoint is `'get@v1/users/{id}'`, and the desired ID to be injected is `100`. -The `injectId` method is then called with these parameters. -The method replaces `{id}` in the endpoint with the provided ID, -resulting in the modified endpoint `'get@v1/users/100'`. - -By default, `injectId` -will look for a string of `{id}` in the endpoint to replace with the provided id. Remember -to provide the third parameter if your endpoint expects an id with a different name. - -```php -// endpoint = 'get@v1/users/{user_id}/articles/{id}' -// You can also chain multiple `injectId` calls! - -$this->injectId($articles->id)->injectId($user->id, replace: '{user_id}')->makeCall(); -``` - -When the [Hash ID](../../security/hash-id.md) feature is enabled, -the `injectId` method will automatically encode the provided ID before injecting it into the endpoint. -However, you have the option to control this behavior by using the second parameter of the `injectId` method, -`skipEncoding`. - -```php -// endpoint = 'get@v1/users/{user_id}' - -// this will encode the id automatically -$this->injectId($user->id, skipEncoding: false, replace: '{user_id}')->makeCall($data); -// this will skip the encoding -$this->injectId($user->getHashedKey(), skipEncoding: true, replace: '{user_id}')->makeCall($data); -``` - -By utilizing the `injectId` method, you can dynamically inject an ID into the endpoint, -allowing you to test specific resources or scenarios that depend on resource identifiers. - ---- -#### getTestingUser - -When you call `getTestingUser` method, -it returns a testing user instance with randomly generated attributes and all the roles and permissions -specified in the `$access` property. -This ensures that the testing user has the appropriate access rights for the defined roles and permissions. -However, -you also have the flexibility -to override these attributes and access rights by passing the desired values as arguments to the method. - -```php -// The testing user will be created with randomly generated attributes -// and will inherit the roles and permissions specified in the `$access` property. -$user = $this->getTestingUser(); - -// The testing user will be created with the provided attributes and access rights. -$user = $this->getTestingUser([ - 'email' => 'hello@mail.test', - 'name' => 'Hello', - 'password' => 'secret', -], [ - 'permissions' => 'jump', - 'roles' => 'jumper', -]); -``` - -Additionally, to create an admin user, you can pass `true` as the third argument when invoking `getTestingUser`. -This will use the `admin` state of `app/Containers/AppSection/User/Data/Factories/UserFactory.php` to create the testing user. - -```php -$user = $this->getTestingUser(null, null, true); -``` - -The `getTestingUser` method is configured to work with the default Apiato configuration. -However, if you are using a custom user model, -you will need to update the `tests` configuration in `app/Ship/Configs/apiato.php`. -This configuration file allows you -to specify your custom user model and the corresponding model factory state for testing. - ---- -#### getTestingUserWithoutAccess - -The `getTestingUserWithoutAccess` method allows you to obtain a testing user instance that doesn't have any assigned permissions or roles. -It is a shortcut for `getTestingUser(null, null)`. -This skips all the roles and permissions defined in your test class `$access` property. - -```php -$user = $this->getTestingUserWithoutAccess(); -``` - ---- -#### endpoint {#method} - -The `endpoint` method allows you to specify the endpoint you want to test within your functional tests. -This method is especially useful -when you need to override the default endpoint that is defined in the `$endpoint` property of the test class, -specifically for a particular test method. - -```php -$this->endpoint('get@v1/register')->makeCall(); -``` - -:::note -The order in which you call `endpoint` method is crucial. -Make sure to call it before `injectId` method, -or else `injectId` will not replace the ID in the overridden endpoint. -::: - ---- -#### auth {#method} - -The `auth` method allows you -to specify the authentication status of the endpoint you want to test within your functional tests. -This method is especially useful -when you need to override the default authentication status that is defined in the `$auth` property of the test class, -specifically for a particular test method. - -```php -$this->auth(false)->makeCall(); -``` - ## Available Assertions {#available-assertions} -Apiato provides a variety of custom assertion methods that you may utilize when testing your application. +Apiato provides a variety of custom assertion methods that you may use when testing your application. -[assertModelCastsIsEmpty](#assertModelCastsIsEmpty) [assertDatabaseTable](#assertDatabaseTable) -[getGateMock](#getGateMock) -[assertCriteriaPushedToRepository](#assertcriteriapushedtorepository) -[assertNoCriteriaPushedToRepository](#assertnocriteriapushedtorepository) -[allowAddRequestCriteriaInvocation](#allowaddrequestcriteriainvocation) - ---- -#### assertModelCastsIsEmpty - -The `assertModelCastsIsEmpty` method allows you to assert that the `$casts` property of a model is empty. -By default, the `$casts` property of a model includes the `id` and, -if the model is soft deletable, the `deleted_at`. -This method excludes these default values from the assertion. - -Here's an example of how to use `assertModelCastsIsEmpty`: - -```php -$this->assertModelCastsIsEmpty($model); -``` - -In the code snippet above, `$model` represents the instance of the model you want to test. -The `assertModelCastsIsEmpty` method will verify that the `$casts` property of the model is empty, -ignoring the default `id` and `deleted_at` values. - -If you want to add additional values to the ignore list, -you can pass them as an array to the `assertModelCastsIsEmpty` method. -```php -$this->assertModelCastsIsEmpty($model, ['value1', 'value2']); -``` - -In this case, the assertion will ignore the `id`, `deleted_at`, -`value1`, and `value2` values when verifying the `$casts` property of the model. - -By using the `assertModelCastsIsEmpty` method, -you can verify that the `$casts` property of a model does not contain any unexpected values, -ensuring that the model's attributes are not automatically casted. - ---- #### assertDatabaseTable > Available since Core v8.5.0 @@ -470,178 +126,3 @@ where the column type is a string representing the expected data type of the col ```php $this->assertDatabaseTable('users', ['id' => 'bigint']); ``` - ---- -#### getGateMock -> Available since Core v8.5.0 - -This assertion helps you to test whether the `Gate::allows` method is invoked with the correct arguments. - -Let's -consider a scenario -where a request class utilizes the `authorize` method -to determine whether a user has the necessary permissions to access a particular resource. -The primary objective is -to test whether the `authorize` method correctly invokes the `Gate::allows` method with the appropriate arguments. - -```php -// PUT '/users/{id}' - -// UpdateUserRequest.php -public function authorize(Gate $gate): bool -{ - // Here, we check if the user's id sent in the request has the necessary permissions to 'update'. - return $gate->allows('update', [User::find($this->id)]); -} - -// UpdateUserRequestTest.php -public function testAuthorizeMethodGateCall(): void -{ - $user = $this->getTestingUserWithoutAccess(); - $request = UpdateUserRequest::injectData([], $user) - ->withUrlParameters(['id' => $user->id]); - // If the id is sent as a body parameter in the request, you can use the following: - // $request = UpdateUserRequest::injectData(['id' => $user->getHashedKey()], $ user); - - $gateMock = $this->getGateMock(policyMethodName: 'update', args: [ - // Ensure you obtain a fresh model instance; using the $user variable directly will cause the test to fail. - User::find($user->id), - ]); - - $this->assertTrue($request->authorize($gateMock)); -} -``` - -In this code, we're examining the testing of the `authorize` method within a FormRequest class. -The main objective is to confirm that it appropriately interacts with Laravel's Gate functionality. -The test ensures that the `Gate::allows` method is invoked with the correct parameters, -checking if users have the required permissions to perform updates. -If the authorization logic is correctly implemented, this test should pass, -ensuring that only users with the necessary permissions can perform updates. - ---- -#### assertCriteriaPushedToRepository -> Available since Core v8.9.0 - -Asserts that a criteria is pushed to a repository. - -In the following example, we want to test -if the `UserIsAdminCriteria` is pushed to the `UserRepository` when the `ListUsersTask` is called with the `admin` method. - -```php -public function testCanListAdminUsers(): void -{ - $this->assertCriteriaPushedToRepository( - UserRepository::class, - UserIsAdminCriteria::class, - ['admin' => true], - ); - $task = app(ListUsersTask::class); - - $task->admin(); -} -``` - ---- -#### assertNoCriteriaPushedToRepository -> Available since Core v8.9.0 - -Asserts that no criteria is pushed to a repository. - -In the following example, we want to test -if no criteria is pushed to the `UserRepository` when the `ListUsersTask`'s `admin` method is called with a `null` value. - -```php -public function testCanListAllUsers(): void -{ - $this->assertNoCriteriaPushedToRepository(UserRepository::class); - $task = app(ListUsersTask::class); - - $task->admin(null); -} -``` - ---- -#### allowAddRequestCriteriaInvocation -> Available since Core v8.9.0 - -Allow `addRequestCriteria` method invocation on the repository mock. -This is particularly useful when you want to test a repository that uses the -[RequestCriteria](../optional-components/repository/repositories.md#requestcriteria). - -```php -public function testCanListAdminUsers(): void -{ - $repositoryMock = $this->assertCriteriaPushedToRepository( - UserRepository::class, - UserIsAdminCriteria::class, - ['admin' => true], - ); - // highlight-next-line - $this->allowAddRequestCriteriaInvocation($repositoryMock); - $task = app(ListUsersTask::class); - - $task->admin(); -} -``` - -## Faker - -An instance of [Faker](https://github.com/FakerPHP/Faker) is automatically provided in every test class, allowing you to generate fake data easily. -You can access it using `$this->faker`. - -:::caution Deprecation Notice -This feature is deprecated and will be removed in the next major release. -You should use the Laravel `fake` helper function instead. -::: - -## Test Helper Methods - -Apiato provides a variety of helper methods that you may utilize when testing your application. - -[createSpyWithRepository](#createspywithrepository) -[inIds](#inIds) - ---- -#### createSpyWithRepository -> Available since Core v8.9.0 - -This method is useful when you want to test if a repository method is called within an Action, SubAction or a Task. - -In the following example, -we want to test if the `run` method of the `CreateUserTask` is called within the `CreateUserAction`. - -```php -public function testCanCreateUser(): void -{ - $data = [ - 'email' => 'gandalf@the.grey', - 'password' => 'you-shall-not-pass', - ]; - $taskSpy = $this->createSpyWithRepository(CreateUserTask::class, UserRepository::class); - $action = app(CreateUserAction::class); - - $action->run($data); - - $taskSpy->shouldHaveReceived('run')->once()->with($data); -} -``` - ---- -#### inIds - -The `inIds` method allows you to check if the given hashed ID exists within the provided model collection. - -```php -$hashedId = 'hashed_123'; -$collection = Model::all(); - -$isInCollection = $this->inIds($hashedId, $collection); -``` - -By leveraging the `inIds` method, you can streamline your testing process when working with hashed identifiers, -ensuring that the expected hashed IDs are present within your model collections. - -:::caution Deprecation Notice -This method will be removed in the next major release and will not be available in test classes. -::: From 65f2bf49f6d8a1753add3fe1b9ae704db337fa97 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 20:28:37 +0330 Subject: [PATCH 73/91] Update values.md --- docs/components/optional-components/values.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/optional-components/values.md b/docs/components/optional-components/values.md index 3b218958e..50b680527 100644 --- a/docs/components/optional-components/values.md +++ b/docs/components/optional-components/values.md @@ -45,7 +45,7 @@ app ## Code Example ```php -class Location extends Value +readonly class Location extends Value { public function __construct( public float $latitude, From bb5e802d33b22a8a75331f7e03f3de68fbe97984 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 20:28:42 +0330 Subject: [PATCH 74/91] Update upgrade-guide.mdx --- docs/prologue/upgrade-guide.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/prologue/upgrade-guide.mdx b/docs/prologue/upgrade-guide.mdx index 28b651cc2..e9b9f3c6f 100644 --- a/docs/prologue/upgrade-guide.mdx +++ b/docs/prologue/upgrade-guide.mdx @@ -205,8 +205,8 @@ Existing service providers extending this class should be refactored to extend `Apiato\Core\Providers\ServiceProvider` class instead. e.g, `App\Ship\Parents\Providers\ServiceProvider` class. -### Autoloading -All providers within the `Providers` directories of Containers and Ship are now autoloaded. +### Automatic Registration +All providers within the `Providers` directories of Containers and Ship are now automatically registered. There is no longer a requirement to have a specifically named `MainServiceProvider` service provider per container. :::note From fa4a4c04809115db0c2d14dfc578c51e8e5ebb26 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 20:28:44 +0330 Subject: [PATCH 75/91] Update authentication.mdx --- docs/security/authentication.mdx | 82 +++++--------------------------- 1 file changed, 13 insertions(+), 69 deletions(-) diff --git a/docs/security/authentication.mdx b/docs/security/authentication.mdx index 962170d15..47b392d30 100644 --- a/docs/security/authentication.mdx +++ b/docs/security/authentication.mdx @@ -23,7 +23,7 @@ To access a comprehensive list of available Passport endpoints, please refer to the `app/Containers/Authentication/UI/API/Routes/passport.v1.private.php` file. ::: -## Installation {#installation} +## Installation To get started, you should execute the `passport:install` Artisan command. This command will create the encryption keys needed to generate secure access tokens. @@ -50,14 +50,14 @@ CLIENT_WEB_ID=2 CLIENT_WEB_SECRET=nu8B2npfoR4hP6sWHaf90EvWUFe2EDYyJXGnCrso ``` -## Password Grant Tokens {#password-grant-tokens} +## Password Grant Tokens The OAuth2 password grant allows your other first-party clients, such as a mobile application, to obtain an access token using an email address / username and password. This allows you to issue access tokens securely to your first-party clients without requiring your users to go through the entire OAuth2 authorization code redirect flow. -### Creating A Password Grant Client {#creating-a-password-grant-client} +### Creating A Password Grant Client Before your application can issue tokens via the password grant, you will need to create a password grant client. You may do this using the `passport:client` Artisan command with the `--password` option. @@ -67,7 +67,7 @@ If you have already run the `passport:install` command, you do not need to run t php artisan passport:client --password ``` -### Requesting Tokens {#requesting-tokens} +### Access Token POST {variables.defaults.baseUrl.api}/oauth/token

@@ -90,7 +90,7 @@ you will receive an `access_token` and `refresh_token` in the JSON response from } ``` -### Requesting Tokens Through The Proxy {#requesting-tokens-through-the-proxy} +#### Proxy Endpoint POST {variables.defaults.baseUrl.api}/clients/web/login

@@ -123,59 +123,7 @@ You must manually extract the client credentials from the database and update your `.env` file with the appropriate credentials for each client. ::: -### Requesting Tokens With Custom Fields - -By default, Apiato enables users to request an access token using their email address. -However, -you may want -to enhance this functionality to allow users to request an access token using other identifiers like their username, -phone number, etc. Here's a guide on how to configure and utilize this feature: - -#### Database Adaptation: -You will need to make adjustments to your database schema to accommodate the new fields. -For example, you can add the `username` and `phone` fields to the `users` table. - -#### Task Modification: -If you have a [Task](../components/main-components/tasks.md) responsible for creating a user object, -such as the `CreateUserByCredentialsTask`, you need to update it to support the new fields. -Additionally, this modification may also impact your registration logic, -so ensure that you make the necessary adjustments there as well. - -#### Configuration File: -1. Locate the `appSection-authentication` configuration file. -It is typically found at `App\Containers\AppSection\Authentication\Configs\appSection-authentication`. - -2. Open the `appSection-authentication` configuration file and search for the `login.fields` parameter. -This parameter allows you to configure the login fields based on your requirements. - -3. Modify the `login.fields` parameter according to your needs. -You can specify the login fields that should be considered during the authentication process. -For example, if you want to allow users to log in using their `email` and `phone`, -update the `login.fields` parameter as follows: - -```php -'login' => [ - 'fields' => [ - 'email' => ['email'], - 'phone' => ['string', 'min:6', 'max:25'], - ], -], -``` - -Now user can request a token using their email or phone number. -```json -// Request -{ - "username": "+1234567890", - "password": "secret" -} -``` - -:::tip -This feature is well documented in the configuration file. -::: - -### Refresh Token {#refresh-token} +### Refresh Token If your application utilizes short-lived access tokens, users will need @@ -190,7 +138,7 @@ There are two recommended methods to refresh the token: 2. Proxy Endpoint (recommended for first-party clients): POST {variables.defaults.baseUrl.api}/oauth/token -#### Proxy Endpoint {#proxy-endpoint} +#### Proxy Endpoint Apiato provides a default endpoint, {variables.defaults.baseUrl.api}/clients/web/refresh, specifically for the Web Client to refresh its token. @@ -199,7 +147,7 @@ This endpoint can be used in two ways: by manually passing the refresh_token to the endpoint or by including it in the request's HttpCookie. In either case, the server will respond with a new access token and refresh token. -#### Laravel Passport Endpoint {#laravel-passport-endpoint} +#### Laravel Passport Endpoint You can find more information about the Laravel Passport refresh token endpoint [here](https://laravel.com/docs/passport#refreshing-tokens). @@ -211,7 +159,7 @@ You can find more information about the Laravel Passport refresh token endpoint You may revoke a token by using this endpoint and passing the token to be revoked in the header `Authorization: Bearer {token}`. -## Protecting Routes {#protecting-routes} +## Protecting Routes #### API To protect an API endpoint from being accessible by unauthenticated users, you can use the `auth:api` middleware. @@ -238,13 +186,9 @@ Route::get('private/page', Controller::class) ->middleware('auth:web'); ``` -If authentication fails, users will be redirected to a login page by default. -To modify the login page view, -you can navigate to the `app/Ship/Providers/RouteServiceProvider.php` file and update the `LOGIN` constant. - -### Passing The Access Token {#passing-the-access-token} +### Passing The Access Token -When calling routes that are protected by Passport, +When calling routes that Passport protects, your application's API consumers should specify their access token as a `Bearer` token in the `Authorization` header of their request. For example, when using the Guzzle HTTP library: @@ -261,8 +205,8 @@ return $response->json(); ## Configuration -Most of the configuration is done in the `app/Ships/Configs/apiato.php` file. +Most of the configuration is done in the `app/Containers/AppSection/Configs/appSection-authentication.php` file. -## Social Authentication {#social-authentication} +## Social Authentication For Social Authentication visit the [Social Authentication](../pacakges/social-authentication.md) page. From d1805c988f07c33d02be5255d28215fc5b18852e Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Sat, 12 Apr 2025 20:28:47 +0330 Subject: [PATCH 76/91] Update authorization.mdx --- docs/security/authorization.mdx | 47 --------------------------------- 1 file changed, 47 deletions(-) diff --git a/docs/security/authorization.mdx b/docs/security/authorization.mdx index 502d1c48f..3122b8083 100644 --- a/docs/security/authorization.mdx +++ b/docs/security/authorization.mdx @@ -13,55 +13,8 @@ Apiato provides a Role-Based Access Control (RBAC) through its Authorization Con Behind the scenes, Apiato uses the [Laravel Permission](https://github.com/spatie/laravel-permission) package. -## How it works - -Authorization in Apiato is indeed straightforward and easy. -It operates by linking permissions to roles and then assigning roles to users. - -To implement the authorization process, follow these steps: - -1. Create Roles and Permissions -2. Attach Permissions to Roles -3. Attach Roles and/or Permissions to Users -4. Protect Endpoints with Permissions and/or Roles - -To [protect your endpoints](../components/main-components/requests.md#request-properties), -you have to specify the required permissions and/or roles in the `Request` class. -In doing so, you can check whether the current user has the necessary access rights to reach a particular endpoint. -By verifying permissions and roles at the request level, -you ensure that unauthorized users are denied access before any further processing takes place. - :::info Default Roles & Permissions Apiato comes with some default Roles and Permissions. You can find them in `app/Containers/AppSection/Authorization/Data/Seeders`. You can use them as a starting point, or delete them and create your own. ::: - -## Code Example - -Protecting the **delete user** endpoint with `delete-users` permission: -```php -use App\Ship\Parents\Requests\Request as ParentRequest; - -class DeleteUserRequest extends ParentRequest -{ - protected array $access = [ - 'permissions' => 'delete-users', - 'roles' => '', - ]; - - public function authorize(): bool - { - return $this->hasAccess(); - } -} -``` - -Authorization failed JSON response: - -```json -{ - "message": "This action is unauthorized.", - "errors": [] -} -``` From fee20701e9415ebfa2b5aa08f33eb33ba537d816 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:43:51 +0330 Subject: [PATCH 77/91] Update advance-configuration.mdx --- docs/framework-features/advance-configuration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework-features/advance-configuration.mdx b/docs/framework-features/advance-configuration.mdx index e02ab2a42..47d321302 100644 --- a/docs/framework-features/advance-configuration.mdx +++ b/docs/framework-features/advance-configuration.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 0 +sidebar_position: 2 title: Advance Configuration tags: - framework-feature From 5f8940d2f469c2c9dec3a5549b2086ae1f39f1a2 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:43:55 +0330 Subject: [PATCH 78/91] Update api-versioning.md --- docs/framework-features/api-versioning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework-features/api-versioning.md b/docs/framework-features/api-versioning.md index 87264d9ec..dcdeeecbc 100644 --- a/docs/framework-features/api-versioning.md +++ b/docs/framework-features/api-versioning.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 4 title: API Versioning tags: - framework-feature From 1307819071ca514d5ba0d7cb7ad8d28953fba319 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:43:57 +0330 Subject: [PATCH 79/91] Update code-generator.md --- docs/framework-features/code-generator.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/framework-features/code-generator.md b/docs/framework-features/code-generator.md index 0a4f580ed..b7c7e4cdc 100644 --- a/docs/framework-features/code-generator.md +++ b/docs/framework-features/code-generator.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 3 title: Code Generator tags: - framework-feature @@ -7,14 +7,14 @@ tags: --- Apiato comes with a powerful code generator that can help you to generate all the boilerplate code for your containers. -Apiato code generator is valuable tool -that can significantly accelerate the development process +Apiato code generator is a valuable tool +that can significantly speed up the development process by automating the creation of boilerplate code based on user inputs. For example, with the `apiato:make:container` command, you can quickly generate a complete container with fully functional CRUD operations, complete with test coverage. -To access the latest list of code generator commands you may run the following command: +To access the latest list of code generator commands, you may run the following command: ``` php artisan list apiato:make @@ -57,7 +57,7 @@ php artisan apiato:make:value Create a new Value class ## Stub Customization -The `apiato:make` commands utilize "stub" files that are pre-filled with values based on your input. +The `apiato:make` commands use "stub" files that are pre-filled with values based on your input. If you wish to make modifications to the files generated by Apiato, you can create your own custom stub files and place them in the `app/Ship/Generators/CustomStubs` directory. These custom stubs will then override the default stubs used by Apiato. From a31ee5914651d3f5faef3fdfe5027987fac8bebd Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:43:59 +0330 Subject: [PATCH 80/91] Update etag.md --- docs/framework-features/etag.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework-features/etag.md b/docs/framework-features/etag.md index 203d79b70..8f0174419 100644 --- a/docs/framework-features/etag.md +++ b/docs/framework-features/etag.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 6 title: Etag tags: - framework-feature From eeca78fe4ba1c9e7169f98c377efb553142303fe Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:44:00 +0330 Subject: [PATCH 81/91] Update rate-limiting.md --- docs/framework-features/rate-limiting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework-features/rate-limiting.md b/docs/framework-features/rate-limiting.md index cb1026216..cd4adf394 100644 --- a/docs/framework-features/rate-limiting.md +++ b/docs/framework-features/rate-limiting.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 7 title: Rate Limiting tags: - framework-feature From c30a578e286a92e3d05a6b74d7d67fbcb044b2fa Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:44:01 +0330 Subject: [PATCH 82/91] Update rbac.md --- docs/framework-features/rbac.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/framework-features/rbac.md b/docs/framework-features/rbac.md index c2037ab1e..ea1873840 100644 --- a/docs/framework-features/rbac.md +++ b/docs/framework-features/rbac.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 5 title: Role Based Access Control tags: - framework-feature From 180f2ede5be2a73985750d5bddb83b584cf7ab28 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:44:03 +0330 Subject: [PATCH 83/91] Update email-varification.md --- docs/security/email-varification.md | 72 ++++++++++------------------- 1 file changed, 25 insertions(+), 47 deletions(-) diff --git a/docs/security/email-varification.md b/docs/security/email-varification.md index 46350913e..82be9c81b 100644 --- a/docs/security/email-varification.md +++ b/docs/security/email-varification.md @@ -3,51 +3,35 @@ sidebar_position: 5 title: Email Verification --- -Many web applications require users to verify their email addresses before using the application. -To simplify this process, Apiato offers built-in services for sending and verifying email verification requests. +Apiato provides an email verification feature out of the box +using the [Laravel's built-in email verification](https://laravel.com/docs/verification) functionality. -## Configuration - -All the settings related to email verification are stored in the `app/Containers/AppSection/Authorization/Configs/appSection-authentication` configuration file. - -Activate email verification -by setting the `require_email_verification` option in the `appSection-authentication` configuration file to `true`. - -Also, ensure that your application is configured to send email messages. - -:::tip -Detailed information on email configuration can be found in the [Laravel documentation](https://laravel.com/docs/mail). -::: - -Include your web app's email verification redirect page URL (e.g., `https://myapp.com/email/verify`) in the `allowed-verify-email-urls` array within the `appSection-authentication` config. - -### Model Preparation - -Confirm that your `User` model implements the `MustVerifyEmail` contract. The default `User` model in Apiato typically includes this requirement. - -### Database Preparation - -Ensure your `users` table contains an `email_verified_at` column to store the email verification date and time. -The migration for the `users` table, included with Apiato, already includes this column. +## Model Preparation +All you need to do to enable email verification is +to verify that your `User` model implements the `Illuminate\Contracts\Auth\MustVerifyEmail` contract. ## Routing ### The Email Verification Notice - If you've enabled email verification, the API will automatically send an email verification link to the user's provided email address upon user creation. ### The Email Verification Handler +There are two main elements to handle the email verification process: -Define a route to handle requests when the user clicks the email verification link sent via email. -Apiato includes a route for this purpose, `email/verify/{id}/{hash}`. +- Frontend URL + - Define a route in your frontend app to handle the email verification link. +- API Configuration + - Configure your frontend app's email verification URL by either creating a new [App](../framework-features/apps) + or using the existing `App\Ship\Apps\Web` app. -### Resending The Verification Email +Next, +read the [Process Flow](#process-flow) section to understand how this ties into the overall email verification process. +### Resending The Verification Email To resend the email verification link, use the `/email/verification-notification` endpoint. ### Protecting Routes - Apply the `verified` middleware to restrict access to certain routes for confirmed users. When email verification is enabled, unverified users trying to access protected endpoints will trigger an exception, prompting them to confirm their email address. @@ -57,22 +41,16 @@ the `verified` middleware won't protect routes against unconfirmed users and wil ## Process Flow -1. Add your web app's email verification redirect page URL (e.g., `https://myapp.com/email/verify`) to the `allowed-verify-email-urls` array in the `appSection-authentication` config. - -2. Send the email verification URL to the user by calling the `/email/verification-notification` endpoint using your web app. Pass one of the valid URLs added in step 1 to the `verification_url` field of the endpoint. - -3. An email verification link will be sent to the user's email, resembling this format: - `https://myapp.test/email/verify?url=https://api.myapi.test/v1/email/verify/XbPW7awNkzl83LD6/eaabd911e2e07ede6456d3bd5725c6d4a5c2dc0b?expires=1646913047&signature=232702865b8353c445b39c50397e66db33c74df80e3db5a7c0d46ef94c8ab6a9`. - -4. When the user clicks the link, they'll be redirected to the URL specified in step 1, e.g., `https://myapp.com/email/verify`, with the `url` query string. - -5. The `url` is the complete URL your web app needs to call to verify the user. Simply make a request to this URL, and the user will be verified. +Let's assume you have a frontend app with a URL like `https://myapp.com/verify-email`. +The email verification process flow is as follows: -6. At this point, you should receive a `200` OK response, confirming the user's email verification. +1. The user registers or updates their email address. +2. The API sends an email verification link to the user's email address. It includes a link like this: `https://myapp.com/verify-email?verification_url=https://api.myapi.com/v1/email/verify/123/d2aG21sCc112k3`. +3. The user clicks the link in the email. +4. The link redirects the user to the specified (Frontend) URL in the email. +5. The URL contains a `verification_url` query string parameter. +6. The frontend app makes a `POST` request to the `verification_url` to verify the user's email. +7. The API verifies the user's email and returns a `200 OK` response. -:::note -If you encounter issues with the email verification link, such as a mismatched signature, -when using a load balancer, -set the `protected $proxies = '*'` in the -`app/Ship/Middlewares/TrustProxies.php` or customize it according to your needs. -::: +## Email Verification URL +You may instruct the API to use a different URL for email verification by using the Apiato [Apps](../framework-features/apps) feature. From be77a2d58ae01e5d2f5695c51430863745ad3899 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:44:05 +0330 Subject: [PATCH 84/91] Update hash-id.md --- docs/security/hash-id.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/security/hash-id.md b/docs/security/hash-id.md index eebf0bf59..f4432445e 100644 --- a/docs/security/hash-id.md +++ b/docs/security/hash-id.md @@ -23,6 +23,10 @@ If Hash ID feature is disabled, the `getHashedKey` method will return the normal 'id' => $user->getHashedKey(), ``` +:::tip +You may use the [hashids](../framework-features/helpers#hashids) helper function to access the Hash ID instance. +::: + ## Usage There are three ways to pass an ID to your system via the API: @@ -66,4 +70,5 @@ as it renders all previously generated IDs impossible to decode. ## Route Model Binding -Laravel [Route Model Binding](https://laravel.com/docs/routing#route-model-binding) feature is supported out of the box and Apiato will automatically decode the ID for you. +Laravel [Route Model Binding](https://laravel.com/docs/routing#route-model-binding) feature is supported out of the box, +and Apiato will automatically decode the ID for you. From 4ff68ba55984bb877d4d9a798b32965d48fdf7ce Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:44:06 +0330 Subject: [PATCH 85/91] Update password-reset.md --- docs/security/password-reset.md | 49 +++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/docs/security/password-reset.md b/docs/security/password-reset.md index 3a246818f..e927f14b6 100644 --- a/docs/security/password-reset.md +++ b/docs/security/password-reset.md @@ -3,35 +3,42 @@ sidebar_position: 6 title: Password Reset --- -Most web applications provide a way for users to reset their forgotten passwords. -Rather than forcing you to re-implement this by hand for every application you create, -Apiato provides convenient services for sending password reset links and secure resetting passwords. +Apiato provides a password reset feature out of the box +using the [Laravel's built-in password reset](https://laravel.com/docs/passwords) functionality. ## Configuration - -All the configuration options for the password reset feature are located in the `app/Containers/AppSection/Authorization/Configs/appSection-authentication` configuration file. - -Make sure that you have configured the `MAIL_FROM_ADDRESS` in your `.env` file. - -Include your web app's password reset page URL, such as `https://myapp.com/password/reset`, -in the `allowed-reset-password-urls` array within the `appSection-authentication` configuration. +Make sure that you configured your apps' +[mail](https://laravel.com/docs/mail) services correctly and the rest is already configured for you. ## Routing ### Requesting The Password Reset Link - -To request a password reset link, call the `/password/forgot` endpoint with the user's email address. +Send a `POST` request to the `forgot-password` endpoint with the user's email address to request a password reset link. +This will email the user with a link to reset their password. ### Resetting The Password +There are two main elements to handle the password reset process: -To reset the user's password, call the `/password/reset` endpoint with the user's email address, -new password, and password reset token. +- Frontend URL + - Define a route in your frontend app to handle the password reset link. +- API Configuration + - Configure your frontend app's password reset URL by either creating a new [App](../framework-features/apps) + or using the existing `App\Ship\Apps\Web` app. -## Process Flow - -1. Add your web app's password reset page URL, for example, `https://myapp.com/password/reset`, to the `allowed-reset-password-urls` array within the `appSection-authentication` configuration. +Next, +read the [Process Flow](#process-flow) section to understand how this ties into the overall password reset process. -2. Call the `/password/forgot` endpoint with a **reset URL** of your choice, which should correspond to one of the URLs in the `allowed-reset-password-urls` array. This endpoint will send the user an email containing a link like this: - `https://myapp.com/password/resetd?email=mohammad.alavi1990@gmail.com&token=51f8d80182f3785648c9b9dc7162719d158fc418b3cca86c14963638ec83d663` - -3. When the user clicks on that link, they will be directed to your front-end app's password reset page. From there, you can collect the user's new password and make a call to the `/password/reset` endpoint with all the required fields to complete the password reset. +## Process Flow +Let's assume you have a frontend app with a URL like `https://myapp.com/password/reset`. +The password reset process flow is as follows: + +1. The user requests a password reset link. +2. The API sends a reset password link to the user's email address. +3. The user clicks the link in the email. +4. The link redirects the user to the specified (Frontend) URL in the email. +5. The URL contains a `reset_url` query string parameter. +6. The frontend app makes a `POST` request to the `reset_url` to reset the user's password. +7. The API resets the user's password and returns a `200 OK` response. + +## Password Reset URL +You may instruct the API to use a different URL for password reset by using the Apiato [Apps](../framework-features/apps) feature. From dd42c59466176aa459ac9e93255cd799f0c5dfd3 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:44:11 +0330 Subject: [PATCH 86/91] Delete profiler.md --- docs/framework-features/profiler.md | 137 ---------------------------- 1 file changed, 137 deletions(-) delete mode 100644 docs/framework-features/profiler.md diff --git a/docs/framework-features/profiler.md b/docs/framework-features/profiler.md deleted file mode 100644 index 3d60ed873..000000000 --- a/docs/framework-features/profiler.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -sidebar_position: 4 -title: Profiler -tags: - - framework-feature - - profiler ---- - -Profiling is a crucial aspect of optimizing your application's performance -and gaining a deeper insight into the request handling process. -It can significantly expedite the debugging process. - -Apiato incorporates the third-party package [Laravel Debugbar](https://github.com/barryvdh/laravel-debugbar) -to gather profiling data. - -By default, this package presents the profiling data directly in the browser. -Nevertheless, -Apiato employs the `Apiato\Core\Middlewares\Http\ProfilerMiddleware` to include the profiling data in the response. - -The profiler feature is initially disabled by default. -To enable it, you should edit the `.env` file and set `DEBUGBAR_ENABLED=true`. - -To customize and manage the profiler response, -you'll need to make adjustments in the configuration file located at `app/Ship/Configs/debugbar.php`. - -The following is an example of the profiler response: -```json -{ - "_profiler": { - "__meta": { - "id": "X167f293230e3457f1bbd95d9c82aba4a", - "datetime": "2017-09-22 18:45:27", - "utime": 1506105927.799299, - "method": "GET", - "uri": "/", - "ip": "172.20.0.1" - }, - "messages": { - "count": 0, - "messages": [] - }, - "time": { - "start": 1506105922.742068, - "end": 1506105927.799333, - "duration": 5.057265043258667, - "duration_str": "5.06s", - "measures": [ - { - "label": "Booting", - "start": 1506105922.742068, - "relative_start": 0, - "end": 1506105923.524004, - "relative_end": 1506105923.524004, - "duration": 0.7819359302520752, - "duration_str": "781.94ms", - "params": [], - "collector": null - }, - { - "label": "Application", - "start": 1506105923.535343, - "relative_start": 0.7932748794555664, - "end": 1506105927.799336, - "relative_end": 0.00000286102294921875, - "duration": 4.26399302482605, - "duration_str": "4.26s", - "params": [], - "collector": null - } - ] - }, - "memory": { - "peak_usage": 13234248, - "peak_usage_str": "12.62MB" - }, - "exceptions": { - "count": 0, - "exceptions": [] - }, - "route": { - "uri": "GET /", - "middleware": "api, throttle:30,1", - "domain": "http://api.apiato.test", - "as": "apis_root_page", - "controller": "App\\Containers\\Welcome\\UI\\API\\Controllers\\Controller@apiRoot", - "namespace": "App\\Containers\\Welcome\\UI\\API\\Controllers", - "prefix": "/", - "where": [], - "file": "app/Containers/Welcome/UI/API/Controllers/Controller.php:20-25" - }, - "queries": { - "nb_statements": 0, - "nb_failed_statements": 0, - "accumulated_duration": 0, - "accumulated_duration_str": "0μs", - "statements": [] - }, - "logs": { - "count": 3, - "messages": [ - { - "message": "...", - "message_html": null, - "is_string": false, - "label": "error", - "time": 1506105927.694807 - }, - { - "message": "...", - "message_html": null, - "is_string": false, - "label": "error", - "time": 1506105927.694811 - }, - { - "message": "[2017-09-18 17:38:15] testing.INFO: New User registration. ID = 970ylqvaogmxnbdr | Email = apiato@mail.test. Thank you for signing up.\n\n\n\n \n", - "message_html": null, - "is_string": false, - "label": "info", - "time": 1506105927.694812 - } - ] - }, - "auth": { - "guards": { - "web": "array:2 [\n \"name\" => \"Guest\"\n \"user\" => array:1 [\n \"guest\" => true\n ]\n]", - "api": "array:2 [\n \"name\" => \"Guest\"\n \"user\" => array:1 [\n \"guest\" => true\n ]\n]" - }, - "names": "" - }, - "gate": { - "count": 0, - "messages": [] - } - } -} -``` From 3d9b743aba3c7c84692f511e94bd245615d388ef Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:44:16 +0330 Subject: [PATCH 87/91] Create apps.md --- docs/framework-features/apps.md | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 docs/framework-features/apps.md diff --git a/docs/framework-features/apps.md b/docs/framework-features/apps.md new file mode 100644 index 000000000..264f47065 --- /dev/null +++ b/docs/framework-features/apps.md @@ -0,0 +1,51 @@ +--- +sidebar_position: 1 +title: Apps +tags: + - framework-feature + - apps +--- + +When building APIs, you may need to accommodate multiple apps, each with distinct URLs. For instance, it is common to have separate web and mobile applications, each requiring unique verification and reset password URLs. + +Apiato come with a predefined `web` app, but you can create additional apps as needed. + +## Creating an App + +Create a class that implements the `Apiato\Ship\Apps\App` interface, then register it in the `apiato.php` config file. + +```php +'apps' => [ + 'web' => [ + 'class' => \App\Ship\Apps\Web::class, + 'url' => env('WEB_APP_URL', 'https://myapp.com'), + ], + 'mobile' => [ + 'class' => \App\Ship\Apps\Mobile::class, + 'url' => env('MOBILE_APP_URL', 'https://myapp.test'), + ], +], +``` + +In this example, we have two apps: `web` and `mobile`. + +The `url` key specifies the base URL for each app. You can use environment variables to set the URLs, which allows you to easily change them in different environments (e.g., local, staging, production). + +## Using the App +Retrieve the current app instance with `\App\Ship\Apps\AppFactory::current()`. The returned instance includes methods to get the base URL, verify email URL, and reset password URL. + +```php +$app = AppFactory::current(); + +$app->url(); +$app->verifyEmailUrl(); +$app->resetPasswordUrl(); +``` + +## Specifying the App in API Requests + +Include an `App-Identifier` header to specify which app to use during API requests. For example, to choose the `web` app, set: +``` +-H "App-Identifier: web" +``` +The API will then generate links (such as verification or password reset) based on the `web` configuration. From f0ea906b26b17313f83c14adea2592d64a4d7027 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:44:18 +0330 Subject: [PATCH 88/91] Create helpers.md --- docs/framework-features/helpers.md | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 docs/framework-features/helpers.md diff --git a/docs/framework-features/helpers.md b/docs/framework-features/helpers.md new file mode 100644 index 000000000..9e2846a4d --- /dev/null +++ b/docs/framework-features/helpers.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 0 +title: Helpers +tags: + - framework-feature + - helpers +--- + +## Introduction +Apiato includes a variety of global "helper" PHP functions. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient. + +## Available Functions + +#### `apiato` +This function returns the `Apiato` instance. It is a shortcut for `Apiato::instance()`. You can use it to access the `Apiato` class and its methods. For example: + +```php +// Get the app migration paths. +$paths = apiato()->migrations(); +``` + +#### `shared_path` +The `shared_path` function returns the fully qualified path to your application's shared components' directory. You may also use the `shared_path` function to generate a fully qualified path to a file relative to the application directory: + +```php +$path = shared_path(); + +$path = shared_path('Configs/apiato.php'); +``` + +#### `hashids` {#hashids} +The `hashids` function returns the Hash ID instance. You may use it to encode or decode IDs. For example: + +```php +$hashid = hashids()->encode(1); + +$decoded = hashids()->decode($hashid); +``` + From 734a335170a9528b0f955deea0dcb5e5b15a2acb Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:57:06 +0330 Subject: [PATCH 89/91] docs: create new category --- docs/digging-deeper/_category_.json | 5 +++++ docs/{framework-features => digging-deeper}/apps.md | 2 +- docs/{framework-features => digging-deeper}/helpers.md | 2 +- docs/{framework-features => digging-deeper}/rate-limiting.md | 2 +- docs/security/email-varification.md | 4 ++-- docs/security/hash-id.md | 2 +- docs/security/password-reset.md | 4 ++-- 7 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 docs/digging-deeper/_category_.json rename docs/{framework-features => digging-deeper}/apps.md (98%) rename docs/{framework-features => digging-deeper}/helpers.md (98%) rename docs/{framework-features => digging-deeper}/rate-limiting.md (98%) diff --git a/docs/digging-deeper/_category_.json b/docs/digging-deeper/_category_.json new file mode 100644 index 000000000..c6a006c09 --- /dev/null +++ b/docs/digging-deeper/_category_.json @@ -0,0 +1,5 @@ +{ + "position": 65, + "label": "Digging Deeper", + "collapsed": true +} diff --git a/docs/framework-features/apps.md b/docs/digging-deeper/apps.md similarity index 98% rename from docs/framework-features/apps.md rename to docs/digging-deeper/apps.md index 264f47065..1b399bc47 100644 --- a/docs/framework-features/apps.md +++ b/docs/digging-deeper/apps.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 0 title: Apps tags: - framework-feature diff --git a/docs/framework-features/helpers.md b/docs/digging-deeper/helpers.md similarity index 98% rename from docs/framework-features/helpers.md rename to docs/digging-deeper/helpers.md index 9e2846a4d..188e68fe2 100644 --- a/docs/framework-features/helpers.md +++ b/docs/digging-deeper/helpers.md @@ -1,5 +1,5 @@ --- -sidebar_position: 0 +sidebar_position: 1 title: Helpers tags: - framework-feature diff --git a/docs/framework-features/rate-limiting.md b/docs/digging-deeper/rate-limiting.md similarity index 98% rename from docs/framework-features/rate-limiting.md rename to docs/digging-deeper/rate-limiting.md index cd4adf394..e4b3b2c07 100644 --- a/docs/framework-features/rate-limiting.md +++ b/docs/digging-deeper/rate-limiting.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 2 title: Rate Limiting tags: - framework-feature diff --git a/docs/security/email-varification.md b/docs/security/email-varification.md index 82be9c81b..7ad64a994 100644 --- a/docs/security/email-varification.md +++ b/docs/security/email-varification.md @@ -22,7 +22,7 @@ There are two main elements to handle the email verification process: - Frontend URL - Define a route in your frontend app to handle the email verification link. - API Configuration - - Configure your frontend app's email verification URL by either creating a new [App](../framework-features/apps) + - Configure your frontend app's email verification URL by either creating a new [App](../digging-deeper/apps.md) or using the existing `App\Ship\Apps\Web` app. Next, @@ -53,4 +53,4 @@ The email verification process flow is as follows: 7. The API verifies the user's email and returns a `200 OK` response. ## Email Verification URL -You may instruct the API to use a different URL for email verification by using the Apiato [Apps](../framework-features/apps) feature. +You may instruct the API to use a different URL for email verification by using the Apiato [Apps](../digging-deeper/apps.md) feature. diff --git a/docs/security/hash-id.md b/docs/security/hash-id.md index f4432445e..a14af2825 100644 --- a/docs/security/hash-id.md +++ b/docs/security/hash-id.md @@ -24,7 +24,7 @@ If Hash ID feature is disabled, the `getHashedKey` method will return the normal ``` :::tip -You may use the [hashids](../framework-features/helpers#hashids) helper function to access the Hash ID instance. +You may use the [hashids](../digging-deeper/helpers.md#hashids) helper function to access the Hash ID instance. ::: ## Usage diff --git a/docs/security/password-reset.md b/docs/security/password-reset.md index e927f14b6..99347382c 100644 --- a/docs/security/password-reset.md +++ b/docs/security/password-reset.md @@ -22,7 +22,7 @@ There are two main elements to handle the password reset process: - Frontend URL - Define a route in your frontend app to handle the password reset link. - API Configuration - - Configure your frontend app's password reset URL by either creating a new [App](../framework-features/apps) + - Configure your frontend app's password reset URL by either creating a new [App](../digging-deeper/apps.md) or using the existing `App\Ship\Apps\Web` app. Next, @@ -41,4 +41,4 @@ The password reset process flow is as follows: 7. The API resets the user's password and returns a `200 OK` response. ## Password Reset URL -You may instruct the API to use a different URL for password reset by using the Apiato [Apps](../framework-features/apps) feature. +You may instruct the API to use a different URL for password reset by using the Apiato [Apps](../digging-deeper/apps.md) feature. From df404d9f395f9cc87833d5bbf211c8e2d6781df2 Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:58:02 +0330 Subject: [PATCH 90/91] Delete localization.md --- docs/pacakges/localization.md | 161 ---------------------------------- 1 file changed, 161 deletions(-) delete mode 100644 docs/pacakges/localization.md diff --git a/docs/pacakges/localization.md b/docs/pacakges/localization.md deleted file mode 100644 index ffc7e6317..000000000 --- a/docs/pacakges/localization.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -sidebar_position: 2 -title: Localization -tags: - - package ---- - -The Localization Container is built on top of Laravel's [localization](https://laravel.com/docs/localization) features -and provides a convenient way to create and manage translations for your application. - -## Requirements - -`Intl` PHP Extension is required to use this feature. - -## Installation - -```shell -composer require apiato/localization-container -``` - -## Publishing Configs -```shell -php artisan vendor:publish -``` -Config file will be placed at `app/Ship/Configs/vendor-localization.php` - -## Folder Structure - -```markdown -app -└── Containers - └── Section - └── Container - └── Languages - ├── en - │ ├── messages.php - │ ├── users.php - │ └── ... - ├── ar - │ ├── messages.php - │ ├── users.php - │ └── ... - └── ... -``` - -## Usage - -All Translations are namespaced with the following pattern: -```shell -camelCase of its Section name + `@` + camelCase of its Container name -``` - -Let's say we have a `welcome` translation key in the `app/Containers/MySection/MyContainer/en/messages.php` file. - -You can retrieve this translation like this: -```php -__('mySection@myContainer::messages.welcome'); -``` - -:::note -Translation files in **Ship** folder are exception to this and will be namespaced with the word "**ship**" -instead of section name, e.g. `__('ship::messages.welcome')` -::: - -## Adding New Languages - -Language files can be placed in any container's `Languages` folder. -You can also place general language files in `app/Ship/Languages`. -The language files placed in the default Laravel `lang` folder are still loaded and can be used as well. - -These language folders work exactly the same way as the default Laravel `lang` folder. - -:::note -Just create the `Languages` folder if it does not exist in your container or the `app/Ship` directory. -::: - -## Supporting New Languages - -All supported languages must be added to the `supported_languages` array in the `vendor-localization.php` config file -to prevent users from requesting unsupported languages. - -```php -'supported_languages' => [ - 'ar', - 'en' => [ - 'en-GB', - 'en-US', - ], - 'es', - 'fr', - 'fa', -], -``` - -## Requesting a Specific Language - -You can select the language of the response by adding the header `Accept-Language` to the request. By default, the -`Accept-Language` is set to the language defined in `config/app.php` `locale`. - -Please note -that the `Accept-Language` only declares that the client _would like_ to get the information in this specific language. -It is not a given that the API responds in that language! - -:::note -Please be sure that your client does not send an `Accept-Language` header automatically. Some REST clients -(e.g., `POSTMAN`) automatically add header-fields based on the operating-systems settings. So your `Accept-Language` header -may be set automatically without you knowing! -::: - -Now that we have a `Accept-Language` set, -the API will answer with the applied language in the `Content-Language` header of the response. -And if the requested language cannot be resolved (e.g., it is not defined), -an `UnsupportedLanguageException` will be thrown. - -The overall workflow of the Middleware is as follows: -1) Extract the `Accept-Language` field from the request header. If none is set, use the default locale from the config file -2) Build a list of all supported localizations based on the configuration of the respective container. If a language - (top level) contains regions (sub-level), order them like this: `['en-GB', 'en-US', 'en']` (the regions before languages, - as regions are more specific) -3) Check if the requested language is supported. - If the language is supported, set it as application language, if not throw an `Exception`. - -## Enable/Disable Localization - -To enable or disable the localization, -you can set the `LOCALIZATION_ENABLED` environment variable in the `.env` file -to `true` or `false` respectively. -This can also be done in the `vendor-localization.php` config file. - -## Retrieve Available Localizations - -Available localizations can be retrieved via `GET /localizations` endpoint. - -You will get a response like this: -```json -{ - "data": [ - { - "type": "Localization", - "id": "de", // The language code (same as 'language.code') - "language": { - "code": "de", // The language code - "default_name": "German", // The language name in the application's default language - "locale_name": "Deutsch" // The language name in its native form - "regions": [ - { - "code": "de-DE", // The region code - "default_name": "Germany", // The region name in the application's default language - "locale_name": "Deutschland" // The region name in its native form - }, - { - "code": "de-AT", // The region code - "default_name": "Austria", // The region name in the application's default language - "locale_name": "Österreich" // The region name in its native form - } - ] - } - } - ] -} -``` From 29ca72ee89ab3d33cc71fcfce6367140b479517f Mon Sep 17 00:00:00 2001 From: Mohammad Alavi Date: Mon, 14 Apr 2025 20:58:02 +0330 Subject: [PATCH 91/91] Delete social-authentication.md --- docs/pacakges/social-authentication.md | 166 ------------------------- 1 file changed, 166 deletions(-) delete mode 100644 docs/pacakges/social-authentication.md diff --git a/docs/pacakges/social-authentication.md b/docs/pacakges/social-authentication.md deleted file mode 100644 index 69f3efddb..000000000 --- a/docs/pacakges/social-authentication.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -sidebar_position: 3 -title: Social Authentication ---- - -Under the hood this container uses [Laravel Socialite](https://github.com/laravel/socialite). - -## Installation{#installation} -In the following instructions we assume we have a fresh **Apiato** installation. - -``` -composer require apiato/social-auth-container -``` -Now run `php artisan migrate` - -Add this values to $fillable array in your `User` model - -``` - protected $fillable = [ - ... - 'social_provider', - 'social_nickname', - 'social_id', - 'social_token', - 'social_token_secret', - 'social_refresh_token', - 'social_expires_in', - 'social_avatar', - 'social_avatar_original', - ... - ]; -``` - -Optionally add this to your user transformer to add social auth fields to your user repsonses: -```php -'social_auth_provider' => $user->social_provider, - 'social_nickname' => $user->social_nickname, - 'social_id' => $user->social_id, - 'social_avatar' => [ - 'avatar' => $user->social_avatar, - 'original' => $user->social_avatar_original, - ] -``` -:::tip -It is recommended to have 2 separate transformers (private & public) for the User e.g. `UserPrivateProfileTransformer` -& `UserTransformer` and add above data to the private transformer not the public one. By doing it this way you can hide -your User's personal data. -::: - -## Default Supported Auth Provide{#default-supported-auth-provide} - -* Google -* Facebook -* Twitter - -## How Social Authentication Works{#how-social-authentication-works} - -1. The Client (Mobile or Web) sends a request to the Social Auth Provider (Facebook, Twitter...). -2. The Social Auth Provider returns a Token. -3. The Client makes a call to the server (our server) and passes the Token. -4. The Server fetches the user data from the Social Auth Provider using Token. -5. The Server create new User from the collected social data and return the Authenticated User (If the user already - created then it just returns it). - -## Setup Social Authentication{#Setup-Social-Authentication} - -1. Create an App on the supported Social Auth provider. - -- For Facebook: [https://developers.facebook.com/apps](https://developers.facebook.com/apps) -- For Twitter: [https://apps.twitter.com/app](https://apps.twitter.com/app) -- For - Google: [https://console.developers.google.com/apis/credentials](https://console.developers.google.com/apis/credentials) - -2. For any supported provider you want to use, add their credentials to `config/services.php`. [read more](https://laravel.com/docs/socialite#configuration) - -3. Make a request from your client to get the `oauth` info. (Each Social provider returns different response and keys). - -Example Twitter Response: - -```json -{ - "User": { - "tokentoken": "1212", - "tokentokenSecret": "3434", - "tokenid": "777", - "tokennickname": "John_Doe", - "tokenname": "John Doe", - "tokenemail": null, - "tokenavatar": "https://pbs.twimg.com/images/888/PENrcePC.jpg", - "tokenuser": "token", - "avatar_original": "https://pbs.twimg.com/images/999/PENrcePC.jpg" - } -} -``` - -:::note -This step should be done by your client App, which could be a Web, Mobile or other kind of client Apps. -::: - -4. Use `auth/{provider}` route and the `oauth` info to make a call from your server to the Social Provider in order to -get the User info. For more details about the `auth/{provider}` route parameters checkout the generated documentation or -visit `app/Containers/Vendor/Socialauth/UI/API/Routes/AuthenticateAll.v1.private.php`. - -5. The endpoint above should return the User and his Personal Access Token. - -Example Google Response: - -```json -{ - "data": { - // user data - . - . - . - // additional social data if you have updated your transformer as mentioned above - "social_auth_provider": "google", - "social_id": "113834952367767922133", - "social_avatar": { - "avatar": "https:\/\/lh6.googleusercontent.com\/-OSItz6IHbSw\/AAA\/AMZuucltEs\/s96-c\/photo.jpg", - "original": "https:\/\/lh6.googleusercontent.com\/-OSItz6IHbSw\/AAA\/AMZuucltEs\/s96-c\/photo.jpg" - } - }, - "meta": { - "include": [ - "roles" - ], - "custom": { - "token_type": "personal", - "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...." - } - } -} -``` - -:::tip -For testing purposes Apiato provides two web endpoints -1. `/auth/{provider}/redirect` which act as a client (step 3 above) -2. `/auth/{provider}/callback` which you can use in your provider's developer dashboard for callback url. - Use those endpoints from your browser *(replace the provider with any of the supported providers `facebook`, `twitter`,...)* - to get the `oauth` info and user data respectively. - -::: - -## Social Authentication Container Customization {#social-auth-customization} -You may customize this container by publishing its config and modifying its values -``` -php artisan vendor:publish -``` -Config file will be copied to `app/Ship/Configs/vendor-socialAuth.php` - -### Support new Auth Provider {#support-new-auth-provide} -1. Publish the configs -2. Create your new auth provider - by implementing the `App\Containers\Vendor\SocialAuth\Contracts\SocialAuthProvider` contract. - To get an idea about how to implement your own provider you can check out supported providers here `app/Containers/Vendor/SocialAuth/SocialAuthProviders`. -3. Add your new provider to `providers` array in the `vendor-socialAuth` config. -```php - 'providers' => [ - ... - 'something' => Location\Of\Your\Provider\SomthingSocialAuthProvider::class, - ], -``` -### Changing default used Repository, Transformer & DB user table name {#changing-defaults} -This container depends on Apiato default user repository, transformer & database user table name. -If you changed those defaults you can update and provide them in the configs. -