From 7253e13ac2118f6f165f54ea0cbcd63d51ab9205 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sun, 28 Apr 2024 17:14:45 +0000 Subject: [PATCH 001/128] feat: add Plugins module with base files for plugins architecture --- .gitignore | 4 +++ app/Config/Autoload.php | 2 ++ ecs.php | 1 + modules/Plugins/BasePlugin.php | 33 +++++++++++++++++++ modules/Plugins/Commands/InstallCommand.php | 18 ++++++++++ modules/Plugins/Config/Plugins.php | 15 +++++++++ modules/Plugins/Config/Routes.php | 20 +++++++++++ modules/Plugins/Config/Services.php | 20 +++++++++++ .../Plugins/Controllers/PluginController.php | 17 ++++++++++ modules/Plugins/PluginInterface.php | 16 +++++++++ modules/Plugins/Plugins.php | 26 +++++++++++++++ phpstan.neon | 2 ++ plugins/.gitkeep | 0 13 files changed, 174 insertions(+) create mode 100644 modules/Plugins/BasePlugin.php create mode 100644 modules/Plugins/Commands/InstallCommand.php create mode 100644 modules/Plugins/Config/Plugins.php create mode 100644 modules/Plugins/Config/Routes.php create mode 100644 modules/Plugins/Config/Services.php create mode 100644 modules/Plugins/Controllers/PluginController.php create mode 100644 modules/Plugins/PluginInterface.php create mode 100644 modules/Plugins/Plugins.php create mode 100644 plugins/.gitkeep diff --git a/.gitignore b/.gitignore index 539bf182..b30b7fb4 100644 --- a/.gitignore +++ b/.gitignore @@ -187,3 +187,7 @@ data castopod/ castopod-*.zip castopod-*.tar.gz + +# Plugins +plugins/* +!plugins/.gitkeep diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index 45072e31..2f48aa63 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -50,10 +50,12 @@ class Autoload extends AutoloadConfig 'Modules\Media' => ROOTPATH . 'modules/Media/', 'Modules\MediaClipper' => ROOTPATH . 'modules/MediaClipper/', 'Modules\Platforms' => ROOTPATH . 'modules/Platforms/', + 'Modules\Plugins' => ROOTPATH . 'modules/Plugins/', 'Modules\PodcastImport' => ROOTPATH . 'modules/PodcastImport/', 'Modules\PremiumPodcasts' => ROOTPATH . 'modules/PremiumPodcasts/', 'Modules\Update' => ROOTPATH . 'modules/Update/', 'Modules\WebSub' => ROOTPATH . 'modules/WebSub/', + 'Plugins' => ROOTPATH . 'plugins', 'Themes' => ROOTPATH . 'themes', 'ViewComponents' => APPPATH . 'Libraries/ViewComponents/', 'ViewThemes' => APPPATH . 'Libraries/ViewThemes/', diff --git a/ecs.php b/ecs.php index 87351225..4d41a5ce 100644 --- a/ecs.php +++ b/ecs.php @@ -15,6 +15,7 @@ return ECSConfig::configure() ->withPaths([ __DIR__ . '/app', __DIR__ . '/modules', + __DIR__ . '/plugins', __DIR__ . '/themes', __DIR__ . '/tests', __DIR__ . '/public', diff --git a/modules/Plugins/BasePlugin.php b/modules/Plugins/BasePlugin.php new file mode 100644 index 00000000..5a61d2b8 --- /dev/null +++ b/modules/Plugins/BasePlugin.php @@ -0,0 +1,33 @@ + $params + */ + public function run(array $params): void + { + // TODO: + } +} diff --git a/modules/Plugins/Config/Plugins.php b/modules/Plugins/Config/Plugins.php new file mode 100644 index 00000000..08cbb8e7 --- /dev/null +++ b/modules/Plugins/Config/Plugins.php @@ -0,0 +1,15 @@ + + */ + public array $repositories = ['https://castopod.org/plugins/repository.json']; +} diff --git a/modules/Plugins/Config/Routes.php b/modules/Plugins/Config/Routes.php new file mode 100644 index 00000000..984bbc5a --- /dev/null +++ b/modules/Plugins/Config/Routes.php @@ -0,0 +1,20 @@ +group( + config('Admin') +->gateway, + [ + 'namespace' => 'Modules\Plugins\Controllers', + ], + static function ($routes): void { + $routes->get('plugins', 'PluginsController', [ + 'as' => 'plugins', + 'filter' => 'permission:podcasts.import', + ]); + } +); diff --git a/modules/Plugins/Config/Services.php b/modules/Plugins/Config/Services.php new file mode 100644 index 00000000..96113ee7 --- /dev/null +++ b/modules/Plugins/Config/Services.php @@ -0,0 +1,20 @@ + $plugins->getInstalled(), + ]); + } +} diff --git a/modules/Plugins/PluginInterface.php b/modules/Plugins/PluginInterface.php new file mode 100644 index 00000000..7c46f18b --- /dev/null +++ b/modules/Plugins/PluginInterface.php @@ -0,0 +1,16 @@ + + */ + protected array $installed = []; + + public function registerPlugin(PluginInterface $plugin): void + { + $this->installed[] = $plugin; + } + + /** + * @return array + */ + public function getInstalled(): array + { + return $this->installed; + } +} diff --git a/phpstan.neon b/phpstan.neon index 9982f691..8b003672 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -27,6 +27,7 @@ parameters: - Modules\Install\Config\ - Modules\Media\Config\ - Modules\MediaClipper\Config\ + - Modules\Plugins\Config\ - Modules\PodcastImport\Config\ - Modules\PremiumPodcasts\Config\ - Modules\WebSub\Config\ @@ -45,6 +46,7 @@ parameters: - Michalsn\Uuid\Config\Services - Modules\Media\Config\Services - Modules\Platforms\Config\Services + - Modules\Plugins\Config\Services - Modules\PremiumPodcasts\Config\Services ignoreErrors: - '#^Call to an undefined method CodeIgniter\\Cache\\CacheInterface\:\:deleteMatching\(\)#' diff --git a/plugins/.gitkeep b/plugins/.gitkeep new file mode 100644 index 00000000..e69de29b From 587938d2bf307b823af143586b9ec9e9b44e8dc1 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 29 Apr 2024 16:03:00 +0000 Subject: [PATCH 002/128] feat(plugins): load plugins using file locator service --- app/Helpers/rss_helper.php | 4 ++++ modules/Plugins/Plugins.php | 46 +++++++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index 90f9ee71..bd13598e 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -31,6 +31,8 @@ if (! function_exists('get_rss_feed')) { Subscription $subscription = null, string $token = null ): string { + $plugins = service('plugins'); + $episodes = $podcast->episodes; $itunesNamespace = 'http://www.itunes.com/dtds/podcast-1.0.dtd'; @@ -69,6 +71,8 @@ if (! function_exists('get_rss_feed')) { $channel->addChild('generator', 'Castopod - https://castopod.org/'); $channel->addChild('docs', 'https://cyber.harvard.edu/rss/rss.html'); + $plugins->runHook('setChannelTag', [$podcast, $channel]); + if ($podcast->guid === '') { // FIXME: guid shouldn't be empty here as it should be filled upon Podcast creation $uuid = service('uuid'); diff --git a/modules/Plugins/Plugins.php b/modules/Plugins/Plugins.php index cebc49fa..9dc5bd57 100644 --- a/modules/Plugins/Plugins.php +++ b/modules/Plugins/Plugins.php @@ -9,18 +9,54 @@ class Plugins /** * @var array */ - protected array $installed = []; + protected static array $plugins = []; - public function registerPlugin(PluginInterface $plugin): void + public function __construct() { - $this->installed[] = $plugin; + $this->registerPlugins(); } /** * @return array */ - public function getInstalled(): array + public function getPlugins(): array { - return $this->installed; + return $this->plugins; + } + + /** + * @param array $parameters + */ + public function runHook(string $name, array $parameters): void + { + dd(static::$plugins); + // only run active plugins' hooks + foreach (static::$plugins as $plugin) { + $plugin->{$name}(...$parameters); + } + } + + protected function registerPlugins(): void + { + $locator = service('locator'); + $pluginsFiles = $locator->search('HelloWorld/Plugin.php'); + + // dd($pluginsFiles); + + foreach ($pluginsFiles as $file) { + $className = $locator->findQualifiedNameFromPath($file); + + dd($file); + if ($className === false) { + continue; + } + + $plugin = new $className(); + if (! $plugin instanceof PluginInterface) { + continue; + } + + static::$plugins[] = $plugin; + } } } From 27d2a1b0ffba9454dd54cbb4251a2d179b09762a Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Wed, 1 May 2024 14:48:05 +0000 Subject: [PATCH 003/128] feat(plugins): activate / deactivate plugin using settings table + load plugin icon + add pagination + autoload plugins in Config/Autoload.php to handle plugin i18n + style plugin cards --- app/Config/Autoload.php | 17 +- app/Helpers/rss_helper.php | 9 +- modules/Admin/Language/en/Breadcrumb.php | 1 + modules/Admin/Language/en/Navigation.php | 2 + modules/Auth/Config/AuthGroups.php | 2 + modules/Plugins/BasePlugin.php | 151 +++++++++++++++++- modules/Plugins/Config/Routes.php | 18 ++- .../Plugins/Controllers/PluginController.php | 17 -- .../Plugins/Controllers/PluginsController.php | 46 ++++++ modules/Plugins/Helpers/plugins_helper.php | 24 +++ modules/Plugins/Language/en/Plugins.php | 22 +++ modules/Plugins/Plugins.php | 84 ++++++++-- tailwind.config.cjs | 1 + themes/cp_admin/_sidebar.php | 9 ++ themes/cp_admin/plugins/_plugin.php | 23 +++ themes/cp_admin/plugins/installed.php | 24 +++ 16 files changed, 407 insertions(+), 43 deletions(-) delete mode 100644 modules/Plugins/Controllers/PluginController.php create mode 100644 modules/Plugins/Controllers/PluginsController.php create mode 100644 modules/Plugins/Helpers/plugins_helper.php create mode 100644 modules/Plugins/Language/en/Plugins.php create mode 100644 themes/cp_admin/plugins/_plugin.php create mode 100644 themes/cp_admin/plugins/installed.php diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index 2f48aa63..69589a22 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -55,7 +55,6 @@ class Autoload extends AutoloadConfig 'Modules\PremiumPodcasts' => ROOTPATH . 'modules/PremiumPodcasts/', 'Modules\Update' => ROOTPATH . 'modules/Update/', 'Modules\WebSub' => ROOTPATH . 'modules/WebSub/', - 'Plugins' => ROOTPATH . 'plugins', 'Themes' => ROOTPATH . 'themes', 'ViewComponents' => APPPATH . 'Libraries/ViewComponents/', 'ViewThemes' => APPPATH . 'Libraries/ViewThemes/', @@ -111,4 +110,20 @@ class Autoload extends AutoloadConfig * @var list */ public $helpers = ['auth', 'setting', 'icons']; + + public function __construct() + { + // load plugins namespaces + $pluginsPaths = glob(ROOTPATH . '/plugins/*', GLOB_ONLYDIR); + + if (! $pluginsPaths) { + $pluginsPaths = []; + } + + foreach ($pluginsPaths as $pluginPath) { + $this->psr4[sprintf('Plugins\%s', basename($pluginPath))] = $pluginPath; + } + + parent::__construct(); + } } diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index bd13598e..dc5e1cee 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -16,6 +16,7 @@ use CodeIgniter\I18n\Time; use Config\Mimes; use Modules\Media\Entities\Chapters; use Modules\Media\Entities\Transcript; +use Modules\Plugins\Plugins; use Modules\PremiumPodcasts\Entities\Subscription; if (! function_exists('get_rss_feed')) { @@ -31,6 +32,7 @@ if (! function_exists('get_rss_feed')) { Subscription $subscription = null, string $token = null ): string { + /** @var Plugins $plugins */ $plugins = service('plugins'); $episodes = $podcast->episodes; @@ -71,8 +73,6 @@ if (! function_exists('get_rss_feed')) { $channel->addChild('generator', 'Castopod - https://castopod.org/'); $channel->addChild('docs', 'https://cyber.harvard.edu/rss/rss.html'); - $plugins->runHook('setChannelTag', [$podcast, $channel]); - if ($podcast->guid === '') { // FIXME: guid shouldn't be empty here as it should be filled upon Podcast creation $uuid = service('uuid'); @@ -297,6 +297,9 @@ if (! function_exists('get_rss_feed')) { ], $channel); } + // run plugins hook at the end + $plugins->setChannelTag($podcast, $channel); + foreach ($episodes as $episode) { if ($episode->is_premium && ! $subscription instanceof Subscription) { continue; @@ -456,6 +459,8 @@ if (! function_exists('get_rss_feed')) { 'elements' => $episode->custom_rss, ], $item); } + + $plugins->setItemTag($episode, $item); } return $rss->asXML(); diff --git a/modules/Admin/Language/en/Breadcrumb.php b/modules/Admin/Language/en/Breadcrumb.php index 408c9f9f..fedd6b19 100644 --- a/modules/Admin/Language/en/Breadcrumb.php +++ b/modules/Admin/Language/en/Breadcrumb.php @@ -23,6 +23,7 @@ return [ 'add' => 'add', 'new' => 'new', 'edit' => 'edit', + 'plugins' => 'plugins', 'persons' => 'persons', 'publish' => 'publish', 'publish-edit' => 'edit publication', diff --git a/modules/Admin/Language/en/Navigation.php b/modules/Admin/Language/en/Navigation.php index f3ffb129..fc7cfc30 100644 --- a/modules/Admin/Language/en/Navigation.php +++ b/modules/Admin/Language/en/Navigation.php @@ -20,6 +20,8 @@ return [ 'podcast-create' => 'New podcast', 'all-podcast-imports' => 'All Podcast imports', 'podcast-imports-add' => 'Import a podcast', + 'plugins' => 'Plugins', + 'plugins-installed' => 'Installed', 'persons' => 'Persons', 'person-list' => 'All persons', 'person-create' => 'New person', diff --git a/modules/Auth/Config/AuthGroups.php b/modules/Auth/Config/AuthGroups.php index 06fe419b..9d3ff5a8 100644 --- a/modules/Auth/Config/AuthGroups.php +++ b/modules/Auth/Config/AuthGroups.php @@ -107,6 +107,7 @@ class AuthGroups extends ShieldAuthGroups public array $instanceBasePermissions = [ 'admin.access', 'admin.settings', + 'plugins.manage', 'users.manage', 'persons.manage', 'pages.manage', @@ -122,6 +123,7 @@ class AuthGroups extends ShieldAuthGroups public array $instanceMatrix = [ 'superadmin' => [ 'admin.*', + 'plugins.*', 'podcasts.*', 'users.manage', 'persons.manage', diff --git a/modules/Plugins/BasePlugin.php b/modules/Plugins/BasePlugin.php index 5a61d2b8..d73683c1 100644 --- a/modules/Plugins/BasePlugin.php +++ b/modules/Plugins/BasePlugin.php @@ -7,13 +7,49 @@ namespace Modules\Plugins; use App\Entities\Episode; use App\Entities\Podcast; use App\Libraries\SimpleRSSElement; +use CodeIgniter\I18n\Time; +use RuntimeException; +/** + * @property string $name + * @property string $description + * @property string $version + * @property string $website + * @property Time $releaseDate + * @property string $author + * @property string $license + * @property string $compatible + * @property string[] $keywords + * @property string $iconSrc + */ abstract class BasePlugin implements PluginInterface { - public function __construct() + protected bool $active; + + public function __construct( + protected string $key, + protected string $filePath + ) { + $pluginDirectory = dirname($filePath); + + $manifest = $this->loadManifest($pluginDirectory . '/manifest.json'); + + foreach ($manifest as $key => $value) { + $this->{$key} = $value; + } + + // check that plugin is active + $this->active = get_plugin_option($this->key, 'active') ?? false; + + $this->iconSrc = $this->loadIcon($pluginDirectory . '/icon.svg'); + } + + /** + * @param list|string $value + */ + public function __set(string $name, array|string $value): void { - // load metadata from json - // load name, description, etc. + $this->{$name} = $name === 'releaseDate' ? Time::createFromFormat('Y-m-d', $value) : $value; } public function init(): void @@ -30,4 +66,113 @@ abstract class BasePlugin implements PluginInterface public function setItemTag(Episode $episode, SimpleRSSElement $item): void { } + + final public function isActive(): bool + { + return $this->active; + } + + final public function getKey(): string + { + return $this->key; + } + + final public function getName(): string + { + $key = sprintf('Plugin.%s.name', $this->key); + /** @var string $name */ + $name = lang($key); + + if ($name === $key) { + return $this->name; + } + + return $name; + } + + final public function getDescription(): string + { + $key = sprintf('Plugin.%s.description', $this->key); + + /** @var string $description */ + $description = lang($key); + + if ($description === $key) { + return $this->description; + } + + return $description; + } + + final protected function getOption(string $option): mixed + { + return get_plugin_option($this->key, $option); + } + + final protected function setOption(string $option, mixed $value = null): void + { + set_plugin_option($this->key, $option, $value); + } + + /** + * @return array> + */ + private function loadManifest(string $path): array + { + // TODO: cache manifest data + + $manifestContents = file_get_contents($path); + + if (! $manifestContents) { + throw new RuntimeException('manifest file not found!'); + } + + /** @var array|null $manifest */ + $manifest = json_decode($manifestContents, true); + + if ($manifest === null) { + throw new RuntimeException('manifest.json is not a valid JSON', 1); + } + + $rules = [ + 'name' => 'required|max_length[32]', + 'version' => 'required|regex_match[/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/]', + 'compatible' => 'required|in_list[1.0]', + 'description' => 'max_length[128]', + 'releaseDate' => 'valid_date[Y-m-d]', + 'license' => 'in_list[MIT]', + 'author.name' => 'max_length[32]', + 'author.email' => 'valid_email', + 'author.url' => 'valid_url_strict', + 'website' => 'valid_url_strict', + 'keywords.*' => 'in_list[seo,podcasting20,analytics]', + ]; + + $validation = service('validation'); + + $validation->setRules($rules); + + if (! $validation->run($manifest)) { + dd($validation->getErrors()); + } + + return $validation->getValidated(); + } + + private function loadIcon(string $path): string + { + // TODO: cache icon + $svgIcon = @file_get_contents($path); + + if (! $svgIcon) { + return "data:image/svg+xml;utf8,%3Csvg xmlns='http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' viewBox='0 0 64 64'%3E%3Cpath fill='%2300564A' d='M0 0h64v64H0z'%2F%3E%3Cpath fill='%23E7F9E4' d='M25.3 18.7a5 5 0 1 1 9.7 1.6h7c1 0 1.7.8 1.7 1.7v7a5 5 0 1 1 0 9.4v7c0 .9-.8 1.6-1.7 1.6H18.7c-1 0-1.7-.7-1.7-1.7V22c0-1 .7-1.7 1.7-1.7h7a5 5 0 0 1-.4-1.6Z'%2F%3E%3C%2Fsvg%3E"; + } + + $encodedIcon = rawurlencode(str_replace(["\r", "\n"], ' ', $svgIcon)); + return 'data:image/svg+xml;utf8,' . str_replace( + ['%20', '%22', '%27', '%3D'], + [' ', "'", "'", '='], + $encodedIcon + ); + } } diff --git a/modules/Plugins/Config/Routes.php b/modules/Plugins/Config/Routes.php index 984bbc5a..ff80bddd 100644 --- a/modules/Plugins/Config/Routes.php +++ b/modules/Plugins/Config/Routes.php @@ -12,9 +12,19 @@ $routes->group( 'namespace' => 'Modules\Plugins\Controllers', ], static function ($routes): void { - $routes->get('plugins', 'PluginsController', [ - 'as' => 'plugins', - 'filter' => 'permission:podcasts.import', - ]); + $routes->group('plugins', static function ($routes): void { + $routes->get('/', 'PluginsController::installed', [ + 'as' => 'plugins-installed', + 'filter' => 'permission:plugins.manage', + ]); + $routes->post('activate/(:segment)', 'PluginsController::activate/$1', [ + 'as' => 'plugins-activate', + 'filter' => 'permission:plugins.manage', + ]); + $routes->post('deactivate/(:segment)', 'PluginsController::deactivate/$1', [ + 'as' => 'plugins-deactivate', + 'filter' => 'permission:plugins.manage', + ]); + }); } ); diff --git a/modules/Plugins/Controllers/PluginController.php b/modules/Plugins/Controllers/PluginController.php deleted file mode 100644 index 8e9e5438..00000000 --- a/modules/Plugins/Controllers/PluginController.php +++ /dev/null @@ -1,17 +0,0 @@ - $plugins->getInstalled(), - ]); - } -} diff --git a/modules/Plugins/Controllers/PluginsController.php b/modules/Plugins/Controllers/PluginsController.php new file mode 100644 index 00000000..dc3989c9 --- /dev/null +++ b/modules/Plugins/Controllers/PluginsController.php @@ -0,0 +1,46 @@ +request->getGet('page') ?? 1); + $perPage = 10; + $total = $plugins->getInstalledCount(); + + $pager_links = $pager->makeLinks($page, $perPage, $total); + + return view('plugins/installed', [ + 'total' => $total, + 'plugins' => $plugins->getPlugins($page, $perPage), + 'pager_links' => $pager_links, + ]); + } + + public function activate(string $pluginKey): RedirectResponse + { + service('plugins')->activate($pluginKey); + + return redirect()->back(); + } + + public function deactivate(string $pluginKey): RedirectResponse + { + service('plugins')->deactivate($pluginKey); + + return redirect()->back(); + } +} diff --git a/modules/Plugins/Helpers/plugins_helper.php b/modules/Plugins/Helpers/plugins_helper.php new file mode 100644 index 00000000..8b0e205e --- /dev/null +++ b/modules/Plugins/Helpers/plugins_helper.php @@ -0,0 +1,24 @@ +get($key, $context); + } +} + +if (! function_exists('set_plugin_option')) { + function set_plugin_option(string $pluginKey, string $option, mixed $value = null): void + { + $key = sprintf('Plugins.%s', $option); + $context = sprintf('plugin:%s', $pluginKey); + + setting() + ->set($key, $value, $context); + } +} diff --git a/modules/Plugins/Language/en/Plugins.php b/modules/Plugins/Language/en/Plugins.php new file mode 100644 index 00000000..f801caa1 --- /dev/null +++ b/modules/Plugins/Language/en/Plugins.php @@ -0,0 +1,22 @@ + "Installed plugins ({count})", + "website" => "Website", + "activate" => "Activate", + "deactivate" => "Deactivate", + "keywords" => [ + 'podcasting20' => 'Podcasting 2.0', + 'seo' => 'SEO', + 'analytics' => 'Analytics', + 'accessibility' => 'Accessibility', + ], +]; diff --git a/modules/Plugins/Plugins.php b/modules/Plugins/Plugins.php index 9dc5bd57..48c6a42a 100644 --- a/modules/Plugins/Plugins.php +++ b/modules/Plugins/Plugins.php @@ -4,59 +4,111 @@ declare(strict_types=1); namespace Modules\Plugins; +use App\Entities\Episode; +use App\Entities\Podcast; +use App\Libraries\SimpleRSSElement; + +/** + * @method void setChannelTag(Podcast $podcast, SimpleRSSElement $channel) + * @method void setItemTag(Episode $episode, SimpleRSSElement $item) + */ class Plugins { + protected const API_VERSION = '1.0'; + /** - * @var array + * @var list + */ + protected const HOOKS = ['setChannelTag', 'setItemTag']; + + /** + * @var array */ protected static array $plugins = []; + protected static int $installedCount = 0; + public function __construct() { + helper('plugins'); + $this->registerPlugins(); } /** - * @return array + * @param value-of $name + * @param array $arguments */ - public function getPlugins(): array + public function __call(string $name, array $arguments): void { - return $this->plugins; + if (! in_array($name, static::HOOKS, true)) { + return; + } + + $this->runHook($name, $arguments); } /** - * @param array $parameters + * @return array */ - public function runHook(string $name, array $parameters): void + public function getPlugins(int $page, int $perPage): array + { + return array_slice(static::$plugins, (($page - 1) * $perPage), $perPage); + } + + /** + * @param value-of $name + * @param array $arguments + */ + public function runHook(string $name, array $arguments): void { - dd(static::$plugins); - // only run active plugins' hooks foreach (static::$plugins as $plugin) { - $plugin->{$name}(...$parameters); + // only run hook on active plugins + if ($plugin->isActive()) { + $plugin->{$name}(...$arguments); + } } } + public function activate(string $pluginKey): void + { + set_plugin_option($pluginKey, 'active', true); + } + + public function deactivate(string $pluginKey): void + { + set_plugin_option($pluginKey, 'active', false); + } + + public function getInstalledCount(): int + { + return static::$installedCount; + } + protected function registerPlugins(): void { + // search for plugins in plugins folder + $pluginsFiles = glob(ROOTPATH . '/plugins/**/Plugin.php', GLOB_NOSORT); + + if (! $pluginsFiles) { + return; + } + $locator = service('locator'); - $pluginsFiles = $locator->search('HelloWorld/Plugin.php'); - - // dd($pluginsFiles); - foreach ($pluginsFiles as $file) { $className = $locator->findQualifiedNameFromPath($file); - dd($file); if ($className === false) { continue; } - $plugin = new $className(); - if (! $plugin instanceof PluginInterface) { + $plugin = new $className(basename(dirname($file)), $file); + if (! $plugin instanceof BasePlugin) { continue; } static::$plugins[] = $plugin; + ++static::$installedCount; } } } diff --git a/tailwind.config.cjs b/tailwind.config.cjs index 717a152c..2e7248f1 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -118,6 +118,7 @@ module.exports = { latestEpisodes: "repeat(5, 1fr)", colorButtons: "repeat(auto-fill, minmax(4rem, 1fr))", platforms: "repeat(auto-fill, minmax(18rem, 1fr))", + plugins: "repeat(auto-fill, minmax(20rem, 1fr))", }, gridTemplateRows: { admin: "40px 1fr", diff --git a/themes/cp_admin/_sidebar.php b/themes/cp_admin/_sidebar.php index 8279b8e3..d33f6518 100644 --- a/themes/cp_admin/_sidebar.php +++ b/themes/cp_admin/_sidebar.php @@ -21,6 +21,15 @@ $navigation = [ 'add-cta' => 'podcast-create', 'count-route' => 'podcast-list', ], + 'plugins' => [ + 'icon' => 'puzzle-fill', // @icon('puzzle-fill') + 'items' => ['plugins-installed'], + 'items-permissions' => [ + 'plugins-installed' => 'plugins.manage', + ], + 'count' => service('plugins')->getInstalledCount(), + 'count-route' => 'plugins-installed', + ], 'persons' => [ 'icon' => 'folder-user-fill', // @icon('folder-user-fill') 'items' => ['person-list', 'person-create'], diff --git a/themes/cp_admin/plugins/_plugin.php b/themes/cp_admin/plugins/_plugin.php new file mode 100644 index 00000000..fe0f41a7 --- /dev/null +++ b/themes/cp_admin/plugins/_plugin.php @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/themes/cp_admin/plugins/installed.php b/themes/cp_admin/plugins/installed.php new file mode 100644 index 00000000..4038623f --- /dev/null +++ b/themes/cp_admin/plugins/installed.php @@ -0,0 +1,24 @@ +extend('_layout') ?> + +section('title') ?> + $total, +]) ?> +endSection() ?> + +section('pageTitle') ?> + $total, +]) ?> +endSection() ?> + +section('content') ?> +
+ $plugin, + ]); +} ?> +
+ +endSection() ?> From e80a33bf2ad4fe1b47037add7470a6c2770f4036 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Wed, 1 May 2024 15:41:13 +0000 Subject: [PATCH 004/128] feat(plugins): add siteHead hook to add custom meta tags to public pages --- app/Config/View.php | 3 ++- app/Helpers/rss_helper.php | 4 ++-- app/Views/Decorators/SiteHead.php | 36 +++++++++++++++++++++++++++++ modules/Plugins/BasePlugin.php | 8 +++++-- modules/Plugins/PluginInterface.php | 6 +++-- modules/Plugins/Plugins.php | 7 +++--- 6 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 app/Views/Decorators/SiteHead.php diff --git a/app/Config/View.php b/app/Config/View.php index 7225324c..c43985de 100644 --- a/app/Config/View.php +++ b/app/Config/View.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace Config; +use App\Views\Decorators\SiteHead; use CodeIgniter\Config\View as BaseView; use CodeIgniter\View\ViewDecoratorInterface; use ViewComponents\Decorator; @@ -53,5 +54,5 @@ class View extends BaseView * * @var list> */ - public array $decorators = [Decorator::class]; + public array $decorators = [Decorator::class, SiteHead::class]; } diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index dc5e1cee..bf7918ba 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -298,7 +298,7 @@ if (! function_exists('get_rss_feed')) { } // run plugins hook at the end - $plugins->setChannelTag($podcast, $channel); + $plugins->channelTag($podcast, $channel); foreach ($episodes as $episode) { if ($episode->is_premium && ! $subscription instanceof Subscription) { @@ -460,7 +460,7 @@ if (! function_exists('get_rss_feed')) { ], $item); } - $plugins->setItemTag($episode, $item); + $plugins->itemTag($episode, $item); } return $rss->asXML(); diff --git a/app/Views/Decorators/SiteHead.php b/app/Views/Decorators/SiteHead.php new file mode 100644 index 00000000..ff8e91a1 --- /dev/null +++ b/app/Views/Decorators/SiteHead.php @@ -0,0 +1,36 @@ +gateway . '*') || url_is(config('Install')->gateway)) { + return $html; + } + + if (static::$renderedCount > 0) { + return $html; + } + + ob_start(); // Start output buffering + // run hook to add tags to + service('plugins')->siteHead(); + $metaTags = ob_get_contents(); // Store buffer in variable + ob_end_clean(); + + if (str_contains($html, '')) { + $html = str_replace('', "\n\t{$metaTags}\n", $html); + ++static::$renderedCount; + } + + return $html; + } +} diff --git a/modules/Plugins/BasePlugin.php b/modules/Plugins/BasePlugin.php index d73683c1..973dc31e 100644 --- a/modules/Plugins/BasePlugin.php +++ b/modules/Plugins/BasePlugin.php @@ -59,11 +59,15 @@ abstract class BasePlugin implements PluginInterface // TODO: setup navigation and views? } - public function setChannelTag(Podcast $podcast, SimpleRSSElement $channel): void + public function channelTag(Podcast $podcast, SimpleRSSElement $channel): void { } - public function setItemTag(Episode $episode, SimpleRSSElement $item): void + public function itemTag(Episode $episode, SimpleRSSElement $item): void + { + } + + public function siteHead(): void { } diff --git a/modules/Plugins/PluginInterface.php b/modules/Plugins/PluginInterface.php index 7c46f18b..229ff290 100644 --- a/modules/Plugins/PluginInterface.php +++ b/modules/Plugins/PluginInterface.php @@ -10,7 +10,9 @@ use App\Libraries\SimpleRSSElement; interface PluginInterface { - public function setChannelTag(Podcast $podcast, SimpleRSSElement $channel): void; + public function channelTag(Podcast $podcast, SimpleRSSElement $channel): void; - public function setItemTag(Episode $episode, SimpleRSSElement $item): void; + public function itemTag(Episode $episode, SimpleRSSElement $item): void; + + public function siteHead(): void; } diff --git a/modules/Plugins/Plugins.php b/modules/Plugins/Plugins.php index 48c6a42a..0995cc2a 100644 --- a/modules/Plugins/Plugins.php +++ b/modules/Plugins/Plugins.php @@ -9,8 +9,9 @@ use App\Entities\Podcast; use App\Libraries\SimpleRSSElement; /** - * @method void setChannelTag(Podcast $podcast, SimpleRSSElement $channel) - * @method void setItemTag(Episode $episode, SimpleRSSElement $item) + * @method void channelTag(Podcast $podcast, SimpleRSSElement $channel) + * @method void itemTag(Episode $episode, SimpleRSSElement $item) + * @method string siteHead() */ class Plugins { @@ -19,7 +20,7 @@ class Plugins /** * @var list */ - protected const HOOKS = ['setChannelTag', 'setItemTag']; + protected const HOOKS = ['channelTag', 'itemTag', 'siteHead']; /** * @var array From 3d8aedf9c34e6927b6d3b11445d5f0e669b347d7 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Wed, 1 May 2024 18:37:38 +0000 Subject: [PATCH 005/128] feat(plugins): add options to manifest for building forms and storing plugin settings --- app/Config/Autoload.php | 2 +- modules/Plugins/BasePlugin.php | 65 ++++++++++++++++--- modules/Plugins/Config/Routes.php | 8 +++ .../Plugins/Controllers/PluginsController.php | 38 +++++++++++ modules/Plugins/Helpers/plugins_helper.php | 42 ++++++++++++ modules/Plugins/Plugins.php | 33 ++++++++-- themes/cp_admin/plugins/_plugin.php | 4 ++ themes/cp_admin/plugins/settings.php | 15 +++++ 8 files changed, 193 insertions(+), 14 deletions(-) create mode 100644 themes/cp_admin/plugins/settings.php diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index 69589a22..c75ea20c 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -114,7 +114,7 @@ class Autoload extends AutoloadConfig public function __construct() { // load plugins namespaces - $pluginsPaths = glob(ROOTPATH . '/plugins/*', GLOB_ONLYDIR); + $pluginsPaths = glob(ROOTPATH . '/plugins/*', GLOB_ONLYDIR | GLOB_NOSORT); if (! $pluginsPaths) { $pluginsPaths = []; diff --git a/modules/Plugins/BasePlugin.php b/modules/Plugins/BasePlugin.php index 973dc31e..db808aa4 100644 --- a/modules/Plugins/BasePlugin.php +++ b/modules/Plugins/BasePlugin.php @@ -20,7 +20,9 @@ use RuntimeException; * @property string $license * @property string $compatible * @property string[] $keywords + * @property string[] $hooks * @property string $iconSrc + * @property array{settings:array{key:string,name:string,description:string}[],podcast:array{key:string,name:string,description:string}[],episode:array{key:string,name:string,description:string}[]} $options */ abstract class BasePlugin implements PluginInterface { @@ -76,6 +78,11 @@ abstract class BasePlugin implements PluginInterface return $this->active; } + final public function isHookDeclared(string $name): bool + { + return in_array($name, $this->hooks, true); + } + final public function getKey(): string { return $this->key; @@ -138,6 +145,31 @@ abstract class BasePlugin implements PluginInterface throw new RuntimeException('manifest.json is not a valid JSON', 1); } + $validation = service('validation'); + + if (array_key_exists('options', $manifest)) { + $optionRules = [ + 'key' => 'required|alpha_numeric', + 'name' => 'required|max_length[32]', + 'description' => 'permit_empty|max_length[128]', + ]; + $defaultOption = [ + 'key' => '', + 'name' => '', + 'description' => '', + ]; + $validation->setRules($optionRules); + foreach ($manifest['options'] as $key => $options) { + foreach ($options as $key2 => $option) { + $manifest['options'][$key][$key2] = array_merge($defaultOption, $option); + + if (! $validation->run($manifest['options'][$key][$key2])) { + dd($this->key, $manifest['options'][$key][$key2], $validation->getErrors()); + } + } + } + } + $rules = [ 'name' => 'required|max_length[32]', 'version' => 'required|regex_match[/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/]', @@ -145,22 +177,39 @@ abstract class BasePlugin implements PluginInterface 'description' => 'max_length[128]', 'releaseDate' => 'valid_date[Y-m-d]', 'license' => 'in_list[MIT]', - 'author.name' => 'max_length[32]', - 'author.email' => 'valid_email', - 'author.url' => 'valid_url_strict', + 'author.name' => 'permit_empty|max_length[32]', + 'author.email' => 'permit_empty|valid_email', + 'author.url' => 'permit_empty|valid_url_strict', 'website' => 'valid_url_strict', - 'keywords.*' => 'in_list[seo,podcasting20,analytics]', + 'keywords.*' => 'permit_empty|in_list[seo,podcasting20,analytics]', + 'hooks.*' => 'permit_empty|in_list[' . implode(',', Plugins::HOOKS) . ']', + 'options' => 'permit_empty', ]; - $validation = service('validation'); - $validation->setRules($rules); if (! $validation->run($manifest)) { - dd($validation->getErrors()); + dd($this->key, $manifest, $validation->getErrors()); } - return $validation->getValidated(); + $defaultAttributes = [ + 'description' => '', + 'releaseDate' => '', + 'license' => '', + 'author' => [], + 'website' => '', + 'hooks' => [], + 'keywords' => [], + 'options' => [ + 'settings' => [], + 'podcast' => [], + 'episode' => [], + ], + ]; + + $validated = $validation->getValidated(); + + return array_merge_recursive_distinct($defaultAttributes, $validated); } private function loadIcon(string $path): string diff --git a/modules/Plugins/Config/Routes.php b/modules/Plugins/Config/Routes.php index ff80bddd..c2e4caa8 100644 --- a/modules/Plugins/Config/Routes.php +++ b/modules/Plugins/Config/Routes.php @@ -17,6 +17,14 @@ $routes->group( 'as' => 'plugins-installed', 'filter' => 'permission:plugins.manage', ]); + $routes->get('(:segment)', 'PluginsController::settings/$1', [ + 'as' => 'plugins-settings', + 'filter' => 'permission:plugins.manage', + ]); + $routes->post('(:segment)', 'PluginsController::settingsAction/$1', [ + 'as' => 'plugins-settings-action', + 'filter' => 'permission:plugins.manage', + ]); $routes->post('activate/(:segment)', 'PluginsController::activate/$1', [ 'as' => 'plugins-activate', 'filter' => 'permission:plugins.manage', diff --git a/modules/Plugins/Controllers/PluginsController.php b/modules/Plugins/Controllers/PluginsController.php index dc3989c9..e0ed0477 100644 --- a/modules/Plugins/Controllers/PluginsController.php +++ b/modules/Plugins/Controllers/PluginsController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace Modules\Plugins\Controllers; +use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\HTTP\RedirectResponse; use Modules\Admin\Controllers\BaseController; use Modules\Plugins\Plugins; @@ -30,6 +31,43 @@ class PluginsController extends BaseController ]); } + public function settings(string $pluginKey): string + { + /** @var Plugins $plugins */ + $plugins = service('plugins'); + + $plugin = $plugins->getPlugin($pluginKey); + + if ($plugin === null) { + throw PageNotFoundException::forPageNotFound(); + } + + helper('form'); + return view('plugins/settings', [ + 'plugin' => $plugin, + ]); + } + + public function settingsAction(string $pluginKey): RedirectResponse + { + /** @var Plugins $plugins */ + $plugins = service('plugins'); + + $plugin = $plugins->getPlugin($pluginKey); + + if ($plugin === null) { + throw PageNotFoundException::forPageNotFound(); + } + + foreach ($plugin->options['settings'] as $option) { + $optionKey = $option['key']; + $optionValue = $this->request->getPost($optionKey); + $plugins->setOption($pluginKey, $optionKey, $optionValue); + } + + return redirect()->back(); + } + public function activate(string $pluginKey): RedirectResponse { service('plugins')->activate($pluginKey); diff --git a/modules/Plugins/Helpers/plugins_helper.php b/modules/Plugins/Helpers/plugins_helper.php index 8b0e205e..b71536bc 100644 --- a/modules/Plugins/Helpers/plugins_helper.php +++ b/modules/Plugins/Helpers/plugins_helper.php @@ -22,3 +22,45 @@ if (! function_exists('set_plugin_option')) { ->set($key, $value, $context); } } + +if (! function_exists('array_merge_recursive_distinct')) { + /** + * array_merge_recursive does indeed merge arrays, but it converts values with duplicate + * keys to arrays rather than overwriting the value in the first array with the duplicate + * value in the second array, as array_merge does. I.e., with array_merge_recursive, + * this happens (documented behavior): + * + * array_merge_recursive(array('key' => 'org value'), array('key' => 'new value')); + * => array('key' => array('org value', 'new value')); + * + * array_merge_recursive_distinct does not change the datatypes of the values in the arrays. + * Matching keys' values in the second array overwrite those in the first array, as is the + * case with array_merge, i.e.: + * + * array_merge_recursive_distinct(array('key' => 'org value'), array('key' => 'new value')); + * => array('key' => array('new value')); + * + * Parameters are passed by reference, though only for performance reasons. They're not + * altered by this function. + * + * from https://www.php.net/manual/en/function.array-merge-recursive.php#92195 + * + * @param array $array1 + * @param array $array2 + * @return array + */ + function array_merge_recursive_distinct(array &$array1, array &$array2): array + { + $merged = $array1; + + foreach ($array2 as $key => &$value) { + if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { + $merged[$key] = array_merge_recursive_distinct($merged[$key], $value); + } else { + $merged[$key] = $value; + } + } + + return $merged; + } +} diff --git a/modules/Plugins/Plugins.php b/modules/Plugins/Plugins.php index 0995cc2a..531c20dc 100644 --- a/modules/Plugins/Plugins.php +++ b/modules/Plugins/Plugins.php @@ -15,12 +15,12 @@ use App\Libraries\SimpleRSSElement; */ class Plugins { - protected const API_VERSION = '1.0'; + public const API_VERSION = '1.0'; /** * @var list */ - protected const HOOKS = ['channelTag', 'itemTag', 'siteHead']; + public const HOOKS = ['channelTag', 'itemTag', 'siteHead']; /** * @var array @@ -57,6 +57,17 @@ class Plugins return array_slice(static::$plugins, (($page - 1) * $perPage), $perPage); } + public function getPlugin(string $key): ?BasePlugin + { + foreach (static::$plugins as $plugin) { + if ($plugin->getKey() === $key) { + return $plugin; + } + } + + return null; + } + /** * @param value-of $name * @param array $arguments @@ -65,9 +76,15 @@ class Plugins { foreach (static::$plugins as $plugin) { // only run hook on active plugins - if ($plugin->isActive()) { - $plugin->{$name}(...$arguments); + if (! $plugin->isActive()) { + continue; } + + if (! $plugin->isHookDeclared($name)) { + continue; + } + + $plugin->{$name}(...$arguments); } } @@ -81,6 +98,11 @@ class Plugins set_plugin_option($pluginKey, 'active', false); } + public function setOption(string $pluginKey, string $name, string $value): void + { + set_plugin_option($pluginKey, $name, $value); + } + public function getInstalledCount(): int { return static::$installedCount; @@ -89,7 +111,8 @@ class Plugins protected function registerPlugins(): void { // search for plugins in plugins folder - $pluginsFiles = glob(ROOTPATH . '/plugins/**/Plugin.php', GLOB_NOSORT); + // TODO: only get directories? Should be organized as author/repo? + $pluginsFiles = glob(ROOTPATH . '/plugins/**/Plugin.php'); if (! $pluginsFiles) { return; diff --git a/themes/cp_admin/plugins/_plugin.php b/themes/cp_admin/plugins/_plugin.php index fe0f41a7..5b613ef8 100644 --- a/themes/cp_admin/plugins/_plugin.php +++ b/themes/cp_admin/plugins/_plugin.php @@ -8,6 +8,10 @@ 'text-gray-500', ]) . lang('Plugins.website') ?> + options['settings'] !== []): ?> + + Settings + isActive()): ?>
diff --git a/themes/cp_admin/plugins/settings.php b/themes/cp_admin/plugins/settings.php new file mode 100644 index 00000000..5148d378 --- /dev/null +++ b/themes/cp_admin/plugins/settings.php @@ -0,0 +1,15 @@ +extend('_layout') ?> + +section('content') ?> + + +options['settings'] as $option): ?> + + + + +endSection() ?> From 89ac92fb412a04231ce52fd6480c9ab893b19ef5 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Thu, 2 May 2024 15:32:27 +0000 Subject: [PATCH 006/128] feat(plugins): add settings page for podcast and episode if defined in the plugin's manifest - rename options to settings --- app/Config/Autoload.php | 2 +- .../Admin/Language/en/EpisodeNavigation.php | 1 + .../Admin/Language/en/PodcastNavigation.php | 1 + modules/Plugins/BasePlugin.php | 30 +-- modules/Plugins/Config/Routes.php | 34 ++- .../Plugins/Controllers/PluginController.php | 193 ++++++++++++++++++ .../Plugins/Controllers/PluginsController.php | 84 -------- modules/Plugins/Helpers/plugins_helper.php | 33 ++- modules/Plugins/Language/en/Plugins.php | 14 +- modules/Plugins/Plugins.php | 49 ++++- themes/cp_admin/_partials/_nav_menu.php | 19 +- themes/cp_admin/episode/_sidebar.php | 17 +- themes/cp_admin/plugins/_plugin.php | 13 +- themes/cp_admin/plugins/_settings.php | 12 ++ themes/cp_admin/plugins/settings.php | 15 -- themes/cp_admin/plugins/settings_episode.php | 22 ++ themes/cp_admin/plugins/settings_general.php | 22 ++ themes/cp_admin/plugins/settings_podcast.php | 22 ++ themes/cp_admin/podcast/_sidebar.php | 13 ++ 19 files changed, 450 insertions(+), 146 deletions(-) create mode 100644 modules/Plugins/Controllers/PluginController.php delete mode 100644 modules/Plugins/Controllers/PluginsController.php create mode 100644 themes/cp_admin/plugins/_settings.php delete mode 100644 themes/cp_admin/plugins/settings.php create mode 100644 themes/cp_admin/plugins/settings_episode.php create mode 100644 themes/cp_admin/plugins/settings_general.php create mode 100644 themes/cp_admin/plugins/settings_podcast.php diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index c75ea20c..cb8830b9 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -109,7 +109,7 @@ class Autoload extends AutoloadConfig * * @var list */ - public $helpers = ['auth', 'setting', 'icons']; + public $helpers = ['auth', 'setting', 'icons', 'plugins']; public function __construct() { diff --git a/modules/Admin/Language/en/EpisodeNavigation.php b/modules/Admin/Language/en/EpisodeNavigation.php index 1406e301..ef3cdec0 100644 --- a/modules/Admin/Language/en/EpisodeNavigation.php +++ b/modules/Admin/Language/en/EpisodeNavigation.php @@ -20,4 +20,5 @@ return [ 'video-clips-create' => 'New video clip', 'soundbites-list' => 'Soundbites', 'soundbites-create' => 'New soundbite', + 'plugins' => 'Plugins', ]; diff --git a/modules/Admin/Language/en/PodcastNavigation.php b/modules/Admin/Language/en/PodcastNavigation.php index bb777707..a6b73e4a 100644 --- a/modules/Admin/Language/en/PodcastNavigation.php +++ b/modules/Admin/Language/en/PodcastNavigation.php @@ -20,6 +20,7 @@ return [ 'episodes' => 'Episodes', 'episode-list' => 'All episodes', 'episode-create' => 'New episode', + 'plugins' => 'Plugins', 'analytics' => 'Analytics', 'podcast-analytics' => 'Audience overview', 'podcast-analytics-webpages' => 'Web pages visits', diff --git a/modules/Plugins/BasePlugin.php b/modules/Plugins/BasePlugin.php index db808aa4..31beca42 100644 --- a/modules/Plugins/BasePlugin.php +++ b/modules/Plugins/BasePlugin.php @@ -22,7 +22,7 @@ use RuntimeException; * @property string[] $keywords * @property string[] $hooks * @property string $iconSrc - * @property array{settings:array{key:string,name:string,description:string}[],podcast:array{key:string,name:string,description:string}[],episode:array{key:string,name:string,description:string}[]} $options + * @property array{general:array{key:string,name:string,description:string}[],podcast:array{key:string,name:string,description:string}[],episode:array{key:string,name:string,description:string}[]} $settings */ abstract class BasePlugin implements PluginInterface { @@ -147,24 +147,24 @@ abstract class BasePlugin implements PluginInterface $validation = service('validation'); - if (array_key_exists('options', $manifest)) { - $optionRules = [ + if (array_key_exists('settings', $manifest)) { + $fieldRules = [ 'key' => 'required|alpha_numeric', 'name' => 'required|max_length[32]', 'description' => 'permit_empty|max_length[128]', ]; - $defaultOption = [ + $defaultField = [ 'key' => '', 'name' => '', 'description' => '', ]; - $validation->setRules($optionRules); - foreach ($manifest['options'] as $key => $options) { - foreach ($options as $key2 => $option) { - $manifest['options'][$key][$key2] = array_merge($defaultOption, $option); + $validation->setRules($fieldRules); + foreach ($manifest['settings'] as $key => $settings) { + foreach ($settings as $key2 => $fields) { + $manifest['settings'][$key][$key2] = array_merge($defaultField, $fields); - if (! $validation->run($manifest['options'][$key][$key2])) { - dd($this->key, $manifest['options'][$key][$key2], $validation->getErrors()); + if (! $validation->run($manifest['settings'][$key][$key2])) { + dd($this->key, $manifest['settings'][$key][$key2], $validation->getErrors()); } } } @@ -183,7 +183,7 @@ abstract class BasePlugin implements PluginInterface 'website' => 'valid_url_strict', 'keywords.*' => 'permit_empty|in_list[seo,podcasting20,analytics]', 'hooks.*' => 'permit_empty|in_list[' . implode(',', Plugins::HOOKS) . ']', - 'options' => 'permit_empty', + 'settings' => 'permit_empty', ]; $validation->setRules($rules); @@ -200,10 +200,10 @@ abstract class BasePlugin implements PluginInterface 'website' => '', 'hooks' => [], 'keywords' => [], - 'options' => [ - 'settings' => [], - 'podcast' => [], - 'episode' => [], + 'settings' => [ + 'general' => [], + 'podcast' => [], + 'episode' => [], ], ]; diff --git a/modules/Plugins/Config/Routes.php b/modules/Plugins/Config/Routes.php index c2e4caa8..5ec00065 100644 --- a/modules/Plugins/Config/Routes.php +++ b/modules/Plugins/Config/Routes.php @@ -13,26 +13,46 @@ $routes->group( ], static function ($routes): void { $routes->group('plugins', static function ($routes): void { - $routes->get('/', 'PluginsController::installed', [ + $routes->get('/', 'PluginController::installed', [ 'as' => 'plugins-installed', 'filter' => 'permission:plugins.manage', ]); - $routes->get('(:segment)', 'PluginsController::settings/$1', [ - 'as' => 'plugins-settings', + $routes->get('(:segment)', 'PluginController::generalSettings/$1', [ + 'as' => 'plugins-general-settings', 'filter' => 'permission:plugins.manage', ]); - $routes->post('(:segment)', 'PluginsController::settingsAction/$1', [ - 'as' => 'plugins-settings-action', + $routes->post('(:segment)', 'PluginController::generalSettingsAction/$1', [ + 'as' => 'plugins-general-settings-action', 'filter' => 'permission:plugins.manage', ]); - $routes->post('activate/(:segment)', 'PluginsController::activate/$1', [ + $routes->post('activate/(:segment)', 'PluginController::activate/$1', [ 'as' => 'plugins-activate', 'filter' => 'permission:plugins.manage', ]); - $routes->post('deactivate/(:segment)', 'PluginsController::deactivate/$1', [ + $routes->post('deactivate/(:segment)', 'PluginController::deactivate/$1', [ 'as' => 'plugins-deactivate', 'filter' => 'permission:plugins.manage', ]); }); + $routes->group('podcasts/(:num)/plugins', static function ($routes): void { + $routes->get('(:segment)', 'PluginController::podcastSettings/$1/$2', [ + 'as' => 'plugins-podcast-settings', + 'filter' => 'permission:podcast#.edit', + ]); + $routes->post('(:segment)', 'PluginController::podcastSettingsAction/$1/$2', [ + 'as' => 'plugins-podcast-settings-action', + 'filter' => 'permission:podcast#.edit', + ]); + }); + $routes->group('podcasts/(:num)/episodes/(:num)/plugins', static function ($routes): void { + $routes->get('(:segment)', 'PluginController::episodeSettings/$1/$2/$3', [ + 'as' => 'plugins-episode-settings', + 'filter' => 'permission:podcast#.edit', + ]); + $routes->post('(:segment)', 'PluginController::episodeSettingsAction/$1/$2/$3', [ + 'as' => 'plugins-episode-settings-action', + 'filter' => 'permission:podcast#.edit', + ]); + }); } ); diff --git a/modules/Plugins/Controllers/PluginController.php b/modules/Plugins/Controllers/PluginController.php new file mode 100644 index 00000000..fd40049e --- /dev/null +++ b/modules/Plugins/Controllers/PluginController.php @@ -0,0 +1,193 @@ +request->getGet('page') ?? 1); + $perPage = 10; + $total = $plugins->getInstalledCount(); + + $pager_links = $pager->makeLinks($page, $perPage, $total); + + return view('plugins/installed', [ + 'total' => $total, + 'plugins' => $plugins->getPlugins($page, $perPage), + 'pager_links' => $pager_links, + ]); + } + + public function generalSettings(string $pluginKey): string + { + /** @var Plugins $plugins */ + $plugins = service('plugins'); + + $plugin = $plugins->getPlugin($pluginKey); + + if ($plugin === null) { + throw PageNotFoundException::forPageNotFound(); + } + + helper('form'); + return view('plugins/settings_general', [ + 'plugin' => $plugin, + ]); + } + + public function generalSettingsAction(string $pluginKey): RedirectResponse + { + /** @var Plugins $plugins */ + $plugins = service('plugins'); + + $plugin = $plugins->getPlugin($pluginKey); + + if ($plugin === null) { + throw PageNotFoundException::forPageNotFound(); + } + + foreach ($plugin->settings['general'] as $option) { + $optionKey = $option['key']; + $optionValue = $this->request->getPost($optionKey); + $plugins->setOption($pluginKey, $optionKey, $optionValue); + } + + return redirect()->back() + ->with('message', lang('Plugins.messages.saveSettingsSuccess', [ + 'pluginName' => $plugin->getName(), + ])); + } + + public function podcastSettings(string $podcastId, string $pluginKey): string + { + $podcast = (new PodcastModel())->getPodcastById((int) $podcastId); + + if (! $podcast instanceof Podcast) { + throw PageNotFoundException::forPageNotFound(); + } + + /** @var Plugins $plugins */ + $plugins = service('plugins'); + + $plugin = $plugins->getPlugin($pluginKey); + + if ($plugin === null) { + throw PageNotFoundException::forPageNotFound(); + } + + helper('form'); + replace_breadcrumb_params([ + 0 => $podcast->handle, + ]); + return view('plugins/settings_podcast', [ + 'podcast' => $podcast, + 'plugin' => $plugin, + ]); + } + + public function podcastSettingsAction(string $podcastId, string $pluginKey): RedirectResponse + { + /** @var Plugins $plugins */ + $plugins = service('plugins'); + + $plugin = $plugins->getPlugin($pluginKey); + + if ($plugin === null) { + throw PageNotFoundException::forPageNotFound(); + } + + foreach ($plugin->settings['podcast'] as $setting) { + $settingKey = $setting['key']; + $settingValue = $this->request->getPost($settingKey); + $plugins->setOption($pluginKey, $settingKey, $settingValue, ['podcast', (int) $podcastId]); + } + + return redirect()->back() + ->with('message', lang('Plugins.messages.saveSettingsSuccess', [ + 'pluginName' => $plugin->getName(), + ])); + } + + public function episodeSettings(string $podcastId, string $episodeId, string $pluginKey): string + { + $episode = (new EpisodeModel())->getEpisodeById((int) $episodeId); + + if (! $episode instanceof Episode) { + throw PageNotFoundException::forPageNotFound(); + } + + /** @var Plugins $plugins */ + $plugins = service('plugins'); + + $plugin = $plugins->getPlugin($pluginKey); + + if ($plugin === null) { + throw PageNotFoundException::forPageNotFound(); + } + + helper('form'); + replace_breadcrumb_params([ + 0 => $episode->podcast->handle, + 1 => $episode->title, + ]); + return view('plugins/settings_episode', [ + 'podcast' => $episode->podcast, + 'episode' => $episode, + 'plugin' => $plugin, + ]); + } + + public function episodeSettingsAction(string $podcastId, string $episodeId, string $pluginKey): RedirectResponse + { + /** @var Plugins $plugins */ + $plugins = service('plugins'); + + $plugin = $plugins->getPlugin($pluginKey); + + if ($plugin === null) { + throw PageNotFoundException::forPageNotFound(); + } + + foreach ($plugin->settings['episode'] as $setting) { + $settingKey = $setting['key']; + $settingValue = $this->request->getPost($settingKey); + $plugins->setOption($pluginKey, $settingKey, $settingValue, ['episode', (int) $episodeId]); + } + + return redirect()->back() + ->with('message', lang('Plugins.messages.saveSettingsSuccess', [ + 'pluginName' => $plugin->getName(), + ])); + } + + public function activate(string $pluginKey): RedirectResponse + { + service('plugins')->activate($pluginKey); + + return redirect()->back(); + } + + public function deactivate(string $pluginKey): RedirectResponse + { + service('plugins')->deactivate($pluginKey); + + return redirect()->back(); + } +} diff --git a/modules/Plugins/Controllers/PluginsController.php b/modules/Plugins/Controllers/PluginsController.php deleted file mode 100644 index e0ed0477..00000000 --- a/modules/Plugins/Controllers/PluginsController.php +++ /dev/null @@ -1,84 +0,0 @@ -request->getGet('page') ?? 1); - $perPage = 10; - $total = $plugins->getInstalledCount(); - - $pager_links = $pager->makeLinks($page, $perPage, $total); - - return view('plugins/installed', [ - 'total' => $total, - 'plugins' => $plugins->getPlugins($page, $perPage), - 'pager_links' => $pager_links, - ]); - } - - public function settings(string $pluginKey): string - { - /** @var Plugins $plugins */ - $plugins = service('plugins'); - - $plugin = $plugins->getPlugin($pluginKey); - - if ($plugin === null) { - throw PageNotFoundException::forPageNotFound(); - } - - helper('form'); - return view('plugins/settings', [ - 'plugin' => $plugin, - ]); - } - - public function settingsAction(string $pluginKey): RedirectResponse - { - /** @var Plugins $plugins */ - $plugins = service('plugins'); - - $plugin = $plugins->getPlugin($pluginKey); - - if ($plugin === null) { - throw PageNotFoundException::forPageNotFound(); - } - - foreach ($plugin->options['settings'] as $option) { - $optionKey = $option['key']; - $optionValue = $this->request->getPost($optionKey); - $plugins->setOption($pluginKey, $optionKey, $optionValue); - } - - return redirect()->back(); - } - - public function activate(string $pluginKey): RedirectResponse - { - service('plugins')->activate($pluginKey); - - return redirect()->back(); - } - - public function deactivate(string $pluginKey): RedirectResponse - { - service('plugins')->deactivate($pluginKey); - - return redirect()->back(); - } -} diff --git a/modules/Plugins/Helpers/plugins_helper.php b/modules/Plugins/Helpers/plugins_helper.php index b71536bc..f475cad5 100644 --- a/modules/Plugins/Helpers/plugins_helper.php +++ b/modules/Plugins/Helpers/plugins_helper.php @@ -2,22 +2,49 @@ declare(strict_types=1); +use Modules\Plugins\Plugins; + +if (! function_exists('plugins')) { + function plugins(): Plugins + { + return service('plugins'); + } +} + if (! function_exists('get_plugin_option')) { - function get_plugin_option(string $pluginKey, string $option): mixed + /** + * @param ?array{'podcast'|'episode',int} $additionalContext + */ + function get_plugin_option(string $pluginKey, string $option, array $additionalContext = null): mixed { $key = sprintf('Plugins.%s', $option); $context = sprintf('plugin:%s', $pluginKey); + if ($additionalContext !== null) { + $context .= sprintf('+%s:%d', ...$additionalContext); + } + return setting()->get($key, $context); } } if (! function_exists('set_plugin_option')) { - function set_plugin_option(string $pluginKey, string $option, mixed $value = null): void - { + /** + * @param ?array{'podcast'|'episode',int} $additionalContext + */ + function set_plugin_option( + string $pluginKey, + string $option, + mixed $value = null, + array $additionalContext = null + ): void { $key = sprintf('Plugins.%s', $option); $context = sprintf('plugin:%s', $pluginKey); + if ($additionalContext !== null) { + $context .= sprintf('+%s:%d', ...$additionalContext); + } + setting() ->set($key, $value, $context); } diff --git a/modules/Plugins/Language/en/Plugins.php b/modules/Plugins/Language/en/Plugins.php index f801caa1..52ea95a0 100644 --- a/modules/Plugins/Language/en/Plugins.php +++ b/modules/Plugins/Language/en/Plugins.php @@ -9,14 +9,18 @@ declare(strict_types=1); */ return [ - "installed" => "Installed plugins ({count})", - "website" => "Website", - "activate" => "Activate", - "deactivate" => "Deactivate", - "keywords" => [ + 'installed' => 'Installed plugins ({count})', + 'website' => 'Website', + 'settings' => '{pluginName} settings', + 'activate' => 'Activate', + 'deactivate' => 'Deactivate', + 'keywords' => [ 'podcasting20' => 'Podcasting 2.0', 'seo' => 'SEO', 'analytics' => 'Analytics', 'accessibility' => 'Accessibility', ], + 'messages' => [ + 'saveSettingsSuccess' => '{pluginName} settings were successfully saved!', + ], ]; diff --git a/modules/Plugins/Plugins.php b/modules/Plugins/Plugins.php index 531c20dc..24616ebc 100644 --- a/modules/Plugins/Plugins.php +++ b/modules/Plugins/Plugins.php @@ -57,6 +57,48 @@ class Plugins return array_slice(static::$plugins, (($page - 1) * $perPage), $perPage); } + /** + * @return array + */ + public function getPluginsWithPodcastSettings(): array + { + $pluginsWithPodcastSettings = []; + foreach (static::$plugins as $plugin) { + if (! $plugin->isActive()) { + continue; + } + + if ($plugin->settings['podcast'] === []) { + continue; + } + + $pluginsWithPodcastSettings[] = $plugin; + } + + return $pluginsWithPodcastSettings; + } + + /** + * @return array + */ + public function getPluginsWithEpisodeSettings(): array + { + $pluginsWithEpisodeSettings = []; + foreach (static::$plugins as $plugin) { + if (! $plugin->isActive()) { + continue; + } + + if ($plugin->settings['episode'] === []) { + continue; + } + + $pluginsWithEpisodeSettings[] = $plugin; + } + + return $pluginsWithEpisodeSettings; + } + public function getPlugin(string $key): ?BasePlugin { foreach (static::$plugins as $plugin) { @@ -98,9 +140,12 @@ class Plugins set_plugin_option($pluginKey, 'active', false); } - public function setOption(string $pluginKey, string $name, string $value): void + /** + * @param ?array{'podcast'|'episode',int} $additionalContext + */ + public function setOption(string $pluginKey, string $name, mixed $value, array $additionalContext = null): void { - set_plugin_option($pluginKey, $name, $value); + set_plugin_option($pluginKey, $name, $value, $additionalContext); } public function getInstalledCount(): int diff --git a/themes/cp_admin/_partials/_nav_menu.php b/themes/cp_admin/_partials/_nav_menu.php index 7184724e..f675d603 100644 --- a/themes/cp_admin/_partials/_nav_menu.php +++ b/themes/cp_admin/_partials/_nav_menu.php @@ -1,9 +1,14 @@ + HTML; } } diff --git a/app/Views/Components/Forms/Checkbox.php b/app/Views/Components/Forms/Checkbox.php index 1d81acb8..9ffafc8b 100644 --- a/app/Views/Components/Forms/Checkbox.php +++ b/app/Views/Components/Forms/Checkbox.php @@ -4,35 +4,41 @@ declare(strict_types=1); namespace App\Views\Components\Forms; +use App\Views\Components\Hint; + class Checkbox extends FormComponent { - protected ?string $hint = null; + protected array $props = ['hint', 'isChecked']; + + protected array $casts = [ + 'isChecked' => 'boolean', + ]; + + protected string $hint = ''; protected bool $isChecked = false; - public function setIsChecked(string $value): void - { - $this->isChecked = $value === 'true'; - } - public function render(): string { - $attributes = [ - 'id' => $this->value, - 'name' => $this->name, - 'class' => 'form-checkbox bg-elevated text-accent-base border-contrast border-3 focus:ring-accent w-6 h-6', - ]; - $checkboxInput = form_checkbox( - $attributes, + [ + 'id' => $this->value, + 'name' => $this->name, + 'class' => 'form-checkbox bg-elevated text-accent-base border-contrast border-3 w-6 h-6', + ], 'yes', old($this->name) ? old($this->name) === $this->value : $this->isChecked, ); - $hint = $this->hint === null ? '' : hint_tooltip($this->hint, 'ml-1'); + $hint = $this->hint === '' ? '' : (new Hint([ + 'class' => 'ml-1', + 'slot' => $this->hint, + ]))->render(); + + $this->mergeClass('inline-flex items-center'); return <<{$checkboxInput}{$this->slot}{$hint} + HTML; } } diff --git a/app/Views/Components/Forms/ColorRadioButton.php b/app/Views/Components/Forms/ColorRadioButton.php index ab2fb16f..b562d71e 100644 --- a/app/Views/Components/Forms/ColorRadioButton.php +++ b/app/Views/Components/Forms/ColorRadioButton.php @@ -6,15 +6,14 @@ namespace App\Views\Components\Forms; class ColorRadioButton extends FormComponent { + protected array $props = ['isChecked']; + + protected array $casts = [ + 'isChecked' => 'boolean', + ]; + protected bool $isChecked = false; - protected string $style = ''; - - public function setIsChecked(string $value): void - { - $this->isChecked = $value === 'true'; - } - public function render(): string { $data = [ @@ -23,7 +22,7 @@ class ColorRadioButton extends FormComponent 'class' => 'color-radio-btn', ]; - if ($this->required) { + if ($this->isRequired) { $data['required'] = 'required'; } @@ -34,7 +33,7 @@ class ColorRadioButton extends FormComponent ); return << +
getStringifiedAttributes()}> {$radioInput}
diff --git a/app/Views/Components/Forms/DatetimePicker.php b/app/Views/Components/Forms/DatetimePicker.php index f2d33332..54bc4fa4 100644 --- a/app/Views/Components/Forms/DatetimePicker.php +++ b/app/Views/Components/Forms/DatetimePicker.php @@ -6,21 +6,28 @@ namespace App\Views\Components\Forms; class DatetimePicker extends FormComponent { + protected array $attributes = [ + 'data-picker' => 'datetime', + ]; + public function render(): string { - $this->attributes['class'] = 'rounded-l-lg border-0 border-rounded-r-none flex-1 focus:ring-0'; - $this->attributes['data-input'] = ''; - $dateInput = form_input($this->attributes, old($this->name, $this->value)); + $dateInput = form_input([ + 'class' => 'rounded-l-lg border-0 border-rounded-r-none flex-1 focus:ring-0', + 'data-input' => '', + ], old($this->name, $this->value)); $clearLabel = lang( 'Episode.publish_form.scheduled_publication_date_clear', ); $closeIcon = icon('close-fill'); + $this->mergeClass('flex border-3 rounded-lg border-contrast focus-within:ring-accent'); + return << +
getStringifiedAttributes()}> {$dateInput} -
diff --git a/app/Views/Components/Forms/Field.php b/app/Views/Components/Forms/Field.php index 40d219cb..784b3a91 100644 --- a/app/Views/Components/Forms/Field.php +++ b/app/Views/Components/Forms/Field.php @@ -4,49 +4,76 @@ declare(strict_types=1); namespace App\Views\Components\Forms; -class Field extends FormComponent +use ViewComponents\Component; + +class Field extends Component { + protected array $props = [ + 'name', + 'label', + 'isRequired', + 'isReadonly', + 'as', + 'helper', + 'hint', + ]; + + protected array $casts = [ + 'isRequired' => 'boolean', + 'isReadonly' => 'boolean', + ]; + + protected string $name; + + protected string $label; + + protected bool $isRequired = false; + + protected bool $isReadonly = false; + protected string $as = 'Input'; - protected string $label = ''; + protected string $helper = ''; - protected ?string $helper = null; - - protected ?string $hint = null; + protected string $hint = ''; public function render(): string { $helperText = ''; - if ($this->helper !== null) { - $helperId = $this->id . 'Help'; - $helperText = '' . $this->helper . ''; + if ($this->helper !== '') { + $helperId = $this->name . 'Help'; + $helperText = (new Helper([ + 'id' => $helperId, + 'slot' => $this->helper, + ]))->render(); $this->attributes['aria-describedby'] = $helperId; } $labelAttributes = [ - 'for' => $this->id, - 'isOptional' => $this->required ? 'false' : 'true', + 'for' => $this->name, + 'isOptional' => $this->isRequired ? 'false' : 'true', 'class' => '-mb-1', + 'slot' => $this->label, ]; - if ($this->hint) { + if ($this->hint !== '') { $labelAttributes['hint'] = $this->hint; } - $labelAttributes = stringify_attributes($labelAttributes); + $label = new Label($labelAttributes); - // remove field specific attributes to inject the rest to Form Component - $fieldComponentAttributes = $this->attributes; - unset($fieldComponentAttributes['as']); - unset($fieldComponentAttributes['label']); - unset($fieldComponentAttributes['class']); - unset($fieldComponentAttributes['helper']); - unset($fieldComponentAttributes['hint']); + $this->mergeClass('flex flex-col'); + $fieldClass = $this->attributes['class']; + unset($this->attributes['class']); + + $this->attributes['name'] = $this->name; + $this->attributes['isRequired'] = $this->isRequired ? 'true' : 'false'; + $this->attributes['isReadonly'] = $this->isReadonly ? 'true' : 'false'; $element = __NAMESPACE__ . '\\' . $this->as; - $fieldElement = new $element($fieldComponentAttributes); + $fieldElement = new $element($this->attributes); return << - {$this->label} +
+ {$label->render()} {$helperText}
{$fieldElement->render()} diff --git a/app/Views/Components/Forms/FormComponent.php b/app/Views/Components/Forms/FormComponent.php index f854fb64..2217b2af 100644 --- a/app/Views/Components/Forms/FormComponent.php +++ b/app/Views/Components/Forms/FormComponent.php @@ -6,28 +6,55 @@ namespace App\Views\Components\Forms; use ViewComponents\Component; -class FormComponent extends Component +abstract class FormComponent extends Component { - protected ?string $id = null; + protected array $props = [ + 'id', + 'name', + 'value', + 'isRequired', + 'isReadonly', + ]; - protected string $name = ''; + protected array $casts = [ + 'isRequired' => 'boolean', + 'isReadonly' => 'boolean', + ]; + + protected string $id; + + protected string $name; protected string $value = ''; - protected bool $required = false; + protected bool $isRequired = false; - protected bool $readonly = false; + protected bool $isReadonly = false; /** * @param array $attributes */ public function __construct(array $attributes) { + $parentVars = get_class_vars(self::class); + $this->casts = [...$parentVars['casts'], ...$this->casts]; + $this->props = [...$parentVars['props'], $this->props]; + parent::__construct($attributes); - if ($this->id === null) { + if (! isset($this->id)) { $this->id = $this->name; - $this->attributes['id'] = $this->id; + } + + $this->attributes['id'] = $this->id; + $this->attributes['name'] = $this->name; + + if ($this->isRequired) { + $this->attributes['required'] = 'required'; + } + + if ($this->isReadonly) { + $this->attributes['readonly'] = 'readonly'; } } @@ -35,23 +62,4 @@ class FormComponent extends Component { $this->value = htmlspecialchars_decode($value, ENT_QUOTES); } - - public function setRequired(string $value): void - { - $this->required = $value === 'true'; - unset($this->attributes['required']); - if ($this->required) { - $this->attributes['required'] = 'required'; - } - } - - public function setReadonly(string $value): void - { - $this->readonly = $value === 'true'; - if ($this->readonly) { - $this->attributes['readonly'] = 'readonly'; - } else { - unset($this->attributes['readonly']); - } - } } diff --git a/app/Views/Components/Forms/Helper.php b/app/Views/Components/Forms/Helper.php index f1702573..331c14a9 100644 --- a/app/Views/Components/Forms/Helper.php +++ b/app/Views/Components/Forms/Helper.php @@ -4,19 +4,18 @@ declare(strict_types=1); namespace App\Views\Components\Forms; -class Helper extends FormComponent +use ViewComponents\Component; + +class Helper extends Component { - /** - * @var 'default'|'error' - */ - protected string $type = 'default'; + // TODO: add type with error and show errors inline public function render(): string { - $class = 'text-skin-muted'; + $this->mergeClass('text-skin-muted'); return <<{$this->slot} + getStringifiedAttributes()}>{$this->slot} HTML; } } diff --git a/app/Views/Components/Forms/Input.php b/app/Views/Components/Forms/Input.php index 6ba0ffdb..5ca7dfb9 100644 --- a/app/Views/Components/Forms/Input.php +++ b/app/Views/Components/Forms/Input.php @@ -6,26 +6,29 @@ namespace App\Views\Components\Forms; class Input extends FormComponent { + protected array $props = ['type']; + protected string $type = 'text'; public function render(): string { - $baseClass = 'w-full border-contrast rounded-lg focus:border-contrast border-3 focus:ring-accent focus-within:ring-accent ' . $this->class; - - $this->attributes['class'] = $baseClass; + $this->mergeClass('w-full border-contrast rounded-lg focus:border-contrast border-3 focus-within:ring-accent'); if ($this->type === 'file') { - $this->attributes['class'] .= ' file:px-3 file:py-2 file:h-[40px] file:font-semibold file:text-skin-muted file:text-sm file:rounded-none file:border-none file:bg-highlight file:cursor-pointer'; + $this->mergeClass('file:px-3 file:py-2 file:h-[40px] file:font-semibold file:text-skin-muted file:text-sm file:rounded-none file:border-none file:bg-highlight file:cursor-pointer'); } else { - $this->attributes['class'] .= ' px-3 py-2'; + $this->mergeClass('px-3 py-2'); } - if ($this->readonly) { - $this->attributes['class'] .= ' bg-base'; + if ($this->isReadonly) { + $this->mergeClass('bg-base'); } else { - $this->attributes['class'] .= ' bg-elevated'; + $this->mergeClass('bg-elevated'); } + $this->attributes['type'] = $this->type; + $this->attributes['value'] = $this->value; + return form_input($this->attributes, old($this->name, $this->value)); } } diff --git a/app/Views/Components/Forms/Label.php b/app/Views/Components/Forms/Label.php index 1c7ef093..808458ff 100644 --- a/app/Views/Components/Forms/Label.php +++ b/app/Views/Components/Forms/Label.php @@ -4,39 +4,38 @@ declare(strict_types=1); namespace App\Views\Components\Forms; +use App\Views\Components\Hint; use ViewComponents\Component; class Label extends Component { - protected ?string $for = null; + protected array $props = ['for', 'hint', 'isOptional']; - protected ?string $hint = null; + protected array $casts = [ + 'isOptional' => 'boolean', + ]; + + protected string $for; + + protected string $hint = ''; protected bool $isOptional = false; - public function setIsOptional(string $value): void - { - $this->isOptional = $value === 'true'; - } - public function render(): string { - $labelClass = 'text-sm font-semibold ' . $this->attributes['class']; - unset($this->attributes['class']); + $this->mergeClass('text-sm font-semibold'); $optionalText = $this->isOptional ? '(' . lang('Common.optional') . ')' : ''; - $hint = $this->hint === null ? '' : hint_tooltip($this->hint, 'ml-1'); - unset($this->attributes['isOptional']); - unset($this->attributes['hint']); - unset($this->attributes['slot']); - - $attributes = stringify_attributes($this->attributes); + $hint = $this->hint === '' ? '' : (new Hint([ + 'class' => 'ml-1', + 'slot' => $this->hint, + ]))->render(); return <<{$this->slot}{$optionalText}{$hint} + HTML; } } diff --git a/app/Views/Components/Forms/MarkdownEditor.php b/app/Views/Components/Forms/MarkdownEditor.php index 5c6bda64..b4c253ba 100644 --- a/app/Views/Components/Forms/MarkdownEditor.php +++ b/app/Views/Components/Forms/MarkdownEditor.php @@ -6,6 +6,8 @@ namespace App\Views\Components\Forms; class MarkdownEditor extends FormComponent { + protected array $props = ['disallowList']; + /** * @var string[] */ @@ -18,18 +20,20 @@ class MarkdownEditor extends FormComponent public function render(): string { - $editorClass = 'w-full flex flex-col bg-elevated border-3 border-contrast rounded-lg overflow-hidden focus-within:ring-accent ' . $this->class; + $this->mergeClass('w-full flex flex-col bg-elevated border-3 border-contrast rounded-lg overflow-hidden focus-within:ring-accent'); + $wrapperClass = $this->attributes['class']; $this->attributes['class'] = 'bg-elevated border-none focus:border-none focus:outline-none focus:ring-0 w-full h-full'; $this->attributes['rows'] = 6; - $textarea = form_textarea($this->attributes, old($this->name, $this->value)); - $markdownIcon = icon( - 'markdown-fill', - [ - 'class' => 'mr-1 text-lg opacity-40', - ] + $textarea = form_textarea( + $this->attributes, + old($this->name, $this->value) ); + $markdownIcon = icon('markdown-fill', [ + 'class' => 'mr-1 text-lg opacity-40', + ]); + $translations = [ 'write' => lang('Common.forms.editor.write'), 'preview' => lang('Common.forms.editor.preview'), @@ -85,19 +89,19 @@ class MarkdownEditor extends FormComponent $toolbarContent .= '
'; foreach ($buttonsGroup as $button) { if (! in_array($button['name'], $this->disallowList, true)) { - $toolbarContent .= '<' . $button['tag'] . ' class="opacity-50 hover:opacity-100 focus:ring-accent focus:opacity-100">' . $button['icon'] . ''; + $toolbarContent .= '<' . $button['tag'] . ' class="opacity-50 hover:opacity-100 focus:opacity-100">' . $button['icon'] . ''; } } $toolbarContent .= '
'; } return << +
- - + + {$toolbarContent}
diff --git a/app/Views/Components/Forms/MultiSelect.php b/app/Views/Components/Forms/MultiSelect.php index 81450a32..327c0bff 100644 --- a/app/Views/Components/Forms/MultiSelect.php +++ b/app/Views/Components/Forms/MultiSelect.php @@ -6,6 +6,13 @@ namespace App\Views\Components\Forms; class MultiSelect extends FormComponent { + protected array $props = ['options', 'selected']; + + protected array $casts = [ + 'options' => 'array', + 'selected' => 'array', + ]; + /** * @var array */ @@ -16,18 +23,10 @@ class MultiSelect extends FormComponent */ protected array $selected = []; - public function setOptions(string $value): void - { - $this->options = json_decode(htmlspecialchars_decode($value), true); - } - - public function setSelected(string $selected): void - { - $this->selected = json_decode(htmlspecialchars_decode($selected), true); - } - public function render(): string { + $this->mergeClass('w-full bg-elevated border-3 border-contrast rounded-lg'); + $defaultAttributes = [ 'data-class' => $this->attributes['class'], 'multiple' => 'multiple', @@ -37,8 +36,7 @@ class MultiSelect extends FormComponent 'data-no-choices-text' => lang('Common.forms.multiSelect.noChoicesText'), 'data-max-item-text' => lang('Common.forms.multiSelect.maxItemText'), ]; - $this->attributes['class'] .= ' w-full bg-elevated border-3 border-contrast rounded-lg'; - $extra = array_merge($defaultAttributes, $this->attributes); + $extra = [...$defaultAttributes, ...$this->attributes]; return form_dropdown($this->name, $this->options, $this->selected, $extra); } diff --git a/app/Views/Components/Forms/Radio.php b/app/Views/Components/Forms/Radio.php index 72bd6273..fe0a6789 100644 --- a/app/Views/Components/Forms/Radio.php +++ b/app/Views/Components/Forms/Radio.php @@ -6,12 +6,13 @@ namespace App\Views\Components\Forms; class Radio extends FormComponent { - protected bool $isChecked = false; + protected array $props = ['isChecked']; - public function setIsChecked(string $value): void - { - $this->isChecked = $value === 'true'; - } + protected array $casts = [ + 'isChecked' => 'boolean', + ]; + + protected bool $isChecked = false; public function render(): string { @@ -19,14 +20,16 @@ class Radio extends FormComponent [ 'id' => $this->value, 'name' => $this->name, - 'class' => 'text-accent-base bg-elevated border-contrast border-3 focus:ring-accent w-6 h-6', + 'class' => 'text-accent-base bg-elevated border-contrast border-3 w-6 h-6', ], $this->value, old($this->name) ? old($this->name) === $this->value : $this->isChecked, ); + $this->mergeClass('inline-flex items-center'); + return <<{$radioInput}{$this->slot} + HTML; } } diff --git a/app/Views/Components/Forms/RadioButton.php b/app/Views/Components/Forms/RadioButton.php index 550cb823..c36931db 100644 --- a/app/Views/Components/Forms/RadioButton.php +++ b/app/Views/Components/Forms/RadioButton.php @@ -4,16 +4,19 @@ declare(strict_types=1); namespace App\Views\Components\Forms; +use App\Views\Components\Hint; + class RadioButton extends FormComponent { + protected array $props = ['isChecked', 'hint']; + + protected array $casts = [ + 'isChecked' => 'boolean', + ]; + protected bool $isChecked = false; - protected ?string $hint = null; - - public function setIsChecked(string $value): void - { - $this->isChecked = $value === 'true'; - } + protected string $hint = ''; public function render(): string { @@ -23,7 +26,7 @@ class RadioButton extends FormComponent 'class' => 'form-radio-btn bg-elevated', ]; - if ($this->required) { + if ($this->isRequired) { $data['required'] = 'required'; } @@ -33,10 +36,13 @@ class RadioButton extends FormComponent old($this->name) ? old($this->name) === $this->value : $this->isChecked, ); - $hint = $this->hint ? hint_tooltip($this->hint, 'ml-1 text-base') : ''; + $hint = $this->hint === '' ? '' : (new Hint([ + 'class' => 'ml-1 text-base', + 'slot' => $this->hint, + ]))->render(); return << +
getStringifiedAttributes()}"> {$radioInput}
diff --git a/app/Views/Components/Forms/Section.php b/app/Views/Components/Forms/Section.php index f28237d1..0b8bd2ab 100644 --- a/app/Views/Components/Forms/Section.php +++ b/app/Views/Components/Forms/Section.php @@ -8,17 +8,21 @@ use ViewComponents\Component; class Section extends Component { - protected string $title = ''; + protected array $props = ['title', 'subtitle']; - protected ?string $subtitle = null; + protected string $title; + + protected string $subtitle = ''; public function render(): string { - $subtitle = $this->subtitle === null ? '' : '

' . $this->subtitle . '

'; + $subtitle = $this->subtitle === '' ? '' : '

' . $this->subtitle . '

'; + + $this->mergeClass('w-full p-8 bg-elevated border-3 flex flex-col items-start border-subtle rounded-xl'); return << - {$this->title} +
getStringifiedAttributes()}> + {$this->title} {$subtitle}
{$this->slot}
diff --git a/app/Views/Components/Forms/Select.php b/app/Views/Components/Forms/Select.php index 8f112c90..e1af514e 100644 --- a/app/Views/Components/Forms/Select.php +++ b/app/Views/Components/Forms/Select.php @@ -6,6 +6,12 @@ namespace App\Views\Components\Forms; class Select extends FormComponent { + protected array $props = ['options', 'selected']; + + protected array $casts = [ + 'options' => 'array', + ]; + /** * @var array */ @@ -13,26 +19,17 @@ class Select extends FormComponent protected string $selected = ''; - public function setOptions(string $value): void - { - $this->options = json_decode(htmlspecialchars_decode($value), true); - } - public function render(): string { + $this->mergeClass('w-full focus:border-contrast border-3 rounded-lg bg-elevated border-contrast'); $defaultAttributes = [ - 'class' => 'w-full focus:border-contrast focus:ring-accent border-3 rounded-lg bg-elevated border-contrast ' . $this->class, - 'data-class' => $this->class, 'data-select-text' => lang('Common.forms.multiSelect.selectText'), 'data-loading-text' => lang('Common.forms.multiSelect.loadingText'), 'data-no-results-text' => lang('Common.forms.multiSelect.noResultsText'), 'data-no-choices-text' => lang('Common.forms.multiSelect.noChoicesText'), 'data-max-item-text' => lang('Common.forms.multiSelect.maxItemText'), ]; - unset($this->attributes['name']); - unset($this->attributes['options']); - unset($this->attributes['selected']); - $extra = [...$this->attributes, ...$defaultAttributes]; + $extra = [...$defaultAttributes, ...$this->attributes]; return form_dropdown($this->name, $this->options, old($this->name, $this->selected !== '' ? [$this->selected] : []), $extra); } diff --git a/app/Views/Components/Forms/Textarea.php b/app/Views/Components/Forms/Textarea.php index 705ec0f3..d3976565 100644 --- a/app/Views/Components/Forms/Textarea.php +++ b/app/Views/Components/Forms/Textarea.php @@ -15,9 +15,9 @@ class Textarea extends FormComponent public function render(): string { - unset($this->attributes['value']); + $this->mergeClass('bg-elevated w-full rounded-lg border-3 border-contrast focus:border-contrast focus-within:ring-accent'); - $this->attributes['class'] = 'bg-elevated w-full focus:border-contrast focus:ring-accent rounded-lg border-3 border-contrast ' . $this->class; + $this->attributes['id'] = $this->id; $textarea = form_textarea( $this->attributes, diff --git a/app/Views/Components/Forms/Toggler.php b/app/Views/Components/Forms/Toggler.php index bfb0d659..07e8df7e 100644 --- a/app/Views/Components/Forms/Toggler.php +++ b/app/Views/Components/Forms/Toggler.php @@ -4,45 +4,48 @@ declare(strict_types=1); namespace App\Views\Components\Forms; +use App\Views\Components\Hint; + class Toggler extends FormComponent { + protected array $props = ['size', 'hint', 'isChecked']; + + protected array $casts = [ + 'isChecked' => 'boolean', + ]; + /** * @var 'base'|'small */ protected string $size = 'base'; - protected string $label = ''; - protected string $hint = ''; - protected bool $checked = false; - - public function setChecked(string $value): void - { - $this->checked = $value === 'true'; - } + protected bool $isChecked = false; public function render(): string { - unset($this->attributes['checked']); - - $wrapperClass = $this->class; - unset($this->attributes['class']); - - $sizeClass = [ - 'base' => 'form-switch-slider', + $sizeClass = match ($this->size) { 'small' => 'form-switch-slider form-switch-slider--small', - ]; + default => 'form-switch-slider', + }; - $this->attributes['class'] = 'form-switch'; + $this->mergeClass('relative justify-between inline-flex items-center gap-x-2'); + + $checkbox = form_checkbox([ + 'class' => 'form-switch', + ], 'yes', old($this->name) === 'yes' ? true : $this->isChecked); + + $hint = $this->hint === '' ? '' : (new Hint([ + 'class' => 'ml-1', + 'slot' => $this->hint, + ]))->render(); - $checkbox = form_checkbox($this->attributes, $this->value, old($this->name) === 'yes' ? true : $this->checked); - $hint = $this->hint === '' ? '' : hint_tooltip($this->hint, 'ml-1'); return << + HTML; } diff --git a/app/Views/Components/Forms/XMLEditor.php b/app/Views/Components/Forms/XMLEditor.php index 1c23eddb..1a6a0880 100644 --- a/app/Views/Components/Forms/XMLEditor.php +++ b/app/Views/Components/Forms/XMLEditor.php @@ -6,6 +6,8 @@ namespace App\Views\Components\Forms; class XMLEditor extends FormComponent { + protected array $props = ['content']; + /** * @var array */ diff --git a/app/Views/Components/Heading.php b/app/Views/Components/Heading.php index 001679cf..f5f8ed0c 100644 --- a/app/Views/Components/Heading.php +++ b/app/Views/Components/Heading.php @@ -8,6 +8,8 @@ use ViewComponents\Component; class Heading extends Component { + protected array $props = ['tagName', 'size']; + protected string $tagName = 'div'; /** @@ -17,16 +19,17 @@ class Heading extends Component public function render(): string { - $sizeClasses = [ + $sizeClass = match ($this->size) { 'small' => 'tracking-wide text-base', - 'base' => 'text-xl', 'large' => 'text-3xl', - ]; + default => 'text-xl', + }; - $class = $this->class . ' relative z-10 font-bold text-heading-foreground font-display before:w-full before:absolute before:h-1/2 before:left-0 before:bottom-0 before:rounded-full before:bg-heading-background before:z-[-10] ' . $sizeClasses[$this->size]; + $this->mergeClass('relative z-10 font-bold text-heading-foreground font-display before:w-full before:absolute before:h-1/2 before:left-0 before:bottom-0 before:rounded-full before:bg-heading-background before:z-[-10]'); + $this->mergeClass($sizeClass); return <<tagName} class="{$class}">{$this->slot}tagName}> + <{$this->tagName} {$this->getStringifiedAttributes()}>{$this->slot}tagName}> HTML; } } diff --git a/app/Views/Components/Hint.php b/app/Views/Components/Hint.php new file mode 100644 index 00000000..51eb080a --- /dev/null +++ b/app/Views/Components/Hint.php @@ -0,0 +1,28 @@ + 'bottom', + 'tabindex' => '0', + ]; + + public function render(): string + { + $this->attributes['title'] = $this->slot; + + $this->mergeClass('inline-block align-middle opacity-75'); + + $icon = icon('question-fill'); + + return <<getStringifiedAttributes()}>{$icon} + HTML; + } +} diff --git a/app/Views/Components/IconButton.php b/app/Views/Components/IconButton.php index b2c9f263..5f14cb26 100644 --- a/app/Views/Components/IconButton.php +++ b/app/Views/Components/IconButton.php @@ -6,7 +6,9 @@ namespace App\Views\Components; class IconButton extends Button { - public string $glyph = ''; + public string $glyph; + + protected array $props = ['glyph']; public function __construct(array $attributes) { @@ -16,18 +18,18 @@ class IconButton extends Button 'data-tooltip' => 'bottom', ]; - $glyphSize = [ - 'small' => 'text-sm', - 'base' => 'text-lg', - 'large' => 'text-2xl', - ]; - $allAttributes = [...$attributes, ...$iconButtonAttributes]; parent::__construct($allAttributes); + $glyphSizeClass = match ($this->size) { + 'small' => 'text-sm', + 'large' => 'text-2xl', + default => 'text-lg', + }; + $this->slot = icon($this->glyph, [ - 'class' => $glyphSize[$this->size], + 'class' => $glyphSizeClass, ]); } } diff --git a/app/Views/Components/Pill.php b/app/Views/Components/Pill.php index b3ec02a3..3fd4944c 100644 --- a/app/Views/Components/Pill.php +++ b/app/Views/Components/Pill.php @@ -15,29 +15,44 @@ class Pill extends Component public string $variant = 'default'; - public ?string $icon = null; + public string $icon = ''; - public ?string $iconClass = ''; + public string $iconClass = ''; - protected ?string $hint = null; + protected array $props = ['size', 'variant', 'icon', 'iconClass', 'hint']; + + protected string $hint = ''; public function render(): string { - $variantClasses = [ - 'default' => 'text-gray-800 bg-gray-100 border-gray-300', + $variantClass = match ($this->variant) { 'primary' => 'text-accent-contrast bg-accent-base border-accent-base', 'success' => 'text-pine-900 bg-pine-100 border-pine-300', 'danger' => 'text-red-900 bg-red-100 border-red-300', 'warning' => 'text-yellow-900 bg-yellow-100 border-yellow-300', - ]; + default => 'text-gray-800 bg-gray-100 border-gray-300', + }; - $icon = $this->icon ? icon($this->icon, [ + $sizeClass = match ($this->size) { + 'small' => 'text-xs tracking-wide', + default => 'text-sm', + }; + + $icon = $this->icon !== '' ? icon($this->icon, [ 'class' => $this->iconClass, ]) : ''; - $hint = $this->hint ? 'data-tooltip="bottom" title="' . $this->hint . '"' : ''; + + if ($this->hint !== '') { + $this->attributes['data-tooltip'] = 'bottom'; + $this->attributes['title'] = $this->hint; + } + + $this->mergeClass('inline-flex lowercase items-center gap-x-1 px-1 font-semibold border rounded'); + $this->mergeClass($variantClass); + $this->mergeClass($sizeClass); return <<{$icon}{$this->slot} + getStringifiedAttributes()}>{$icon}{$this->slot} HTML; } } diff --git a/app/Views/Components/ReadMore.php b/app/Views/Components/ReadMore.php index 016a60b3..3739cbcc 100644 --- a/app/Views/Components/ReadMore.php +++ b/app/Views/Components/ReadMore.php @@ -8,17 +8,23 @@ use ViewComponents\Component; class ReadMore extends Component { - public string $id; + protected array $props = ['id']; + + protected string $id; public function render(): string { $readMoreLabel = lang('Common.read_more'); $readLessLabel = lang('Common.read_less'); + + $this->mergeClass('read-more'); + $this->attributes['style'] = '--line-clamp: 3'; + return << +
getStringifiedAttributes()}> -
{$this->slot}
- +
{$this->slot}
+
HTML; } diff --git a/app/Views/Components/SeeMore.php b/app/Views/Components/SeeMore.php index 19f247f2..db30ab94 100644 --- a/app/Views/Components/SeeMore.php +++ b/app/Views/Components/SeeMore.php @@ -12,11 +12,15 @@ class SeeMore extends Component { $seeMoreLabel = lang('Common.see_more'); $seeLessLabel = lang('Common.see_less'); + + $this->mergeClass('see-more'); + $this->attributes['styles'] = '--content-height: 10rem'; + return << +
getStringifiedAttributes()}> -
{$this->slot}
- +
{$this->slot}
+
HTML; } diff --git a/app/Views/_message_block.php b/app/Views/_message_block.php index 1504aa37..4f40c4e5 100644 --- a/app/Views/_message_block.php +++ b/app/Views/_message_block.php @@ -1,18 +1,18 @@ has('message')): ?> - + has('error')): ?> - + has('errors')): ?>
    -
  • +
diff --git a/app/Views/errors/html/error_403.php b/app/Views/errors/html/error_403.php index 0a8d31b4..55b37f89 100644 --- a/app/Views/errors/html/error_403.php +++ b/app/Views/errors/html/error_403.php @@ -23,7 +23,7 @@ You do not have sufficient permissions to access that page.

- + diff --git a/app/Views/errors/html/error_404.php b/app/Views/errors/html/error_404.php index 092217de..79575fb1 100644 --- a/app/Views/errors/html/error_404.php +++ b/app/Views/errors/html/error_404.php @@ -23,7 +23,7 @@

- + diff --git a/app/Views/errors/html/production.php b/app/Views/errors/html/production.php index fb7b11ec..77445e16 100644 --- a/app/Views/errors/html/production.php +++ b/app/Views/errors/html/production.php @@ -28,7 +28,7 @@

getCode() ? ' #' . $exception->getCode() : '') ?>

getMessage())) ?>
at getFile())) ?>:getLine()) ?>

- + 'mr-2', ]) ?>Copy stack trace @@ -41,11 +41,11 @@

Found a bug?

-

You can help get it fixed by creating an issue on the Castopod issue tracker. Please check that the issue does not already exist beforehand.

+

You can help get it fixed by creating an issue on the Castopod issue tracker. Please check that the issue does not already exist beforehand.

Not sure what's happening?

-

You can ask for help in the Castopod community chat!

+

You can ask for help in the Castopod community chat!

diff --git a/modules/Plugins/Controllers/PluginController.php b/modules/Plugins/Controllers/PluginController.php index 908c1801..6dc6ed11 100644 --- a/modules/Plugins/Controllers/PluginController.php +++ b/modules/Plugins/Controllers/PluginController.php @@ -41,6 +41,9 @@ class PluginController extends BaseController $plugins = service('plugins'); $vendorPlugins = $plugins->getVendorPlugins($vendor); + replace_breadcrumb_params([ + $vendor => $vendor, + ]); return view('plugins/installed', [ 'total' => count($vendorPlugins), 'plugins' => $vendorPlugins, @@ -59,6 +62,10 @@ class PluginController extends BaseController throw PageNotFoundException::forPageNotFound(); } + replace_breadcrumb_params([ + $vendor => $vendor, + $package => $package, + ]); return view('plugins/view', [ 'plugin' => $plugin, ]); @@ -76,6 +83,10 @@ class PluginController extends BaseController } helper('form'); + replace_breadcrumb_params([ + $vendor => $vendor, + $package => $package, + ]); return view('plugins/settings_general', [ 'plugin' => $plugin, ]); @@ -122,7 +133,9 @@ class PluginController extends BaseController helper('form'); replace_breadcrumb_params([ - 0 => $podcast->handle, + 0 => $podcast->handle, + $vendor => $vendor, + $package => $package, ]); return view('plugins/settings_podcast', [ 'podcast' => $podcast, @@ -171,8 +184,10 @@ class PluginController extends BaseController helper('form'); replace_breadcrumb_params([ - 0 => $episode->podcast->handle, - 1 => $episode->title, + 0 => $episode->podcast->handle, + 1 => $episode->title, + $vendor => $vendor, + $package => $package, ]); return view('plugins/settings_episode', [ 'podcast' => $episode->podcast, diff --git a/modules/Plugins/Core/BasePlugin.php b/modules/Plugins/Core/BasePlugin.php index 1ccbb3c5..16524e34 100644 --- a/modules/Plugins/Core/BasePlugin.php +++ b/modules/Plugins/Core/BasePlugin.php @@ -17,6 +17,8 @@ use League\CommonMark\MarkdownConverter; use Modules\Plugins\ExternalImageProcessor; use Modules\Plugins\ExternalLinkProcessor; use Modules\Plugins\Manifest\Manifest; +use Modules\Plugins\Manifest\Person; +use Modules\Plugins\Manifest\Repository; use Modules\Plugins\Manifest\Settings; use Modules\Plugins\Manifest\SettingsField; use RuntimeException; @@ -35,7 +37,7 @@ abstract class BasePlugin implements PluginInterface protected Manifest $manifest; - protected string $readmeHTML; + protected ?string $readmeHTML; public function __construct( protected string $vendor, @@ -121,6 +123,27 @@ abstract class BasePlugin implements PluginInterface return $this->manifest->homepage; } + final public function getRepository(): ?Repository + { + return $this->manifest->repository; + } + + /** + * @return list + */ + final public function getKeywords(): array + { + return $this->manifest->keywords; + } + + /** + * @return Person[] + */ + final public function getAuthors(): array + { + return $this->manifest->authors; + } + final public function getIconSrc(): string { return $this->iconSrc; @@ -194,11 +217,16 @@ abstract class BasePlugin implements PluginInterface return $description; } - final public function getReadmeHTML(): string + final public function getReadmeHTML(): ?string { return $this->readmeHTML; } + final public function getLicense(): string + { + return $this->manifest->license ?? 'UNLICENSED'; + } + final protected function getOption(string $option): mixed { return get_plugin_option($this->key, $option); @@ -238,7 +266,7 @@ abstract class BasePlugin implements PluginInterface $environment = new Environment([ 'html_input' => 'escape', 'allow_unsafe_links' => false, - 'host' => 'hello', + 'host' => (new URI(base_url()))->getHost(), ]); $environment->addExtension(new CommonMarkCoreExtension()); @@ -247,11 +275,15 @@ abstract class BasePlugin implements PluginInterface $environment->addEventListener( DocumentParsedEvent::class, - [new ExternalLinkProcessor($environment), 'onDocumentParsed'] + static function (DocumentParsedEvent $event): void { + (new ExternalLinkProcessor())->onDocumentParsed($event); + } ); $environment->addEventListener( DocumentParsedEvent::class, - [new ExternalImageProcessor($environment), 'onDocumentParsed'] + static function (DocumentParsedEvent $event): void { + (new ExternalImageProcessor())->onDocumentParsed($event); + } ); $converter = new MarkdownConverter($environment); diff --git a/modules/Plugins/Core/Plugins.php b/modules/Plugins/Core/Plugins.php index ec3968aa..a4a623ef 100644 --- a/modules/Plugins/Core/Plugins.php +++ b/modules/Plugins/Core/Plugins.php @@ -35,6 +35,8 @@ class Plugins protected static int $installedCount = 0; + protected static int $activeCount = 0; + public function __construct() { helper('plugins'); @@ -63,6 +65,21 @@ class Plugins return array_slice(static::$plugins, (($page - 1) * $perPage), $perPage); } + /** + * @return array + */ + public function getActivePlugins(): array + { + $activePlugins = []; + foreach (static::$plugins as $plugin) { + if ($plugin->isActive()) { + $activePlugins[] = $plugin; + } + } + + return $activePlugins; + } + /** * @return array */ @@ -177,6 +194,11 @@ class Plugins return static::$installedCount; } + public function getActiveCount(): int + { + return static::$activeCount; + } + public function uninstall(BasePlugin $plugin): bool { // remove all settings data @@ -235,6 +257,10 @@ class Plugins static::$plugins[] = $plugin; static::$pluginsByVendor[$vendor][] = $plugin; ++static::$installedCount; + + if ($plugin->isActive()) { + ++static::$activeCount; + } } } diff --git a/modules/Plugins/ExternalImageProcessor.php b/modules/Plugins/ExternalImageProcessor.php index 946afb65..1e53837f 100644 --- a/modules/Plugins/ExternalImageProcessor.php +++ b/modules/Plugins/ExternalImageProcessor.php @@ -5,19 +5,11 @@ declare(strict_types=1); namespace Modules\Plugins; use CodeIgniter\HTTP\URI; -use League\CommonMark\Environment\EnvironmentInterface; use League\CommonMark\Event\DocumentParsedEvent; use League\CommonMark\Extension\CommonMark\Node\Inline\Image; class ExternalImageProcessor { - private EnvironmentInterface $environment; - - public function __construct(EnvironmentInterface $environment) - { - $this->environment = $environment; - } - public function onDocumentParsed(DocumentParsedEvent $event): void { $document = $event->getDocument(); @@ -47,7 +39,6 @@ class ExternalImageProcessor $host = parse_url($url, PHP_URL_HOST); // TODO: load from environment's config - // return $host != $this->environment->getConfiguration()->get('host'); return $host !== (new URI(base_url()))->getHost(); } } diff --git a/modules/Plugins/ExternalLinkProcessor.php b/modules/Plugins/ExternalLinkProcessor.php index 8b7c1ea4..c7f944ce 100644 --- a/modules/Plugins/ExternalLinkProcessor.php +++ b/modules/Plugins/ExternalLinkProcessor.php @@ -5,19 +5,11 @@ declare(strict_types=1); namespace Modules\Plugins; use CodeIgniter\HTTP\URI; -use League\CommonMark\Environment\EnvironmentInterface; use League\CommonMark\Event\DocumentParsedEvent; use League\CommonMark\Extension\CommonMark\Node\Inline\Link; class ExternalLinkProcessor { - private EnvironmentInterface $environment; - - public function __construct(EnvironmentInterface $environment) - { - $this->environment = $environment; - } - public function onDocumentParsed(DocumentParsedEvent $event): void { $document = $event->getDocument(); @@ -48,7 +40,6 @@ class ExternalLinkProcessor $host = parse_url($url, PHP_URL_HOST); // TODO: load from environment's config - // return $host != $this->environment->getConfiguration()->get('host'); return $host !== (new URI(base_url()))->getHost(); } } diff --git a/modules/Plugins/Language/en/Plugins.php b/modules/Plugins/Language/en/Plugins.php index 49a611b4..a41c91db 100644 --- a/modules/Plugins/Language/en/Plugins.php +++ b/modules/Plugins/Language/en/Plugins.php @@ -9,11 +9,19 @@ declare(strict_types=1); */ return [ - 'installed' => 'Installed plugins ({count})', + 'installed' => 'Plugins installed', + 'about' => 'About', 'website' => 'Website', - 'settings' => '{pluginName} settings', + 'repository' => 'Code repository', + 'authors' => 'Authors', + 'author_email' => 'Email {authorName}', + 'author_homepage' => '{authorName} homepage', + 'settings' => 'Settings', + 'view' => 'View', 'activate' => 'Activate', 'deactivate' => 'Deactivate', + 'active' => 'Active', + 'inactive' => 'Inactive', 'uninstall' => 'Uninstall', 'keywords' => [ 'podcasting20' => 'Podcasting 2.0', diff --git a/modules/Plugins/Manifest/Manifest.php b/modules/Plugins/Manifest/Manifest.php index 6e701da5..11275bdd 100644 --- a/modules/Plugins/Manifest/Manifest.php +++ b/modules/Plugins/Manifest/Manifest.php @@ -10,14 +10,15 @@ use CodeIgniter\HTTP\URI; * @property string $name * @property string $version * @property ?string $description - * @property ?Author $author - * @property Author[] $authors + * @property Person[] $authors + * @property Person[] $contributors * @property ?URI $homepage * @property ?string $license * @property bool $private * @property list $keywords * @property list $hooks * @property ?Settings $settings + * @property ?Repository $repository */ class Manifest extends ManifestObject { @@ -25,27 +26,27 @@ class Manifest extends ManifestObject * @var array */ protected const VALIDATION_RULES = [ - 'name' => 'required|max_length[32]', + 'name' => 'required|max_length[128]', 'version' => 'required|regex_match[/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/]', - 'description' => 'permit_empty|max_length[128]', - 'author' => 'permit_empty', + 'description' => 'permit_empty|max_length[256]', 'authors' => 'permit_empty|is_list', 'homepage' => 'permit_empty|valid_url_strict', 'license' => 'permit_empty|string', 'private' => 'permit_empty|is_boolean', 'keywords.*' => 'permit_empty', 'hooks.*' => 'permit_empty|in_list[channelTag,itemTag,siteHead]', - 'settings' => 'permit_empty', + 'settings' => 'permit_empty|is_list', + 'repository' => 'permit_empty|is_list', ]; /** * @var array */ protected const CASTS = [ - 'author' => Author::class, - 'authors' => [Author::class], - 'homepage' => URI::class, - 'settings' => Settings::class, + 'authors' => [Person::class], + 'homepage' => URI::class, + 'settings' => Settings::class, + 'repository' => Repository::class, ]; protected string $name; @@ -54,10 +55,8 @@ class Manifest extends ManifestObject protected ?string $description = null; - protected ?Author $author = null; - /** - * @var Author[] + * @var Person[] */ protected array $authors = []; @@ -78,4 +77,6 @@ class Manifest extends ManifestObject protected array $hooks = []; protected ?Settings $settings = null; + + protected ?Repository $repository = null; } diff --git a/modules/Plugins/Manifest/ManifestObject.php b/modules/Plugins/Manifest/ManifestObject.php index 16cf701c..0569fb3d 100644 --- a/modules/Plugins/Manifest/ManifestObject.php +++ b/modules/Plugins/Manifest/ManifestObject.php @@ -32,7 +32,7 @@ abstract class ManifestObject public function __get(string $name): mixed { - if (isset($this->{$name})) { + if (property_exists($this, $name)) { return $this->{$name}; } diff --git a/modules/Plugins/Manifest/Author.php b/modules/Plugins/Manifest/Person.php similarity index 97% rename from modules/Plugins/Manifest/Author.php rename to modules/Plugins/Manifest/Person.php index 97e8d9ac..1a5b4289 100644 --- a/modules/Plugins/Manifest/Author.php +++ b/modules/Plugins/Manifest/Person.php @@ -12,7 +12,7 @@ use Exception; * @property ?string $email * @property ?URI $url */ -class Author extends ManifestObject +class Person extends ManifestObject { protected const VALIDATION_RULES = [ 'name' => 'required', diff --git a/modules/Plugins/Manifest/Repository.php b/modules/Plugins/Manifest/Repository.php new file mode 100644 index 00000000..266125b6 --- /dev/null +++ b/modules/Plugins/Manifest/Repository.php @@ -0,0 +1,34 @@ + 'required|in_list[git]', + 'url' => 'required|valid_url_strict', + 'directory' => 'permit_empty', + ]; + + /** + * @var array + */ + protected const CASTS = [ + 'url' => URI::class, + ]; + + protected string $type; + + protected URI $url; + + protected ?string $directory = null; +} diff --git a/modules/Plugins/Manifest/SettingsField.php b/modules/Plugins/Manifest/SettingsField.php index d011b579..f303bcdd 100644 --- a/modules/Plugins/Manifest/SettingsField.php +++ b/modules/Plugins/Manifest/SettingsField.php @@ -29,9 +29,9 @@ class SettingsField extends ManifestObject protected string $label; - protected ?string $hint = ''; + protected string $hint = ''; - protected ?string $helper = ''; + protected string $helper = ''; protected bool $optional = false; } diff --git a/modules/Plugins/Manifest/schema.json b/modules/Plugins/Manifest/schema.json index 58528a1f..80283589 100644 --- a/modules/Plugins/Manifest/schema.json +++ b/modules/Plugins/Manifest/schema.json @@ -21,9 +21,6 @@ "description": "This helps people discover your plugin as it's listed in repositories", "type": "string" }, - "author": { - "$ref": "#/$defs/person" - }, "authors": { "type": "array", "items": { diff --git a/tailwind.config.cjs b/tailwind.config.cjs index 2e7248f1..50cea743 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -139,6 +139,9 @@ module.exports = { textDecoration: "none", }, }, + input: { + margin: 0, + }, }, }, sm: { diff --git a/themes/cp_admin/_layout.php b/themes/cp_admin/_layout.php index 5bc67710..a52a5441 100644 --- a/themes/cp_admin/_layout.php +++ b/themes/cp_admin/_layout.php @@ -36,15 +36,15 @@ $isEpisodeArea = isset($podcast) && isset($episode);
-
+
is_premium) || ($isPodcastArea && $podcast->is_premium)): ?>
- is_premium) ? lang('PremiumPodcasts.episode_is_premium') : lang('PremiumPodcasts.podcast_is_premium') ?> - renderSection('pageTitle') ?> + is_premium) ? lang('PremiumPodcasts.episode_is_premium') : lang('PremiumPodcasts.podcast_is_premium') ?> + renderSection('pageTitle') ?>
- renderSection('pageTitle') ?> + renderSection('pageTitle') ?> renderSection('headerLeft') ?>
diff --git a/themes/cp_admin/_message_block.php b/themes/cp_admin/_message_block.php index 5f1ba623..42a34097 100644 --- a/themes/cp_admin/_message_block.php +++ b/themes/cp_admin/_message_block.php @@ -1,33 +1,33 @@ has('message')): ?> - + has('error')): ?> - + has('errors')): ?> - +
-
+ has('warning')): ?> - + has('warnings')): ?> - +
-
+ diff --git a/themes/cp_admin/_partials/_nav_aside.php b/themes/cp_admin/_partials/_nav_aside.php index 88773cae..0f2867b1 100644 --- a/themes/cp_admin/_partials/_nav_aside.php +++ b/themes/cp_admin/_partials/_nav_aside.php @@ -15,7 +15,7 @@ $isEpisodeArea = isset($podcast) && isset($episode);
- + - - - + - + published_at === null): ?> - + - + diff --git a/themes/cp_admin/episode/embed.php b/themes/cp_admin/episode/embed.php index 58af05b8..47c2d1e5 100644 --- a/themes/cp_admin/episode/embed.php +++ b/themes/cp_admin/episode/embed.php @@ -33,15 +33,15 @@ $embedHeight = config('Embed')->height;
- embed_url}\">") ?>" /> + embed_url}\">") ?>" /> - +
- + - +
endSection() ?> diff --git a/themes/cp_admin/episode/list.php b/themes/cp_admin/episode/list.php index a3d3fde0..3358eeb8 100644 --- a/themes/cp_admin/episode/list.php +++ b/themes/cp_admin/episode/list.php @@ -10,7 +10,7 @@ section('headerRight') ?> - + endSection() ?> @@ -28,16 +28,16 @@

- + ]) ?>
@@ -161,10 +161,10 @@ data_table( HTML), ]; } - return '' . - ''; + ''; }, ], ], diff --git a/themes/cp_admin/episode/persons.php b/themes/cp_admin/episode/persons.php index a66a1520..3f79a0ba 100644 --- a/themes/cp_admin/episode/persons.php +++ b/themes/cp_admin/episode/persons.php @@ -10,7 +10,7 @@ section('headerRight') ?> - + endSection() ?> section('content') ?> @@ -18,12 +18,12 @@
- - - - + - +
@@ -87,7 +87,7 @@ 'header' => lang('Common.actions'), 'cell' => function ($person): string { // @icon('delete-bin-fill') - return ''; + return '' . lang('Person.episode_form.remove') . ''; }, ], ], diff --git a/themes/cp_admin/episode/publish.php b/themes/cp_admin/episode/publish.php index 1564462e..8e853dff 100644 --- a/themes/cp_admin/episode/publish.php +++ b/themes/cp_admin/episode/publish.php @@ -16,7 +16,7 @@ 'class' => 'mr-2 text-lg', ]) . lang('Episode.publish_form.back_to_episode_dashboard'), [ - 'class' => 'inline-flex items-center font-semibold mr-4 text-sm focus:ring-accent', + 'class' => 'inline-flex items-center font-semibold mr-4 text-sm', ], ) ?> @@ -39,7 +39,7 @@
- +
- +
/> - +
- - +
- - + +
diff --git a/themes/cp_admin/episode/publish_date_edit.php b/themes/cp_admin/episode/publish_date_edit.php index 83493448..c142d058 100644 --- a/themes/cp_admin/episode/publish_date_edit.php +++ b/themes/cp_admin/episode/publish_date_edit.php @@ -24,16 +24,16 @@ - - + diff --git a/themes/cp_admin/episode/publish_edit.php b/themes/cp_admin/episode/publish_edit.php index 31bbf3d4..12cc3efc 100644 --- a/themes/cp_admin/episode/publish_edit.php +++ b/themes/cp_admin/episode/publish_edit.php @@ -41,7 +41,7 @@
- +
- +
/> - +
- - +
- - + +
diff --git a/themes/cp_admin/episode/soundbites_list.php b/themes/cp_admin/episode/soundbites_list.php index 1955bfce..d64a8ef6 100644 --- a/themes/cp_admin/episode/soundbites_list.php +++ b/themes/cp_admin/episode/soundbites_list.php @@ -10,7 +10,7 @@ section('headerRight') ?> - + endSection() ?> section('content') ?> @@ -26,10 +26,10 @@ [ 'header' => lang('Common.actions'), 'cell' => function ($soundbite): string { - return '' . - 'id . '-menu" labelledby="more-dropdown-' . $soundbite->id . '" offsetY="-24" items="' . esc(json_encode([ [ 'type' => 'link', 'title' => lang('Soundbite.delete'), diff --git a/themes/cp_admin/episode/soundbites_new.php b/themes/cp_admin/episode/soundbites_new.php index c6ba10fb..bbcd952e 100644 --- a/themes/cp_admin/episode/soundbites_new.php +++ b/themes/cp_admin/episode/soundbites_new.php @@ -14,10 +14,10 @@
- @@ -29,7 +29,7 @@ - + diff --git a/themes/cp_admin/episode/unpublish.php b/themes/cp_admin/episode/unpublish.php index 50b8fb14..26281a53 100644 --- a/themes/cp_admin/episode/unpublish.php +++ b/themes/cp_admin/episode/unpublish.php @@ -13,13 +13,13 @@
- + - +
- - + +
diff --git a/themes/cp_admin/episode/video_clips_list.php b/themes/cp_admin/episode/video_clips_list.php index 2a0e075c..5a70ac4d 100644 --- a/themes/cp_admin/episode/video_clips_list.php +++ b/themes/cp_admin/episode/video_clips_list.php @@ -16,7 +16,7 @@ use CodeIgniter\I18n\Time; section('headerRight') ?> - + endSection() ?> section('content') ?> @@ -52,7 +52,7 @@ use CodeIgniter\I18n\Time; 'passed' => '', ]; - return '' . lang('VideoClip.list.status.' . $videoClip->status) . ''; + return '' . lang('VideoClip.list.status.' . $videoClip->status) . ''; }, ], [ @@ -63,7 +63,7 @@ use CodeIgniter\I18n\Time; 'portrait' => 'aspect-[9/16]', 'squared' => 'aspect-square', ]; - return '
' . icon('play-fill') . '
#' . $videoClip->id . ' – ' . esc($videoClip->title) . 'by ' . esc($videoClip->user->username) . '
' . format_duration((int) $videoClip->duration) . '
'; + return '
' . icon('play-fill') . '
#' . $videoClip->id . ' – ' . esc($videoClip->title) . 'by ' . esc($videoClip->user->username) . '
' . format_duration((int) $videoClip->duration) . '
'; }, ], [ @@ -98,14 +98,14 @@ use CodeIgniter\I18n\Time; helper('misc'); $filename = 'clip-' . slugify($videoClip->title) . "-{$videoClip->start_time}-{$videoClip->end_time}"; // @icon('import-fill') - $downloadButton = '' . lang('VideoClip.download_clip') . ''; + $downloadButton = '' . lang('VideoClip.download_clip') . ''; } return '
' . $downloadButton . - '' . - 'id . '-menu" labelledby="more-dropdown-' . $videoClip->id . '" offsetY="-24" items="' . esc(json_encode([ [ 'type' => 'link', 'title' => lang('VideoClip.go_to_page'), diff --git a/themes/cp_admin/episode/video_clips_new.php b/themes/cp_admin/episode/video_clips_new.php index fdcd72b0..dbd56409 100644 --- a/themes/cp_admin/episode/video_clips_new.php +++ b/themes/cp_admin/episode/video_clips_new.php @@ -31,48 +31,48 @@
- - +
- - + - + + isRequired="true" + hint="">
themes as $themeName => $colors): ?> - + style="--color-accent-base: ; --color-background-preview: ">
-
+ - +
diff --git a/themes/cp_admin/episode/video_clips_requirements.php b/themes/cp_admin/episode/video_clips_requirements.php index 73d8d1a2..d7b7e3fb 100644 --- a/themes/cp_admin/episode/video_clips_requirements.php +++ b/themes/cp_admin/episode/video_clips_requirements.php @@ -12,9 +12,9 @@
- 'flex-shrink-0 text-xl text-orange-600', - ]) ?> + ]) ?>

$value): ?> diff --git a/themes/cp_admin/episode/view.php b/themes/cp_admin/episode/view.php index a5cc18c6..bb2281a6 100644 --- a/themes/cp_admin/episode/view.php +++ b/themes/cp_admin/episode/view.php @@ -12,19 +12,19 @@ published_at, $episode->publication_status, - 'text-sm ml-2 align-middle', + 'text-sm align-middle', ) ?> endSection() ?> section('headerRight') ?> publication_status === 'published'): ?> - +> id, @@ -41,7 +41,7 @@
- " dataUrl="id, 'PodcastByEpisode', @@ -49,7 +49,7 @@ $episode->id, ) ?>"/> - " dataUrl="id, 'PodcastByEpisode', diff --git a/themes/cp_admin/fediverse/blocked_actors.php b/themes/cp_admin/fediverse/blocked_actors.php index 683ba5c7..9240a5d1 100644 --- a/themes/cp_admin/fediverse/blocked_actors.php +++ b/themes/cp_admin/fediverse/blocked_actors.php @@ -14,12 +14,12 @@
- - + isRequired="true" /> + id . '" />' . csrf_field() . - '' . + '' . lang('Fediverse.list.unblock') . '' . ''; }, ], diff --git a/themes/cp_admin/fediverse/blocked_domains.php b/themes/cp_admin/fediverse/blocked_domains.php index ec26fda7..3d34a233 100644 --- a/themes/cp_admin/fediverse/blocked_domains.php +++ b/themes/cp_admin/fediverse/blocked_domains.php @@ -14,11 +14,11 @@
- - + isRequired="true" /> + name) . '" />' . csrf_field() . - '' . + '' . lang('Fediverse.list.unblock') . '' . ''; }, ], diff --git a/themes/cp_admin/import/_queue_table.php b/themes/cp_admin/import/_queue_table.php index c6ac64eb..b607b9b1 100644 --- a/themes/cp_admin/import/_queue_table.php +++ b/themes/cp_admin/import/_queue_table.php @@ -38,9 +38,9 @@ use Modules\PodcastImport\Entities\TaskStatus; 'passed' => '', ]; - $errorHint = $importTask->status === TaskStatus::Failed ? hint_tooltip(esc($importTask->error), 'ml-1') : ''; + $errorHint = $importTask->status === TaskStatus::Failed ? '' . esc($importTask->error) . '' : ''; - return '
' . lang('PodcastImport.queue.status.' . $importTask->status->value) . '' . $errorHint . '
'; + return '
' . lang('PodcastImport.queue.status.' . $importTask->status->value) . '' . $errorHint . '
'; }, ], [ @@ -86,10 +86,10 @@ use Modules\PodcastImport\Entities\TaskStatus; 'cell' => function (PodcastImportTask $importTask) { if ($importTask->episodes_count) { $progressPercentage = (int) ($importTask->getProgress() * 100) . '%'; - $moreInfoHelper = hint_tooltip(lang('PodcastImport.queue.imported_episodes_hint', [ + $moreInfoHelper = '' . lang('PodcastImport.queue.imported_episodes_hint', [ 'newlyImportedCount' => $importTask->episodes_newly_imported, 'alreadyImportedCount' => $importTask->episodes_already_imported, - ]), 'ml-1'); + ]) . ''; return << {$progressPercentage} @@ -134,10 +134,10 @@ use Modules\PodcastImport\Entities\TaskStatus; } return '
' . - '' . - '' . + '' . '
'; }, ], diff --git a/themes/cp_admin/import/add_to_queue.php b/themes/cp_admin/import/add_to_queue.php index 75046a27..931ed1cb 100644 --- a/themes/cp_admin/import/add_to_queue.php +++ b/themes/cp_admin/import/add_to_queue.php @@ -13,51 +13,51 @@
- - - + - + isRequired="true" /> + -
- +
'absolute inset-0 h-full text-xl opacity-40 left-3', ]) ?> - +
- - -
+ - +
diff --git a/themes/cp_admin/import/podcast_queue.php b/themes/cp_admin/import/podcast_queue.php index 9deec3a8..0a3b7858 100644 --- a/themes/cp_admin/import/podcast_queue.php +++ b/themes/cp_admin/import/podcast_queue.php @@ -10,7 +10,7 @@ section('headerRight') ?> - + endSection() ?> section('content') ?> diff --git a/themes/cp_admin/import/podcast_sync.php b/themes/cp_admin/import/podcast_sync.php index d71ad77d..702c0680 100644 --- a/themes/cp_admin/import/podcast_sync.php +++ b/themes/cp_admin/import/podcast_sync.php @@ -11,14 +11,14 @@ section('content') ?>
- - + endSection() ?> diff --git a/themes/cp_admin/import/queue.php b/themes/cp_admin/import/queue.php index faedb76f..8253a9ab 100644 --- a/themes/cp_admin/import/queue.php +++ b/themes/cp_admin/import/queue.php @@ -13,7 +13,7 @@ section('headerRight') ?> - + endSection() ?> diff --git a/themes/cp_admin/my_account/change_password.php b/themes/cp_admin/my_account/change_password.php index f0731a9e..93df4baf 100644 --- a/themes/cp_admin/my_account/change_password.php +++ b/themes/cp_admin/my_account/change_password.php @@ -13,18 +13,18 @@
- - - + endSection() ?> diff --git a/themes/cp_admin/page/create.php b/themes/cp_admin/page/create.php index f1e32d23..2ab5c74c 100644 --- a/themes/cp_admin/page/create.php +++ b/themes/cp_admin/page/create.php @@ -14,29 +14,29 @@
-
- + …/pages/ - +
- - + diff --git a/themes/cp_admin/page/edit.php b/themes/cp_admin/page/edit.php index 95c5941e..614d50c4 100644 --- a/themes/cp_admin/page/edit.php +++ b/themes/cp_admin/page/edit.php @@ -14,32 +14,32 @@
-
- + …/pages/ - +
- - + diff --git a/themes/cp_admin/page/list.php b/themes/cp_admin/page/list.php index 4b08a44c..e64deb01 100644 --- a/themes/cp_admin/page/list.php +++ b/themes/cp_admin/page/list.php @@ -10,7 +10,7 @@ section('headerRight') ?> - + endSection() ?> @@ -31,9 +31,9 @@ [ 'header' => lang('Common.actions'), 'cell' => function ($page) { - return '' . - '' . - ''; + return '' . lang('Page.go_to_page') . '' . + '' . lang('Page.edit') . '' . + '' . lang('Page.delete') . ''; }, ], ], diff --git a/themes/cp_admin/page/view.php b/themes/cp_admin/page/view.php index 609fa4ad..8d26eb31 100644 --- a/themes/cp_admin/page/view.php +++ b/themes/cp_admin/page/view.php @@ -10,7 +10,7 @@ section('headerRight') ?> - + endSection() ?> section('content') ?> diff --git a/themes/cp_admin/person/_card.php b/themes/cp_admin/person/_card.php index 7a73e7d4..b4506c8c 100644 --- a/themes/cp_admin/person/_card.php +++ b/themes/cp_admin/person/_card.php @@ -8,8 +8,8 @@

full_name) ?>

- -
- -
diff --git a/themes/cp_admin/podcast/_sidebar.php b/themes/cp_admin/podcast/_sidebar.php index 4f53c3a6..c0adf96a 100644 --- a/themes/cp_admin/podcast/_sidebar.php +++ b/themes/cp_admin/podcast/_sidebar.php @@ -92,7 +92,7 @@ $podcastNavigation = [ foreach (plugins()->getPluginsWithPodcastSettings() as $plugin) { $route = route_to('plugins-podcast-settings', $podcast->id, $plugin->getKey()); $podcastNavigation['plugins']['items'][] = $route; - $podcastNavigation['plugins']['items-labels'][] = $plugin->getName(); + $podcastNavigation['plugins']['items-labels'][$route] = $plugin->getName(); $podcastNavigation['plugins']['items-permissions'][$route] = 'edit'; } @@ -118,7 +118,7 @@ foreach (plugins()->getPluginsWithPodcastSettings() as $plugin) { " class="inline-flex items-center text-sm hover:underline" data-tooltip="bottom" title="">@handle) ?> @@ -128,7 +128,7 @@ foreach (plugins()->getPluginsWithPodcastSettings() as $plugin) {
- + 'text-xl text-orange-400 inline-flex items-center justify-center rounded', ]) . 'RSS Feed' . icon('external-link-fill', [ @@ -136,7 +136,7 @@ foreach (plugins()->getPluginsWithPodcastSettings() as $plugin) { ]) ?> is_op3_enabled): ?> - + 'text-xl text-white inline-flex items-center justify-center rounded', ]) . 'OP3' . icon('external-link-fill', [ diff --git a/themes/cp_admin/podcast/analytics/index.php b/themes/cp_admin/podcast/analytics/index.php index c625586d..0275ddea 100644 --- a/themes/cp_admin/podcast/analytics/index.php +++ b/themes/cp_admin/podcast/analytics/index.php @@ -11,21 +11,21 @@ section('content') ?>
- - - - - - " dataUrl="id, 'PodcastByCountry', 'Weekly', ) ?>" /> - " dataUrl="id, 'PodcastByCountry', 'Yearly', ) ?>" /> - - " dataUrl="id, 'PodcastByPlayer', 'ByAppWeekly', ) ?>" /> - " dataUrl="id, 'PodcastByService', 'ByServiceWeekly', ) ?>" /> - " dataUrl="id, 'PodcastByPlayer', 'ByDeviceWeekly', ) ?>" /> - " dataUrl="id, 'PodcastByPlayer', 'ByOsWeekly', ) ?>" /> - - " dataUrl="id, 'Podcast', 'ByWeekday', ) ?>" /> - " dataUrl="id, 'PodcastByHour', diff --git a/themes/cp_admin/podcast/analytics/unique_listeners.php b/themes/cp_admin/podcast/analytics/unique_listeners.php index 89522300..3fff9be4 100644 --- a/themes/cp_admin/podcast/analytics/unique_listeners.php +++ b/themes/cp_admin/podcast/analytics/unique_listeners.php @@ -11,14 +11,14 @@ section('content') ?>
- - - " dataUrl="id, 'WebsiteByReferer', 'ByDomainWeekly', ) ?>" /> - " dataUrl="id, 'WebsiteByReferer', 'ByDomainYearly', ) ?>" /> - " dataUrl="id, 'WebsiteByEntryPage', ) ?>" /> - " dataUrl="id, 'WebsiteByBrowser', diff --git a/themes/cp_admin/podcast/create.php b/themes/cp_admin/podcast/create.php index 3e33bc5a..c5d17353 100644 --- a/themes/cp_admin/podcast/create.php +++ b/themes/cp_admin/podcast/create.php @@ -17,87 +17,87 @@
- - - + isRequired="true" /> -
- - + + isChecked="false" >
- - + - + + isChecked="false" >
-
+ - - - -
- +
- - + - + + isChecked="false" >
-
+ - - + isRequired="true" /> - + isRequired="true" /> - - + + - - - + -
- +
'absolute inset-0 h-full text-xl opacity-40 left-3', ]) ?> - +
- -
+ - - - - + + + + - -
'text-sm', ]) ?>op3.dev - - + + - - - + - - - - + - - + + - - + + - + - + - +
diff --git a/themes/cp_admin/podcast/delete.php b/themes/cp_admin/podcast/delete.php index 83576b90..d2f5217d 100644 --- a/themes/cp_admin/podcast/delete.php +++ b/themes/cp_admin/podcast/delete.php @@ -13,13 +13,13 @@
- + - +
- - + +
diff --git a/themes/cp_admin/podcast/edit.php b/themes/cp_admin/podcast/edit.php index d38bc5a8..d9f0b10c 100644 --- a/themes/cp_admin/podcast/edit.php +++ b/themes/cp_admin/podcast/edit.php @@ -13,7 +13,7 @@ endSection() ?> section('headerRight') ?> - + endSection() ?> section('content') ?> @@ -21,9 +21,10 @@
+
banner_id !== null): ?> - +
@@ -38,90 +39,89 @@
- - - + isRequired="true" /> -
- - + + isChecked="type === 'serial' ? 'true' : 'false' ?>" >
- +
- - + - + + isChecked="medium === 'audiobook' ? 'true' : 'false' ?>" >
-
+ - - + isRequired="true" /> - + isRequired="true" /> -
- +
- - + - + + isChecked="parental_advisory === 'explicit' ? 'true' : 'false' ?>" >
-
+ - - + isRequired="true" /> - + isRequired="true" /> - - + + - - - + -
- +
'absolute inset-0 h-full text-xl opacity-40 left-3', ]) ?> - +
- -
+ - - - - + + + + - - 'text-sm', ]) ?>op3.dev - - + + - - - + - - - - - + - - + + - - + + - + - +
- + endSection() ?> diff --git a/themes/cp_admin/podcast/latest_episodes.php b/themes/cp_admin/podcast/latest_episodes.php index 47bdd5c7..9835e997 100644 --- a/themes/cp_admin/podcast/latest_episodes.php +++ b/themes/cp_admin/podcast/latest_episodes.php @@ -1,10 +1,10 @@
- + + ) ?>" class="inline-flex items-center text-sm underline hover:no-underline"> 'ml-2', diff --git a/themes/cp_admin/podcast/list.php b/themes/cp_admin/podcast/list.php index 5ecb7976..08758797 100644 --- a/themes/cp_admin/podcast/list.php +++ b/themes/cp_admin/podcast/list.php @@ -13,8 +13,8 @@ // @icon('import-fill') // @icon('add-fill') ?> - - + + endSection() ?> diff --git a/themes/cp_admin/podcast/monetization_other.php b/themes/cp_admin/podcast/monetization_other.php index 68704a13..fd470696 100644 --- a/themes/cp_admin/podcast/monetization_other.php +++ b/themes/cp_admin/podcast/monetization_other.php @@ -12,36 +12,36 @@
- -
- +
- - + +
- - + +
- - + +
-
+ - +
endSection() ?> diff --git a/themes/cp_admin/podcast/notifications.php b/themes/cp_admin/podcast/notifications.php index dfa887b5..8551ced5 100644 --- a/themes/cp_admin/podcast/notifications.php +++ b/themes/cp_admin/podcast/notifications.php @@ -9,7 +9,7 @@ endSection() ?> section('headerRight') ?> - + endSection() ?> section('content') ?> diff --git a/themes/cp_admin/podcast/persons.php b/themes/cp_admin/podcast/persons.php index 697d3ea2..cab12b6d 100644 --- a/themes/cp_admin/podcast/persons.php +++ b/themes/cp_admin/podcast/persons.php @@ -10,7 +10,7 @@ section('headerRight') ?> - + endSection() ?> section('content') ?> @@ -18,12 +18,12 @@
- - + isRequired="true" /> - - + - +
lang('Common.actions'), 'cell' => function ($person): string { // @icon('delete-bin-fill') - return ''; + return '' . lang('Person.podcast_form.remove') . ''; }, ], ], diff --git a/themes/cp_admin/podcast/platforms.php b/themes/cp_admin/podcast/platforms.php index e65facde..1f994bf1 100644 --- a/themes/cp_admin/podcast/platforms.php +++ b/themes/cp_admin/podcast/platforms.php @@ -9,7 +9,7 @@ endSection() ?> section('headerRight') ?> - + endSection() ?> section('content') ?> diff --git a/themes/cp_admin/podcast/publish.php b/themes/cp_admin/podcast/publish.php index b8979193..25f724a3 100644 --- a/themes/cp_admin/podcast/publish.php +++ b/themes/cp_admin/podcast/publish.php @@ -16,7 +16,7 @@ 'class' => 'mr-2 text-lg', ]) . lang('Podcast.publish_form.back_to_podcast_dashboard'), [ - 'class' => 'inline-flex items-center font-semibold mr-4 text-sm focus:ring-accent', + 'class' => 'inline-flex items-center font-semibold mr-4 text-sm', ], ) ?> @@ -39,7 +39,7 @@
- +
- +
/> - +
- - +
- - + +
diff --git a/themes/cp_admin/podcast/publish_edit.php b/themes/cp_admin/podcast/publish_edit.php index a1eaae96..e24e1d37 100644 --- a/themes/cp_admin/podcast/publish_edit.php +++ b/themes/cp_admin/podcast/publish_edit.php @@ -40,7 +40,7 @@
- +
- +
/> - +
- - +
- - + +
diff --git a/themes/cp_admin/podcast/view.php b/themes/cp_admin/podcast/view.php index 51a2ad39..04a1156a 100644 --- a/themes/cp_admin/podcast/view.php +++ b/themes/cp_admin/podcast/view.php @@ -13,8 +13,8 @@ // @icon('pencil-fill') // @icon('add-fill') ?> - - + + endSection() ?> section('content') ?> diff --git a/themes/cp_admin/settings/about.php b/themes/cp_admin/settings/about.php index 2c8e8657..3c91bfe0 100644 --- a/themes/cp_admin/settings/about.php +++ b/themes/cp_admin/settings/about.php @@ -12,7 +12,7 @@
- + - +
- - + - +
- - - - + + + - + - +
diff --git a/themes/cp_admin/settings/theme.php b/themes/cp_admin/settings/theme.php index 1b0f9ea8..4a1e4c9b 100644 --- a/themes/cp_admin/settings/theme.php +++ b/themes/cp_admin/settings/theme.php @@ -16,24 +16,24 @@
-
themes as $themeName => $color): ?> - + ->get('App.theme') ? 'true' : 'false' ?>" >
- + -
+
endSection() ?> \ No newline at end of file diff --git a/themes/cp_admin/subscription/create.php b/themes/cp_admin/subscription/create.php index 0cdff137..c73a091a 100644 --- a/themes/cp_admin/subscription/create.php +++ b/themes/cp_admin/subscription/create.php @@ -15,20 +15,20 @@ - + isRequired="true" /> - - + diff --git a/themes/cp_admin/subscription/delete.php b/themes/cp_admin/subscription/delete.php index e82e16ba..de0295b4 100644 --- a/themes/cp_admin/subscription/delete.php +++ b/themes/cp_admin/subscription/delete.php @@ -13,15 +13,15 @@
- $subscription->email, -]) ?> +]) ?> - +
- - + +
diff --git a/themes/cp_admin/subscription/edit.php b/themes/cp_admin/subscription/edit.php index 11fa30fc..cd50b7ae 100644 --- a/themes/cp_admin/subscription/edit.php +++ b/themes/cp_admin/subscription/edit.php @@ -24,7 +24,7 @@
- - + diff --git a/themes/cp_admin/subscription/list.php b/themes/cp_admin/subscription/list.php index f534721d..4bf4b497 100644 --- a/themes/cp_admin/subscription/list.php +++ b/themes/cp_admin/subscription/list.php @@ -10,7 +10,7 @@ section('headerRight') ?> - + endSection() ?> @@ -18,7 +18,7 @@
- - +
@@ -67,7 +67,7 @@ 'expired' => 'default', ]; - return '' . lang('Subscription.status.' . $subscription->status) . ''; + return '' . lang('Subscription.status.' . $subscription->status) . ''; }, ], [ @@ -116,10 +116,10 @@ array_splice($items, 3, 0, $suspendAction); - return '' . - ''; + ''; }, ], ], diff --git a/themes/cp_admin/subscription/suspend.php b/themes/cp_admin/subscription/suspend.php index 3b3c8d9c..b393b06f 100644 --- a/themes/cp_admin/subscription/suspend.php +++ b/themes/cp_admin/subscription/suspend.php @@ -13,11 +13,11 @@
- $subscription->email, -]) ?> +]) ?> -
- + - +
diff --git a/themes/cp_admin/user/create.php b/themes/cp_admin/user/create.php index c37e006d..623bb8bb 100644 --- a/themes/cp_admin/user/create.php +++ b/themes/cp_admin/user/create.php @@ -14,26 +14,26 @@
- + isRequired="true" /> - + isRequired="true" /> - + isRequired="true" /> - + diff --git a/themes/cp_admin/user/delete.php b/themes/cp_admin/user/delete.php index 9cf273df..4bee86a1 100644 --- a/themes/cp_admin/user/delete.php +++ b/themes/cp_admin/user/delete.php @@ -17,17 +17,17 @@
- $user->username, -]) ?> +]) ?> - $user->username, -]) ?> +]) ?>
- - + +
diff --git a/themes/cp_admin/user/edit.php b/themes/cp_admin/user/edit.php index 61b0c486..1900a7aa 100644 --- a/themes/cp_admin/user/edit.php +++ b/themes/cp_admin/user/edit.php @@ -18,15 +18,15 @@
- + isRequired="true" /> - + diff --git a/themes/cp_admin/user/list.php b/themes/cp_admin/user/list.php index aec95ff2..cd9788f1 100644 --- a/themes/cp_admin/user/list.php +++ b/themes/cp_admin/user/list.php @@ -10,7 +10,7 @@ section('headerRight') ?> - + endSection() ?> @@ -34,20 +34,20 @@ $role = get_group_info(get_instance_group($user))['title']; if ((bool) $user->is_owner) { - $role = '
' . icon('shield-user-fill') . '' . $role . '
'; + $role = '
' . icon('shield-user-fill') . '' . $role . '
'; } // @icon('pencil-fill') - return $role . '' . lang('User.edit_role', [ + return $role . '' . lang('User.edit_role', [ 'username' => esc($user->username), - ]) . ''; + ]) . ''; }, ], [ 'header' => lang('Common.actions'), 'cell' => function ($user) { - return '' . - 'id . '" type="button" class="inline-flex items-center p-1" data-dropdown="button" data-dropdown-target="more-dropdown-' . $user->id . '-menu" aria-haspopup="true" aria-expanded="false">' . icon('more-2-fill') . '' . + '
-
\ No newline at end of file diff --git a/themes/cp_app/_message_block.php b/themes/cp_app/_message_block.php index 1504aa37..7933d6cb 100644 --- a/themes/cp_app/_message_block.php +++ b/themes/cp_app/_message_block.php @@ -1,19 +1,19 @@ has('message')): ?> - + has('error')): ?> - + has('errors')): ?> - +
-
+ diff --git a/themes/cp_app/_persons_modal.php b/themes/cp_app/_persons_modal.php index d537039d..56f924f6 100644 --- a/themes/cp_app/_persons_modal.php +++ b/themes/cp_app/_persons_modal.php @@ -21,7 +21,7 @@

information_url): ?> - full_name) ?> + full_name) ?> full_name) ?> diff --git a/themes/cp_app/embed.php b/themes/cp_app/embed.php index b4ab4480..498f1de5 100644 --- a/themes/cp_app/embed.php +++ b/themes/cp_app/embed.php @@ -34,7 +34,7 @@ is_premium && ! is_unlocked($podcast->handle)): ?> - +

is_premium && ! is_unlocked($episode->podcast->handle)): ?> - + 'text-xl', ]) ?> diff --git a/themes/cp_app/episode/activity.php b/themes/cp_app/episode/activity.php index 9d0c0c8f..2a406ee3 100644 --- a/themes/cp_app/episode/activity.php +++ b/themes/cp_app/episode/activity.php @@ -12,13 +12,13 @@ ->display_name) ?>" class="w-10 h-10 rounded-full aspect-square" loading="lazy" />
- - +

diff --git a/themes/cp_app/episode/comment.php b/themes/cp_app/episode/comment.php index 5628862c..ea038878 100644 --- a/themes/cp_app/episode/comment.php +++ b/themes/cp_app/episode/comment.php @@ -4,7 +4,7 @@
-
- - - - -
+ value="type ?>" + options=" lang('Episode.form.type.full'), + 'value' => 'full', + 'hint' => lang('Episode.form.type.full_hint'), + ], + [ + 'label' => lang('Episode.form.type.trailer'), + 'value' => 'trailer', + 'hint' => lang('Episode.form.type.trailer_hint'), + ], + [ + 'label' => lang('Episode.form.type.bonus'), + 'value' => 'bonus', + 'hint' => lang('Episode.form.type.bonus_hint'), + ], + ])) ?>" + isRequired="true" +/> -
- - - - -
+ value="parental_advisory ?>" + options=" lang('Episode.form.parental_advisory.undefined'), + 'value' => 'undefined', + ], + [ + 'label' => lang('Episode.form.parental_advisory.clean'), + 'value' => 'clean', + ], + [ + 'label' => lang('Episode.form.parental_advisory.explicit'), + 'value' => 'explicit', + ], + ])) ?>" + isRequired="true" +/> diff --git a/themes/cp_admin/episode/persons.php b/themes/cp_admin/episode/persons.php index 3f79a0ba..814f3754 100644 --- a/themes/cp_admin/episode/persons.php +++ b/themes/cp_admin/episode/persons.php @@ -24,7 +24,7 @@ >
diff --git a/themes/cp_admin/plugins/_settings.php b/themes/cp_admin/plugins/_settings.php index a798efe2..a8157911 100644 --- a/themes/cp_admin/plugins/_settings.php +++ b/themes/cp_admin/plugins/_settings.php @@ -1,14 +1,144 @@ -
+ + getSettingsFields($type) as $field): ?> - + type): case 'checkbox': ?> + label ?> + + label ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/themes/cp_admin/podcast/_platform.php b/themes/cp_admin/podcast/_platform.php index b83ddf0c..9afb4e97 100644 --- a/themes/cp_admin/podcast/_platform.php +++ b/themes/cp_admin/podcast/_platform.php @@ -42,7 +42,7 @@ ]) ?>" data-tooltip="bottom">
-
+
-
- -
- - -
-
-
- -
- - - -
-
+ + + @@ -98,29 +103,32 @@ options="" /> -
- -
- - - -
-
+
-
- -
- - -
-
-
- -
- - - -
-
+ + +
@@ -117,35 +124,39 @@ as="Select" name="category" label="" - selected="category_id ?>" + value="category_id ?>" options="" isRequired="true" /> -
- -
- - - -
-
+
get('App.theme') ? 'true' : 'false' ?>" >
From b62b483ad9ff114a22a9ee52e1a1a2c9fa444d42 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 13 May 2024 16:17:18 +0000 Subject: [PATCH 015/128] feat(plugins): abstract settings form for general, podcast and episode types update filter permission logic for replacing router param --- app/Config/Routes.php | 6 +- app/Helpers/breadcrumb_helper.php | 2 +- app/Libraries/Breadcrumb.php | 2 +- modules/Admin/Config/Routes.php | 124 ++++++------ modules/Auth/Config/Routes.php | 16 +- modules/Auth/Filters/PermissionFilter.php | 24 ++- modules/Platforms/Config/Routes.php | 10 +- modules/Plugins/Config/Routes.php | 50 +++-- .../Plugins/Controllers/PluginController.php | 184 +++++++----------- modules/PodcastImport/Config/Routes.php | 6 +- modules/PremiumPodcasts/Config/Routes.php | 26 +-- themes/cp_admin/_sidebar.php | 2 +- themes/cp_admin/episode/_sidebar.php | 2 +- themes/cp_admin/plugins/_plugin.php | 14 +- .../{settings_episode.php => settings.php} | 23 ++- themes/cp_admin/plugins/settings_general.php | 22 --- themes/cp_admin/plugins/settings_podcast.php | 22 --- themes/cp_admin/plugins/view.php | 8 +- themes/cp_admin/podcast/_sidebar.php | 2 +- 19 files changed, 236 insertions(+), 309 deletions(-) rename themes/cp_admin/plugins/{settings_episode.php => settings.php} (52%) delete mode 100644 themes/cp_admin/plugins/settings_general.php delete mode 100644 themes/cp_admin/plugins/settings_podcast.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index f3871562..b8900309 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -231,7 +231,7 @@ $routes->get('/pages/(:slug)', 'PageController::index/$1', [ $routes->group('@(:podcastHandle)', static function ($routes): void { $routes->post('posts/new', 'PostController::attemptCreate/$1', [ 'as' => 'post-attempt-create', - 'filter' => 'permission:podcast#.manage-publications', + 'filter' => 'permission:podcast$1.manage-publications', ]); // Post $routes->group('posts/(:uuid)', static function ($routes): void { @@ -268,7 +268,7 @@ $routes->group('@(:podcastHandle)', static function ($routes): void { // Actions $routes->post('action', 'PostController::attemptAction/$1/$2', [ 'as' => 'post-attempt-action', - 'filter' => 'permission:podcast#.interact-as', + 'filter' => 'permission:podcast$1.interact-as', ]); $routes->post( 'block-actor', @@ -288,7 +288,7 @@ $routes->group('@(:podcastHandle)', static function ($routes): void { ); $routes->post('delete', 'PostController::attemptDelete/$1/$2', [ 'as' => 'post-attempt-delete', - 'filter' => 'permission:podcast#.manage-publications', + 'filter' => 'permission:podcast$1.manage-publications', ]); $routes->get( 'remote/(:postAction)', diff --git a/app/Helpers/breadcrumb_helper.php b/app/Helpers/breadcrumb_helper.php index e18b904a..5ddb90e8 100644 --- a/app/Helpers/breadcrumb_helper.php +++ b/app/Helpers/breadcrumb_helper.php @@ -26,7 +26,7 @@ if (! function_exists('render_breadcrumb')) { if (! function_exists('replace_breadcrumb_params')) { /** - * @param string[] $newParams + * @param array $newParams */ function replace_breadcrumb_params(array $newParams): void { diff --git a/app/Libraries/Breadcrumb.php b/app/Libraries/Breadcrumb.php index 529d98d4..1aba8f45 100644 --- a/app/Libraries/Breadcrumb.php +++ b/app/Libraries/Breadcrumb.php @@ -58,7 +58,7 @@ class Breadcrumb * * The breadcrumb is now `Home / podcasts / foo / episodes / bar / I Pity The Foo` * - * @param string[] $newParams + * @param array $newParams */ public function replaceParams(array $newParams): void { diff --git a/modules/Admin/Config/Routes.php b/modules/Admin/Config/Routes.php index 42bd4281..3e9e28bb 100644 --- a/modules/Admin/Config/Routes.php +++ b/modules/Admin/Config/Routes.php @@ -101,28 +101,28 @@ $routes->group( $routes->group('(:num)', static function ($routes): void { $routes->get('/', 'PodcastController::view/$1', [ 'as' => 'podcast-view', - 'filter' => 'permission:podcast#.view', + 'filter' => 'permission:podcast$1.view', ]); $routes->get('edit', 'PodcastController::edit/$1', [ 'as' => 'podcast-edit', - 'filter' => 'permission:podcast#.edit', + 'filter' => 'permission:podcast$1.edit', ]); $routes->post('edit', 'PodcastController::attemptEdit/$1', [ - 'filter' => 'permission:podcast#.edit', + 'filter' => 'permission:podcast$1.edit', ]); $routes->get( 'publish', 'PodcastController::publish/$1', [ 'as' => 'podcast-publish', - 'filter' => 'permission:podcast#.manage-publications', + 'filter' => 'permission:podcast$1.manage-publications', ], ); $routes->post( 'publish', 'PodcastController::attemptPublish/$1', [ - 'filter' => 'permission:podcast#.manage-publications', + 'filter' => 'permission:podcast$1.manage-publications', ], ); $routes->get( @@ -130,14 +130,14 @@ $routes->group( 'PodcastController::publishEdit/$1', [ 'as' => 'podcast-publish_edit', - 'filter' => 'permission:podcast#.manage-publications', + 'filter' => 'permission:podcast$1.manage-publications', ], ); $routes->post( 'publish-edit', 'PodcastController::attemptPublishEdit/$1', [ - 'filter' => 'permission:podcast#.manage-publications', + 'filter' => 'permission:podcast$1.manage-publications', ], ); $routes->get( @@ -145,30 +145,30 @@ $routes->group( 'PodcastController::publishCancel/$1', [ 'as' => 'podcast-publish-cancel', - 'filter' => 'permission:podcast#.manage-publications', + 'filter' => 'permission:podcast$1.manage-publications', ], ); $routes->get('edit/delete-banner', 'PodcastController::deleteBanner/$1', [ 'as' => 'podcast-banner-delete', - 'filter' => 'permission:podcast#.edit', + 'filter' => 'permission:podcast$1.edit', ]); $routes->get('delete', 'PodcastController::delete/$1', [ 'as' => 'podcast-delete', - 'filter' => 'permission:podcast#.delete', + 'filter' => 'permission:podcast$1.delete', ]); $routes->post('delete', 'PodcastController::attemptDelete/$1', [ - 'filter' => 'permission:podcast#.delete', + 'filter' => 'permission:podcast$1.delete', ]); $routes->group('persons', static function ($routes): void { $routes->get('/', 'PodcastPersonController::index/$1', [ 'as' => 'podcast-persons-manage', - 'filter' => 'permission:podcast#.manage-persons', + 'filter' => 'permission:podcast$1.manage-persons', ]); $routes->post( '/', 'PodcastPersonController::attemptCreate/$1', [ - 'filter' => 'permission:podcast#.manage-persons', + 'filter' => 'permission:podcast$1.manage-persons', ], ); $routes->get( @@ -176,29 +176,29 @@ $routes->group( 'PodcastPersonController::remove/$1/$2', [ 'as' => 'podcast-person-remove', - 'filter' => 'permission:podcast#.manage-persons', + 'filter' => 'permission:podcast$1.manage-persons', ], ); }); $routes->get('monetization-other', 'PodcastController::monetizationOther/$1', [ 'as' => 'podcast-monetization-other', - 'filter' => 'permission:podcast#.edit', + 'filter' => 'permission:podcast$1.edit', ]); $routes->post('monetization-other', 'PodcastController::monetizationOtherAction/$1', [ 'as' => 'podcast-monetization-other', - 'filter' => 'permission:podcast#.edit', + 'filter' => 'permission:podcast$1.edit', ]); $routes->group('analytics', static function ($routes): void { $routes->get('/', 'PodcastController::viewAnalytics/$1', [ 'as' => 'podcast-analytics', - 'filter' => 'permission:podcast#.view', + 'filter' => 'permission:podcast$1.view', ]); $routes->get( 'webpages', 'PodcastController::viewAnalyticsWebpages/$1', [ 'as' => 'podcast-analytics-webpages', - 'filter' => 'permission:podcast#.view', + 'filter' => 'permission:podcast$1.view', ], ); $routes->get( @@ -206,7 +206,7 @@ $routes->group( 'PodcastController::viewAnalyticsLocations/$1', [ 'as' => 'podcast-analytics-locations', - 'filter' => 'permission:podcast#.view', + 'filter' => 'permission:podcast$1.view', ], ); $routes->get( @@ -214,7 +214,7 @@ $routes->group( 'PodcastController::viewAnalyticsUniqueListeners/$1', [ 'as' => 'podcast-analytics-unique-listeners', - 'filter' => 'permission:podcast#.view', + 'filter' => 'permission:podcast$1.view', ], ); $routes->get( @@ -222,7 +222,7 @@ $routes->group( 'PodcastController::viewAnalyticsListeningTime/$1', [ 'as' => 'podcast-analytics-listening-time', - 'filter' => 'permission:podcast#.view', + 'filter' => 'permission:podcast$1.view', ], ); $routes->get( @@ -230,7 +230,7 @@ $routes->group( 'PodcastController::viewAnalyticsTimePeriods/$1', [ 'as' => 'podcast-analytics-time-periods', - 'filter' => 'permission:podcast#.view', + 'filter' => 'permission:podcast$1.view', ], ); $routes->get( @@ -238,7 +238,7 @@ $routes->group( 'PodcastController::viewAnalyticsPlayers/$1', [ 'as' => 'podcast-analytics-players', - 'filter' => 'permission:podcast#.view', + 'filter' => 'permission:podcast$1.view', ], ); }); @@ -246,34 +246,34 @@ $routes->group( $routes->group('episodes', static function ($routes): void { $routes->get('/', 'EpisodeController::list/$1', [ 'as' => 'episode-list', - 'filter' => 'permission:podcast#.episodes.view', + 'filter' => 'permission:podcast$1.episodes.view', ]); $routes->get('new', 'EpisodeController::create/$1', [ 'as' => 'episode-create', - 'filter' => 'permission:podcast#.episodes.create', + 'filter' => 'permission:podcast$1.episodes.create', ]); $routes->post( 'new', 'EpisodeController::attemptCreate/$1', [ - 'filter' => 'permission:podcast#.episodes.create', + 'filter' => 'permission:podcast$1.episodes.create', ], ); // Episode $routes->group('(:num)', static function ($routes): void { $routes->get('/', 'EpisodeController::view/$1/$2', [ 'as' => 'episode-view', - 'filter' => 'permission:podcast#.episodes.view', + 'filter' => 'permission:podcast$1.episodes.view', ]); $routes->get('edit', 'EpisodeController::edit/$1/$2', [ 'as' => 'episode-edit', - 'filter' => 'permission:podcast#.episodes.edit', + 'filter' => 'permission:podcast$1.episodes.edit', ]); $routes->post( 'edit', 'EpisodeController::attemptEdit/$1/$2', [ - 'filter' => 'permission:podcast#.episodes.edit', + 'filter' => 'permission:podcast$1.episodes.edit', ], ); $routes->get( @@ -281,14 +281,14 @@ $routes->group( 'EpisodeController::publish/$1/$2', [ 'as' => 'episode-publish', - 'filter' => 'permission:podcast#.episodes.manage-publications', + 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->post( 'publish', 'EpisodeController::attemptPublish/$1/$2', [ - 'filter' => 'permission:podcast#.episodes.manage-publications', + 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->get( @@ -296,14 +296,14 @@ $routes->group( 'EpisodeController::publishEdit/$1/$2', [ 'as' => 'episode-publish_edit', - 'filter' => 'permission:podcast#.episodes.manage-publications', + 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->post( 'publish-edit', 'EpisodeController::attemptPublishEdit/$1/$2', [ - 'filter' => 'permission:podcast#.episodes.manage-publications', + 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->get( @@ -311,7 +311,7 @@ $routes->group( 'EpisodeController::publishCancel/$1/$2', [ 'as' => 'episode-publish-cancel', - 'filter' => 'permission:podcast#.episodes.manage-publications', + 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->get( @@ -319,14 +319,14 @@ $routes->group( 'EpisodeController::publishDateEdit/$1/$2', [ 'as' => 'episode-publish_date_edit', - 'filter' => 'permission:podcast#.episodes.manage-publications', + 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->post( 'publish-date-edit', 'EpisodeController::attemptPublishDateEdit/$1/$2', [ - 'filter' => 'permission:podcast#.episodes.manage-publications', + 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->get( @@ -334,14 +334,14 @@ $routes->group( 'EpisodeController::unpublish/$1/$2', [ 'as' => 'episode-unpublish', - 'filter' => 'permission:podcast#.episodes.manage-publications', + 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->post( 'unpublish', 'EpisodeController::attemptUnpublish/$1/$2', [ - 'filter' => 'permission:podcast#.episodes.manage-publications', + 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->get( @@ -349,14 +349,14 @@ $routes->group( 'EpisodeController::delete/$1/$2', [ 'as' => 'episode-delete', - 'filter' => 'permission:podcast#.episodes.delete', + 'filter' => 'permission:podcast$1.episodes.delete', ], ); $routes->post( 'delete', 'EpisodeController::attemptDelete/$1/$2', [ - 'filter' => 'permission:podcast#.episodes.delete', + 'filter' => 'permission:podcast$1.episodes.delete', ], ); $routes->get( @@ -364,7 +364,7 @@ $routes->group( 'EpisodeController::transcriptDelete/$1/$2', [ 'as' => 'transcript-delete', - 'filter' => 'permission:podcast#.episodes.edit', + 'filter' => 'permission:podcast$1.episodes.edit', ], ); $routes->get( @@ -372,7 +372,7 @@ $routes->group( 'EpisodeController::chaptersDelete/$1/$2', [ 'as' => 'chapters-delete', - 'filter' => 'permission:podcast#.episodes.edit', + 'filter' => 'permission:podcast$1.episodes.edit', ], ); $routes->get( @@ -380,7 +380,7 @@ $routes->group( 'SoundbiteController::list/$1/$2', [ 'as' => 'soundbites-list', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->get( @@ -388,7 +388,7 @@ $routes->group( 'SoundbiteController::create/$1/$2', [ 'as' => 'soundbites-create', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->post( @@ -396,7 +396,7 @@ $routes->group( 'SoundbiteController::attemptCreate/$1/$2', [ 'as' => 'soundbites-create', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->get( @@ -404,7 +404,7 @@ $routes->group( 'SoundbiteController::delete/$1/$2/$3', [ 'as' => 'soundbites-delete', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->get( @@ -412,7 +412,7 @@ $routes->group( 'VideoClipsController::list/$1/$2', [ 'as' => 'video-clips-list', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->get( @@ -420,7 +420,7 @@ $routes->group( 'VideoClipsController::create/$1/$2', [ 'as' => 'video-clips-create', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->post( @@ -428,7 +428,7 @@ $routes->group( 'VideoClipsController::attemptCreate/$1/$2', [ 'as' => 'video-clips-create', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->get( @@ -436,7 +436,7 @@ $routes->group( 'VideoClipsController::view/$1/$2/$3', [ 'as' => 'video-clip', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->get( @@ -444,7 +444,7 @@ $routes->group( 'VideoClipsController::retry/$1/$2/$3', [ 'as' => 'video-clip-retry', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->get( @@ -452,7 +452,7 @@ $routes->group( 'VideoClipsController::delete/$1/$2/$3', [ 'as' => 'video-clip-delete', - 'filter' => 'permission:podcast#.episodes.manage-clips', + 'filter' => 'permission:podcast$1.episodes.manage-clips', ], ); $routes->get( @@ -460,19 +460,19 @@ $routes->group( 'EpisodeController::embed/$1/$2', [ 'as' => 'embed-add', - 'filter' => 'permission:podcast#.episodes.edit', + 'filter' => 'permission:podcast$1.episodes.edit', ], ); $routes->group('persons', static function ($routes): void { $routes->get('/', 'EpisodePersonController::index/$1/$2', [ 'as' => 'episode-persons-manage', - 'filter' => 'permission:podcast#.episodes.manage-persons', + 'filter' => 'permission:podcast$1.episodes.manage-persons', ]); $routes->post( '/', 'EpisodePersonController::attemptCreate/$1/$2', [ - 'filter' => 'permission:podcast#.episodes.manage-persons', + 'filter' => 'permission:podcast$1.episodes.manage-persons', ], ); $routes->get( @@ -480,7 +480,7 @@ $routes->group( 'EpisodePersonController::remove/$1/$2/$3', [ 'as' => 'episode-person-remove', - 'filter' => 'permission:podcast#.episodes.manage-persons', + 'filter' => 'permission:podcast$1.episodes.manage-persons', ], ); }); @@ -490,7 +490,7 @@ $routes->group( 'EpisodeController::attemptCommentCreate/$1/$2', [ 'as' => 'comment-attempt-create', - 'filter' => 'permission:podcast#.episodes.manage-comments', + 'filter' => 'permission:podcast$1.episodes.manage-comments', ] ); $routes->post( @@ -498,7 +498,7 @@ $routes->group( 'EpisodeController::attemptCommentReply/$1/$2/$3', [ 'as' => 'comment-attempt-reply', - 'filter' => 'permission:podcast#.episodes.manage-comments', + 'filter' => 'permission:podcast$1.episodes.manage-comments', ] ); $routes->post( @@ -506,7 +506,7 @@ $routes->group( 'EpisodeController::attemptCommentDelete/$1/$2', [ 'as' => 'comment-attempt-delete', - 'filter' => 'permission:podcast#.episodes.manage-comments', + 'filter' => 'permission:podcast$1.episodes.manage-comments', ] ); }); @@ -516,15 +516,15 @@ $routes->group( $routes->group('notifications', static function ($routes): void { $routes->get('/', 'NotificationController::list/$1', [ 'as' => 'notification-list', - 'filter' => 'permission:podcast#.manage-notifications', + 'filter' => 'permission:podcast$1.manage-notifications', ]); $routes->get('(:num)/mark-as-read', 'NotificationController::markAsRead/$1/$2', [ 'as' => 'notification-mark-as-read', - 'filter' => 'permission:podcast#.manage-notifications', + 'filter' => 'permission:podcast$1.manage-notifications', ]); $routes->get('mark-all-as-read', 'NotificationController::markAllAsRead/$1', [ 'as' => 'notification-mark-all-as-read', - 'filter' => 'permission:podcast#.manage-notifications', + 'filter' => 'permission:podcast$1.manage-notifications', ]); }); }); diff --git a/modules/Auth/Config/Routes.php b/modules/Auth/Config/Routes.php index 4c374982..46c8e324 100644 --- a/modules/Auth/Config/Routes.php +++ b/modules/Auth/Config/Routes.php @@ -81,38 +81,38 @@ $routes->group( $routes->group('podcasts/(:num)/contributors', static function ($routes): void { $routes->get('/', 'ContributorController::list/$1', [ 'as' => 'contributor-list', - 'filter' => 'permission:podcast#.manage-contributors', + 'filter' => 'permission:podcast$1.manage-contributors', ]); $routes->get('add', 'ContributorController::create/$1', [ 'as' => 'contributor-add', - 'filter' => 'permission:podcast#.manage-contributors', + 'filter' => 'permission:podcast$1.manage-contributors', ]); $routes->post( 'add', 'ContributorController::attemptCreate/$1', [ - 'filter' => 'permission:podcast#.manage-contributors', + 'filter' => 'permission:podcast$1.manage-contributors', ], ); // Contributor $routes->group('(:num)', static function ($routes): void { $routes->get('/', 'ContributorController::view/$1/$2', [ 'as' => 'contributor-view', - 'filter' => 'permission:podcast#.manage-contributors', + 'filter' => 'permission:podcast$1.manage-contributors', ]); $routes->get( 'edit', 'ContributorController::edit/$1/$2', [ 'as' => 'contributor-edit', - 'filter' => 'permission:podcast#.manage-contributors', + 'filter' => 'permission:podcast$1.manage-contributors', ], ); $routes->post( 'edit', 'ContributorController::attemptEdit/$1/$2', [ - 'filter' => 'permission:podcast#.manage-contributors', + 'filter' => 'permission:podcast$1.manage-contributors', ], ); $routes->get( @@ -120,14 +120,14 @@ $routes->group( 'ContributorController::remove/$1/$2', [ 'as' => 'contributor-remove', - 'filter' => 'permission:podcast#.manage-contributors', + 'filter' => 'permission:podcast$1.manage-contributors', ], ); $routes->post( 'remove', 'ContributorController::attemptRemove/$1/$2', [ - 'filter' => 'permission:podcast#.manage-contributors', + 'filter' => 'permission:podcast$1.manage-contributors', ], ); }); diff --git a/modules/Auth/Filters/PermissionFilter.php b/modules/Auth/Filters/PermissionFilter.php index f223789b..d8d4240e 100644 --- a/modules/Auth/Filters/PermissionFilter.php +++ b/modules/Auth/Filters/PermissionFilter.php @@ -58,23 +58,37 @@ class PermissionFilter implements FilterInterface foreach ($arguments as $permission) { // is permission specific to a podcast? - if (str_contains($permission, '#')) { + if (str_contains($permission, '$')) { $router = Services::router(); $routerParams = $router->params(); + if (! preg_match('/\$(\d+)\./', $permission, $match)) { + throw new RuntimeException(sprintf( + 'Could not get podcast identifier from permission %s', + $permission + ), 1); + } + + $paramKey = ((int) $match[1]) - 1; + if (! array_key_exists($paramKey, $routerParams)) { + throw new RuntimeException(sprintf('Router param does not exist at key %s', $match[1]), 1); + } + + $podcastParam = $routerParams[$paramKey]; + // get podcast id $podcastId = null; - if (is_numeric($routerParams[0])) { - $podcastId = (int) $routerParams[0]; + if (is_numeric($podcastParam)) { + $podcastId = (int) $podcastParam; } else { - $podcast = (new PodcastModel())->getPodcastByHandle($routerParams[0]); + $podcast = (new PodcastModel())->getPodcastByHandle($podcastParam); if ($podcast instanceof Podcast) { $podcastId = $podcast->id; } } if ($podcastId !== null) { - $permission = str_replace('#', '#' . $podcastId, $permission); + $permission = str_replace('$' . $match[1], '#' . $podcastId, $permission); } } diff --git a/modules/Platforms/Config/Routes.php b/modules/Platforms/Config/Routes.php index 3dfd6c6e..fd017434 100644 --- a/modules/Platforms/Config/Routes.php +++ b/modules/Platforms/Config/Routes.php @@ -24,7 +24,7 @@ $routes->group( 'PlatformController::platforms/$1/podcasting', [ 'as' => 'platforms-podcasting', - 'filter' => 'permission:podcast#.manage-platforms', + 'filter' => 'permission:podcast$1.manage-platforms', ], ); $routes->get( @@ -32,7 +32,7 @@ $routes->group( 'PlatformController::platforms/$1/social', [ 'as' => 'platforms-social', - 'filter' => 'permission:podcast#.manage-platforms', + 'filter' => 'permission:podcast$1.manage-platforms', ], ); $routes->get( @@ -40,7 +40,7 @@ $routes->group( 'PlatformController::platforms/$1/funding', [ 'as' => 'platforms-funding', - 'filter' => 'permission:podcast#.manage-platforms', + 'filter' => 'permission:podcast$1.manage-platforms', ], ); $routes->post( @@ -48,7 +48,7 @@ $routes->group( 'PlatformController::attemptPlatformsUpdate/$1/$2', [ 'as' => 'platforms-save', - 'filter' => 'permission:podcast#.manage-platforms', + 'filter' => 'permission:podcast$1.manage-platforms', ], ); $routes->get( @@ -56,7 +56,7 @@ $routes->group( 'PlatformController::removePlatform/$1/$2/$3', [ 'as' => 'podcast-platform-remove', - 'filter' => 'permission:podcast#.manage-platforms', + 'filter' => 'permission:podcast$1.manage-platforms', ], ); }); diff --git a/modules/Plugins/Config/Routes.php b/modules/Plugins/Config/Routes.php index 5a6b12e9..e7785c99 100644 --- a/modules/Plugins/Config/Routes.php +++ b/modules/Plugins/Config/Routes.php @@ -5,8 +5,6 @@ declare(strict_types=1); use CodeIgniter\Router\RouteCollection; /** @var RouteCollection $routes */ -$routes->addPlaceholder('pluginVendor', '[a-z0-9]([_.-]?[a-z0-9]+)*'); -$routes->addPlaceholder('pluginKey', PLUGINS_KEY_PATTERN); $routes->group( config('Admin') @@ -20,23 +18,39 @@ $routes->group( 'as' => 'plugins-installed', 'filter' => 'permission:plugins.manage', ]); - $routes->get('(:pluginVendor)', 'PluginController::vendor/$1', [ + $routes->get('(:segment)', 'PluginController::vendor/$1', [ 'as' => 'plugins-vendor', 'filter' => 'permission:plugins.manage', ]); - $routes->group('(:pluginKey)', static function ($routes): void { + $routes->group('(:segment)/(:segment)', static function ($routes): void { $routes->get('/', 'PluginController::view/$1/$2', [ 'as' => 'plugins-view', 'filter' => 'permission:plugins.manage', ]); - $routes->get('settings', 'PluginController::generalSettings/$1/$2', [ - 'as' => 'plugins-general-settings', + $routes->get('settings', 'PluginController::settings/$1/$2', [ + 'as' => 'plugins-settings-general', 'filter' => 'permission:plugins.manage', ]); - $routes->post('settings', 'PluginController::generalSettingsAction/$1/$2', [ - 'as' => 'plugins-general-settings-action', + $routes->post('settings', 'PluginController::settingsAction/$1/$2', [ + 'as' => 'plugins-settings-general-action', 'filter' => 'permission:plugins.manage', ]); + $routes->get('(:num)', 'PluginController::settings/$1/$2/$3', [ + 'as' => 'plugins-settings-podcast', + 'filter' => 'permission:podcast$3.edit', + ]); + $routes->post('(:num)', 'PluginController::settingsAction/$1/$2/$3', [ + 'as' => 'plugins-settings-podcast-action', + 'filter' => 'permission:podcast$3.edit', + ]); + $routes->get('(:num)/(:num)', 'PluginController::settings/$1/$2/$3/$4', [ + 'as' => 'plugins-settings-episode', + 'filter' => 'permission:podcast$3.episodes.edit', + ]); + $routes->post('(:num)/(:num)', 'PluginController::settingsAction/$1/$2/$3/$4', [ + 'as' => 'plugins-settings-episode-action', + 'filter' => 'permission:podcast$3.episodes.edit', + ]); $routes->post('activate', 'PluginController::activate/$1/$2', [ 'as' => 'plugins-activate', 'filter' => 'permission:plugins.manage', @@ -52,25 +66,5 @@ $routes->group( ]); }); }); - $routes->group('podcasts/(:num)/plugins', static function ($routes): void { - $routes->get('(:pluginKey)', 'PluginController::podcastSettings/$1/$2/$3', [ - 'as' => 'plugins-podcast-settings', - 'filter' => 'permission:podcast#.edit', - ]); - $routes->post('(:pluginKey)', 'PluginController::podcastSettingsAction/$1/$2/$3', [ - 'as' => 'plugins-podcast-settings-action', - 'filter' => 'permission:podcast#.edit', - ]); - }); - $routes->group('podcasts/(:num)/episodes/(:num)/plugins', static function ($routes): void { - $routes->get('(:pluginKey)', 'PluginController::episodeSettings/$1/$2/$3/$4', [ - 'as' => 'plugins-episode-settings', - 'filter' => 'permission:podcast#.edit', - ]); - $routes->post('(:pluginKey)', 'PluginController::episodeSettingsAction/$1/$2/$3/$4', [ - 'as' => 'plugins-episode-settings-action', - 'filter' => 'permission:podcast#.edit', - ]); - }); } ); diff --git a/modules/Plugins/Controllers/PluginController.php b/modules/Plugins/Controllers/PluginController.php index d5a10683..c9e4edbb 100644 --- a/modules/Plugins/Controllers/PluginController.php +++ b/modules/Plugins/Controllers/PluginController.php @@ -74,8 +74,12 @@ class PluginController extends BaseController ]); } - public function generalSettings(string $vendor, string $package): string - { + public function settings( + string $vendor, + string $package, + string $podcastId = null, + string $episodeId = null + ): string { /** @var Plugins $plugins */ $plugins = service('plugins'); @@ -85,18 +89,56 @@ class PluginController extends BaseController throw PageNotFoundException::forPageNotFound(); } - helper('form'); - replace_breadcrumb_params([ + $type = 'general'; + $context = null; + $breadcrumbReplacements = [ $vendor => $vendor, $package => $package, - ]); - return view('plugins/settings_general', [ + ]; + $data = [ 'plugin' => $plugin, - ]); + ]; + + if ($podcastId !== null) { + $podcast = (new PodcastModel())->getPodcastById((int) $podcastId); + + if (! $podcast instanceof Podcast) { + throw PageNotFoundException::forPageNotFound(); + } + + $type = 'podcast'; + $context = ['podcast', (int) $podcastId]; + $breadcrumbReplacements[0] = $podcast->handle; + $data['podcast'] = $podcast; + } + + if ($episodeId !== null) { + $episode = (new EpisodeModel())->getEpisodeById((int) $episodeId); + + if (! $episode instanceof Episode) { + throw PageNotFoundException::forPageNotFound(); + } + + $type = 'episode'; + $context = ['episode', (int) $episodeId]; + $breadcrumbReplacements[1] = $episode->title; + $data['episode'] = $episode; + } + + $data['type'] = $type; + $data['context'] = $context; + + helper('form'); + replace_breadcrumb_params($breadcrumbReplacements); + return view('plugins/settings', $data); } - public function generalSettingsAction(string $vendor, string $package): RedirectResponse - { + public function settingsAction( + string $vendor, + string $package, + string $podcastId = null, + string $episodeId = null + ): RedirectResponse { /** @var Plugins $plugins */ $plugins = service('plugins'); @@ -106,9 +148,21 @@ class PluginController extends BaseController throw PageNotFoundException::forPageNotFound(); } + $type = 'general'; + $context = null; + if ($podcastId !== null) { + $type = 'podcast'; + $context = ['podcast', (int) $podcastId]; + } + + if ($episodeId !== null) { + $type = 'episode'; + $context = ['episode', (int) $episodeId]; + } + // construct validation rules first $rules = []; - foreach ($plugin->getSettingsFields('general') as $field) { + foreach ($plugin->getSettingsFields($type) as $field) { $typeRules = $plugins::FIELDS_VALIDATIONS[$field->type]; if (! in_array('permit_empty', $typeRules, true) && ! $field->optional) { $typeRules[] = 'required'; @@ -140,115 +194,7 @@ class PluginController extends BaseController 'markdown' => new Markdown($value), default => $value === '' ? null : $value, }; - $plugins->setOption($plugin, $field->key, $fieldValue); - } - - return redirect()->back() - ->with('message', lang('Plugins.messages.saveSettingsSuccess', [ - 'pluginName' => $plugin->getName(), - ])); - } - - public function podcastSettings(string $podcastId, string $vendor, string $package): string - { - $podcast = (new PodcastModel())->getPodcastById((int) $podcastId); - - if (! $podcast instanceof Podcast) { - throw PageNotFoundException::forPageNotFound(); - } - - /** @var Plugins $plugins */ - $plugins = service('plugins'); - - $plugin = $plugins->getPlugin($vendor, $package); - - if ($plugin === null) { - throw PageNotFoundException::forPageNotFound(); - } - - helper('form'); - replace_breadcrumb_params([ - 0 => $podcast->handle, - $vendor => $vendor, - $package => $package, - ]); - return view('plugins/settings_podcast', [ - 'podcast' => $podcast, - 'plugin' => $plugin, - ]); - } - - public function podcastSettingsAction(string $podcastId, string $vendor, string $package): RedirectResponse - { - /** @var Plugins $plugins */ - $plugins = service('plugins'); - - $plugin = $plugins->getPlugin($vendor, $package); - - if ($plugin === null) { - throw PageNotFoundException::forPageNotFound(); - } - - foreach ($plugin->getSettingsFields('podcast') as $field) { - $settingValue = $this->request->getPost($field->key); - $plugins->setOption($plugin, $field->key, $settingValue, ['podcast', (int) $podcastId]); - } - - return redirect()->back() - ->with('message', lang('Plugins.messages.saveSettingsSuccess', [ - 'pluginName' => $plugin->getName(), - ])); - } - - public function episodeSettings(string $podcastId, string $episodeId, string $vendor, string $package): string - { - $episode = (new EpisodeModel())->getEpisodeById((int) $episodeId); - - if (! $episode instanceof Episode) { - throw PageNotFoundException::forPageNotFound(); - } - - /** @var Plugins $plugins */ - $plugins = service('plugins'); - - $plugin = $plugins->getPlugin($vendor, $package); - - if ($plugin === null) { - throw PageNotFoundException::forPageNotFound(); - } - - helper('form'); - replace_breadcrumb_params([ - 0 => $episode->podcast->handle, - 1 => $episode->title, - $vendor => $vendor, - $package => $package, - ]); - return view('plugins/settings_episode', [ - 'podcast' => $episode->podcast, - 'episode' => $episode, - 'plugin' => $plugin, - ]); - } - - public function episodeSettingsAction( - string $podcastId, - string $episodeId, - string $vendor, - string $package - ): RedirectResponse { - /** @var Plugins $plugins */ - $plugins = service('plugins'); - - $plugin = $plugins->getPlugin($vendor, $package); - - if ($plugin === null) { - throw PageNotFoundException::forPageNotFound(); - } - - foreach ($plugin->getSettingsFields('episode') as $field) { - $settingValue = $this->request->getPost($field->key); - $plugins->setOption($plugin, $field->key, $settingValue, ['episode', (int) $episodeId]); + $plugins->setOption($plugin, $field->key, $fieldValue, $context); } return redirect()->back() diff --git a/modules/PodcastImport/Config/Routes.php b/modules/PodcastImport/Config/Routes.php index 7ba1da89..ed936369 100644 --- a/modules/PodcastImport/Config/Routes.php +++ b/modules/PodcastImport/Config/Routes.php @@ -35,15 +35,15 @@ $routes->group( $routes->group('podcasts/(:num)', static function ($routes): void { $routes->get('imports', 'PodcastImportController::podcastList/$1', [ 'as' => 'podcast-imports', - 'filter' => 'permission:podcast#.manage-import', + 'filter' => 'permission:podcast$1.manage-import', ]); $routes->get('sync-feeds', 'PodcastImportController::syncImport/$1', [ 'as' => 'podcast-imports-sync', - 'filter' => 'permission:podcast#.manage-import', + 'filter' => 'permission:podcast$1.manage-import', ]); $routes->post('sync-feeds', 'PodcastImportController::syncImportAttempt/$1', [ 'as' => 'podcast-imports-sync', - 'filter' => 'permission:podcast#.manage-import', + 'filter' => 'permission:podcast$1.manage-import', ]); }); } diff --git a/modules/PremiumPodcasts/Config/Routes.php b/modules/PremiumPodcasts/Config/Routes.php index e7906067..b8060be3 100644 --- a/modules/PremiumPodcasts/Config/Routes.php +++ b/modules/PremiumPodcasts/Config/Routes.php @@ -21,35 +21,35 @@ $routes->group( $routes->group('podcasts/(:num)/subscriptions', static function ($routes): void { $routes->get('/', 'SubscriptionController::list/$1', [ 'as' => 'subscription-list', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ]); $routes->get('new', 'SubscriptionController::create/$1', [ 'as' => 'subscription-create', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ]); $routes->post( 'new', 'SubscriptionController::attemptCreate/$1', [ - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ], ); $routes->post('save-link', 'SubscriptionController::attemptLinkSave/$1', [ 'as' => 'subscription-link-save', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ]); // Subscription $routes->group('(:num)', static function ($routes): void { $routes->get('/', 'SubscriptionController::view/$1/$2', [ 'as' => 'subscription-view', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ]); $routes->get( 'edit', 'SubscriptionController::edit/$1/$2', [ 'as' => 'subscription-edit', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ], ); $routes->post( @@ -57,7 +57,7 @@ $routes->group( 'SubscriptionController::attemptEdit/$1/$2', [ 'as' => 'subscription-edit', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ], ); $routes->get( @@ -65,7 +65,7 @@ $routes->group( 'SubscriptionController::regenerateToken/$1/$2', [ 'as' => 'subscription-regenerate-token', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ] ); $routes->get( @@ -73,14 +73,14 @@ $routes->group( 'SubscriptionController::suspend/$1/$2', [ 'as' => 'subscription-suspend', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ], ); $routes->post( 'suspend', 'SubscriptionController::attemptSuspend/$1/$2', [ - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ], ); $routes->get( @@ -88,7 +88,7 @@ $routes->group( 'SubscriptionController::resume/$1/$2', [ 'as' => 'subscription-resume', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ], ); $routes->get( @@ -96,14 +96,14 @@ $routes->group( 'SubscriptionController::delete/$1/$2', [ 'as' => 'subscription-delete', - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ], ); $routes->post( 'delete', 'SubscriptionController::attemptDelete/$1/$2', [ - 'filter' => 'permission:podcast#.manage-subscriptions', + 'filter' => 'permission:podcast$1.manage-subscriptions', ], ); }); diff --git a/themes/cp_admin/_sidebar.php b/themes/cp_admin/_sidebar.php index 83c30e49..1fe2170f 100644 --- a/themes/cp_admin/_sidebar.php +++ b/themes/cp_admin/_sidebar.php @@ -86,7 +86,7 @@ $navigation = [ ]; foreach (plugins()->getActivePlugins() as $plugin) { - $route = route_to('plugins-view', $plugin->getKey()); + $route = route_to('plugins-view', $plugin->getVendor(), $plugin->getPackage()); $navigation['plugins']['items'][] = $route; $navigation['plugins']['items-labels'][$route] = $plugin->getName(); $navigation['plugins']['items-permissions'][$route] = 'plugins.manage'; diff --git a/themes/cp_admin/episode/_sidebar.php b/themes/cp_admin/episode/_sidebar.php index 775cb3ff..fb1a00df 100644 --- a/themes/cp_admin/episode/_sidebar.php +++ b/themes/cp_admin/episode/_sidebar.php @@ -33,7 +33,7 @@ $episodeNavigation = [ ]; foreach (plugins()->getPluginsWithEpisodeSettings() as $plugin) { - $route = route_to('plugins-episode-settings', $podcast->id, $episode->id, $plugin->getKey()); + $route = route_to('plugins-settings-episode', $plugin->getVendor(), $plugin->getPackage(), $podcast->id, $episode->id); $episodeNavigation['plugins']['items'][] = $route; $episodeNavigation['plugins']['items-labels'][$route] = $plugin->getName(); $episodeNavigation['plugins']['items-permissions'][$route] = 'episodes.edit'; diff --git a/themes/cp_admin/plugins/_plugin.php b/themes/cp_admin/plugins/_plugin.php index b25758fe..1c48a318 100644 --- a/themes/cp_admin/plugins/_plugin.php +++ b/themes/cp_admin/plugins/_plugin.php @@ -8,12 +8,12 @@
-

getName() ?>

+

getName() ?>

getVendor() ?> / - getPackage() ?> + getPackage() ?> getVersion() ?>

getDescription() ?>

@@ -31,26 +31,26 @@
isActive()): ?> -
+
-
+
getSettings() !== []): ?> - + 'link', 'title' => lang('Plugins.view'), - 'uri' => route_to('plugins-view', $plugin->getKey()), + 'uri' => route_to('plugins-view', $plugin->getVendor(), $plugin->getPackage()), ], [ 'type' => 'separator', @@ -60,7 +60,7 @@ 'title' => icon('delete-bin-fill', [ 'class' => 'text-gray-500', ]) . lang('Plugins.uninstall'), - 'uri' => route_to('plugins-uninstall', $plugin->getKey()), + 'uri' => route_to('plugins-uninstall', $plugin->getVendor(), $plugin->getPackage()), 'class' => 'font-semibold text-red-600', ], ]; ?> diff --git a/themes/cp_admin/plugins/settings_episode.php b/themes/cp_admin/plugins/settings.php similarity index 52% rename from themes/cp_admin/plugins/settings_episode.php rename to themes/cp_admin/plugins/settings.php index 7e4d05a0..afbd1c9e 100644 --- a/themes/cp_admin/plugins/settings_episode.php +++ b/themes/cp_admin/plugins/settings.php @@ -3,20 +3,37 @@ section('title') ?> $plugin->getName(), + 'type' => $type, ]) ?> endSection() ?> section('pageTitle') ?> $plugin->getName(), + 'type' => $type, ]) ?> endSection() ?> +getVendor(), + $plugin->getPackage(), + ]; + +if (isset($podcast)) { + $params[] = $podcast->id; +} + +if (isset($episode)) { + $params[] = $episode->id; +} +?> + section('content') ?> $plugin, - 'action' => route_to('plugins-episode-settings-action', $podcast->id, $episode->id, $plugin->getKey()), - 'type' => 'episode', - 'context' => ['episode', $episode->id], + 'action' => route_to(sprintf('plugins-settings-%s-action', $type), ...$params), + 'type' => $type, + 'context' => $context, ]) ?> endSection() ?> diff --git a/themes/cp_admin/plugins/settings_general.php b/themes/cp_admin/plugins/settings_general.php deleted file mode 100644 index 1d051fc1..00000000 --- a/themes/cp_admin/plugins/settings_general.php +++ /dev/null @@ -1,22 +0,0 @@ -extend('_layout') ?> - -section('title') ?> - $plugin->getName(), -]) ?> -endSection() ?> - -section('pageTitle') ?> - $plugin->getName(), -]) ?> -endSection() ?> - -section('content') ?> - $plugin, - 'action' => route_to('plugins-general-settings-action', $plugin->getKey()), - 'type' => 'general', - 'context' => null, -]) ?> -endSection() ?> diff --git a/themes/cp_admin/plugins/settings_podcast.php b/themes/cp_admin/plugins/settings_podcast.php deleted file mode 100644 index ef0d7899..00000000 --- a/themes/cp_admin/plugins/settings_podcast.php +++ /dev/null @@ -1,22 +0,0 @@ -extend('_layout') ?> - -section('title') ?> - $plugin->getName(), -]) ?> -endSection() ?> - -section('pageTitle') ?> - $plugin->getName(), -]) ?> -endSection() ?> - -section('content') ?> - $plugin, - 'action' => route_to('plugins-podcast-settings-action', $podcast->id, $plugin->getKey()), - 'type' => 'podcast', - 'context' => ['podcast', $podcast->id], -]) ?> -endSection() ?> diff --git a/themes/cp_admin/plugins/view.php b/themes/cp_admin/plugins/view.php index 8c23e71a..8bb8462b 100644 --- a/themes/cp_admin/plugins/view.php +++ b/themes/cp_admin/plugins/view.php @@ -18,12 +18,12 @@ section('headerRight') ?> isActive()): ?> -
+
-
+
@@ -31,8 +31,8 @@ endSection() ?> section('content') ?> -
-
-
-

getName() ?>

+
+

getName() ?>

getVendor() ?> @@ -16,9 +16,9 @@ getPackage() ?> getVersion() ?>

-

getDescription() ?>

+

getDescription() ?? '' . lang('Plugins.noDescription') . '' ?>

-
From a8c81b3fa19a28dbd608027c231dcac31eafb38f Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Thu, 4 Jul 2024 13:32:44 +0000 Subject: [PATCH 036/128] fix(manifest): set repository url as required in docstring typings --- modules/Plugins/Manifest/Repository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/Plugins/Manifest/Repository.php b/modules/Plugins/Manifest/Repository.php index 266125b6..7ed718ac 100644 --- a/modules/Plugins/Manifest/Repository.php +++ b/modules/Plugins/Manifest/Repository.php @@ -8,7 +8,7 @@ use CodeIgniter\HTTP\URI; /** * @property string $type - * @property ?URI $url + * @property URI $url * @property ?string $directory */ class Repository extends ManifestObject From 1c5fe1fea6b3a917d784cecdd800cea2014a3ab3 Mon Sep 17 00:00:00 2001 From: crowdin Date: Fri, 28 Jun 2024 13:40:28 +0000 Subject: [PATCH 037/128] chore(i18n): new Crowdin updates --- app/Language/de/Episode.php | 6 +- app/Language/ja/Episode.php | 8 +- app/Language/ja/Fediverse.php | 14 +- app/Language/ja/Podcast.php | 14 +- app/Language/ja/Post.php | 22 +- app/Language/nl/Episode.php | 6 +- app/Language/nn-no/Episode.php | 6 +- app/Language/pl/Comment.php | 2 +- app/Language/pl/Common.php | 6 +- app/Language/pl/Episode.php | 14 +- app/Language/pl/Fediverse.php | 12 +- app/Language/pl/Page.php | 4 +- app/Language/pl/Podcast.php | 6 +- .../content/docs/ar/getting-started/auth.mdx | 24 +- .../docs/ar/getting-started/docker.mdx | 139 +- .../docs/ar/getting-started/install.mdx | 16 +- .../docs/ar/getting-started/security.mdx | 2 +- .../docs/ar/getting-started/update.mdx | 1 + docs/src/content/docs/ar/index.mdx | 1260 +-------------- .../content/docs/br/getting-started/auth.mdx | 102 +- .../docs/br/getting-started/docker.mdx | 213 +-- .../docs/br/getting-started/install.mdx | 26 +- .../docs/br/getting-started/security.mdx | 11 +- .../docs/br/getting-started/update.mdx | 3 +- docs/src/content/docs/br/index.mdx | 1248 +------------- .../content/docs/ca/getting-started/auth.mdx | 16 +- .../docs/ca/getting-started/docker.mdx | 146 +- .../docs/ca/getting-started/install.mdx | 111 +- .../docs/ca/getting-started/update.mdx | 7 +- docs/src/content/docs/ca/index.mdx | 1270 +-------------- .../content/docs/da/getting-started/auth.mdx | 16 +- .../docs/da/getting-started/docker.mdx | 141 +- .../docs/da/getting-started/install.mdx | 10 +- .../docs/da/getting-started/update.mdx | 1 + docs/src/content/docs/da/index.mdx | 1333 +-------------- .../content/docs/de/getting-started/auth.mdx | 16 +- .../docs/de/getting-started/docker.mdx | 218 +-- .../docs/de/getting-started/install.mdx | 20 +- .../docs/de/getting-started/update.mdx | 68 +- docs/src/content/docs/de/index.mdx | 1246 +------------- .../content/docs/el/getting-started/auth.mdx | 23 +- .../docs/el/getting-started/docker.mdx | 143 +- .../docs/el/getting-started/install.mdx | 56 +- .../docs/el/getting-started/update.mdx | 11 +- docs/src/content/docs/el/index.mdx | 1250 +-------------- .../content/docs/es/getting-started/auth.mdx | 16 +- .../docs/es/getting-started/docker.mdx | 158 +- .../docs/es/getting-started/install.mdx | 34 +- .../docs/es/getting-started/update.mdx | 9 +- docs/src/content/docs/es/index.mdx | 1277 +-------------- .../content/docs/eu/getting-started/auth.mdx | 16 +- .../docs/eu/getting-started/docker.mdx | 139 +- .../docs/eu/getting-started/install.mdx | 10 +- .../docs/eu/getting-started/update.mdx | 1 + docs/src/content/docs/eu/index.mdx | 1252 +-------------- .../content/docs/fa/getting-started/auth.mdx | 16 +- .../docs/fa/getting-started/docker.mdx | 139 +- .../docs/fa/getting-started/install.mdx | 10 +- .../docs/fa/getting-started/update.mdx | 1 + docs/src/content/docs/fa/index.mdx | 1252 +-------------- .../docs/fr-ca/getting-started/auth.mdx | 84 + .../docs/fr-ca/getting-started/docker.mdx | 158 ++ .../docs/fr-ca/getting-started/install.mdx | 243 +++ .../docs/fr-ca/getting-started/security.mdx | 24 + .../docs/fr-ca/getting-started/update.mdx | 109 ++ docs/src/content/docs/fr-ca/index.mdx | 194 +++ .../content/docs/fr/getting-started/auth.mdx | 20 +- .../docs/fr/getting-started/docker.mdx | 143 +- .../docs/fr/getting-started/install.mdx | 12 +- .../docs/fr/getting-started/update.mdx | 16 +- docs/src/content/docs/fr/index.mdx | 1428 ++--------------- .../content/docs/fr2/getting-started/auth.mdx | 18 +- .../docs/fr2/getting-started/docker.mdx | 143 +- .../docs/fr2/getting-started/install.mdx | 12 +- .../docs/fr2/getting-started/update.mdx | 13 +- docs/src/content/docs/fr2/index.mdx | 1292 +-------------- .../content/docs/gd/getting-started/auth.mdx | 16 +- .../docs/gd/getting-started/docker.mdx | 139 +- .../docs/gd/getting-started/install.mdx | 10 +- .../docs/gd/getting-started/update.mdx | 1 + docs/src/content/docs/gd/index.mdx | 1252 +-------------- .../content/docs/gl/getting-started/auth.mdx | 16 +- .../docs/gl/getting-started/docker.mdx | 139 +- .../docs/gl/getting-started/install.mdx | 10 +- .../docs/gl/getting-started/update.mdx | 1 + docs/src/content/docs/gl/index.mdx | 1252 +-------------- .../content/docs/id/getting-started/auth.mdx | 16 +- .../docs/id/getting-started/docker.mdx | 139 +- .../docs/id/getting-started/install.mdx | 10 +- .../docs/id/getting-started/update.mdx | 1 + docs/src/content/docs/id/index.mdx | 1271 +-------------- .../content/docs/it/getting-started/auth.mdx | 18 +- .../docs/it/getting-started/docker.mdx | 139 +- .../docs/it/getting-started/install.mdx | 10 +- .../docs/it/getting-started/update.mdx | 1 + docs/src/content/docs/it/index.mdx | 1216 +------------- .../content/docs/ja/getting-started/auth.mdx | 16 +- .../docs/ja/getting-started/docker.mdx | 139 +- .../docs/ja/getting-started/install.mdx | 18 +- .../docs/ja/getting-started/update.mdx | 1 + docs/src/content/docs/ja/index.mdx | 1216 +------------- .../content/docs/kk/getting-started/auth.mdx | 16 +- .../docs/kk/getting-started/docker.mdx | 139 +- .../docs/kk/getting-started/install.mdx | 10 +- .../docs/kk/getting-started/update.mdx | 1 + docs/src/content/docs/kk/index.mdx | 1252 +-------------- .../content/docs/ko/getting-started/auth.mdx | 16 +- .../docs/ko/getting-started/docker.mdx | 139 +- .../docs/ko/getting-started/install.mdx | 10 +- .../docs/ko/getting-started/update.mdx | 1 + docs/src/content/docs/ko/index.mdx | 1216 +------------- .../content/docs/nl/getting-started/auth.mdx | 22 +- .../docs/nl/getting-started/docker.mdx | 139 +- .../docs/nl/getting-started/install.mdx | 10 +- .../docs/nl/getting-started/update.mdx | 1 + docs/src/content/docs/nl/index.mdx | 1216 +------------- .../docs/nn-no/getting-started/auth.mdx | 25 +- .../docs/nn-no/getting-started/docker.mdx | 147 +- .../docs/nn-no/getting-started/install.mdx | 245 ++- .../docs/nn-no/getting-started/update.mdx | 27 +- docs/src/content/docs/nn-no/index.mdx | 1377 +--------------- .../content/docs/oc/getting-started/auth.mdx | 16 +- .../docs/oc/getting-started/docker.mdx | 139 +- .../docs/oc/getting-started/install.mdx | 10 +- .../docs/oc/getting-started/update.mdx | 1 + docs/src/content/docs/oc/index.mdx | 1220 +------------- .../content/docs/pl/getting-started/auth.mdx | 16 +- .../docs/pl/getting-started/docker.mdx | 139 +- .../docs/pl/getting-started/install.mdx | 10 +- .../docs/pl/getting-started/update.mdx | 1 + docs/src/content/docs/pl/index.mdx | 1216 +------------- .../docs/pt-br/getting-started/auth.mdx | 18 +- .../docs/pt-br/getting-started/docker.mdx | 139 +- .../docs/pt-br/getting-started/install.mdx | 14 +- .../docs/pt-br/getting-started/update.mdx | 3 +- docs/src/content/docs/pt-br/index.mdx | 1268 +-------------- .../content/docs/pt/getting-started/auth.mdx | 16 +- .../docs/pt/getting-started/docker.mdx | 139 +- .../docs/pt/getting-started/install.mdx | 10 +- .../docs/pt/getting-started/update.mdx | 1 + docs/src/content/docs/pt/index.mdx | 1216 +------------- .../content/docs/ro/getting-started/auth.mdx | 25 +- .../docs/ro/getting-started/docker.mdx | 143 +- .../docs/ro/getting-started/install.mdx | 10 +- .../docs/ro/getting-started/update.mdx | 1 + docs/src/content/docs/ro/index.mdx | 1220 +------------- .../content/docs/ru/getting-started/auth.mdx | 16 +- .../docs/ru/getting-started/docker.mdx | 139 +- .../docs/ru/getting-started/install.mdx | 10 +- .../docs/ru/getting-started/update.mdx | 1 + docs/src/content/docs/ru/index.mdx | 1216 +------------- .../content/docs/sk/getting-started/auth.mdx | 16 +- .../docs/sk/getting-started/docker.mdx | 139 +- .../docs/sk/getting-started/install.mdx | 10 +- .../docs/sk/getting-started/update.mdx | 1 + docs/src/content/docs/sk/index.mdx | 1220 +------------- .../docs/sr-latn/getting-started/auth.mdx | 24 +- .../docs/sr-latn/getting-started/docker.mdx | 145 +- .../docs/sr-latn/getting-started/install.mdx | 241 ++- .../docs/sr-latn/getting-started/update.mdx | 17 +- docs/src/content/docs/sr-latn/index.mdx | 1333 +-------------- .../content/docs/sv/getting-started/auth.mdx | 16 +- .../docs/sv/getting-started/docker.mdx | 152 +- .../docs/sv/getting-started/install.mdx | 147 +- .../docs/sv/getting-started/update.mdx | 21 +- docs/src/content/docs/sv/index.mdx | 1276 +-------------- .../content/docs/uk/getting-started/auth.mdx | 16 +- .../docs/uk/getting-started/docker.mdx | 139 +- .../docs/uk/getting-started/install.mdx | 241 ++- .../docs/uk/getting-started/update.mdx | 1 + docs/src/content/docs/uk/index.mdx | 1220 +------------- .../docs/zh-hans/getting-started/auth.mdx | 20 +- .../docs/zh-hans/getting-started/docker.mdx | 143 +- .../docs/zh-hans/getting-started/install.mdx | 38 +- .../docs/zh-hans/getting-started/update.mdx | 3 +- docs/src/content/docs/zh-hans/index.mdx | 1284 +-------------- .../docs/zh-hant/getting-started/auth.mdx | 22 +- .../docs/zh-hant/getting-started/docker.mdx | 139 +- .../docs/zh-hant/getting-started/install.mdx | 10 +- .../docs/zh-hant/getting-started/update.mdx | 1 + docs/src/content/docs/zh-hant/index.mdx | 1248 +------------- modules/Admin/Language/nl/Breadcrumb.php | 2 +- modules/Admin/Language/nl/Countries.php | 26 +- modules/Admin/Language/nl/Episode.php | 56 +- modules/Admin/Language/nn-no/Podcast.php | 6 +- modules/Admin/Language/pl/AboutCastopod.php | 2 +- modules/Admin/Language/pl/Breadcrumb.php | 10 +- modules/Admin/Language/pl/Charts.php | 8 +- modules/Admin/Language/pl/Common.php | 2 +- modules/Admin/Language/pl/Dashboard.php | 2 +- modules/Admin/Language/pl/Episode.php | 58 +- .../Admin/Language/pl/EpisodeNavigation.php | 4 +- modules/Admin/Language/pl/Fediverse.php | 4 +- modules/Admin/Language/pl/Install.php | 20 +- modules/Admin/Language/pl/Navigation.php | 16 +- modules/Admin/Language/pl/Notifications.php | 14 +- modules/Admin/Language/pl/Person.php | 2 +- modules/Admin/Language/pl/Platforms.php | 20 +- modules/Admin/Language/pl/Podcast.php | 133 +- .../Admin/Language/pl/PodcastNavigation.php | 18 +- modules/Admin/Language/pl/Settings.php | 2 +- modules/Admin/Language/pl/Soundbite.php | 2 +- modules/Admin/Language/pl/Validation.php | 6 +- modules/Admin/Language/pl/VideoClip.php | 16 +- modules/Auth/Language/ca/Auth.php | 1 + modules/Auth/Language/ko/Auth.php | 2 +- modules/Auth/Language/pl/Auth.php | 94 +- modules/Auth/Language/pl/Contributor.php | 4 +- modules/Install/Language/pl/Install.php | 22 +- .../Language/nl/PodcastImport.php | 38 +- .../Language/pl/PodcastImport.php | 78 +- .../Language/pl/PremiumPodcasts.php | 4 +- .../Language/pl/Subscription.php | 44 +- 213 files changed, 5899 insertions(+), 43035 deletions(-) create mode 100644 docs/src/content/docs/fr-ca/getting-started/auth.mdx create mode 100644 docs/src/content/docs/fr-ca/getting-started/docker.mdx create mode 100644 docs/src/content/docs/fr-ca/getting-started/install.mdx create mode 100644 docs/src/content/docs/fr-ca/getting-started/security.mdx create mode 100644 docs/src/content/docs/fr-ca/getting-started/update.mdx create mode 100644 docs/src/content/docs/fr-ca/index.mdx diff --git a/app/Language/de/Episode.php b/app/Language/de/Episode.php index dba15335..26a9cae9 100644 --- a/app/Language/de/Episode.php +++ b/app/Language/de/Episode.php @@ -24,7 +24,7 @@ return [ 'comments' => 'Kommentare', 'activity' => 'Aktivitäten', 'chapters' => 'Kapitel', - 'transcript' => 'Transcript', + 'transcript' => 'Protokoll', 'description' => 'Beschreibung der Episode', 'number_of_comments' => '{numberOfComments, plural, one {# Kommentar} @@ -45,6 +45,6 @@ return [ 'publish_edit' => 'Veröffentlichung bearbeiten', ], 'no_chapters' => 'Für diese Episode sind keine Kapitel verfügbar.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'download_transcript' => 'Protokoll herunterladen ({extension})', + 'no_transcript' => 'Für diese Episode ist kein Protokoll verfügbar.', ]; diff --git a/app/Language/ja/Episode.php b/app/Language/ja/Episode.php index 40b21d39..de5efb07 100644 --- a/app/Language/ja/Episode.php +++ b/app/Language/ja/Episode.php @@ -23,7 +23,7 @@ return [ 'comments' => 'コメント', 'activity' => 'アクティビティ', 'chapters' => '章', - 'transcript' => 'Transcript', + 'transcript' => '文字起こし', 'description' => 'エピソードの詳細', 'number_of_comments' => '{numberOfComments, plural, one {# comment} @@ -43,7 +43,7 @@ return [ 'publish' => '公開する', 'publish_edit' => '出版物を編集', ], - 'no_chapters' => 'No chapters are available for this episode.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'no_chapters' => 'このエピソードにはチャプターがありません。', + 'download_transcript' => '文字起こしをダウンロード ({extension})', + 'no_transcript' => 'このエピソードには文字起こしがありません。', ]; diff --git a/app/Language/ja/Fediverse.php b/app/Language/ja/Fediverse.php index c86f8313..2287ba97 100644 --- a/app/Language/ja/Fediverse.php +++ b/app/Language/ja/Fediverse.php @@ -10,28 +10,28 @@ declare(strict_types=1); return [ 'your_handle' => 'あなたのユーザー ID', - 'your_handle_hint' => 'Enter the @username@domain you want to act from.', + 'your_handle_hint' => 'フォームに「@username@domain」の形式で入力してください', 'follow' => [ 'label' => 'フォロー', 'title' => '{actorDisplayName} をフォロー', - 'subtitle' => 'You are going to follow:', + 'subtitle' => 'フォロー中:', 'accountNotFound' => 'アカウントが見つかりませんでした', 'remoteFollowNotAllowed' => 'このアカウントサーバーはリモートフォローを許可しておりません', 'submit' => 'フォローする', ], 'favourite' => [ 'title' => "お気に入りの {actorDisplayName}の投稿", - 'subtitle' => 'You are going to favourite:', + 'subtitle' => 'お気に入りに登録中:', 'submit' => 'お気に入り登録する', ], 'reblog' => [ - 'title' => "Share {actorDisplayName}'s post", - 'subtitle' => 'You are going to share:', + 'title' => "{actorDisplayName} の投稿を共有する", + 'subtitle' => '共有中:', 'submit' => '共有する', ], 'reply' => [ - 'title' => "Reply to {actorDisplayName}'s post", - 'subtitle' => 'You are going to reply to:', + 'title' => "{actorDisplayName} の投稿に返信する", + 'subtitle' => '返信中:', 'submit' => '返信する', ], ]; diff --git a/app/Language/ja/Podcast.php b/app/Language/ja/Podcast.php index 43d67e5d..ed805970 100644 --- a/app/Language/ja/Podcast.php +++ b/app/Language/ja/Podcast.php @@ -38,16 +38,16 @@ return [ one {# episode} other {# episodes} }', - 'first_published_at' => 'First episode published on {0, date, medium}', + 'first_published_at' => '初回は{0, date, medium} に投稿されました。', ], - 'sponsor' => 'Sponsor', - 'funding_links' => 'Funding links for {podcastTitle}', - 'find_on' => 'Find {podcastTitle} on', - 'listen_on' => 'Listen on', + 'sponsor' => 'スポンサー', + 'funding_links' => '{podcastTitle} のリンクを探す', + 'find_on' => '{podcastTitle} を検索', + 'listen_on' => '視聴中', 'persons' => '{personsCount, plural, one {# person} other {# persons} }', - 'persons_list' => 'Persons', - 'castopod_website' => 'Castopod (website)', + 'persons_list' => '人数', + 'castopod_website' => 'Castopod (公式ページ)', ]; diff --git a/app/Language/ja/Post.php b/app/Language/ja/Post.php index 1ad1c14c..d931e31e 100644 --- a/app/Language/ja/Post.php +++ b/app/Language/ja/Post.php @@ -9,15 +9,15 @@ declare(strict_types=1); */ return [ - 'title' => "{actorDisplayName}'s post", - 'back_to_actor_posts' => 'Back to {actor} posts', - 'actor_shared' => '{actor} shared', - 'reply_to' => 'Reply to @{actorUsername}', + 'title' => "{actorDisplayName} の投稿", + 'back_to_actor_posts' => '{actor} の投稿一覧に戻る', + 'actor_shared' => '{actor} が共有しました', + 'reply_to' => '@{actorUsername} に返信する', 'form' => [ - 'message_placeholder' => 'Write a message…', - 'episode_message_placeholder' => 'Write a message for the episode…', - 'episode_url_placeholder' => 'Episode URL', - 'reply_to_placeholder' => 'Reply to @{actorUsername}', + 'message_placeholder' => 'ここにコメントを入力..', + 'episode_message_placeholder' => 'エピソードへのコメントを入力...', + 'episode_url_placeholder' => 'エピソードのURL', + 'reply_to_placeholder' => '@{actorUsername} に返信する', 'submit' => '送信', 'submit_reply' => '返信する', ], @@ -33,8 +33,8 @@ return [ one {# reply} other {# replies} }', - 'expand' => 'Expand post', - 'block_actor' => 'Block user @{actorUsername}', - 'block_domain' => 'Block domain @{actorDomain}', + 'expand' => '投稿を開く', + 'block_actor' => '@{actorUsername} をブロック', + 'block_domain' => '@{actorDomain} の投稿をブロックする', 'delete' => '投稿を削除', ]; diff --git a/app/Language/nl/Episode.php b/app/Language/nl/Episode.php index 4acd9a29..7a7fe02b 100644 --- a/app/Language/nl/Episode.php +++ b/app/Language/nl/Episode.php @@ -24,7 +24,7 @@ return [ 'comments' => 'Reacties', 'activity' => 'Activiteiten', 'chapters' => 'Hoofdstukken', - 'transcript' => 'Transcript', + 'transcript' => 'Transcriptie', 'description' => 'Omschrijving aflevering', 'number_of_comments' => '{numberOfComments, plural, one {# reactie} @@ -45,6 +45,6 @@ return [ 'publish_edit' => 'Publicatie bewerken', ], 'no_chapters' => 'Voor deze aflevering zijn geen hoofdstukken beschikbaar.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'download_transcript' => 'Transcriptie downloaden ({extension})', + 'no_transcript' => 'Geen transcript beschikbaar voor deze aflevering.', ]; diff --git a/app/Language/nn-no/Episode.php b/app/Language/nn-no/Episode.php index c2bd60a3..8a1072c3 100644 --- a/app/Language/nn-no/Episode.php +++ b/app/Language/nn-no/Episode.php @@ -24,7 +24,7 @@ return [ 'comments' => 'Kommentarar', 'activity' => 'Aktivitet', 'chapters' => 'Kapittel', - 'transcript' => 'Transcript', + 'transcript' => 'Avskrift', 'description' => 'Skildring av episoden', 'number_of_comments' => '{numberOfComments, plural, one {# kommentar} @@ -45,6 +45,6 @@ return [ 'publish_edit' => 'Rediger publiseringa', ], 'no_chapters' => 'Det finst ingen kapittel for denne episoden.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'download_transcript' => 'Last ned underteksten ({extension})', + 'no_transcript' => 'Det finst inga teksting for denne episoden.', ]; diff --git a/app/Language/pl/Comment.php b/app/Language/pl/Comment.php index 8f4282f2..762d4112 100644 --- a/app/Language/pl/Comment.php +++ b/app/Language/pl/Comment.php @@ -31,5 +31,5 @@ return [ 'view_replies' => 'Zobacz odpowiedzi ({numberOfReplies})', 'block_actor' => 'Zablokuj użytkownika @{actorUsername}', 'block_domain' => 'Zablokuj domenę @{actorDomain}', - 'delete' => 'usuń komentarz', + 'delete' => 'Usuń komentarz', ]; diff --git a/app/Language/pl/Common.php b/app/Language/pl/Common.php index 5009c01f..888a0159 100644 --- a/app/Language/pl/Common.php +++ b/app/Language/pl/Common.php @@ -14,15 +14,15 @@ return [ 'cancel' => 'Anuluj', 'optional' => 'Opcjonalnie', 'close' => 'Zamknij', - 'home' => 'Początek', - 'explicit' => 'Zawiera treści dla dorosłych', + 'home' => 'Strona główna', + 'explicit' => 'Wulgarne', 'powered_by' => 'Wspierane przez {castopod}', 'go_back' => 'Wróć', 'play_episode_button' => [ 'play' => 'Odtwórz', 'playing' => 'Odtwarzanie', ], - 'read_more' => 'czytaj więcej', + 'read_more' => 'Czytaj więcej', 'read_less' => 'Czytaj mniej', 'see_more' => 'Zobacz więcej', 'see_less' => 'Zobacz mniej', diff --git a/app/Language/pl/Episode.php b/app/Language/pl/Episode.php index 3c744879..7e3b14c4 100644 --- a/app/Language/pl/Episode.php +++ b/app/Language/pl/Episode.php @@ -14,7 +14,7 @@ return [ 'number' => 'Odcinek {episodeNumber}', 'number_abbr' => 'Odc. {episodeNumber}', 'season_episode' => 'Sezon {seasonNumber} odcinek {episodeNumber}', - 'season_episode_abbr' => 'S{seasonNumber}:O{episodeNumber}', + 'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}', 'persons' => '{personsCount, plural, one {# osoba} few {# osoby} @@ -24,8 +24,8 @@ return [ 'back_to_episodes' => 'Wróć do odcinków {podcast}', 'comments' => 'Komentarze', 'activity' => 'Aktywność', - 'chapters' => 'Chapters', - 'transcript' => 'Transcript', + 'chapters' => 'Rozdziały', + 'transcript' => 'Transkrypcja', 'description' => 'Opis odcinka', 'number_of_comments' => '{numberOfComments, plural, one {# komentarz} @@ -33,7 +33,7 @@ return [ other {# komentarzy} }', 'all_podcast_episodes' => 'Wszystkie odcinki podcastu', - 'back_to_podcast' => 'Wróć do podkastu', + 'back_to_podcast' => 'Wróć do podcastu', 'preview' => [ 'title' => 'Podgląd', 'not_published' => 'Nieopublikowany', @@ -46,7 +46,7 @@ return [ 'publish' => 'Opublikuj', 'publish_edit' => 'Edytuj publikację', ], - 'no_chapters' => 'No chapters are available for this episode.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'no_chapters' => 'Brak dostępnych rozdziałów dla tego odcinka.', + 'download_transcript' => 'Pobierz transkrypcję ({extension})', + 'no_transcript' => 'Brak transkrypcji dla tego odcinka.', ]; diff --git a/app/Language/pl/Fediverse.php b/app/Language/pl/Fediverse.php index 93923303..ccd410fc 100644 --- a/app/Language/pl/Fediverse.php +++ b/app/Language/pl/Fediverse.php @@ -10,28 +10,28 @@ declare(strict_types=1); return [ 'your_handle' => 'Twój uchwyt', - 'your_handle_hint' => 'Wpisz @nazwęużytkownika@domenę, z których chcesz działać.', + 'your_handle_hint' => 'Wpisz @nazważytkownika@domena, z której chcesz działać.', 'follow' => [ 'label' => 'Obserwuj', 'title' => 'Obserwuj {actorDisplayName}', 'subtitle' => 'Zamierzasz obserwować:', 'accountNotFound' => 'Nie można znaleźć konta.', - 'remoteFollowNotAllowed' => 'Wygląda na to, że serwer kont nie pozwala na śledzenie zdalnie…', + 'remoteFollowNotAllowed' => 'Wygląda na to, że serwer kont nie pozwala na zdalne śledzenie…', 'submit' => 'Przejdź do obserwowania', ], 'favourite' => [ 'title' => "Dodaj do ulubionych wpis {actorDisplayName}", 'subtitle' => 'Zamierzasz dodać do ulubionych:', - 'submit' => 'Przejdź do dodania do ulubionych', + 'submit' => 'Dodaj do ulubionych', ], 'reblog' => [ 'title' => "Udostępnij wpis {actorDisplayName}", 'subtitle' => 'Zamierzasz udostępnić:', - 'submit' => 'Przejdź do udostępnienia', + 'submit' => 'Udostępnij', ], 'reply' => [ - 'title' => "Odpowiedź do wpisu {actorDisplayName}", + 'title' => "Odpowiedz do wpisu {actorDisplayName}", 'subtitle' => 'Zamierzasz odpisać na:', - 'submit' => 'Przejdź do odpowiedzi', + 'submit' => 'Odpowiedz', ], ]; diff --git a/app/Language/pl/Page.php b/app/Language/pl/Page.php index 4e24bdfa..7e30ecc1 100644 --- a/app/Language/pl/Page.php +++ b/app/Language/pl/Page.php @@ -9,9 +9,9 @@ declare(strict_types=1); */ return [ - 'back_to_home' => 'Wróć do początku', + 'back_to_home' => 'Wróć do strony głównej', 'map' => [ 'title' => 'Mapa', - 'description' => 'Odkryj odcinki podcastów w witrynie {siteName} umieszczone na mapie! Podróżuj po mapie i słuchaj odcinków, które opowiadają o konkretnych lokalizacjach.', + 'description' => 'Odkryj odcinki podcastów w witrynie {siteName}, które są umieszczone na mapie! Podróżuj po mapie i słuchaj odcinków, które opowiadają o konkretnych lokalizacjach.', ], ]; diff --git a/app/Language/pl/Podcast.php b/app/Language/pl/Podcast.php index dfaed970..dbc95ff5 100644 --- a/app/Language/pl/Podcast.php +++ b/app/Language/pl/Podcast.php @@ -16,7 +16,7 @@ return [ 'Sezon {seasonNumber} odcinki ({episodeCount})', 'no_episode' => 'Nie znaleziono odcinków!', 'follow' => 'Obserwuj', - 'followTitle' => 'Obserwuj {actorDisplayName} na fediverse!', + 'followTitle' => 'Obserwuj {actorDisplayName} na fediwersum!', 'followers' => '{numberOfFollowers, plural, one {# polubienie} few {# polubienia} @@ -27,7 +27,7 @@ return [ few {# osoby} other {# osób} }', - 'links' => 'Links', + 'links' => 'Linki', 'activity' => 'Wpisy', 'episodes' => 'Odcinki', 'episodes_title' => 'Odcinki {podcastTitle}', @@ -56,5 +56,5 @@ return [ other {# osób} }', 'persons_list' => 'Osoby', - 'castopod_website' => 'Castopod (website)', + 'castopod_website' => 'Castopod (strona)', ]; diff --git a/docs/src/content/docs/ar/getting-started/auth.mdx b/docs/src/content/docs/ar/getting-started/auth.mdx index 9c6e5a6d..c5f2040e 100644 --- a/docs/src/content/docs/ar/getting-started/auth.mdx +++ b/docs/src/content/docs/ar/getting-started/auth.mdx @@ -9,11 +9,11 @@ níveis: 1. [toda instância](#1-instance-wide-roles-and-permissions) 2. [por podcast](#2-per-podcast-roles-and-permissions) -## Papéis e permissões para toda a instância +## 2. Por funções de podcast e permissões -### Cargos de instância +### Instance roles -{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */} +{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/} | role | description | permissions | | ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ | @@ -21,11 +21,11 @@ níveis: | Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage | | Podcaster | General users of Castopod. | admin.access | -{/* AUTH-INSTANCE-ROLES-LIST:END */} +{/_ AUTH-INSTANCE-ROLES-LIST:END _/} -### Permissões da instância +### Instance permissions -{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */} +{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/} | permission | description | | ----------------------- | ------------------------------------------------------------------ | @@ -39,13 +39,13 @@ níveis: | podcasts.import | Can import podcasts. | | fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. | -{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */} +{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/} -## 2. Por funções de podcast e permissões +## 2. Per podcast roles and permissions ### Por cargos de podcast -{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */} +{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/} | role | description | permissions | | ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -54,11 +54,11 @@ níveis: | Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips | | Guest | General contributor of the podcast #\{id\}. | view, episodes.view | -{/* AUTH-PODCAST-ROLES-LIST:END */} +{/_ AUTH-PODCAST-ROLES-LIST:END _/} ### Por permissões de podcast -{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */} +{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/} | permission | description | | ---------------------------- | -------------------------------------------------------------------------- | @@ -82,4 +82,4 @@ níveis: | episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. | | episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. | -{/* AUTH-PODCAST-PERMISSIONS-LIST:END */} +{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/} diff --git a/docs/src/content/docs/ar/getting-started/docker.mdx b/docs/src/content/docs/ar/getting-started/docker.mdx index 6141377f..14e36d5e 100644 --- a/docs/src/content/docs/ar/getting-started/docker.mdx +++ b/docs/src/content/docs/ar/getting-started/docker.mdx @@ -24,87 +24,88 @@ can be added as a cache handler. ## Example usage -1. Install [docker](https://docs.docker.com/get-docker/) and - [docker-compose](https://docs.docker.com/compose/install/) -2. Create a `docker-compose.yml` file with the following: +1. Install [docker](https://docs.docker.com/get-docker/) and + [docker-compose](https://docs.docker.com/compose/install/) - ```yml - version: "3.7" +2. Create a `docker-compose.yml` file with the following: - services: - app: - image: castopod/castopod:latest - container_name: "castopod-app" - volumes: - - castopod-media:/var/www/castopod/public/media - environment: - MYSQL_DATABASE: castopod - MYSQL_USER: castopod - MYSQL_PASSWORD: changeme - CP_BASEURL: "https://castopod.example.com" - CP_ANALYTICS_SALT: changeme - CP_CACHE_HANDLER: redis - CP_REDIS_HOST: redis - CP_REDIS_PASSWORD: changeme - networks: - - castopod-app - - castopod-db - ports: - - 8000:8000 - restart: unless-stopped + ```yml + version: "3.7" - mariadb: - image: mariadb:10.5 - container_name: "castopod-mariadb" - networks: - - castopod-db - volumes: - - castopod-db:/var/lib/mysql - environment: - MYSQL_ROOT_PASSWORD: changeme - MYSQL_DATABASE: castopod - MYSQL_USER: castopod - MYSQL_PASSWORD: changeme - restart: unless-stopped + services: + app: + image: castopod/castopod:latest + container_name: "castopod-app" + volumes: + - castopod-media:/var/www/castopod/public/media + environment: + MYSQL_DATABASE: castopod + MYSQL_USER: castopod + MYSQL_PASSWORD: changeme + CP_BASEURL: "https://castopod.example.com" + CP_ANALYTICS_SALT: changeme + CP_CACHE_HANDLER: redis + CP_REDIS_HOST: redis + CP_REDIS_PASSWORD: changeme + networks: + - castopod-app + - castopod-db + ports: + - 8000:8000 + restart: unless-stopped - redis: - image: redis:7.0-alpine - container_name: "castopod-redis" - command: --requirepass changeme - volumes: - - castopod-cache:/data - networks: - - castopod-app + mariadb: + image: mariadb:10.5 + container_name: "castopod-mariadb" + networks: + - castopod-db + volumes: + - castopod-db:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: changeme + MYSQL_DATABASE: castopod + MYSQL_USER: castopod + MYSQL_PASSWORD: changeme + restart: unless-stopped - volumes: - castopod-media: - castopod-db: - castopod-cache: + redis: + image: redis:7.0-alpine + container_name: "castopod-redis" + command: --requirepass changeme + volumes: + - castopod-cache:/data + networks: + - castopod-app - networks: - castopod-app: - castopod-db: - ``` + volumes: + castopod-media: + castopod-db: + castopod-cache: - You have to adapt some variables to your needs (e.g. `CP_BASEURL`, - `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`). + networks: + castopod-app: + castopod-db: + ``` -3. Setup a reverse proxy for TLS (SSL/HTTPS) + You have to adapt some variables to your needs (e.g. `CP_BASEURL`, + `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`). - TLS is mandatory for ActivityPub to work. This job can easily be handled by - a reverse proxy, for example with [Caddy](https://caddyserver.com/): +3. Setup a reverse proxy for TLS (SSL/HTTPS) - ``` - #castopod - castopod.example.com { - reverse_proxy localhost:8000 - } - ``` + TLS is mandatory for ActivityPub to work. This job can easily be handled by + a reverse proxy, for example with [Caddy](https://caddyserver.com/): -4. Run `docker-compose up -d`, wait for it to initialize and head on to - `https://castopod.example.com/cp-install` to finish setting up Castopod! + ``` + #castopod + castopod.example.com { + reverse_proxy localhost:8000 + } + ``` -5. You're all set, start podcasting! 🎙️🚀 +4. Run `docker-compose up -d`, wait for it to initialize and head on to + `https://castopod.example.com/cp-install` to finish setting up Castopod! + +5. You're all set, start podcasting! 🎙️🚀 ## Environment Variables diff --git a/docs/src/content/docs/ar/getting-started/install.mdx b/docs/src/content/docs/ar/getting-started/install.mdx index e55c4609..c9cc1c0d 100644 --- a/docs/src/content/docs/ar/getting-started/install.mdx +++ b/docs/src/content/docs/ar/getting-started/install.mdx @@ -7,26 +7,17 @@ import { Aside } from "@astrojs/starlight/components"; Castopod was thought-out to be easy to install. Whether using dedicated or shared hosting, you can install it on most PHP-MySQL compatible web servers. - - ## Requirements -- PHP v8.3 or higher +- PHP v8.1 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3, alebo vyššia +### PHP v8.1 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.1 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) @@ -117,6 +108,7 @@ based on the `.env.example` file. ### Using CLI 1. Create a `.env` file in the package root based on the `.env.example` file. + 2. Initialize the database using: ```sh diff --git a/docs/src/content/docs/ar/getting-started/security.mdx b/docs/src/content/docs/ar/getting-started/security.mdx index c6e80167..c039493c 100644 --- a/docs/src/content/docs/ar/getting-started/security.mdx +++ b/docs/src/content/docs/ar/getting-started/security.mdx @@ -1,5 +1,5 @@ --- -title: Zabezpečenie +title: Security concerns --- Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP diff --git a/docs/src/content/docs/ar/getting-started/update.mdx b/docs/src/content/docs/ar/getting-started/update.mdx index d91f98c4..2ace22a2 100644 --- a/docs/src/content/docs/ar/getting-started/update.mdx +++ b/docs/src/content/docs/ar/getting-started/update.mdx @@ -51,6 +51,7 @@ improvements ⚡. 5. Clear your cache from your `Castopod Admin` > `Settings` > `general` > `Housekeeping` + 6. ✨ Enjoy your fresh instance, you're all done!
diff --git a/docs/src/content/docs/ca/getting-started/update.mdx b/docs/src/content/docs/ca/getting-started/update.mdx index d41ec18a..af6a2863 100644 --- a/docs/src/content/docs/ca/getting-started/update.mdx +++ b/docs/src/content/docs/ca/getting-started/update.mdx @@ -51,6 +51,7 @@ d'errors 🐛 i millores de rendiment ⚡. 5. Clear your cache from your `Castopod Admin` > `Settings` > `general` > `Housekeeping` + 6. ✨ Enjoy your fresh instance, you're all done!
diff --git a/themes/cp_app/episode/preview-transcript.php b/themes/cp_app/episode/preview-transcript.php index c4e421e4..8ccfa075 100644 --- a/themes/cp_app/episode/preview-transcript.php +++ b/themes/cp_app/episode/preview-transcript.php @@ -4,7 +4,7 @@
- + '.' . $transcript->file_extension, ]) ?> diff --git a/themes/cp_app/episode/transcript.php b/themes/cp_app/episode/transcript.php index a3aef215..b1701e75 100644 --- a/themes/cp_app/episode/transcript.php +++ b/themes/cp_app/episode/transcript.php @@ -4,7 +4,7 @@
- + '.' . $transcript->file_extension, ]) ?> diff --git a/themes/cp_app/home.php b/themes/cp_app/home.php index 8021651d..ac08f0d2 100644 --- a/themes/cp_app/home.php +++ b/themes/cp_app/home.php @@ -3,35 +3,14 @@ - - - - - - - - - - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/app.ts', 'js') ?> - +appendRawContent(service('vite')->asset('styles/index.css', 'css')) + ->appendRawContent(service('vite')->asset('js/app.ts', 'js')) +?> + ->get('App.theme') ?>"> loggedIn()): ?> include('_admin_navbar') ?> @@ -40,10 +19,7 @@

get('App.siteName') === 'Castopod' ? 'castopod' . - svg('castopod-logo-base', 'h-6 ml-2') : esc(service('settings') - ->get('App.siteName')) ?> + ) ?>" class="inline-flex items-baseline text-3xl font-semibold font-display">get('App.siteName') === 'Castopod' ? 'castopod' . svg('castopod-logo-base', 'h-6 ml-2') : esc(service('settings')->get('App.siteName')) ?>

@@ -52,28 +28,30 @@ $podcasts, ) ?>) - + 'class' => 'mr-1 text-xl opacity-50', + ]) . lang('Home.sort_by') ?> +
@@ -85,8 +63,8 @@ is_premium): ?>
'w-8 pl-2 text-2xl rounded-r-full rounded-tl-lg text-accent-contrast bg-accent-base', - ]) ?> + 'class' => 'w-8 pl-2 text-2xl rounded-r-full rounded-tl-lg text-accent-contrast bg-accent-base', + ]) ?> parental_advisory === 'explicit', 'rounded bg-black/75') ?>
diff --git a/themes/cp_app/pages/_layout.php b/themes/cp_app/pages/_layout.php deleted file mode 100644 index 14d8b36c..00000000 --- a/themes/cp_app/pages/_layout.php +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/app.ts', 'js') ?> - asset('js/audio-player.ts', 'js') ?> - - - - loggedIn()): ?> - include('_admin_navbar') ?> - - -
- -
-
- renderSection('content') ?> -
-
- - 'Castopod', - ], null, false) ?> -
- diff --git a/themes/cp_app/pages/credits.php b/themes/cp_app/pages/credits.php index 0e8b4f23..a7eae511 100644 --- a/themes/cp_app/pages/credits.php +++ b/themes/cp_app/pages/credits.php @@ -1,33 +1,51 @@ -extend('pages/_layout') ?> + + + -section('title') ?> - -endSection() ?> +title(lang('Person.credits') . service('settings')->get('App.siteTitleSeparator') . service('settings')->get('App.siteName')) + ->description(lang('Page.map.description', [ + 'siteName' => esc(service('settings') + ->get('App.siteName')), + ])) + ->appendRawContent(service('vite')->asset('styles/index.css', 'css')) +?> -section('content') ?> + + loggedIn()): ?> + include('_admin_navbar') ?> + + +
+ +
+
$groups): ?> -

+

- <?= esc($persons[
-    'full_name'
-]) ?> + <?= esc($persons['full_name']) ?>
- +
@@ -36,14 +54,18 @@ - +
- -endSection(); ?> + + + diff --git a/themes/cp_app/pages/map.php b/themes/cp_app/pages/map.php index 526ecbff..50ee8857 100644 --- a/themes/cp_app/pages/map.php +++ b/themes/cp_app/pages/map.php @@ -3,39 +3,19 @@ - - - <?= lang('Page.map.title') . service('settings')->get('App.siteTitleSeparator') . esc(service('settings')->get('App.siteName')) ?> - - - - - - - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/app.ts', 'js') ?> - asset('js/map.ts', 'js') ?> - + ])) + ->appendRawContent(service('vite')->asset('styles/index.css', 'css')) + ->appendRawContent(service('vite')->asset('js/app.ts', 'js')) + ->appendRawContent(service('vite')->asset('js/map.ts', 'js')) +?> + ->get('App.theme') ?>"> loggedIn()): ?> include('_admin_navbar') ?> @@ -58,9 +38,9 @@ diff --git a/themes/cp_app/pages/page.php b/themes/cp_app/pages/page.php index 430d7594..a58072f3 100644 --- a/themes/cp_app/pages/page.php +++ b/themes/cp_app/pages/page.php @@ -1,11 +1,40 @@ -extend('pages/_layout') ?> + + + -section('title') ?> - -endSection() ?> +title($page->title . service('settings')->get('App.siteTitleSeparator') . service('settings')->get('App.siteName')) + ->appendRawContent(service('vite')->asset('styles/index.css', 'css')) +?> -section('content') ?> + + loggedIn()): ?> + include('_admin_navbar') ?> + + +
+ +
+
content_html ?>
-endSection() ?> \ No newline at end of file +
+
+ + 'Castopod', + ], null, false) ?> +
+ diff --git a/themes/cp_app/podcast/_layout.php b/themes/cp_app/podcast/_layout.php index 7deeb5b0..130d4150 100644 --- a/themes/cp_app/podcast/_layout.php +++ b/themes/cp_app/podcast/_layout.php @@ -4,38 +4,15 @@ - - - - - - - - - - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/app.ts', 'js') ?> - asset('js/podcast.ts', 'js') ?> - asset('js/audio-player.ts', 'js') ?> - +appendRawContent(service('vite')->asset('styles/index.css', 'css')) + ->appendRawContent(service('vite')->asset('js/app.ts', 'js')) + ->appendRawContent(service('vite')->asset('js/podcast.ts', 'js')) + ->appendRawContent(service('vite')->asset('js/audio-player.ts', 'js')) +?> + ->get('App.theme') ?>">
include('_admin_navbar') ?> diff --git a/themes/cp_app/podcast/_partials/premium_banner.php b/themes/cp_app/podcast/_partials/premium_banner.php index 19301881..8999123d 100644 --- a/themes/cp_app/podcast/_partials/premium_banner.php +++ b/themes/cp_app/podcast/_partials/premium_banner.php @@ -4,8 +4,8 @@ if ($podcast->is_premium): ?> isUnlocked($podcast->handle); - // @icon('lock-unlock-fill') - // @icon('lock-fill') + // @icon("lock-unlock-fill") + // @icon("lock-fill") $shownIcon = $isUnlocked ? 'lock-unlock-fill' : 'lock-fill'; $hiddenIcon = $isUnlocked ? 'lock-fill' : 'lock-unlock-fill'; ?> @@ -27,7 +27,7 @@ if ($podcast->is_premium): ?> ]) ?> - + - +
diff --git a/themes/cp_app/podcast/follow.php b/themes/cp_app/podcast/follow.php index fff8108b..52a3cd51 100644 --- a/themes/cp_app/podcast/follow.php +++ b/themes/cp_app/podcast/follow.php @@ -4,34 +4,13 @@ - - - - - - - - - - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/podcast.ts', 'js') ?> - +appendRawContent(service('vite')->asset('styles/index.css', 'css')) + ->appendRawContent(service('vite')->asset('js/podcast.ts', 'js')) +?> + ->get('App.theme') ?>">

" isRequired="true" /> - + @@ -68,9 +47,9 @@ diff --git a/themes/cp_app/podcast/links.php b/themes/cp_app/podcast/links.php index baf70687..ca7b1dd8 100644 --- a/themes/cp_app/podcast/links.php +++ b/themes/cp_app/podcast/links.php @@ -4,36 +4,14 @@ - - - - - - - - - - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/app.ts', 'js') ?> - asset('js/podcast.ts', 'js') ?> - +appendRawContent(service('vite')->asset('styles/index.css', 'css')) + ->appendRawContent(service('vite')->asset('js/app.ts', 'js')) + ->appendRawContent(service('vite')->asset('js/podcast.ts', 'js')) +?> + ->get('App.theme') ?>">
include('_admin_navbar') ?> diff --git a/themes/cp_app/podcast/unlock.php b/themes/cp_app/podcast/unlock.php index a86a4b3e..dd50ec5e 100644 --- a/themes/cp_app/podcast/unlock.php +++ b/themes/cp_app/podcast/unlock.php @@ -58,7 +58,7 @@ ]) ?>" isRequired="true" /> - + get('Subscription.link', 'podcast:' . $podcast->id)): ?> diff --git a/themes/cp_app/post/_partials/actions.php b/themes/cp_app/post/_partials/actions.php index 67fa5648..55a3774d 100644 --- a/themes/cp_app/post/_partials/actions.php +++ b/themes/cp_app/post/_partials/actions.php @@ -59,7 +59,7 @@
diff --git a/themes/cp_app/post/_partials/post_with_replies.php b/themes/cp_app/post/_partials/post_with_replies.php index 389f1b51..6586b8c2 100644 --- a/themes/cp_app/post/_partials/post_with_replies.php +++ b/themes/cp_app/post/_partials/post_with_replies.php @@ -32,7 +32,7 @@ if ($post->in_reply_to_id): ?> 'actorUsername' => esc($post->actor->username), ]) ?>" rows="1" /> - +
diff --git a/themes/cp_app/post/_partials/reply_actions.php b/themes/cp_app/post/_partials/reply_actions.php index a80c942b..2078efe9 100644 --- a/themes/cp_app/post/_partials/reply_actions.php +++ b/themes/cp_app/post/_partials/reply_actions.php @@ -58,7 +58,7 @@ if (can_user_interact()): ?>
diff --git a/themes/cp_app/post/remote_action.php b/themes/cp_app/post/remote_action.php index 8d76e493..5f07da47 100644 --- a/themes/cp_app/post/remote_action.php +++ b/themes/cp_app/post/remote_action.php @@ -2,34 +2,13 @@ - - - - - - - - - - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/podcast.ts', 'js') ?> - +appendRawContent(service('vite')->asset('styles/index.css', 'css')) + ->appendRawContent(service('vite')->asset('js/podcast.ts', 'js')) +?> + ->get('App.theme') ?>">

1, - 'podcast' => $podcast, - 'post' => $post, - ]) ?> + 'index' => 1, + 'podcast' => $podcast, + 'post' => $post, + ]) ?> @@ -51,16 +30,16 @@ label="" hint="" isRequired="true" /> - +
diff --git a/themes/cp_auth/_layout.php b/themes/cp_auth/_layout.php index 490ff9c5..42876ad2 100644 --- a/themes/cp_auth/_layout.php +++ b/themes/cp_auth/_layout.php @@ -3,17 +3,11 @@ - - - - - Castopod Auth - - - - asset('styles/index.css', 'css') ?> - +title('Castopod Auth') + ->description('Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.') + ->appendRawContent(service('vite')->asset('styles/index.css', 'css')); +?>
@@ -25,7 +19,7 @@
renderSection( - 'title', + 'pageTitle', ) ?> renderSection('content') ?> @@ -33,9 +27,9 @@ diff --git a/themes/cp_auth/email_2fa_show.php b/themes/cp_auth/email_2fa_show.php index 32e6fdca..3678039d 100644 --- a/themes/cp_auth/email_2fa_show.php +++ b/themes/cp_auth/email_2fa_show.php @@ -1,11 +1,7 @@ - - extend(config('Auth')->views['layout']) ?> -section('title') ?> endSection() ?> +section('pageTitle') ?> endSection() ?> section('content') ?> diff --git a/themes/cp_auth/email_2fa_verify.php b/themes/cp_auth/email_2fa_verify.php index cdfbbbcc..9d761fd1 100644 --- a/themes/cp_auth/email_2fa_verify.php +++ b/themes/cp_auth/email_2fa_verify.php @@ -1,10 +1,7 @@ - extend(config('Auth')->views['layout']) ?> -section('title') ?> endSection() ?> +section('pageTitle') ?> endSection() ?> section('content') ?> diff --git a/themes/cp_auth/email_activate_show.php b/themes/cp_auth/email_activate_show.php index a625eec9..85f45849 100644 --- a/themes/cp_auth/email_activate_show.php +++ b/themes/cp_auth/email_activate_show.php @@ -1,10 +1,7 @@ - extend(config('Auth')->views['layout']) ?> -section('title') ?>endSection() ?> +section('pageTitle') ?>endSection() ?> section('content') ?> diff --git a/themes/cp_auth/login.php b/themes/cp_auth/login.php index 9d9558fd..e7224eb9 100644 --- a/themes/cp_auth/login.php +++ b/themes/cp_auth/login.php @@ -1,10 +1,7 @@ - extend(config('Auth')->views['layout']) ?> -section('title') ?>endSection() ?> +section('pageTitle') ?>endSection() ?> section('content') ?> diff --git a/themes/cp_auth/magic_link_form.php b/themes/cp_auth/magic_link_form.php index 4e0b723d..0170de00 100644 --- a/themes/cp_auth/magic_link_form.php +++ b/themes/cp_auth/magic_link_form.php @@ -1,10 +1,7 @@ - extend(config('Auth')->views['layout']) ?> -section('title') ?> endSection() ?> +section('pageTitle') ?> endSection() ?> section('content') ?> diff --git a/themes/cp_auth/magic_link_message.php b/themes/cp_auth/magic_link_message.php index 2e406133..eed77d74 100644 --- a/themes/cp_auth/magic_link_message.php +++ b/themes/cp_auth/magic_link_message.php @@ -1,9 +1,6 @@ - extend(config('Auth')->views['layout']) ?> -section('title') ?> endSection() ?> +section('pageTitle') ?> endSection() ?> section('content') ?> diff --git a/themes/cp_auth/magic_link_set_password.php b/themes/cp_auth/magic_link_set_password.php index 14703e16..9b29aec4 100644 --- a/themes/cp_auth/magic_link_set_password.php +++ b/themes/cp_auth/magic_link_set_password.php @@ -1,10 +1,7 @@ - extend(config('Auth')->views['layout']) ?> -section('title') ?> +section('pageTitle') ?> endSection() ?> diff --git a/themes/cp_auth/register.php b/themes/cp_auth/register.php index bd8d9c96..09dd9d1e 100644 --- a/themes/cp_auth/register.php +++ b/themes/cp_auth/register.php @@ -1,10 +1,7 @@ - extend(config('Auth')->views['layout']) ?> -section('title') ?> +section('pageTitle') ?> endSection() ?> diff --git a/themes/cp_install/cache_config.php b/themes/cp_install/cache_config.php index a2198903..0ff58fc3 100644 --- a/themes/cp_install/cache_config.php +++ b/themes/cp_install/cache_config.php @@ -27,7 +27,7 @@ ])) ?>" defaultValue="file" isRequired="true" /> - + diff --git a/themes/cp_install/create_superadmin.php b/themes/cp_install/create_superadmin.php index 2f51750c..b27926ed 100644 --- a/themes/cp_install/create_superadmin.php +++ b/themes/cp_install/create_superadmin.php @@ -28,7 +28,7 @@ type="password" isRequired="true" autocomplete="new-password" /> - + diff --git a/themes/cp_install/database_config.php b/themes/cp_install/database_config.php index 76630f39..d4d30915 100644 --- a/themes/cp_install/database_config.php +++ b/themes/cp_install/database_config.php @@ -1,6 +1,3 @@ - extend('_layout') ?> section('content') ?> @@ -54,7 +51,7 @@ label="" hint="" value="default['DBPrefix'] ?>" /> - + diff --git a/themes/cp_install/instance_config.php b/themes/cp_install/instance_config.php index 78bc32e3..43a48a9b 100644 --- a/themes/cp_install/instance_config.php +++ b/themes/cp_install/instance_config.php @@ -1,6 +1,3 @@ - extend('_layout') ?> section('content') ?> @@ -37,7 +34,7 @@ hint="" value="gateway ?>" isRequired="true" /> - + From 85704bfbe03fe5e38ff5e76a0e1cf0e5f1275f57 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Wed, 18 Dec 2024 16:05:25 +0000 Subject: [PATCH 066/128] refactor: rename controller methods for views and actions to be more consistent add PermalinkEditor component --- app/Config/Routes.php | 12 +- app/Controllers/ActorController.php | 9 +- app/Controllers/BaseController.php | 16 - app/Controllers/ColorsController.php | 11 +- app/Controllers/EpisodeAudioController.php | 8 - app/Controllers/EpisodeCommentController.php | 15 +- app/Controllers/EpisodeController.php | 30 +- app/Controllers/PodcastController.php | 21 +- app/Controllers/PostController.php | 28 +- app/Models/PersonModel.php | 5 +- app/Resources/js/modules/permalink-edit.ts | 4 +- .../Components/Forms/PermalinkEditor.php | 41 ++ modules/Admin/Config/Routes.php | 140 +++---- .../Admin/Controllers/EpisodeController.php | 356 +++++++++--------- .../Controllers/EpisodePersonController.php | 54 ++- .../Admin/Controllers/FediverseController.php | 4 +- .../Controllers/NotificationController.php | 59 ++- modules/Admin/Controllers/PageController.php | 38 +- .../Admin/Controllers/PersonController.php | 50 ++- .../Admin/Controllers/PodcastController.php | 247 ++++++------ .../Controllers/PodcastPersonController.php | 20 +- .../Admin/Controllers/SettingsController.php | 12 +- .../Admin/Controllers/SoundbiteController.php | 81 ++-- .../Controllers/VideoClipsController.php | 91 ++--- modules/Analytics/AnalyticsTrait.php | 5 + modules/Auth/Config/Routes.php | 24 +- .../Controllers/ContributorController.php | 12 +- .../Auth/Controllers/InteractController.php | 2 +- .../Auth/Controllers/MyAccountController.php | 2 +- modules/Auth/Controllers/UserController.php | 22 +- modules/Fediverse/Config/Routes.php | 14 +- .../Fediverse/Controllers/ActorController.php | 2 +- .../Fediverse/Controllers/BlockController.php | 8 +- .../Fediverse/Controllers/PostController.php | 16 +- modules/Install/Config/Routes.php | 8 +- .../Install/Controllers/InstallController.php | 26 +- modules/Platforms/Config/Routes.php | 10 +- .../Controllers/PlatformController.php | 6 +- modules/PremiumPodcasts/Config/Routes.php | 18 +- .../Controllers/LockController.php | 4 +- .../Controllers/SubscriptionController.php | 14 +- tests/modules/Plugins/PluginsTest.php | 6 +- themes/cp_admin/episode/create.php | 14 +- themes/cp_admin/episode/edit.php | 20 +- themes/cp_admin/page/create.php | 14 +- themes/cp_admin/page/edit.php | 15 +- themes/cp_admin/podcast/view.php | 2 +- themes/cp_app/_persons_modal.php | 8 +- 48 files changed, 788 insertions(+), 836 deletions(-) create mode 100644 app/Views/Components/Forms/PermalinkEditor.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index b8900309..b4888a04 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -161,7 +161,7 @@ $routes->group('@(:podcastHandle)', static function ($routes): void { $routes->get('comments/(:uuid)/replies', 'EpisodeCommentController::replies/$1/$2/$3', [ 'as' => 'episode-comment-replies', ]); - $routes->post('comments/(:uuid)/like', 'EpisodeCommentController::attemptLike/$1/$2/$3', [ + $routes->post('comments/(:uuid)/like', 'EpisodeCommentController::likeAction/$1/$2/$3', [ 'as' => 'episode-comment-attempt-like', ]); $routes->get('oembed.json', 'EpisodeController::oembedJSON/$1/$2', [ @@ -229,7 +229,7 @@ $routes->get('/pages/(:slug)', 'PageController::index/$1', [ * Overwriting Fediverse routes file */ $routes->group('@(:podcastHandle)', static function ($routes): void { - $routes->post('posts/new', 'PostController::attemptCreate/$1', [ + $routes->post('posts/new', 'PostController::createAction/$1', [ 'as' => 'post-attempt-create', 'filter' => 'permission:podcast$1.manage-publications', ]); @@ -266,13 +266,13 @@ $routes->group('@(:podcastHandle)', static function ($routes): void { 'filter' => 'allow-cors', ]); // Actions - $routes->post('action', 'PostController::attemptAction/$1/$2', [ + $routes->post('action', 'PostController::actionAction/$1/$2', [ 'as' => 'post-attempt-action', 'filter' => 'permission:podcast$1.interact-as', ]); $routes->post( 'block-actor', - 'PostController::attemptBlockActor/$1/$2', + 'PostController::blockActorAction/$1/$2', [ 'as' => 'post-attempt-block-actor', 'filter' => 'permission:fediverse.manage-blocks', @@ -280,13 +280,13 @@ $routes->group('@(:podcastHandle)', static function ($routes): void { ); $routes->post( 'block-domain', - 'PostController::attemptBlockDomain/$1/$2', + 'PostController::blockDomainAction/$1/$2', [ 'as' => 'post-attempt-block-domain', 'filter' => 'permission:fediverse.manage-blocks', ], ); - $routes->post('delete', 'PostController::attemptDelete/$1/$2', [ + $routes->post('delete', 'PostController::deleteAction/$1/$2', [ 'as' => 'post-attempt-delete', 'filter' => 'permission:podcast$1.manage-publications', ]); diff --git a/app/Controllers/ActorController.php b/app/Controllers/ActorController.php index 233c5f44..dcc8d74c 100644 --- a/app/Controllers/ActorController.php +++ b/app/Controllers/ActorController.php @@ -22,13 +22,10 @@ class ActorController extends FediverseActorController */ protected $helpers = ['svg', 'components', 'misc', 'seo']; - public function follow(): string + public function followView(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - // @phpstan-ignore-next-line - $this->registerPodcastWebpageHit($this->actor->podcast->id); - } + // @phpstan-ignore-next-line + $this->registerPodcastWebpageHit($this->actor->podcast->id); helper(['form', 'components', 'svg']); // @phpstan-ignore-next-line diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index 3c19f927..2d589a1f 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -5,9 +5,7 @@ declare(strict_types=1); namespace App\Controllers; use CodeIgniter\Controller; -use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\Response; use CodeIgniter\HTTP\ResponseInterface; use Override; use Psr\Log\LoggerInterface; @@ -21,20 +19,6 @@ use ViewThemes\Theme; */ abstract class BaseController extends Controller { - /** - * Instance of the main Request object. - * - * @var IncomingRequest - */ - protected $request; - - /** - * Instance of the main response object. - * - * @var Response - */ - protected $response; - /** * An array of helpers to be loaded automatically upon * class instantiation. These helpers will be available diff --git a/app/Controllers/ColorsController.php b/app/Controllers/ColorsController.php index 82d6eed9..8cb27173 100644 --- a/app/Controllers/ColorsController.php +++ b/app/Controllers/ColorsController.php @@ -11,18 +11,11 @@ declare(strict_types=1); namespace App\Controllers; use CodeIgniter\Controller; -use CodeIgniter\HTTP\Response; +use CodeIgniter\HTTP\ResponseInterface; class ColorsController extends Controller { - /** - * Instance of the main response object. - * - * @var Response - */ - protected $response; - - public function index(): Response + public function index(): ResponseInterface { $cacheName = 'colors.css'; if ( diff --git a/app/Controllers/EpisodeAudioController.php b/app/Controllers/EpisodeAudioController.php index d5acee07..68fdb292 100644 --- a/app/Controllers/EpisodeAudioController.php +++ b/app/Controllers/EpisodeAudioController.php @@ -16,7 +16,6 @@ use App\Models\EpisodeModel; use App\Models\PodcastModel; use CodeIgniter\Controller; use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; @@ -30,13 +29,6 @@ use Psr\Log\LoggerInterface; class EpisodeAudioController extends Controller { - /** - * Instance of the main Request object. - * - * @var IncomingRequest - */ - protected $request; - /** * An array of helpers to be loaded automatically upon class instantiation. These helpers will be available to all * other controllers that extend Analytics. diff --git a/app/Controllers/EpisodeCommentController.php b/app/Controllers/EpisodeCommentController.php index 673b370f..3da77458 100644 --- a/app/Controllers/EpisodeCommentController.php +++ b/app/Controllers/EpisodeCommentController.php @@ -19,7 +19,7 @@ use App\Models\EpisodeModel; use App\Models\PodcastModel; use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\Response; +use CodeIgniter\HTTP\ResponseInterface; use Modules\Analytics\AnalyticsTrait; use Modules\Fediverse\Entities\Actor; use Modules\Fediverse\Objects\OrderedCollectionObject; @@ -77,10 +77,7 @@ class EpisodeCommentController extends BaseController public function view(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->podcast->id); - } + $this->registerPodcastWebpageHit($this->podcast->id); $cacheName = implode( '_', @@ -119,7 +116,7 @@ class EpisodeCommentController extends BaseController return $cachedView; } - public function commentObject(): Response + public function commentObject(): ResponseInterface { $commentObject = new CommentObject($this->comment); @@ -128,7 +125,7 @@ class EpisodeCommentController extends BaseController ->setBody($commentObject->toJSON()); } - public function replies(): Response + public function replies(): ResponseInterface { /** * get comment replies @@ -163,7 +160,7 @@ class EpisodeCommentController extends BaseController ->setBody($collection->toJSON()); } - public function attemptLike(): RedirectResponse + public function likeAction(): RedirectResponse { if (! ($interactAsActor = interact_as_actor()) instanceof Actor) { return redirect()->back(); @@ -175,7 +172,7 @@ class EpisodeCommentController extends BaseController return redirect()->back(); } - public function attemptReply(): RedirectResponse + public function replyAction(): RedirectResponse { if (! ($interactAsActor = interact_as_actor()) instanceof Actor) { return redirect()->back(); diff --git a/app/Controllers/EpisodeController.php b/app/Controllers/EpisodeController.php index c1ceb9fd..93dfe2b2 100644 --- a/app/Controllers/EpisodeController.php +++ b/app/Controllers/EpisodeController.php @@ -18,7 +18,6 @@ use App\Models\EpisodeModel; use App\Models\PodcastModel; use CodeIgniter\Database\BaseBuilder; use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\HTTP\Response; use CodeIgniter\HTTP\ResponseInterface; use Config\Embed; use Config\Services; @@ -66,10 +65,7 @@ class EpisodeController extends BaseController public function index(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->episode->podcast_id); - } + $this->registerPodcastWebpageHit($this->episode->podcast_id); $cacheName = implode( '_', @@ -114,10 +110,7 @@ class EpisodeController extends BaseController public function activity(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->episode->podcast_id); - } + $this->registerPodcastWebpageHit($this->episode->podcast_id); $cacheName = implode( '_', @@ -163,10 +156,7 @@ class EpisodeController extends BaseController public function chapters(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->episode->podcast_id); - } + $this->registerPodcastWebpageHit($this->episode->podcast_id); $cacheName = implode( '_', @@ -222,10 +212,7 @@ class EpisodeController extends BaseController public function transcript(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->episode->podcast_id); - } + $this->registerPodcastWebpageHit($this->episode->podcast_id); $cacheName = implode( '_', @@ -288,10 +275,7 @@ class EpisodeController extends BaseController { header('Content-Security-Policy: frame-ancestors http://*:* https://*:*'); - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->episode->podcast_id); - } + $this->registerPodcastWebpageHit($this->episode->podcast_id); $session = Services::session(); @@ -393,7 +377,7 @@ class EpisodeController extends BaseController return $this->response->setXML($oembed); } - public function episodeObject(): Response + public function episodeObject(): ResponseInterface { $podcastObject = new PodcastEpisode($this->episode); @@ -402,7 +386,7 @@ class EpisodeController extends BaseController ->setBody($podcastObject->toJSON()); } - public function comments(): Response + public function comments(): ResponseInterface { /** * get comments: aggregated replies from posts referring to the episode diff --git a/app/Controllers/PodcastController.php b/app/Controllers/PodcastController.php index aaf60ce0..907724aa 100644 --- a/app/Controllers/PodcastController.php +++ b/app/Controllers/PodcastController.php @@ -17,7 +17,7 @@ use App\Models\EpisodeModel; use App\Models\PodcastModel; use App\Models\PostModel; use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\HTTP\Response; +use CodeIgniter\HTTP\ResponseInterface; use Modules\Analytics\AnalyticsTrait; use Modules\Fediverse\Objects\OrderedCollectionObject; use Modules\Fediverse\Objects\OrderedCollectionPage; @@ -47,7 +47,7 @@ class PodcastController extends BaseController return $this->{$method}(...$params); } - public function podcastActor(): Response + public function podcastActor(): ResponseInterface { $podcastActor = new PodcastActor($this->podcast); @@ -58,10 +58,7 @@ class PodcastController extends BaseController public function activity(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->podcast->id); - } + $this->registerPodcastWebpageHit($this->podcast->id); $cacheName = implode( '_', @@ -106,10 +103,7 @@ class PodcastController extends BaseController public function about(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->podcast->id); - } + $this->registerPodcastWebpageHit($this->podcast->id); $cacheName = implode( '_', @@ -156,10 +150,7 @@ class PodcastController extends BaseController public function episodes(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->podcast->id); - } + $this->registerPodcastWebpageHit($this->podcast->id); $yearQuery = $this->request->getGet('year'); $seasonQuery = $this->request->getGet('season'); @@ -274,7 +265,7 @@ class PodcastController extends BaseController return $cachedView; } - public function episodeCollection(): Response + public function episodeCollection(): ResponseInterface { if ($this->podcast->type === 'serial') { // podcast is serial diff --git a/app/Controllers/PostController.php b/app/Controllers/PostController.php index 27eb5f77..ba788293 100644 --- a/app/Controllers/PostController.php +++ b/app/Controllers/PostController.php @@ -75,10 +75,7 @@ class PostController extends FediversePostController public function view(): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->podcast->id); - } + $this->registerPodcastWebpageHit($this->podcast->id); $cacheName = implode( '_', @@ -115,7 +112,7 @@ class PostController extends FediversePostController } #[Override] - public function attemptCreate(): RedirectResponse + public function createAction(): RedirectResponse { $rules = [ 'message' => 'required|max_length[500]', @@ -167,7 +164,7 @@ class PostController extends FediversePostController } #[Override] - public function attemptReply(): RedirectResponse + public function replyAction(): RedirectResponse { $rules = [ 'message' => 'required|max_length[500]', @@ -207,7 +204,7 @@ class PostController extends FediversePostController } #[Override] - public function attemptFavourite(): RedirectResponse + public function favouriteAction(): RedirectResponse { model('FavouriteModel')->toggleFavourite(interact_as_actor(), $this->post); @@ -215,14 +212,14 @@ class PostController extends FediversePostController } #[Override] - public function attemptReblog(): RedirectResponse + public function reblogAction(): RedirectResponse { (new PostModel())->toggleReblog(interact_as_actor(), $this->post); return redirect()->back(); } - public function attemptAction(): RedirectResponse + public function action(): RedirectResponse { $rules = [ 'action' => 'required|in_list[favourite,reblog,reply]', @@ -239,9 +236,9 @@ class PostController extends FediversePostController $action = $validData['action']; return match ($action) { - 'favourite' => $this->attemptFavourite(), - 'reblog' => $this->attemptReblog(), - 'reply' => $this->attemptReply(), + 'favourite' => $this->favouriteAction(), + 'reblog' => $this->reblogAction(), + 'reply' => $this->replyAction(), default => redirect() ->back() ->withInput() @@ -249,12 +246,9 @@ class PostController extends FediversePostController }; } - public function remoteAction(string $action): string + public function remoteActionView(string $action): string { - // Prevent analytics hit when authenticated - if (! auth()->loggedIn()) { - $this->registerPodcastWebpageHit($this->podcast->id); - } + $this->registerPodcastWebpageHit($this->podcast->id); set_remote_actions_metatags($this->post, $action); $data = [ diff --git a/app/Models/PersonModel.php b/app/Models/PersonModel.php index 8a4a71e4..1c78007d 100644 --- a/app/Models/PersonModel.php +++ b/app/Models/PersonModel.php @@ -178,9 +178,8 @@ class PersonModel extends Model foreach ($personsTaxonomy as $group_key => $group) { foreach ($group['roles'] as $role_key => $role) { $options[] = [ - 'value' => "{$group_key}, -{$role_key}", - 'label' => "{$group['label']} › {$role['label']}", + 'value' => sprintf('%s,%s', $group_key, $role_key), + 'label' => sprintf('%s › %s', $group['label'], $role['label']), ]; } } diff --git a/app/Resources/js/modules/permalink-edit.ts b/app/Resources/js/modules/permalink-edit.ts index 6a8efad6..c0ea0224 100644 --- a/app/Resources/js/modules/permalink-edit.ts +++ b/app/Resources/js/modules/permalink-edit.ts @@ -72,6 +72,8 @@ export class PermalinkEdit extends LitElement { } firstUpdated(): void { + console.log(this._slugInput); + this.permalinkBase += this.permalinkBase.endsWith("/") ? "" : "/"; // set permalink value @@ -145,7 +147,7 @@ export class PermalinkEdit extends LitElement { border-color: transparent !important; padding-left: 0 !important; margin-left: -0.25rem !important; - font-weight: 600; + font-weight: 600 !important; } ::slotted([slot="domain"]) { diff --git a/app/Views/Components/Forms/PermalinkEditor.php b/app/Views/Components/Forms/PermalinkEditor.php new file mode 100644 index 00000000..ea269c98 --- /dev/null +++ b/app/Views/Components/Forms/PermalinkEditor.php @@ -0,0 +1,41 @@ +mergeClass('flex-1 text-xs border-contrast rounded-lg focus:border-contrast border-3 focus-within:ring-accent'); + + $this->attributes['slot'] = 'slug-input'; + $input = form_input($this->attributes, old($this->name, (string) $this->value)); + + $editLabel = lang('Common.edit'); + $copyLabel = lang('Common.copy'); + $copiedLabel = lang('Common.copied'); + + return << + {$this->label} + + {$this->prefix} + {$input} + +

+ HTML; + } +} diff --git a/modules/Admin/Config/Routes.php b/modules/Admin/Config/Routes.php index e11a8ead..fc290913 100644 --- a/modules/Admin/Config/Routes.php +++ b/modules/Admin/Config/Routes.php @@ -29,41 +29,41 @@ $routes->group( 'as' => 'settings-general', 'filter' => 'permission:admin.settings', ]); - $routes->post('instance', 'SettingsController::attemptInstanceEdit', [ + $routes->post('instance', 'SettingsController::instanceEditAction', [ 'as' => 'settings-instance', 'filter' => 'permission:admin.settings', ]); - $routes->get('instance-delete-icon', 'SettingsController::deleteIcon', [ + $routes->get('instance-delete-icon', 'SettingsController::deleteIconAction', [ 'as' => 'settings-instance-delete-icon', 'filter' => 'permission:admin.settings', ]); - $routes->post('instance-images-regenerate', 'SettingsController::regenerateImages', [ + $routes->post('instance-images-regenerate', 'SettingsController::regenerateImagesAction', [ 'as' => 'settings-images-regenerate', 'filter' => 'permission:admin.settings', ]); - $routes->post('instance-housekeeping-run', 'SettingsController::runHousekeeping', [ + $routes->post('instance-housekeeping-run', 'SettingsController::housekeepingAction', [ 'as' => 'settings-housekeeping-run', 'filter' => 'permission:admin.settings', ]); - $routes->get('theme', 'SettingsController::theme', [ + $routes->get('theme', 'SettingsController::themeView', [ 'as' => 'settings-theme', 'filter' => 'permission:admin.settings', ]); - $routes->post('theme', 'SettingsController::attemptSetInstanceTheme', [ + $routes->post('theme', 'SettingsController::themeAction', [ 'as' => 'settings-theme', 'filter' => 'permission:admin.settings', ]); }); $routes->group('persons', static function ($routes): void { - $routes->get('/', 'PersonController', [ + $routes->get('/', 'PersonController::list', [ 'as' => 'person-list', 'filter' => 'permission:persons.manage', ]); - $routes->get('new', 'PersonController::create', [ + $routes->get('new', 'PersonController::createView', [ 'as' => 'person-create', 'filter' => 'permission:persons.manage', ]); - $routes->post('new', 'PersonController::attemptCreate', [ + $routes->post('new', 'PersonController::createAction', [ 'filter' => 'permission:persons.manage', ]); $routes->group('(:num)', static function ($routes): void { @@ -71,14 +71,14 @@ $routes->group( 'as' => 'person-view', 'filter' => 'permission:persons.manage', ]); - $routes->get('edit', 'PersonController::edit/$1', [ + $routes->get('edit', 'PersonController::editView/$1', [ 'as' => 'person-edit', 'filter' => 'permission:persons.manage', ]); - $routes->post('edit', 'PersonController::attemptEdit/$1', [ + $routes->post('edit', 'PersonController::editAction/$1', [ 'filter' => 'permission:persons.manage', ]); - $routes->add('delete', 'PersonController::delete/$1', [ + $routes->add('delete', 'PersonController::deleteAction/$1', [ 'as' => 'person-delete', 'filter' => 'permission:persons.manage', ]); @@ -89,11 +89,11 @@ $routes->group( $routes->get('/', 'PodcastController::list', [ 'as' => 'podcast-list', ]); - $routes->get('new', 'PodcastController::create', [ + $routes->get('new', 'PodcastController::createView', [ 'as' => 'podcast-create', 'filter' => 'permission:podcasts.create', ]); - $routes->post('new', 'PodcastController::attemptCreate', [ + $routes->post('new', 'PodcastController::createAction', [ 'filter' => 'permission:podcasts.create', ]); // Podcast @@ -103,16 +103,16 @@ $routes->group( 'as' => 'podcast-view', 'filter' => 'permission:podcast$1.view', ]); - $routes->get('edit', 'PodcastController::edit/$1', [ + $routes->get('edit', 'PodcastController::editView/$1', [ 'as' => 'podcast-edit', 'filter' => 'permission:podcast$1.edit', ]); - $routes->post('edit', 'PodcastController::attemptEdit/$1', [ + $routes->post('edit', 'PodcastController::editAction/$1', [ 'filter' => 'permission:podcast$1.edit', ]); $routes->get( 'publish', - 'PodcastController::publish/$1', + 'PodcastController::publishView/$1', [ 'as' => 'podcast-publish', 'filter' => 'permission:podcast$1.manage-publications', @@ -120,14 +120,14 @@ $routes->group( ); $routes->post( 'publish', - 'PodcastController::attemptPublish/$1', + 'PodcastController::publishAction/$1', [ 'filter' => 'permission:podcast$1.manage-publications', ], ); $routes->get( 'publish-edit', - 'PodcastController::publishEdit/$1', + 'PodcastController::publishEditView/$1', [ 'as' => 'podcast-publish_edit', 'filter' => 'permission:podcast$1.manage-publications', @@ -135,28 +135,28 @@ $routes->group( ); $routes->post( 'publish-edit', - 'PodcastController::attemptPublishEdit/$1', + 'PodcastController::publishEditAction/$1', [ 'filter' => 'permission:podcast$1.manage-publications', ], ); $routes->get( 'publish-cancel', - 'PodcastController::publishCancel/$1', + 'PodcastController::publishCancelAction/$1', [ 'as' => 'podcast-publish-cancel', 'filter' => 'permission:podcast$1.manage-publications', ], ); - $routes->get('edit/delete-banner', 'PodcastController::deleteBanner/$1', [ + $routes->get('edit/delete-banner', 'PodcastController::deleteBannerAction/$1', [ 'as' => 'podcast-banner-delete', 'filter' => 'permission:podcast$1.edit', ]); - $routes->get('delete', 'PodcastController::delete/$1', [ + $routes->get('delete', 'PodcastController::deleteView/$1', [ 'as' => 'podcast-delete', 'filter' => 'permission:podcast$1.delete', ]); - $routes->post('delete', 'PodcastController::attemptDelete/$1', [ + $routes->post('delete', 'PodcastController::deleteAction/$1', [ 'filter' => 'permission:podcast$1.delete', ]); $routes->group('persons', static function ($routes): void { @@ -166,14 +166,14 @@ $routes->group( ]); $routes->post( '/', - 'PodcastPersonController::attemptCreate/$1', + 'PodcastPersonController::createAction/$1', [ 'filter' => 'permission:podcast$1.manage-persons', ], ); $routes->get( '(:num)/remove', - 'PodcastPersonController::remove/$1/$2', + 'PodcastPersonController::deleteAction/$1/$2', [ 'as' => 'podcast-person-remove', 'filter' => 'permission:podcast$1.manage-persons', @@ -181,13 +181,13 @@ $routes->group( ); }); $routes->group('analytics', static function ($routes): void { - $routes->get('/', 'PodcastController::viewAnalytics/$1', [ + $routes->get('/', 'PodcastController::analyticsView/$1', [ 'as' => 'podcast-analytics', 'filter' => 'permission:podcast$1.view', ]); $routes->get( 'webpages', - 'PodcastController::viewAnalyticsWebpages/$1', + 'PodcastController::analyticsWebpagesView/$1', [ 'as' => 'podcast-analytics-webpages', 'filter' => 'permission:podcast$1.view', @@ -195,7 +195,7 @@ $routes->group( ); $routes->get( 'locations', - 'PodcastController::viewAnalyticsLocations/$1', + 'PodcastController::analyticsLocationsView/$1', [ 'as' => 'podcast-analytics-locations', 'filter' => 'permission:podcast$1.view', @@ -203,7 +203,7 @@ $routes->group( ); $routes->get( 'unique-listeners', - 'PodcastController::viewAnalyticsUniqueListeners/$1', + 'PodcastController::analyticsUniqueListenersView/$1', [ 'as' => 'podcast-analytics-unique-listeners', 'filter' => 'permission:podcast$1.view', @@ -211,7 +211,7 @@ $routes->group( ); $routes->get( 'listening-time', - 'PodcastController::viewAnalyticsListeningTime/$1', + 'PodcastController::analyticsListeningTimeView/$1', [ 'as' => 'podcast-analytics-listening-time', 'filter' => 'permission:podcast$1.view', @@ -219,7 +219,7 @@ $routes->group( ); $routes->get( 'time-periods', - 'PodcastController::viewAnalyticsTimePeriods/$1', + 'PodcastController::analyticsTimePeriodsView/$1', [ 'as' => 'podcast-analytics-time-periods', 'filter' => 'permission:podcast$1.view', @@ -227,7 +227,7 @@ $routes->group( ); $routes->get( 'players', - 'PodcastController::viewAnalyticsPlayers/$1', + 'PodcastController::analyticsPlayersView/$1', [ 'as' => 'podcast-analytics-players', 'filter' => 'permission:podcast$1.view', @@ -240,13 +240,13 @@ $routes->group( 'as' => 'episode-list', 'filter' => 'permission:podcast$1.episodes.view', ]); - $routes->get('new', 'EpisodeController::create/$1', [ + $routes->get('new', 'EpisodeController::createView/$1', [ 'as' => 'episode-create', 'filter' => 'permission:podcast$1.episodes.create', ]); $routes->post( 'new', - 'EpisodeController::attemptCreate/$1', + 'EpisodeController::createAction/$1', [ 'filter' => 'permission:podcast$1.episodes.create', ], @@ -257,20 +257,20 @@ $routes->group( 'as' => 'episode-view', 'filter' => 'permission:podcast$1.episodes.view', ]); - $routes->get('edit', 'EpisodeController::edit/$1/$2', [ + $routes->get('edit', 'EpisodeController::editView/$1/$2', [ 'as' => 'episode-edit', 'filter' => 'permission:podcast$1.episodes.edit', ]); $routes->post( 'edit', - 'EpisodeController::attemptEdit/$1/$2', + 'EpisodeController::editAction/$1/$2', [ 'filter' => 'permission:podcast$1.episodes.edit', ], ); $routes->get( 'publish', - 'EpisodeController::publish/$1/$2', + 'EpisodeController::publishView/$1/$2', [ 'as' => 'episode-publish', 'filter' => 'permission:podcast$1.episodes.manage-publications', @@ -278,14 +278,14 @@ $routes->group( ); $routes->post( 'publish', - 'EpisodeController::attemptPublish/$1/$2', + 'EpisodeController::publishAction/$1/$2', [ 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->get( 'publish-edit', - 'EpisodeController::publishEdit/$1/$2', + 'EpisodeController::publishEditView/$1/$2', [ 'as' => 'episode-publish_edit', 'filter' => 'permission:podcast$1.episodes.manage-publications', @@ -293,14 +293,14 @@ $routes->group( ); $routes->post( 'publish-edit', - 'EpisodeController::attemptPublishEdit/$1/$2', + 'EpisodeController::publishEditAction/$1/$2', [ 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->get( 'publish-cancel', - 'EpisodeController::publishCancel/$1/$2', + 'EpisodeController::publishCancelAction/$1/$2', [ 'as' => 'episode-publish-cancel', 'filter' => 'permission:podcast$1.episodes.manage-publications', @@ -308,7 +308,7 @@ $routes->group( ); $routes->get( 'publish-date-edit', - 'EpisodeController::publishDateEdit/$1/$2', + 'EpisodeController::publishDateEditView/$1/$2', [ 'as' => 'episode-publish_date_edit', 'filter' => 'permission:podcast$1.episodes.manage-publications', @@ -316,14 +316,14 @@ $routes->group( ); $routes->post( 'publish-date-edit', - 'EpisodeController::attemptPublishDateEdit/$1/$2', + 'EpisodeController::publishDateEditAction/$1/$2', [ 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->get( 'unpublish', - 'EpisodeController::unpublish/$1/$2', + 'EpisodeController::unpublishView/$1/$2', [ 'as' => 'episode-unpublish', 'filter' => 'permission:podcast$1.episodes.manage-publications', @@ -331,14 +331,14 @@ $routes->group( ); $routes->post( 'unpublish', - 'EpisodeController::attemptUnpublish/$1/$2', + 'EpisodeController::unpublishAction/$1/$2', [ 'filter' => 'permission:podcast$1.episodes.manage-publications', ], ); $routes->get( 'delete', - 'EpisodeController::delete/$1/$2', + 'EpisodeController::deleteView/$1/$2', [ 'as' => 'episode-delete', 'filter' => 'permission:podcast$1.episodes.delete', @@ -346,7 +346,7 @@ $routes->group( ); $routes->post( 'delete', - 'EpisodeController::attemptDelete/$1/$2', + 'EpisodeController::deleteAction/$1/$2', [ 'filter' => 'permission:podcast$1.episodes.delete', ], @@ -377,7 +377,7 @@ $routes->group( ); $routes->get( 'soundbites/new', - 'SoundbiteController::create/$1/$2', + 'SoundbiteController::createView/$1/$2', [ 'as' => 'soundbites-create', 'filter' => 'permission:podcast$1.episodes.manage-clips', @@ -385,7 +385,7 @@ $routes->group( ); $routes->post( 'soundbites/new', - 'SoundbiteController::attemptCreate/$1/$2', + 'SoundbiteController::createAction/$1/$2', [ 'as' => 'soundbites-create', 'filter' => 'permission:podcast$1.episodes.manage-clips', @@ -393,7 +393,7 @@ $routes->group( ); $routes->get( 'soundbites/(:num)/delete', - 'SoundbiteController::delete/$1/$2/$3', + 'SoundbiteController::deleteAction/$1/$2/$3', [ 'as' => 'soundbites-delete', 'filter' => 'permission:podcast$1.episodes.manage-clips', @@ -409,7 +409,7 @@ $routes->group( ); $routes->get( 'video-clips/new', - 'VideoClipsController::create/$1/$2', + 'VideoClipsController::createView/$1/$2', [ 'as' => 'video-clips-create', 'filter' => 'permission:podcast$1.episodes.manage-clips', @@ -417,7 +417,7 @@ $routes->group( ); $routes->post( 'video-clips/new', - 'VideoClipsController::attemptCreate/$1/$2', + 'VideoClipsController::createAction/$1/$2', [ 'as' => 'video-clips-create', 'filter' => 'permission:podcast$1.episodes.manage-clips', @@ -433,7 +433,7 @@ $routes->group( ); $routes->get( 'video-clips/(:num)/retry', - 'VideoClipsController::retry/$1/$2/$3', + 'VideoClipsController::retryAction/$1/$2/$3', [ 'as' => 'video-clip-retry', 'filter' => 'permission:podcast$1.episodes.manage-clips', @@ -441,7 +441,7 @@ $routes->group( ); $routes->get( 'video-clips/(:num)/delete', - 'VideoClipsController::delete/$1/$2/$3', + 'VideoClipsController::deleteAction/$1/$2/$3', [ 'as' => 'video-clip-delete', 'filter' => 'permission:podcast$1.episodes.manage-clips', @@ -449,7 +449,7 @@ $routes->group( ); $routes->get( 'embed', - 'EpisodeController::embed/$1/$2', + 'EpisodeController::embedView/$1/$2', [ 'as' => 'embed-add', 'filter' => 'permission:podcast$1.episodes.edit', @@ -462,14 +462,14 @@ $routes->group( ]); $routes->post( '/', - 'EpisodePersonController::attemptCreate/$1/$2', + 'EpisodePersonController::createAction/$1/$2', [ 'filter' => 'permission:podcast$1.episodes.manage-persons', ], ); $routes->get( '(:num)/remove', - 'EpisodePersonController::remove/$1/$2/$3', + 'EpisodePersonController::deleteAction/$1/$2/$3', [ 'as' => 'episode-person-remove', 'filter' => 'permission:podcast$1.episodes.manage-persons', @@ -479,7 +479,7 @@ $routes->group( $routes->group('comments', static function ($routes): void { $routes->post( 'new', - 'EpisodeController::attemptCommentCreate/$1/$2', + 'EpisodeController::commentCreateAction/$1/$2', [ 'as' => 'comment-attempt-create', 'filter' => 'permission:podcast$1.episodes.manage-comments', @@ -487,7 +487,7 @@ $routes->group( ); $routes->post( '(:uuid)/reply', - 'EpisodeController::attemptCommentReply/$1/$2/$3', + 'EpisodeController::commentReplyAction/$1/$2/$3', [ 'as' => 'comment-attempt-reply', 'filter' => 'permission:podcast$1.episodes.manage-comments', @@ -495,7 +495,7 @@ $routes->group( ); $routes->post( 'delete', - 'EpisodeController::attemptCommentDelete/$1/$2', + 'EpisodeController::commentDeleteAction/$1/$2', [ 'as' => 'comment-attempt-delete', 'filter' => 'permission:podcast$1.episodes.manage-comments', @@ -510,11 +510,11 @@ $routes->group( 'as' => 'notification-list', 'filter' => 'permission:podcast$1.manage-notifications', ]); - $routes->get('(:num)/mark-as-read', 'NotificationController::markAsRead/$1/$2', [ + $routes->get('(:num)/mark-as-read', 'NotificationController::markAsReadAction/$1/$2', [ 'as' => 'notification-mark-as-read', 'filter' => 'permission:podcast$1.manage-notifications', ]); - $routes->get('mark-all-as-read', 'NotificationController::markAllAsRead/$1', [ + $routes->get('mark-all-as-read', 'NotificationController::markAllAsReadAction/$1', [ 'as' => 'notification-mark-all-as-read', 'filter' => 'permission:podcast$1.manage-notifications', ]); @@ -528,7 +528,7 @@ $routes->group( ]); $routes->get( 'blocked-actors', - 'FediverseController::blockedActors', + 'FediverseController::blockedActorsView', [ 'as' => 'fediverse-blocked-actors', 'filter' => 'permission:fediverse.manage-blocks', @@ -536,7 +536,7 @@ $routes->group( ); $routes->get( 'blocked-domains', - 'FediverseController::blockedDomains', + 'FediverseController::blockedDomainsView', [ 'as' => 'fediverse-blocked-domains', 'filter' => 'permission:fediverse.manage-blocks', @@ -549,25 +549,25 @@ $routes->group( 'as' => 'page-list', 'filter' => 'permission:pages.manage', ]); - $routes->get('new', 'PageController::create', [ + $routes->get('new', 'PageController::createView', [ 'as' => 'page-create', 'filter' => 'permission:pages.manage', ]); - $routes->post('new', 'PageController::attemptCreate', [ + $routes->post('new', 'PageController::createAction', [ 'filter' => 'permission:pages.manage', ]); $routes->group('(:num)', static function ($routes): void { $routes->get('/', 'PageController::view/$1', [ 'as' => 'page-view', ]); - $routes->get('edit', 'PageController::edit/$1', [ + $routes->get('edit', 'PageController::editView/$1', [ 'as' => 'page-edit', 'filter' => 'permission:pages.manage', ]); - $routes->post('edit', 'PageController::attemptEdit/$1', [ + $routes->post('edit', 'PageController::editAction/$1', [ 'filter' => 'permission:pages.manage', ]); - $routes->get('delete', 'PageController::delete/$1', [ + $routes->get('delete', 'PageController::deleteAction/$1', [ 'as' => 'page-delete', 'filter' => 'permission:pages.manage', ]); diff --git a/modules/Admin/Controllers/EpisodeController.php b/modules/Admin/Controllers/EpisodeController.php index ffa82b31..ad5b628e 100644 --- a/modules/Admin/Controllers/EpisodeController.php +++ b/modules/Admin/Controllers/EpisodeController.php @@ -35,36 +35,31 @@ class EpisodeController extends BaseController public function _remap(string $method, string ...$params): mixed { + if ($params === []) { + throw PageNotFoundException::forPageNotFound(); + } + + if (count($params) === 1) { + if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + throw PageNotFoundException::forPageNotFound(); + } + + return $this->{$method}($podcast); + } + if ( - ! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast + ! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1]) instanceof Episode) ) { throw PageNotFoundException::forPageNotFound(); } - $this->podcast = $podcast; + unset($params[0]); + unset($params[1]); - if (count($params) > 1) { - if ( - ! ($episode = (new EpisodeModel()) - ->where([ - 'id' => $params[1], - 'podcast_id' => $params[0], - ]) - ->first()) instanceof Episode - ) { - throw PageNotFoundException::forPageNotFound(); - } - - $this->episode = $episode; - - unset($params[1]); - unset($params[0]); - } - - return $this->{$method}(...$params); + return $this->{$method}($episode, ...$params); } - public function list(): string + public function list(Podcast $podcast): string { /** @var ?string $query */ $query = $this->request->getGet('q'); @@ -77,7 +72,7 @@ class EpisodeController extends BaseController $episodes = $episodeModel ->select('episodes.*, IFNULL(SUM(ape.hits),0) as downloads') ->join('analytics_podcasts_by_episode ape', 'episodes.id=ape.episode_id', 'left') - ->where('episodes.podcast_id', $this->podcast->id) + ->where('episodes.podcast_id', $podcast->id) ->like('title', $episodeModel->db->escapeLikeString($query)) ->orLike('description_markdown', $episodeModel->db->escapeLikeString($query)) ->orLike('slug', $episodeModel->db->escapeLikeString($query)) @@ -89,7 +84,7 @@ class EpisodeController extends BaseController $episodes = $episodeModel ->select('episodes.*, IFNULL(SUM(ape.hits),0) as downloads') ->join('analytics_podcasts_by_episode ape', 'episodes.id=ape.episode_id', 'left') - ->where('episodes.podcast_id', $this->podcast->id) + ->where('episodes.podcast_id', $podcast->id) ->where( "MATCH (title, description_markdown, slug, location_name) AGAINST ('{$episodeModel->db->escapeString( $query @@ -101,7 +96,7 @@ class EpisodeController extends BaseController $episodes = $episodeModel ->select('episodes.*, IFNULL(SUM(ape.hits),0) as downloads') ->join('analytics_podcasts_by_episode ape', 'episodes.id=ape.episode_id', 'left') - ->where('episodes.podcast_id', $this->podcast->id) + ->where('episodes.podcast_id', $podcast->id) ->groupBy('episodes.id') ->orderBy('-`published_at`', '', false) ->orderBy('created_at', 'desc'); @@ -109,7 +104,7 @@ class EpisodeController extends BaseController helper('form'); $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, 'episodes' => $episodes->paginate(10), 'pager' => $episodes->pager, 'query' => $query, @@ -117,48 +112,45 @@ class EpisodeController extends BaseController $this->setHtmlHead(lang('Episode.all_podcast_episodes')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('episode/list', $data); } - public function view(): string + public function view(Episode $episode): string { $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, ]; - $this->setHtmlHead($this->episode->title); + $this->setHtmlHead($episode->title); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/view', $data); } - public function create(): string + public function createView(Podcast $podcast): string { helper(['form']); - $currentSeasonNumber = (new EpisodeModel())->getCurrentSeasonNumber($this->podcast->id); + $currentSeasonNumber = (new EpisodeModel())->getCurrentSeasonNumber($podcast->id); $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, 'currentSeasonNumber' => $currentSeasonNumber, - 'nextEpisodeNumber' => (new EpisodeModel())->getNextEpisodeNumber( - $this->podcast->id, - $currentSeasonNumber - ), + 'nextEpisodeNumber' => (new EpisodeModel())->getNextEpisodeNumber($podcast->id, $currentSeasonNumber), ]; $this->setHtmlHead(lang('Episode.create')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('episode/create', $data); } - public function attemptCreate(): RedirectResponse + public function createAction(Podcast $podcast): RedirectResponse { $rules = [ 'title' => 'required', @@ -169,7 +161,7 @@ class EpisodeController extends BaseController 'chapters_file' => 'ext_in[chapters_file,json]|is_json[chapters_file]', ]; - if ($this->podcast->type === 'serial' && $this->request->getPost('type') === 'full') { + if ($podcast->type === 'serial' && $this->request->getPost('type') === 'full') { $rules['episode_number'] = 'required'; } @@ -185,7 +177,7 @@ class EpisodeController extends BaseController if ((new EpisodeModel()) ->where([ 'slug' => $validData['slug'], - 'podcast_id' => $this->podcast->id, + 'podcast_id' => $podcast->id, ]) ->first() instanceof Episode) { return redirect() @@ -197,7 +189,7 @@ class EpisodeController extends BaseController $newEpisode = new Episode([ 'created_by' => user_id(), 'updated_by' => user_id(), - 'podcast_id' => $this->podcast->id, + 'podcast_id' => $podcast->id, 'title' => $this->request->getPost('title'), 'slug' => $this->request->getPost('slug'), 'guid' => null, @@ -250,30 +242,30 @@ class EpisodeController extends BaseController ->with('errors', $episodeModel->errors()); } - return redirect()->route('episode-view', [$this->podcast->id, $newEpisodeId])->with( + return redirect()->route('episode-view', [$podcast->id, $newEpisodeId])->with( 'message', lang('Episode.messages.createSuccess') ); } - public function edit(): string + public function editView(Episode $episode): string { helper(['form']); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, ]; $this->setHtmlHead(lang('Episode.edit')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/edit', $data); } - public function attemptEdit(): RedirectResponse + public function editAction(Episode $episode): RedirectResponse { $rules = [ 'title' => 'required', @@ -284,7 +276,7 @@ class EpisodeController extends BaseController 'chapters_file' => 'ext_in[chapters_file,json]|is_json[chapters_file]', ]; - if ($this->podcast->type === 'serial' && $this->request->getPost('type') === 'full') { + if ($episode->podcast->type === 'serial' && $this->request->getPost('type') === 'full') { $rules['episode_number'] = 'required'; } @@ -297,87 +289,87 @@ class EpisodeController extends BaseController $validData = $this->validator->getValidated(); - $this->episode->title = $this->request->getPost('title'); - $this->episode->slug = $validData['slug']; - $this->episode->description_markdown = $this->request->getPost('description'); - $this->episode->location = $this->request->getPost('location_name') === '' ? null : new Location( + $episode->title = $this->request->getPost('title'); + $episode->slug = $validData['slug']; + $episode->description_markdown = $this->request->getPost('description'); + $episode->location = $this->request->getPost('location_name') === '' ? null : new Location( $this->request->getPost('location_name') ); - $this->episode->parental_advisory = + $episode->parental_advisory = $this->request->getPost('parental_advisory') !== 'undefined' ? $this->request->getPost('parental_advisory') : null; - $this->episode->number = $this->request->getPost('episode_number') ?: null; - $this->episode->season_number = $this->request->getPost('season_number') ?: null; - $this->episode->type = $this->request->getPost('type'); - $this->episode->is_blocked = $this->request->getPost('block') === 'yes'; - $this->episode->is_premium = $this->request->getPost('premium') === 'yes'; + $episode->number = $this->request->getPost('episode_number') ?: null; + $episode->season_number = $this->request->getPost('season_number') ?: null; + $episode->type = $this->request->getPost('type'); + $episode->is_blocked = $this->request->getPost('block') === 'yes'; + $episode->is_premium = $this->request->getPost('premium') === 'yes'; - $this->episode->updated_by = (int) user_id(); - $this->episode->setAudio($this->request->getFile('audio_file')); - $this->episode->setCover($this->request->getFile('cover')); + $episode->updated_by = (int) user_id(); + $episode->setAudio($this->request->getFile('audio_file')); + $episode->setCover($this->request->getFile('cover')); // republish on websub hubs upon edit - $this->episode->is_published_on_hubs = false; + $episode->is_published_on_hubs = false; $transcriptChoice = $this->request->getPost('transcript-choice'); if ($transcriptChoice === 'upload-file') { $transcriptFile = $this->request->getFile('transcript_file'); if ($transcriptFile instanceof UploadedFile && $transcriptFile->isValid()) { - $this->episode->setTranscript($transcriptFile); - $this->episode->transcript_remote_url = null; + $episode->setTranscript($transcriptFile); + $episode->transcript_remote_url = null; } } elseif ($transcriptChoice === 'remote-url') { if ( ($transcriptRemoteUrl = $this->request->getPost('transcript_remote_url')) && - (($transcriptFile = $this->episode->transcript_id) !== null) + (($transcriptFile = $episode->transcript_id) !== null) ) { - (new MediaModel())->deleteMedia($this->episode->transcript); + (new MediaModel())->deleteMedia($episode->transcript); } - $this->episode->transcript_remote_url = $transcriptRemoteUrl === '' ? null : $transcriptRemoteUrl; + $episode->transcript_remote_url = $transcriptRemoteUrl === '' ? null : $transcriptRemoteUrl; } $chaptersChoice = $this->request->getPost('chapters-choice'); if ($chaptersChoice === 'upload-file') { $chaptersFile = $this->request->getFile('chapters_file'); if ($chaptersFile instanceof UploadedFile && $chaptersFile->isValid()) { - $this->episode->setChapters($chaptersFile); - $this->episode->chapters_remote_url = null; + $episode->setChapters($chaptersFile); + $episode->chapters_remote_url = null; } } elseif ($chaptersChoice === 'remote-url') { if ( ($chaptersRemoteUrl = $this->request->getPost('chapters_remote_url')) && - (($chaptersFile = $this->episode->chapters) instanceof Chapters) + (($chaptersFile = $episode->chapters) instanceof Chapters) ) { - (new MediaModel())->deleteMedia($this->episode->chapters); + (new MediaModel())->deleteMedia($episode->chapters); } - $this->episode->chapters_remote_url = $chaptersRemoteUrl === '' ? null : $chaptersRemoteUrl; + $episode->chapters_remote_url = $chaptersRemoteUrl === '' ? null : $chaptersRemoteUrl; } $episodeModel = new EpisodeModel(); - if (! $episodeModel->update($this->episode->id, $this->episode)) { + if (! $episodeModel->update($episode->id, $episode)) { return redirect() ->back() ->withInput() ->with('errors', $episodeModel->errors()); } - return redirect()->route('episode-edit', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('episode-edit', [$episode->podcast_id, $episode->id])->with( 'message', lang('Episode.messages.editSuccess') ); } - public function transcriptDelete(): RedirectResponse + public function transcriptDelete(Episode $episode): RedirectResponse { - if (! $this->episode->transcript instanceof Transcript) { + if (! $episode->transcript instanceof Transcript) { return redirect()->back(); } $mediaModel = new MediaModel(); - if (! $mediaModel->deleteMedia($this->episode->transcript)) { + if (! $mediaModel->deleteMedia($episode->transcript)) { return redirect() ->back() ->withInput() @@ -387,14 +379,14 @@ class EpisodeController extends BaseController return redirect()->back(); } - public function chaptersDelete(): RedirectResponse + public function chaptersDelete(Episode $episode): RedirectResponse { - if (! $this->episode->chapters instanceof Chapters) { + if (! $episode->chapters instanceof Chapters) { return redirect()->back(); } $mediaModel = new MediaModel(); - if (! $mediaModel->deleteMedia($this->episode->chapters)) { + if (! $mediaModel->deleteMedia($episode->chapters)) { return redirect() ->back() ->withInput() @@ -404,33 +396,33 @@ class EpisodeController extends BaseController return redirect()->back(); } - public function publish(): string | RedirectResponse + public function publishView(Episode $episode): string | RedirectResponse { - if ($this->episode->publication_status === 'not_published') { + if ($episode->publication_status === 'not_published') { helper(['form']); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, ]; $this->setHtmlHead(lang('Episode.publish')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/publish', $data); } - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', lang('Episode.publish_error') ); } - public function attemptPublish(): RedirectResponse + public function publishAction(Episode $episode): RedirectResponse { - if ($this->podcast->publication_status === 'published') { + if ($episode->podcast->publication_status === 'published') { $rules = [ 'publication_method' => 'required', 'scheduled_publication_date' => 'valid_date[Y-m-d H:i]|permit_empty', @@ -448,18 +440,18 @@ class EpisodeController extends BaseController $db->transStart(); $newPost = new Post([ - 'actor_id' => $this->podcast->actor_id, - 'episode_id' => $this->episode->id, + 'actor_id' => $episode->podcast->actor_id, + 'episode_id' => $episode->id, 'message' => $this->request->getPost('message'), 'created_by' => user_id(), ]); - if ($this->podcast->publication_status === 'published') { + if ($episode->podcast->publication_status === 'published') { $publishMethod = $this->request->getPost('publication_method'); if ($publishMethod === 'schedule') { $scheduledPublicationDate = $this->request->getPost('scheduled_publication_date'); if ($scheduledPublicationDate) { - $this->episode->published_at = Time::createFromFormat( + $episode->published_at = Time::createFromFormat( 'Y-m-d H:i', $scheduledPublicationDate, $this->request->getPost('client_timezone'), @@ -472,16 +464,16 @@ class EpisodeController extends BaseController ->with('error', lang('Episode.messages.scheduleDateError')); } } else { - $this->episode->published_at = Time::now(); + $episode->published_at = Time::now(); } - } elseif ($this->podcast->publication_status === 'scheduled') { + } elseif ($episode->podcast->publication_status === 'scheduled') { // podcast publication date has already been set - $this->episode->published_at = $this->podcast->published_at->addSeconds(1); + $episode->published_at = $episode->podcast->published_at->addSeconds(1); } else { - $this->episode->published_at = Time::now(); + $episode->published_at = Time::now(); } - $newPost->published_at = $this->episode->published_at; + $newPost->published_at = $episode->published_at; $postModel = new PostModel(); if (! $postModel->addPost($newPost)) { @@ -493,7 +485,7 @@ class EpisodeController extends BaseController } $episodeModel = new EpisodeModel(); - if (! $episodeModel->update($this->episode->id, $this->episode)) { + if (! $episodeModel->update($episode->id, $episode)) { $db->transRollback(); return redirect() ->back() @@ -503,47 +495,47 @@ class EpisodeController extends BaseController $db->transComplete(); - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'message', lang('Episode.messages.publishSuccess', [ - 'publication_status' => $this->episode->publication_status, + 'publication_status' => $episode->publication_status, ]) ); } - public function publishEdit(): string | RedirectResponse + public function publishEditView(Episode $episode): string | RedirectResponse { - if (in_array($this->episode->publication_status, ['scheduled', 'with_podcast'], true)) { + if (in_array($episode->publication_status, ['scheduled', 'with_podcast'], true)) { helper(['form']); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, 'post' => (new PostModel()) ->where([ - 'actor_id' => $this->podcast->actor_id, - 'episode_id' => $this->episode->id, + 'actor_id' => $episode->podcast->actor_id, + 'episode_id' => $episode->id, ]) ->first(), ]; $this->setHtmlHead(lang('Episode.publish_edit')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/publish_edit', $data); } - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', lang('Episode.publish_edit_error') ); } - public function attemptPublishEdit(): RedirectResponse + public function publishEditAction(Episode $episode): RedirectResponse { - if ($this->podcast->publication_status === 'published') { + if ($episode->podcast->publication_status === 'published') { $rules = [ 'post_id' => 'required', 'publication_method' => 'required', @@ -561,12 +553,12 @@ class EpisodeController extends BaseController $db = db_connect(); $db->transStart(); - if ($this->podcast->publication_status === 'published') { + if ($episode->podcast->publication_status === 'published') { $publishMethod = $this->request->getPost('publication_method'); if ($publishMethod === 'schedule') { $scheduledPublicationDate = $this->request->getPost('scheduled_publication_date'); if ($scheduledPublicationDate) { - $this->episode->published_at = Time::createFromFormat( + $episode->published_at = Time::createFromFormat( 'Y-m-d H:i', $scheduledPublicationDate, $this->request->getPost('client_timezone'), @@ -579,20 +571,20 @@ class EpisodeController extends BaseController ->with('error', lang('Episode.messages.scheduleDateError')); } } else { - $this->episode->published_at = Time::now(); + $episode->published_at = Time::now(); } - } elseif ($this->podcast->publication_status === 'scheduled') { + } elseif ($episode->podcast->publication_status === 'scheduled') { // podcast publication date has already been set - $this->episode->published_at = $this->podcast->published_at->addSeconds(1); + $episode->published_at = $episode->podcast->published_at->addSeconds(1); } else { - $this->episode->published_at = Time::now(); + $episode->published_at = Time::now(); } $post = (new PostModel())->getPostById($this->request->getPost('post_id')); if ($post instanceof Post) { $post->message = $this->request->getPost('message'); - $post->published_at = $this->episode->published_at; + $post->published_at = $episode->published_at; $postModel = new PostModel(); if (! $postModel->editPost($post)) { @@ -605,7 +597,7 @@ class EpisodeController extends BaseController } $episodeModel = new EpisodeModel(); - if (! $episodeModel->update($this->episode->id, $this->episode)) { + if (! $episodeModel->update($episode->id, $episode)) { $db->transRollback(); return redirect() ->back() @@ -615,33 +607,33 @@ class EpisodeController extends BaseController $db->transComplete(); - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'message', lang('Episode.messages.publishSuccess', [ - 'publication_status' => $this->episode->publication_status, + 'publication_status' => $episode->publication_status, ]) ); } - public function publishCancel(): RedirectResponse + public function publishCancelAction(Episode $episode): RedirectResponse { - if (in_array($this->episode->publication_status, ['scheduled', 'with_podcast'], true)) { + if (in_array($episode->publication_status, ['scheduled', 'with_podcast'], true)) { $db = db_connect(); $db->transStart(); $postModel = new PostModel(); $post = $postModel ->where([ - 'actor_id' => $this->podcast->actor_id, - 'episode_id' => $this->episode->id, + 'actor_id' => $episode->podcast->actor_id, + 'episode_id' => $episode->id, ]) ->first(); $postModel->removePost($post); - $this->episode->published_at = null; + $episode->published_at = null; $episodeModel = new EpisodeModel(); - if (! $episodeModel->update($this->episode->id, $this->episode)) { + if (! $episodeModel->update($episode->id, $episode)) { $db->transRollback(); return redirect() ->back() @@ -651,20 +643,20 @@ class EpisodeController extends BaseController $db->transComplete(); - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'message', lang('Episode.messages.publishCancelSuccess') ); } - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id]); + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id]); } - public function publishDateEdit(): string|RedirectResponse + public function publishDateEditView(Episode $episode): string|RedirectResponse { // only accessible if episode is already published - if ($this->episode->publication_status !== 'published') { - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with( + if ($episode->publication_status !== 'published') { + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', lang('Episode.publish_date_edit_error') ); @@ -673,14 +665,14 @@ class EpisodeController extends BaseController helper('form'); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, ]; $this->setHtmlHead(lang('Episode.publish_date_edit')); replace_breadcrumb_params([ - 0 => $this->podcast->title, - 1 => $this->episode->title, + 0 => $episode->podcast->title, + 1 => $episode->title, ]); return view('episode/publish_date_edit', $data); } @@ -691,7 +683,7 @@ class EpisodeController extends BaseController * Prevents setting a future date as it does not make sense to set a future published date to an already published * episode. This also prevents any side-effects from occurring. */ - public function attemptPublishDateEdit(): RedirectResponse + public function publishDateEditAction(Episode $episode): RedirectResponse { $rules = [ 'new_publication_date' => 'valid_date[Y-m-d H:i]', @@ -721,26 +713,26 @@ class EpisodeController extends BaseController ->with('error', lang('Episode.publish_date_edit_future_error')); } - $this->episode->published_at = $newPublicationDate; + $episode->published_at = $newPublicationDate; $episodeModel = new EpisodeModel(); - if (! $episodeModel->update($this->episode->id, $this->episode)) { + if (! $episodeModel->update($episode->id, $episode)) { return redirect() ->back() ->withInput() ->with('errors', $episodeModel->errors()); } - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'message', lang('Episode.publish_date_edit_success') ); } - public function unpublish(): string | RedirectResponse + public function unpublishView(Episode $episode): string | RedirectResponse { - if ($this->episode->publication_status !== 'published') { - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id])->with( + if ($episode->publication_status !== 'published') { + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', lang('Episode.unpublish_error') ); @@ -749,19 +741,19 @@ class EpisodeController extends BaseController helper(['form']); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, ]; $this->setHtmlHead(lang('Episode.unpublish')); replace_breadcrumb_params([ - 0 => $this->podcast->title, - 1 => $this->episode->title, + 0 => $episode->podcast->title, + 1 => $episode->title, ]); return view('episode/unpublish', $data); } - public function attemptUnpublish(): RedirectResponse + public function unpublishAction(Episode $episode): RedirectResponse { $rules = [ 'understand' => 'required', @@ -780,7 +772,7 @@ class EpisodeController extends BaseController $allPostsLinkedToEpisode = (new PostModel()) ->where([ - 'episode_id' => $this->episode->id, + 'episode_id' => $episode->id, 'in_reply_to_id' => null, 'reblog_of_id' => null, ]) @@ -791,7 +783,7 @@ class EpisodeController extends BaseController $allCommentsLinkedToEpisode = (new EpisodeCommentModel()) ->where([ - 'episode_id' => $this->episode->id, + 'episode_id' => $episode->id, 'in_reply_to_id' => null, ]) ->findAll(); @@ -800,10 +792,10 @@ class EpisodeController extends BaseController } // set episode published_at to null to unpublish - $this->episode->published_at = null; + $episode->published_at = null; $episodeModel = new EpisodeModel(); - if (! $episodeModel->update($this->episode->id, $this->episode)) { + if (! $episodeModel->update($episode->id, $episode)) { $db->transRollback(); return redirect() ->back() @@ -812,33 +804,33 @@ class EpisodeController extends BaseController } // set podcast is_published_on_hubs to false to trigger websub push - (new PodcastModel())->update($this->episode->podcast->id, [ + (new PodcastModel())->update($episode->podcast_id, [ 'is_published_on_hubs' => 0, ]); $db->transComplete(); - return redirect()->route('episode-view', [$this->podcast->id, $this->episode->id]); + return redirect()->route('episode-view', [$episode->podcast_id, $episode->id]); } - public function delete(): string + public function deleteView(Episode $episode): string { helper(['form']); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, ]; $this->setHtmlHead(lang('Episode.delete')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/delete', $data); } - public function attemptDelete(): RedirectResponse + public function deleteAction(Episode $episode): RedirectResponse { $rules = [ 'understand' => 'required', @@ -851,7 +843,7 @@ class EpisodeController extends BaseController ->with('errors', $this->validator->getErrors()); } - if ($this->episode->published_at instanceof Time) { + if ($episode->published_at instanceof Time) { return redirect() ->back() ->withInput() @@ -864,7 +856,7 @@ class EpisodeController extends BaseController $episodeModel = new EpisodeModel(); - if (! $episodeModel->delete($this->episode->id)) { + if (! $episodeModel->delete($episode->id)) { $db->transRollback(); return redirect() ->back() @@ -872,11 +864,11 @@ class EpisodeController extends BaseController ->with('errors', $episodeModel->errors()); } - $episodeMediaList = [$this->episode->transcript, $this->episode->chapters, $this->episode->audio]; + $episodeMediaList = [$episode->transcript, $episode->chapters, $episode->audio]; //only delete episode cover if different from podcast's - if ($this->episode->cover_id !== null) { - $episodeMediaList[] = $this->episode->cover; + if ($episode->cover_id !== null) { + $episodeMediaList[] = $episode->cover; } $mediaModel = new MediaModel(); @@ -916,36 +908,36 @@ class EpisodeController extends BaseController if ($warnings !== []) { return redirect() - ->route('episode-list', [$this->podcast->id]) + ->route('episode-list', [$episode->podcast_id]) ->with('message', lang('Episode.messages.deleteSuccess')) ->with('warnings', $warnings); } - return redirect()->route('episode-list', [$this->podcast->id])->with( + return redirect()->route('episode-list', [$episode->podcast_id])->with( 'message', lang('Episode.messages.deleteSuccess') ); } - public function embed(): string + public function embedView(Episode $episode): string { helper(['form']); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, 'themes' => EpisodeModel::$themes, ]; $this->setHtmlHead(lang('Episode.embed.title')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/embed', $data); } - public function attemptCommentCreate(): RedirectResponse + public function commentCreateAction(Episode $episode): RedirectResponse { $rules = [ 'message' => 'required|max_length[500]', @@ -962,7 +954,7 @@ class EpisodeController extends BaseController $newComment = new EpisodeComment([ 'actor_id' => interact_as_actor_id(), - 'episode_id' => $this->episode->id, + 'episode_id' => $episode->id, 'message' => $validData['message'], 'created_at' => new Time('now'), 'created_by' => user_id(), @@ -982,7 +974,7 @@ class EpisodeController extends BaseController return redirect()->back(); } - public function attemptCommentReply(string $commentId): RedirectResponse + public function commentReplyAction(Episode $episode, string $commentId): RedirectResponse { $rules = [ 'message' => 'required|max_length[500]', @@ -999,7 +991,7 @@ class EpisodeController extends BaseController $newReply = new EpisodeComment([ 'actor_id' => interact_as_actor_id(), - 'episode_id' => $this->episode->id, + 'episode_id' => $episode->id, 'message' => $validData['message'], 'in_reply_to_id' => $commentId, 'created_at' => new Time('now'), diff --git a/modules/Admin/Controllers/EpisodePersonController.php b/modules/Admin/Controllers/EpisodePersonController.php index a60df018..47e0180d 100644 --- a/modules/Admin/Controllers/EpisodePersonController.php +++ b/modules/Admin/Controllers/EpisodePersonController.php @@ -20,54 +20,52 @@ use CodeIgniter\HTTP\RedirectResponse; class EpisodePersonController extends BaseController { - protected Podcast $podcast; - - protected Episode $episode; - public function _remap(string $method, string ...$params): mixed { - if (count($params) < 2) { + if ($params === []) { throw PageNotFoundException::forPageNotFound(); } - if ( - ($this->podcast = (new PodcastModel())->getPodcastById((int) $params[0])) && - ($this->episode = (new EpisodeModel()) - ->where([ - 'id' => $params[1], - 'podcast_id' => $params[0], - ]) - ->first()) - ) { - unset($params[1]); - unset($params[0]); + if (count($params) === 1) { + if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + throw PageNotFoundException::forPageNotFound(); + } - return $this->{$method}(...$params); + return $this->{$method}($podcast); } - throw PageNotFoundException::forPageNotFound(); + if ( + ! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1]) instanceof Episode) + ) { + throw PageNotFoundException::forPageNotFound(); + } + + unset($params[0]); + unset($params[1]); + + return $this->{$method}($episode, ...$params); } - public function index(): string + public function index(Episode $episode): string { helper('form'); $data = [ - 'episode' => $this->episode, - 'podcast' => $this->podcast, + 'episode' => $episode, + 'podcast' => $episode->podcast, 'personOptions' => (new PersonModel())->getPersonOptions(), 'taxonomyOptions' => (new PersonModel())->getTaxonomyOptions(), ]; $this->setHtmlHead(lang('Person.episode_form.title')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/persons', $data); } - public function attemptCreate(): RedirectResponse + public function createAction(Episode $episode): RedirectResponse { $rules = [ 'persons' => 'required', @@ -83,8 +81,8 @@ class EpisodePersonController extends BaseController $validData = $this->validator->getValidated(); (new PersonModel())->addEpisodePersons( - $this->podcast->id, - $this->episode->id, + $episode->podcast_id, + $episode->id, $validData['persons'], $this->request->getPost('roles') ?? [], ); @@ -92,9 +90,9 @@ class EpisodePersonController extends BaseController return redirect()->back(); } - public function remove(string $personId): RedirectResponse + public function deleteAction(Episode $episode, string $personId): RedirectResponse { - (new PersonModel())->removePersonFromEpisode($this->podcast->id, $this->episode->id, (int) $personId); + (new PersonModel())->removePersonFromEpisode($episode->podcast_id, $episode->id, (int) $personId); return redirect()->back(); } diff --git a/modules/Admin/Controllers/FediverseController.php b/modules/Admin/Controllers/FediverseController.php index a19545e5..55b9ffcd 100644 --- a/modules/Admin/Controllers/FediverseController.php +++ b/modules/Admin/Controllers/FediverseController.php @@ -19,7 +19,7 @@ class FediverseController extends BaseController return redirect()->route('fediverse-blocked-actors'); } - public function blockedActors(): string + public function blockedActorsView(): string { helper(['form']); @@ -32,7 +32,7 @@ class FediverseController extends BaseController ]); } - public function blockedDomains(): string + public function blockedDomainsView(): string { helper(['form']); diff --git a/modules/Admin/Controllers/NotificationController.php b/modules/Admin/Controllers/NotificationController.php index 16c755f4..627a4a3a 100644 --- a/modules/Admin/Controllers/NotificationController.php +++ b/modules/Admin/Controllers/NotificationController.php @@ -27,70 +27,52 @@ class NotificationController extends BaseController public function _remap(string $method, string ...$params): mixed { + if ($params === []) { + throw PageNotFoundException::forPageNotFound(); + } + if ( ! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast ) { throw PageNotFoundException::forPageNotFound(); } - $this->podcast = $podcast; + $params[0] = $podcast; if (count($params) > 1) { if ( - ! ($notification = (new NotificationModel()) - ->where([ - 'id' => $params[1], - ]) - ->first()) instanceof Notification + ! ($notification = (new NotificationModel())->find($params[1])) instanceof Notification ) { throw PageNotFoundException::forPageNotFound(); } - $this->notification = $notification; - - unset($params[1]); - unset($params[0]); + $params[1] = $notification; } return $this->{$method}(...$params); } - public function list(): string + public function list(Podcast $podcast): string { - $notifications = (new NotificationModel())->where('target_actor_id', $this->podcast->actor_id) + $notifications = (new NotificationModel())->where('target_actor_id', $podcast->actor_id) ->orderBy('created_at', 'desc'); $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, 'notifications' => $notifications->paginate(10), 'pager' => $notifications->pager, ]; $this->setHtmlHead(lang('Notifications.title')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/notifications', $data); } - public function markAsRead(): RedirectResponse + public function markAllAsReadAction(Podcast $podcast): RedirectResponse { - $this->notification->read_at = new Time('now'); - $notificationModel = new NotificationModel(); - $notificationModel->update($this->notification->id, $this->notification); - - if ($this->notification->post_id === null) { - return redirect()->route('podcast-activity', [esc($this->podcast->handle)]); - } - - $post = (new PostModel())->getPostById($this->notification->post_id); - - return redirect()->route('post', [$this->podcast->handle, $post->id]); - } - - public function markAllAsRead(): RedirectResponse - { - $notifications = (new NotificationModel())->where('target_actor_id', $this->podcast->actor_id) + $notifications = (new NotificationModel())->where('target_actor_id', $podcast->actor_id) ->where('read_at', null) ->findAll(); @@ -101,4 +83,19 @@ class NotificationController extends BaseController return redirect()->back(); } + + public function markAsReadAction(Podcast $podcast, Notification $notification): RedirectResponse + { + $notification->read_at = new Time('now'); + $notificationModel = new NotificationModel(); + $notificationModel->update($notification->id, $notification); + + if ($notification->post_id === null) { + return redirect()->route('podcast-activity', [esc($podcast->handle)]); + } + + $post = (new PostModel())->getPostById($notification->post_id); + + return redirect()->route('post', [$podcast->handle, $post->id]); + } } diff --git a/modules/Admin/Controllers/PageController.php b/modules/Admin/Controllers/PageController.php index f2df5e62..895d8f9c 100644 --- a/modules/Admin/Controllers/PageController.php +++ b/modules/Admin/Controllers/PageController.php @@ -17,16 +17,14 @@ use CodeIgniter\HTTP\RedirectResponse; class PageController extends BaseController { - protected ?Page $page = null; - public function _remap(string $method, string ...$params): mixed { if ($params === []) { return $this->{$method}(); } - if (($this->page = (new PageModel())->find($params[0])) instanceof Page) { - return $this->{$method}(); + if (($page = (new PageModel())->find($params[0])) instanceof Page) { + return $this->{$method}($page); } throw PageNotFoundException::forPageNotFound(); @@ -42,15 +40,15 @@ class PageController extends BaseController return view('page/list', $data); } - public function view(): string + public function view(Page $page): string { - $this->setHtmlHead($this->page->title); + $this->setHtmlHead($page->title); return view('page/view', [ - 'page' => $this->page, + 'page' => $page, ]); } - public function create(): string + public function createView(): string { helper('form'); @@ -58,7 +56,7 @@ class PageController extends BaseController return view('page/create'); } - public function attemptCreate(): RedirectResponse + public function createAction(): RedirectResponse { $page = new Page([ 'title' => $this->request->getPost('title'), @@ -82,40 +80,40 @@ class PageController extends BaseController ])); } - public function edit(): string + public function editView(Page $page): string { helper('form'); $this->setHtmlHead(lang('Page.edit')); replace_breadcrumb_params([ - 0 => $this->page->title, + 0 => $page->title, ]); return view('page/edit', [ - 'page' => $this->page, + 'page' => $page, ]); } - public function attemptEdit(): RedirectResponse + public function editAction(Page $page): RedirectResponse { - $this->page->title = $this->request->getPost('title'); - $this->page->slug = $this->request->getPost('slug'); - $this->page->content_markdown = $this->request->getPost('content'); + $page->title = $this->request->getPost('title'); + $page->slug = $this->request->getPost('slug'); + $page->content_markdown = $this->request->getPost('content'); $pageModel = new PageModel(); - if (! $pageModel->update($this->page->id, $this->page)) { + if (! $pageModel->update($page->id, $page)) { return redirect() ->back() ->withInput() ->with('errors', $pageModel->errors()); } - return redirect()->route('page-edit', [$this->page->id])->with('message', lang('Page.messages.editSuccess')); + return redirect()->route('page-edit', [$page->id])->with('message', lang('Page.messages.editSuccess')); } - public function delete(): RedirectResponse + public function deleteAction(Page $page): RedirectResponse { - (new PageModel())->delete($this->page->id); + (new PageModel())->delete($page->id); return redirect()->route('page-list'); } diff --git a/modules/Admin/Controllers/PersonController.php b/modules/Admin/Controllers/PersonController.php index 7f37e4ab..f41b6097 100644 --- a/modules/Admin/Controllers/PersonController.php +++ b/modules/Admin/Controllers/PersonController.php @@ -18,8 +18,6 @@ use Modules\Media\Models\MediaModel; class PersonController extends BaseController { - protected ?Person $person = null; - public function _remap(string $method, string ...$params): mixed { if ($params === []) { @@ -27,15 +25,15 @@ class PersonController extends BaseController } if ( - ($this->person = (new PersonModel())->getPersonById((int) $params[0])) instanceof Person + ($person = (new PersonModel())->getPersonById((int) $params[0])) instanceof Person ) { - return $this->{$method}(); + return $this->{$method}($person); } throw PageNotFoundException::forPageNotFound(); } - public function index(): string + public function list(): string { $data = [ 'persons' => (new PersonModel())->orderBy('full_name') @@ -46,20 +44,20 @@ class PersonController extends BaseController return view('person/list', $data); } - public function view(): string + public function view(Person $person): string { $data = [ - 'person' => $this->person, + 'person' => $person, ]; - $this->setHtmlHead($this->person->full_name); + $this->setHtmlHead($person->full_name); replace_breadcrumb_params([ - 0 => $this->person->full_name, + 0 => $person->full_name, ]); return view('person/view', $data); } - public function create(): string + public function createView(): string { helper(['form']); @@ -67,7 +65,7 @@ class PersonController extends BaseController return view('person/create'); } - public function attemptCreate(): RedirectResponse + public function createAction(): RedirectResponse { $rules = [ 'avatar' => 'is_image[avatar]|ext_in[avatar,jpg,jpeg,png]|min_dims[avatar,400,400]|is_image_ratio[avatar,1,1]', @@ -107,22 +105,22 @@ class PersonController extends BaseController ->with('message', lang('Person.messages.createSuccess')); } - public function edit(): string + public function editView(Person $person): string { helper('form'); $data = [ - 'person' => $this->person, + 'person' => $person, ]; $this->setHtmlHead(lang('Person.edit')); replace_breadcrumb_params([ - 0 => $this->person->full_name, + 0 => $person->full_name, ]); return view('person/edit', $data); } - public function attemptEdit(): RedirectResponse + public function editAction(Person $person): RedirectResponse { $rules = [ 'avatar' => 'is_image[avatar]|ext_in[avatar,jpg,jpeg,png]|min_dims[avatar,400,400]|is_image_ratio[avatar,1,1]', @@ -135,34 +133,34 @@ class PersonController extends BaseController ->with('errors', $this->validator->getErrors()); } - $this->person->updated_by = user_id(); - $this->person->full_name = $this->request->getPost('full_name'); - $this->person->unique_name = $this->request->getPost('unique_name'); - $this->person->information_url = $this->request->getPost('information_url'); - $this->person->setAvatar($this->request->getFile('avatar')); + $person->updated_by = user_id(); + $person->full_name = $this->request->getPost('full_name'); + $person->unique_name = $this->request->getPost('unique_name'); + $person->information_url = $this->request->getPost('information_url'); + $person->setAvatar($this->request->getFile('avatar')); $personModel = new PersonModel(); - if (! $personModel->update($this->person->id, $this->person)) { + if (! $personModel->update($person->id, $person)) { return redirect() ->back() ->withInput() ->with('errors', $personModel->errors()); } - return redirect()->route('person-edit', [$this->person->id])->with( + return redirect()->route('person-edit', [$person->id])->with( 'message', lang('Person.messages.editSuccess') ); } - public function delete(): RedirectResponse + public function deleteAction(Person $person): RedirectResponse { - if ($this->person->avatar_id !== null) { + if ($person->avatar_id !== null) { // delete avatar to prevent collision if recreating person - (new MediaModel())->deleteMedia($this->person->avatar); + (new MediaModel())->deleteMedia($person->avatar); } - (new PersonModel())->delete($this->person->id); + (new PersonModel())->delete($person->id); return redirect()->route('person-list') ->with('message', lang('Person.messages.deleteSuccess')); diff --git a/modules/Admin/Controllers/PodcastController.php b/modules/Admin/Controllers/PodcastController.php index 5075a26f..bcc0caed 100644 --- a/modules/Admin/Controllers/PodcastController.php +++ b/modules/Admin/Controllers/PodcastController.php @@ -38,8 +38,6 @@ use Modules\Media\Models\MediaModel; class PodcastController extends BaseController { - protected Podcast $podcast; - public function _remap(string $method, string ...$params): mixed { if ($params === []) { @@ -49,8 +47,7 @@ class PodcastController extends BaseController if ( ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast ) { - $this->podcast = $podcast; - return $this->{$method}(); + return $this->{$method}($podcast); } throw PageNotFoundException::forPageNotFound(); @@ -72,111 +69,111 @@ class PodcastController extends BaseController return view('podcast/list', $data); } - public function view(): string + public function view(Podcast $podcast): string { $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; - $this->setHtmlHead($this->podcast->title); + $this->setHtmlHead($podcast->title); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/view', $data); } - public function viewAnalytics(): string + public function analyticsView(Podcast $podcast): string { $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; - $this->setHtmlHead($this->podcast->title); + $this->setHtmlHead($podcast->title); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/analytics/index', $data); } - public function viewAnalyticsWebpages(): string + public function analyticsWebpagesView(Podcast $podcast): string { $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; - $this->setHtmlHead($this->podcast->title); + $this->setHtmlHead($podcast->title); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/analytics/webpages', $data); } - public function viewAnalyticsLocations(): string + public function analyticsLocationsView(Podcast $podcast): string { $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; - $this->setHtmlHead($this->podcast->title); + $this->setHtmlHead($podcast->title); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/analytics/locations', $data); } - public function viewAnalyticsUniqueListeners(): string + public function analyticsUniqueListenersView(Podcast $podcast): string { $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; - $this->setHtmlHead($this->podcast->title); + $this->setHtmlHead($podcast->title); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/analytics/unique_listeners', $data); } - public function viewAnalyticsListeningTime(): string + public function analyticsListeningTimeView(Podcast $podcast): string { $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; - $this->setHtmlHead($this->podcast->title); + $this->setHtmlHead($podcast->title); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/analytics/listening_time', $data); } - public function viewAnalyticsTimePeriods(): string + public function analyticsTimePeriodsView(Podcast $podcast): string { $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; - $this->setHtmlHead($this->podcast->title); + $this->setHtmlHead($podcast->title); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/analytics/time_periods', $data); } - public function viewAnalyticsPlayers(): string + public function analyticsPlayersView(Podcast $podcast): string { $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; - $this->setHtmlHead($this->podcast->title); + $this->setHtmlHead($podcast->title); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/analytics/players', $data); } - public function create(): string + public function createView(): string { helper(['form', 'misc']); @@ -193,7 +190,7 @@ class PodcastController extends BaseController return view('podcast/create', $data); } - public function attemptCreate(): RedirectResponse + public function createAction(): RedirectResponse { $rules = [ 'cover' => 'uploaded[cover]|is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]', @@ -267,7 +264,7 @@ class PodcastController extends BaseController ); } - public function edit(): string + public function editView(Podcast $podcast): string { helper('form'); @@ -275,19 +272,19 @@ class PodcastController extends BaseController $categoryOptions = (new CategoryModel())->getCategoryOptions(); $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, 'languageOptions' => $languageOptions, 'categoryOptions' => $categoryOptions, ]; $this->setHtmlHead(lang('Podcast.edit')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/edit', $data); } - public function attemptEdit(): RedirectResponse + public function editAction(Podcast $podcast): RedirectResponse { $rules = [ 'cover' => 'is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]', @@ -301,46 +298,46 @@ class PodcastController extends BaseController ->with('errors', $this->validator->getErrors()); } - $this->podcast->updated_by = (int) user_id(); + $podcast->updated_by = (int) user_id(); - $this->podcast->title = $this->request->getPost('title'); - $this->podcast->description_markdown = $this->request->getPost('description'); - $this->podcast->setCover($this->request->getFile('cover')); - $this->podcast->setBanner($this->request->getFile('banner')); + $podcast->title = $this->request->getPost('title'); + $podcast->description_markdown = $this->request->getPost('description'); + $podcast->setCover($this->request->getFile('cover')); + $podcast->setBanner($this->request->getFile('banner')); - $this->podcast->language_code = $this->request->getPost('language'); - $this->podcast->category_id = $this->request->getPost('category'); - $this->podcast->parental_advisory = + $podcast->language_code = $this->request->getPost('language'); + $podcast->category_id = $this->request->getPost('category'); + $podcast->parental_advisory = $this->request->getPost('parental_advisory') !== 'undefined' ? $this->request->getPost('parental_advisory') : null; - $this->podcast->publisher = $this->request->getPost('publisher'); - $this->podcast->owner_name = $this->request->getPost('owner_name'); - $this->podcast->owner_email = $this->request->getPost('owner_email'); - $this->podcast->type = $this->request->getPost('type'); - $this->podcast->copyright = $this->request->getPost('copyright'); - $this->podcast->location = $this->request->getPost('location_name') === '' ? null : new Location( + $podcast->publisher = $this->request->getPost('publisher'); + $podcast->owner_name = $this->request->getPost('owner_name'); + $podcast->owner_email = $this->request->getPost('owner_email'); + $podcast->type = $this->request->getPost('type'); + $podcast->copyright = $this->request->getPost('copyright'); + $podcast->location = $this->request->getPost('location_name') === '' ? null : new Location( $this->request->getPost('location_name') ); - $this->podcast->new_feed_url = $this->request->getPost('new_feed_url') === '' ? null : $this->request->getPost( + $podcast->new_feed_url = $this->request->getPost('new_feed_url') === '' ? null : $this->request->getPost( 'new_feed_url' ); - $this->podcast->is_blocked = $this->request->getPost('block') === 'yes'; - $this->podcast->is_completed = + $podcast->is_blocked = $this->request->getPost('block') === 'yes'; + $podcast->is_completed = $this->request->getPost('complete') === 'yes'; - $this->podcast->is_locked = $this->request->getPost('lock') === 'yes'; - $this->podcast->is_premium_by_default = $this->request->getPost('premium_by_default') === 'yes'; + $podcast->is_locked = $this->request->getPost('lock') === 'yes'; + $podcast->is_premium_by_default = $this->request->getPost('premium_by_default') === 'yes'; // republish on websub hubs upon edit - $this->podcast->is_published_on_hubs = false; + $podcast->is_published_on_hubs = false; $db = db_connect(); $db->transStart(); $podcastModel = new PodcastModel(); - if (! $podcastModel->update($this->podcast->id, $this->podcast)) { + if (! $podcastModel->update($podcast->id, $podcast)) { $db->transRollback(); return redirect() ->back() @@ -350,21 +347,21 @@ class PodcastController extends BaseController // set Podcast categories (new CategoryModel())->setPodcastCategories( - $this->podcast->id, + $podcast->id, $this->request->getPost('other_categories') ?? [], ); $db->transComplete(); - return redirect()->route('podcast-edit', [$this->podcast->id])->with( + return redirect()->route('podcast-edit', [$podcast->id])->with( 'message', lang('Podcast.messages.editSuccess') ); } - public function deleteBanner(): RedirectResponse + public function deleteBannerAction(Podcast $podcast): RedirectResponse { - if (! $this->podcast->banner instanceof Image) { + if (! $podcast->banner instanceof Image) { return redirect()->back(); } @@ -373,7 +370,7 @@ class PodcastController extends BaseController $db->transStart(); $mediaModel = new MediaModel(); - if (! $mediaModel->deleteMedia($this->podcast->banner)) { + if (! $mediaModel->deleteMedia($podcast->banner)) { return redirect() ->back() ->withInput() @@ -381,11 +378,11 @@ class PodcastController extends BaseController } (new PodcastModel())->clearCache([ - 'id' => $this->podcast->id, + 'id' => $podcast->id, ]); // remove banner url from actor - $actor = (new ActorModel())->getActorById($this->podcast->actor_id); + $actor = (new ActorModel())->getActorById($podcast->actor_id); if ($actor instanceof Actor) { $actor->cover_image_url = null; @@ -399,7 +396,7 @@ class PodcastController extends BaseController return redirect()->back(); } - public function latestEpisodes(int $limit, int $podcastId): string + public function latestEpisodesView(int $limit, int $podcastId): string { $episodes = (new EpisodeModel()) ->where('podcast_id', $podcastId) @@ -413,22 +410,22 @@ class PodcastController extends BaseController ]); } - public function delete(): string + public function deleteView(Podcast $podcast): string { helper(['form']); $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; $this->setHtmlHead(lang('Podcast.delete')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/delete', $data); } - public function attemptDelete(): RedirectResponse + public function deleteAction(Podcast $podcast): RedirectResponse { $rules = [ 'understand' => 'required', @@ -446,7 +443,7 @@ class PodcastController extends BaseController $db->transStart(); //delete podcast episodes - $podcastEpisodes = (new EpisodeModel())->where('podcast_id', $this->podcast->id) + $podcastEpisodes = (new EpisodeModel())->where('podcast_id', $podcast->id) ->findAll(); foreach ($podcastEpisodes as $podcastEpisode) { @@ -486,7 +483,7 @@ class PodcastController extends BaseController //delete podcast $podcastModel = new PodcastModel(); - if (! $podcastModel->delete($this->podcast->id)) { + if (! $podcastModel->delete($podcast->id)) { $db->transRollback(); return redirect() ->back() @@ -498,15 +495,15 @@ class PodcastController extends BaseController $podcastMediaList = [ [ 'type' => 'cover', - 'file' => $this->podcast->cover, + 'file' => $podcast->cover, ], ]; - if ($this->podcast->banner_id !== null) { + if ($podcast->banner_id !== null) { $podcastMediaList[] = [ 'type' => 'banner', - 'file' => $this->podcast->banner, + 'file' => $podcast->banner, ]; } @@ -527,7 +524,7 @@ class PodcastController extends BaseController //delete podcast actor $actorModel = new ActorModel(); - if (! $actorModel->delete($this->podcast->actor_id)) { + if (! $actorModel->delete($podcast->actor_id)) { $db->transRollback(); return redirect() ->back() @@ -549,7 +546,7 @@ class PodcastController extends BaseController ]; foreach ($analyticsModels as $analyticsModel) { if (! $analyticsModel->where([ - 'podcast_id' => $this->podcast->id, + 'podcast_id' => $podcast->id, ])->delete()) { $db->transRollback(); return redirect() @@ -565,11 +562,11 @@ class PodcastController extends BaseController $fileManager = service('file_manager'); //delete podcast media files and folder - $folder = 'podcasts/' . $this->podcast->handle; + $folder = 'podcasts/' . $podcast->handle; if (! $fileManager->deleteAll($folder)) { return redirect()->route('podcast-list') ->with('message', lang('Podcast.messages.deleteSuccess', [ - 'podcast_handle' => $this->podcast->handle, + 'podcast_handle' => $podcast->handle, ])) ->with('warning', lang('Podcast.messages.deletePodcastMediaFolderError', [ 'folder_path' => $folder, @@ -578,29 +575,29 @@ class PodcastController extends BaseController return redirect()->route('podcast-list') ->with('message', lang('Podcast.messages.deleteSuccess', [ - 'podcast_handle' => $this->podcast->handle, + 'podcast_handle' => $podcast->handle, ])); } - public function publish(): string | RedirectResponse + public function publishView(Podcast $podcast): string | RedirectResponse { helper(['form']); $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, ]; $this->setHtmlHead(lang('Podcast.publish')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/publish', $data); } - public function attemptPublish(): RedirectResponse + public function publishAction(Podcast $podcast): RedirectResponse { - if ($this->podcast->publication_status !== 'not_published') { - return redirect()->route('podcast-view', [$this->podcast->id])->with( + if ($podcast->publication_status !== 'not_published') { + return redirect()->route('podcast-view', [$podcast->id])->with( 'error', lang('Podcast.messages.publishError') ); @@ -627,7 +624,7 @@ class PodcastController extends BaseController if ($publishMethod === 'schedule') { $scheduledPublicationDate = $validData['scheduled_publication_date']; if ($scheduledPublicationDate) { - $this->podcast->published_at = Time::createFromFormat( + $podcast->published_at = Time::createFromFormat( 'Y-m-d H:i', $scheduledPublicationDate, $this->request->getPost('client_timezone'), @@ -640,19 +637,19 @@ class PodcastController extends BaseController ->with('error', lang('Podcast.messages.scheduleDateError')); } } else { - $this->podcast->published_at = Time::now(); + $podcast->published_at = Time::now(); } $message = $this->request->getPost('message'); // only create post if message is not empty if ($message !== '') { $newPost = new Post([ - 'actor_id' => $this->podcast->actor_id, + 'actor_id' => $podcast->actor_id, 'message' => $message, 'created_by' => user_id(), ]); - $newPost->published_at = $this->podcast->published_at; + $newPost->published_at = $podcast->published_at; $postModel = new PostModel(); if (! $postModel->addPost($newPost)) { @@ -665,12 +662,12 @@ class PodcastController extends BaseController } $episodes = (new EpisodeModel()) - ->where('podcast_id', $this->podcast->id) + ->where('podcast_id', $podcast->id) ->where('published_at !=', null) ->findAll(); foreach ($episodes as $episode) { - $episode->published_at = $this->podcast->published_at->addSeconds(1); + $episode->published_at = $podcast->published_at->addSeconds(1); $episodeModel = new EpisodeModel(); if (! $episodeModel->update($episode->id, $episode)) { @@ -698,7 +695,7 @@ class PodcastController extends BaseController } $podcastModel = new PodcastModel(); - if (! $podcastModel->update($this->podcast->id, $this->podcast)) { + if (! $podcastModel->update($podcast->id, $podcast)) { $db->transRollback(); return redirect() ->back() @@ -708,18 +705,18 @@ class PodcastController extends BaseController $db->transComplete(); - return redirect()->route('podcast-view', [$this->podcast->id]); + return redirect()->route('podcast-view', [$podcast->id]); } - public function publishEdit(): string | RedirectResponse + public function publishEditView(Podcast $podcast): string | RedirectResponse { helper(['form']); $data = [ - 'podcast' => $this->podcast, + 'podcast' => $podcast, 'post' => (new PostModel()) ->where([ - 'actor_id' => $this->podcast->actor_id, + 'actor_id' => $podcast->actor_id, 'episode_id' => null, ]) ->first(), @@ -727,15 +724,15 @@ class PodcastController extends BaseController $this->setHtmlHead(lang('Podcast.publish_edit')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/publish_edit', $data); } - public function attemptPublishEdit(): RedirectResponse + public function publishEditAction(Podcast $podcast): RedirectResponse { - if ($this->podcast->publication_status !== 'scheduled') { - return redirect()->route('podcast-view', [$this->podcast->id])->with( + if ($podcast->publication_status !== 'scheduled') { + return redirect()->route('podcast-view', [$podcast->id])->with( 'error', lang('Podcast.messages.publishEditError') ); @@ -762,7 +759,7 @@ class PodcastController extends BaseController if ($publishMethod === 'schedule') { $scheduledPublicationDate = $validData['scheduled_publication_date']; if ($scheduledPublicationDate) { - $this->podcast->published_at = Time::createFromFormat( + $podcast->published_at = Time::createFromFormat( 'Y-m-d H:i', $scheduledPublicationDate, $this->request->getPost('client_timezone'), @@ -775,12 +772,12 @@ class PodcastController extends BaseController ->with('error', lang('Podcast.messages.scheduleDateError')); } } else { - $this->podcast->published_at = Time::now(); + $podcast->published_at = Time::now(); } $post = (new PostModel()) ->where([ - 'actor_id' => $this->podcast->actor_id, + 'actor_id' => $podcast->actor_id, 'episode_id' => null, ]) ->first(); @@ -791,7 +788,7 @@ class PodcastController extends BaseController if ($newPostMessage !== '') { // edit post if post exists and message is not empty $post->message = $newPostMessage; - $post->published_at = $this->podcast->published_at; + $post->published_at = $podcast->published_at; $postModel = new PostModel(); if (! $postModel->editPost($post)) { @@ -806,7 +803,7 @@ class PodcastController extends BaseController $postModel = new PostModel(); $post = $postModel ->where([ - 'actor_id' => $this->podcast->actor_id, + 'actor_id' => $podcast->actor_id, 'episode_id' => null, ]) ->first(); @@ -815,12 +812,12 @@ class PodcastController extends BaseController } elseif ($newPostMessage !== '') { // create post if there is no post and message is not empty $newPost = new Post([ - 'actor_id' => $this->podcast->actor_id, + 'actor_id' => $podcast->actor_id, 'message' => $newPostMessage, 'created_by' => user_id(), ]); - $newPost->published_at = $this->podcast->published_at; + $newPost->published_at = $podcast->published_at; $postModel = new PostModel(); if (! $postModel->addPost($newPost)) { @@ -833,12 +830,12 @@ class PodcastController extends BaseController } $episodes = (new EpisodeModel()) - ->where('podcast_id', $this->podcast->id) + ->where('podcast_id', $podcast->id) ->where('published_at !=', null) ->findAll(); foreach ($episodes as $episode) { - $episode->published_at = $this->podcast->published_at->addSeconds(1); + $episode->published_at = $podcast->published_at->addSeconds(1); $episodeModel = new EpisodeModel(); if (! $episodeModel->update($episode->id, $episode)) { @@ -866,7 +863,7 @@ class PodcastController extends BaseController } $podcastModel = new PodcastModel(); - if (! $podcastModel->update($this->podcast->id, $this->podcast)) { + if (! $podcastModel->update($podcast->id, $podcast)) { $db->transRollback(); return redirect() ->back() @@ -876,13 +873,13 @@ class PodcastController extends BaseController $db->transComplete(); - return redirect()->route('podcast-view', [$this->podcast->id]); + return redirect()->route('podcast-view', [$podcast->id]); } - public function publishCancel(): RedirectResponse + public function publishCancelAction(Podcast $podcast): RedirectResponse { - if ($this->podcast->publication_status !== 'scheduled') { - return redirect()->route('podcast-view', [$this->podcast->id]); + if ($podcast->publication_status !== 'scheduled') { + return redirect()->route('podcast-view', [$podcast->id]); } $db = db_connect(); @@ -891,7 +888,7 @@ class PodcastController extends BaseController $postModel = new PostModel(); $post = $postModel ->where([ - 'actor_id' => $this->podcast->actor_id, + 'actor_id' => $podcast->actor_id, 'episode_id' => null, ]) ->first(); @@ -900,7 +897,7 @@ class PodcastController extends BaseController } $episodes = (new EpisodeModel()) - ->where('podcast_id', $this->podcast->id) + ->where('podcast_id', $podcast->id) ->where('published_at !=', null) ->findAll(); @@ -922,10 +919,10 @@ class PodcastController extends BaseController $postModel->removePost($post); } - $this->podcast->published_at = null; + $podcast->published_at = null; $podcastModel = new PodcastModel(); - if (! $podcastModel->update($this->podcast->id, $this->podcast)) { + if (! $podcastModel->update($podcast->id, $podcast)) { $db->transRollback(); return redirect() ->back() @@ -935,7 +932,7 @@ class PodcastController extends BaseController $db->transComplete(); - return redirect()->route('podcast-view', [$this->podcast->id])->with( + return redirect()->route('podcast-view', [$podcast->id])->with( 'message', lang('Podcast.messages.publishCancelSuccess') ); diff --git a/modules/Admin/Controllers/PodcastPersonController.php b/modules/Admin/Controllers/PodcastPersonController.php index bdb03a4b..b0b93539 100644 --- a/modules/Admin/Controllers/PodcastPersonController.php +++ b/modules/Admin/Controllers/PodcastPersonController.php @@ -27,34 +27,34 @@ class PodcastPersonController extends BaseController } if ( - ($this->podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast + ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast ) { unset($params[0]); - return $this->{$method}(...$params); + return $this->{$method}($podcast, ...$params); } throw PageNotFoundException::forPageNotFound(); } - public function index(): string + public function index(Podcast $podcast): string { helper('form'); $data = [ - 'podcast' => $this->podcast, - 'podcastPersons' => (new PersonModel())->getPodcastPersons($this->podcast->id), + 'podcast' => $podcast, + 'podcastPersons' => (new PersonModel())->getPodcastPersons($podcast->id), 'personOptions' => (new PersonModel())->getPersonOptions(), 'taxonomyOptions' => (new PersonModel())->getTaxonomyOptions(), ]; $this->setHtmlHead(lang('Person.podcast_form.title')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, + 0 => $podcast->at_handle, ]); return view('podcast/persons', $data); } - public function attemptCreate(): RedirectResponse + public function createAction(Podcast $podcast): RedirectResponse { $rules = [ 'persons' => 'required', @@ -70,7 +70,7 @@ class PodcastPersonController extends BaseController $validData = $this->validator->getValidated(); (new PersonModel())->addPodcastPersons( - $this->podcast->id, + $podcast->id, $validData['persons'], $this->request->getPost('roles') ?? [], ); @@ -78,9 +78,9 @@ class PodcastPersonController extends BaseController return redirect()->back(); } - public function remove(string $personId): RedirectResponse + public function deleteAction(Podcast $podcast, string $personId): RedirectResponse { - (new PersonModel())->removePersonFromPodcast($this->podcast->id, (int) $personId); + (new PersonModel())->removePersonFromPodcast($podcast->id, (int) $personId); return redirect()->back(); } diff --git a/modules/Admin/Controllers/SettingsController.php b/modules/Admin/Controllers/SettingsController.php index 0262b3fb..e3e1ce7a 100644 --- a/modules/Admin/Controllers/SettingsController.php +++ b/modules/Admin/Controllers/SettingsController.php @@ -34,7 +34,7 @@ class SettingsController extends BaseController return view('settings/general'); } - public function attemptInstanceEdit(): RedirectResponse + public function instanceEditAction(): RedirectResponse { $rules = [ 'site_icon' => 'is_image[site_icon]|ext_in[site_icon,png,jpeg]|is_image_ratio[site_icon,1,1]|min_dims[image,512,512]|permit_empty', @@ -119,7 +119,7 @@ class SettingsController extends BaseController return redirect('settings-general')->with('message', lang('Settings.instance.editSuccess')); } - public function deleteIcon(): RedirectResponse + public function deleteIconAction(): RedirectResponse { /** @var FileManagerInterface $fileManager */ $fileManager = service('file_manager'); @@ -133,7 +133,7 @@ class SettingsController extends BaseController return redirect('settings-general')->with('message', lang('Settings.instance.deleteIconSuccess')); } - public function regenerateImages(): RedirectResponse + public function regenerateImagesAction(): RedirectResponse { /** @var Podcast[] $allPodcasts */ $allPodcasts = (new PodcastModel())->findAll(); @@ -168,7 +168,7 @@ class SettingsController extends BaseController return redirect('settings-general')->with('message', lang('Settings.images.regenerationSuccess')); } - public function runHousekeeping(): RedirectResponse + public function housekeepingAction(): RedirectResponse { if ($this->request->getPost('reset_counts') === 'yes') { // recalculate fediverse counts @@ -200,14 +200,14 @@ class SettingsController extends BaseController return redirect('settings-general')->with('message', lang('Settings.housekeeping.runSuccess')); } - public function theme(): string + public function themeView(): string { helper('form'); $this->setHtmlHead(lang('Settings.theme.title')); return view('settings/theme'); } - public function attemptSetInstanceTheme(): RedirectResponse + public function themeAction(): RedirectResponse { $theme = $this->request->getPost('theme'); service('settings') diff --git a/modules/Admin/Controllers/SoundbiteController.php b/modules/Admin/Controllers/SoundbiteController.php index 1d6f5ae9..14ea790d 100644 --- a/modules/Admin/Controllers/SoundbiteController.php +++ b/modules/Admin/Controllers/SoundbiteController.php @@ -22,47 +22,38 @@ use Modules\Media\Models\MediaModel; class SoundbiteController extends BaseController { - protected Podcast $podcast; - - protected Episode $episode; - public function _remap(string $method, string ...$params): mixed { + if ($params === []) { + throw PageNotFoundException::forPageNotFound(); + } + + if (count($params) === 1) { + if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + throw PageNotFoundException::forPageNotFound(); + } + + return $this->{$method}($podcast); + } + if ( - ! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast + ! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1]) instanceof Episode) ) { throw PageNotFoundException::forPageNotFound(); } - $this->podcast = $podcast; + unset($params[0]); + unset($params[1]); - if (count($params) > 1) { - if ( - ! ($episode = (new EpisodeModel()) - ->where([ - 'id' => $params[1], - 'podcast_id' => $params[0], - ]) - ->first()) instanceof Episode - ) { - throw PageNotFoundException::forPageNotFound(); - } - - $this->episode = $episode; - - unset($params[1]); - unset($params[0]); - } - - return $this->{$method}(...$params); + return $this->{$method}($episode, ...$params); } - public function list(): string + public function list(Episode $episode): string { $soundbitesBuilder = (new ClipModel('audio')) ->where([ - 'podcast_id' => $this->podcast->id, - 'episode_id' => $this->episode->id, + 'podcast_id' => $episode->podcast_id, + 'episode_id' => $episode->id, 'type' => 'audio', ]) ->orderBy('created_at', 'desc'); @@ -70,38 +61,38 @@ class SoundbiteController extends BaseController $soundbites = $soundbitesBuilder->paginate(10); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, 'soundbites' => $soundbites, 'pager' => $soundbitesBuilder->pager, ]; $this->setHtmlHead(lang('Soundbite.list.title')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/soundbites_list', $data); } - public function create(): string + public function createView(Episode $episode): string { helper(['form']); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, ]; $this->setHtmlHead(lang('Soundbite.form.title')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/soundbites_new', $data); } - public function attemptCreate(): RedirectResponse + public function createAction(Episode $episode): RedirectResponse { $rules = [ 'title' => 'required', @@ -124,8 +115,8 @@ class SoundbiteController extends BaseController 'duration' => (float) $validData['duration'], 'type' => 'audio', 'status' => '', - 'podcast_id' => $this->podcast->id, - 'episode_id' => $this->episode->id, + 'podcast_id' => $episode->podcast_id, + 'episode_id' => $episode->id, 'created_by' => user_id(), 'updated_by' => user_id(), ]); @@ -138,13 +129,13 @@ class SoundbiteController extends BaseController ->with('errors', $clipModel->errors()); } - return redirect()->route('soundbites-list', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('soundbites-list', [$episode->podcast_id, $episode->id])->with( 'message', lang('Soundbite.messages.createSuccess') ); } - public function delete(string $soundbiteId): RedirectResponse + public function deleteAction(Episode $episode, string $soundbiteId): RedirectResponse { $soundbite = (new ClipModel())->getSoundbiteById((int) $soundbiteId); @@ -154,9 +145,9 @@ class SoundbiteController extends BaseController if ($soundbite->media === null) { // delete Clip directly - (new ClipModel())->deleteSoundbite($this->podcast->id, $this->episode->id, $soundbite->id); + (new ClipModel())->deleteSoundbite($episode->podcast_id, $episode->id, $soundbite->id); } else { - (new ClipModel())->clearSoundbiteCache($this->podcast->id, $this->episode->id, $soundbite->id); + (new ClipModel())->clearSoundbiteCache($episode->podcast_id, $episode->id, $soundbite->id); $mediaModel = new MediaModel(); // delete the soundbite file, the clip will be deleted on cascade @@ -168,7 +159,7 @@ class SoundbiteController extends BaseController } } - return redirect()->route('soundbites-list', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('soundbites-list', [$episode->podcast_id, $episode->id])->with( 'message', lang('Soundbite.messages.deleteSuccess') ); diff --git a/modules/Admin/Controllers/VideoClipsController.php b/modules/Admin/Controllers/VideoClipsController.php index 848cee8d..2c6c1d02 100644 --- a/modules/Admin/Controllers/VideoClipsController.php +++ b/modules/Admin/Controllers/VideoClipsController.php @@ -23,47 +23,38 @@ use Modules\Media\Models\MediaModel; class VideoClipsController extends BaseController { - protected Podcast $podcast; - - protected Episode $episode; - public function _remap(string $method, string ...$params): mixed { + if ($params === []) { + throw PageNotFoundException::forPageNotFound(); + } + + if (count($params) === 1) { + if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + throw PageNotFoundException::forPageNotFound(); + } + + return $this->{$method}($podcast); + } + if ( - ! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast + ! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1]) instanceof Episode) ) { throw PageNotFoundException::forPageNotFound(); } - $this->podcast = $podcast; + unset($params[0]); + unset($params[1]); - if (count($params) > 1) { - if ( - ! ($episode = (new EpisodeModel()) - ->where([ - 'id' => $params[1], - 'podcast_id' => $params[0], - ]) - ->first()) instanceof Episode - ) { - throw PageNotFoundException::forPageNotFound(); - } - - $this->episode = $episode; - - unset($params[1]); - unset($params[0]); - } - - return $this->{$method}(...$params); + return $this->{$method}($episode, ...$params); } - public function list(): string + public function list(Episode $episode): string { $videoClipsBuilder = (new ClipModel('video')) ->where([ - 'podcast_id' => $this->podcast->id, - 'episode_id' => $this->episode->id, + 'podcast_id' => $episode->podcast_id, + 'episode_id' => $episode->id, 'type' => 'video', ]) ->orderBy('created_at', 'desc'); @@ -76,27 +67,27 @@ class VideoClipsController extends BaseController } $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, 'videoClips' => $videoClips, 'pager' => $videoClipsBuilder->pager, ]; $this->setHtmlHead(lang('VideoClip.list.title')); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); return view('episode/video_clips_list', $data); } - public function view(string $videoClipId): string + public function view(Episode $episode, string $videoClipId): string { $videoClip = (new ClipModel())->getVideoClipById((int) $videoClipId); $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, 'videoClip' => $videoClip, ]; @@ -104,23 +95,23 @@ class VideoClipsController extends BaseController 'videoClipLabel' => esc($videoClip->title), ])); replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, 2 => $videoClip->title, ]); return view('episode/video_clip', $data); } - public function create(): string + public function createView(Episode $episode): string { $data = [ - 'podcast' => $this->podcast, - 'episode' => $this->episode, + 'podcast' => $episode->podcast, + 'episode' => $episode, ]; replace_breadcrumb_params([ - 0 => $this->podcast->at_handle, - 1 => $this->episode->title, + 0 => $episode->podcast->at_handle, + 1 => $episode->title, ]); // First, check that requirements to create a video clip are met @@ -129,7 +120,7 @@ class VideoClipsController extends BaseController 'ffmpeg' => $ffmpeg !== null, 'gd' => extension_loaded('gd'), 'freetype' => extension_loaded('gd') && gd_info()['FreeType Support'], - 'transcript' => $this->episode->transcript instanceof Transcript, + 'transcript' => $episode->transcript instanceof Transcript, ]; $this->setHtmlHead(lang('VideoClip.form.title')); @@ -143,7 +134,7 @@ class VideoClipsController extends BaseController return view('episode/video_clips_new', $data); } - public function attemptCreate(): RedirectResponse + public function createAction(Episode $episode): RedirectResponse { $rules = [ 'title' => 'required', @@ -178,8 +169,8 @@ class VideoClipsController extends BaseController 'format' => $validData['format'], 'type' => 'video', 'status' => 'queued', - 'podcast_id' => $this->podcast->id, - 'episode_id' => $this->episode->id, + 'podcast_id' => $episode->podcast_id, + 'episode_id' => $episode->id, 'created_by' => user_id(), 'updated_by' => user_id(), ]); @@ -195,13 +186,13 @@ class VideoClipsController extends BaseController (new ClipModel())->insert($videoClip); - return redirect()->route('video-clips-list', [$this->podcast->id, $this->episode->id])->with( + return redirect()->route('video-clips-list', [$episode->podcast_id, $episode->id])->with( 'message', lang('VideoClip.messages.addToQueueSuccess') ); } - public function retry(string $videoClipId): RedirectResponse + public function retryAction(Episode $episode, string $videoClipId): RedirectResponse { $videoClip = (new ClipModel())->getVideoClipById((int) $videoClipId); @@ -218,7 +209,7 @@ class VideoClipsController extends BaseController return redirect()->back(); } - public function delete(string $videoClipId): RedirectResponse + public function deleteAction(Episode $episode, string $videoClipId): RedirectResponse { $videoClip = (new ClipModel())->getVideoClipById((int) $videoClipId); @@ -228,7 +219,7 @@ class VideoClipsController extends BaseController if ($videoClip->media === null) { // delete Clip directly - (new ClipModel())->deleteVideoClip($this->podcast->id, $this->episode->id, $videoClip->id); + (new ClipModel())->deleteVideoClip($episode->podcast_id, $episode->id, $videoClip->id); } else { (new ClipModel())->clearVideoClipCache($videoClip->id); diff --git a/modules/Analytics/AnalyticsTrait.php b/modules/Analytics/AnalyticsTrait.php index 53aa13ef..e7d8a949 100644 --- a/modules/Analytics/AnalyticsTrait.php +++ b/modules/Analytics/AnalyticsTrait.php @@ -16,6 +16,11 @@ trait AnalyticsTrait { protected function registerPodcastWebpageHit(int $podcastId): void { + // Prevent analytics hit when authenticated + if (auth()->loggedIn()) { + return; + } + helper('analytics'); set_user_session_deny_list_ip(); diff --git a/modules/Auth/Config/Routes.php b/modules/Auth/Config/Routes.php index 46c8e324..c33aba71 100644 --- a/modules/Auth/Config/Routes.php +++ b/modules/Auth/Config/Routes.php @@ -26,7 +26,7 @@ $routes->group( ]); $routes->post('magic-link-set-password', 'MagicLinkController::setPasswordAction'); - $routes->post('interact-as-actor', 'InteractController::attemptInteractAsActor', [ + $routes->post('interact-as-actor', 'InteractController::interactAsActorAction', [ 'as' => 'interact-as-actor', ]); @@ -36,11 +36,11 @@ $routes->group( 'as' => 'user-list', 'filter' => 'permission:users.manage', ]); - $routes->get('new', 'UserController::create', [ + $routes->get('new', 'UserController::createView', [ 'as' => 'user-create', 'filter' => 'permission:users.manage', ]); - $routes->post('new', 'UserController::attemptCreate', [ + $routes->post('new', 'UserController::createAction', [ 'filter' => 'permission:users.manage', ]); // User @@ -49,18 +49,18 @@ $routes->group( 'as' => 'user-view', 'filter' => 'permission:users.manage', ]); - $routes->get('edit', 'UserController::edit/$1', [ + $routes->get('edit', 'UserController::editView/$1', [ 'as' => 'user-edit', 'filter' => 'permission:users.manage', ]); - $routes->post('edit', 'UserController::attemptEdit/$1', [ + $routes->post('edit', 'UserController::editAction/$1', [ 'filter' => 'permission:users.manage', ]); $routes->get('delete', 'UserController::delete/$1', [ 'as' => 'user-delete', 'filter' => 'permission:users.manage', ]); - $routes->post('delete', 'UserController::attemptDelete/$1', [ + $routes->post('delete', 'UserController::deleteAction/$1', [ 'as' => 'user-delete', 'filter' => 'permission:users.manage', ]); @@ -74,7 +74,7 @@ $routes->group( $routes->get('change-password', 'MyAccountController::changePassword', [ 'as' => 'change-password', ],); - $routes->post('change-password', 'MyAccountController::attemptChange'); + $routes->post('change-password', 'MyAccountController::changeAction'); }); // Podcast contributors @@ -83,13 +83,13 @@ $routes->group( 'as' => 'contributor-list', 'filter' => 'permission:podcast$1.manage-contributors', ]); - $routes->get('add', 'ContributorController::create/$1', [ + $routes->get('add', 'ContributorController::createView/$1', [ 'as' => 'contributor-add', 'filter' => 'permission:podcast$1.manage-contributors', ]); $routes->post( 'add', - 'ContributorController::attemptCreate/$1', + 'ContributorController::createAction/$1', [ 'filter' => 'permission:podcast$1.manage-contributors', ], @@ -102,7 +102,7 @@ $routes->group( ]); $routes->get( 'edit', - 'ContributorController::edit/$1/$2', + 'ContributorController::editView/$1/$2', [ 'as' => 'contributor-edit', 'filter' => 'permission:podcast$1.manage-contributors', @@ -110,7 +110,7 @@ $routes->group( ); $routes->post( 'edit', - 'ContributorController::attemptEdit/$1/$2', + 'ContributorController::editAction/$1/$2', [ 'filter' => 'permission:podcast$1.manage-contributors', ], @@ -125,7 +125,7 @@ $routes->group( ); $routes->post( 'remove', - 'ContributorController::attemptRemove/$1/$2', + 'ContributorController::removeAction/$1/$2', [ 'filter' => 'permission:podcast$1.manage-contributors', ], diff --git a/modules/Auth/Controllers/ContributorController.php b/modules/Auth/Controllers/ContributorController.php index 2c5c7961..b8df9866 100644 --- a/modules/Auth/Controllers/ContributorController.php +++ b/modules/Auth/Controllers/ContributorController.php @@ -81,7 +81,7 @@ class ContributorController extends BaseController return view('contributor/view', $data); } - public function create(): string + public function createView(): string { helper('form'); @@ -125,7 +125,7 @@ class ContributorController extends BaseController return view('contributor/create', $data); } - public function attemptCreate(): RedirectResponse + public function createAction(): RedirectResponse { /** @var User $user */ $user = (new UserModel())->find((int) $this->request->getPost('user')); @@ -142,7 +142,7 @@ class ContributorController extends BaseController return redirect()->route('contributor-list', [$this->podcast->id]); } - public function edit(): string|RedirectResponse + public function editView(): string|RedirectResponse { helper('form'); @@ -184,7 +184,7 @@ class ContributorController extends BaseController return view('contributor/edit', $data); } - public function attemptEdit(): RedirectResponse + public function editAction(): RedirectResponse { // forbid updating a podcast owner if ($this->podcast->created_by === $this->contributor->id) { @@ -206,7 +206,7 @@ class ContributorController extends BaseController ); } - public function remove(): string + public function deleteView(): string { helper('form'); @@ -225,7 +225,7 @@ class ContributorController extends BaseController return view('contributor/delete', $data); } - public function attemptRemove(): RedirectResponse + public function deleteAction(): RedirectResponse { if ($this->podcast->created_by === $this->contributor->id) { return redirect() diff --git a/modules/Auth/Controllers/InteractController.php b/modules/Auth/Controllers/InteractController.php index b760b9d7..d8281b62 100644 --- a/modules/Auth/Controllers/InteractController.php +++ b/modules/Auth/Controllers/InteractController.php @@ -12,7 +12,7 @@ use CodeIgniter\HTTP\RedirectResponse; */ class InteractController extends Controller { - public function attemptInteractAsActor(): RedirectResponse + public function interactAsActorAction(): RedirectResponse { $rules = [ 'actor_id' => 'required|numeric', diff --git a/modules/Auth/Controllers/MyAccountController.php b/modules/Auth/Controllers/MyAccountController.php index 9c7fef2d..844b0112 100644 --- a/modules/Auth/Controllers/MyAccountController.php +++ b/modules/Auth/Controllers/MyAccountController.php @@ -30,7 +30,7 @@ class MyAccountController extends BaseController return view('my_account/change_password'); } - public function attemptChange(): RedirectResponse + public function changeAction(): RedirectResponse { $rules = [ 'password' => 'required', diff --git a/modules/Auth/Controllers/UserController.php b/modules/Auth/Controllers/UserController.php index dd242f41..0911133f 100644 --- a/modules/Auth/Controllers/UserController.php +++ b/modules/Auth/Controllers/UserController.php @@ -61,7 +61,7 @@ class UserController extends BaseController return view('user/view', $data); } - public function create(): string + public function createView(): string { helper('form'); @@ -70,7 +70,10 @@ class UserController extends BaseController array_walk( $roles, static function (array $role, $key) use (&$roleOptions): array { - $roleOptions[$key] = $role['title']; + $roleOptions[] = [ + 'value' => $key, + 'label' => $role['title'], + ]; return $roleOptions; }, [], @@ -88,7 +91,7 @@ class UserController extends BaseController * Create the user with the provided username and email. The password is set as a random string and a magic link is * sent to the user to allow them setting their password. */ - public function attemptCreate(): RedirectResponse + public function createAction(): RedirectResponse { helper(['text', 'email']); @@ -167,7 +170,7 @@ class UserController extends BaseController ])); } - public function edit(): string + public function editView(): string { helper('form'); @@ -176,7 +179,10 @@ class UserController extends BaseController array_walk( $roles, static function (array $role, $key) use (&$roleOptions): array { - $roleOptions[$key] = $role['title']; + $roleOptions[] = [ + 'value' => $key, + 'label' => $role['title'], + ]; return $roleOptions; }, [], @@ -196,7 +202,7 @@ class UserController extends BaseController return view('user/edit', $data); } - public function attemptEdit(): RedirectResponse + public function editAction(): RedirectResponse { // The instance owner is a superadmin and the only user that cannot be demoted. if ((bool) $this->user->is_owner) { @@ -221,7 +227,7 @@ class UserController extends BaseController ])); } - public function delete(): string + public function deleteView(): string { helper(['form']); @@ -238,7 +244,7 @@ class UserController extends BaseController return view('user/delete', $data); } - public function attemptDelete(): RedirectResponse + public function deleteAction(): RedirectResponse { // You cannot delete the instance owner. if ((bool) $this->user->is_owner) { diff --git a/modules/Fediverse/Config/Routes.php b/modules/Fediverse/Config/Routes.php index b4c469fc..1fb7fe0c 100644 --- a/modules/Fediverse/Config/Routes.php +++ b/modules/Fediverse/Config/Routes.php @@ -52,7 +52,7 @@ $routes->group('', [ 'as' => 'followers', 'filter' => 'fediverse::activity-stream', ]); - $routes->post('follow', 'ActorController::attemptFollow/$1', [ + $routes->post('follow', 'ActorController::followAction/$1', [ 'as' => 'attempt-follow', ]); $routes->get('activities/(:uuid)', 'ActorController::activity/$1/$2', [ @@ -60,7 +60,7 @@ $routes->group('', [ ]); }); // Post - $routes->post('posts/create', 'PostController::attemptCreate/$1', [ + $routes->post('posts/create', 'PostController::createAction/$1', [ 'as' => 'post-attempt-create', ]); $routes->get('posts/(:uuid)', 'PostController::index/$1', [ @@ -71,7 +71,7 @@ $routes->group('', [ ]); $routes->post( 'posts/(:uuid)/remote/(:postAction)', - 'PostController::attemptRemoteAction/$1/$2/$3', + 'PostController::remoteActionAction/$1/$2/$3', [ 'as' => 'post-attempt-remote-action', ], @@ -79,28 +79,28 @@ $routes->group('', [ // Blocking actors and domains $routes->post( 'fediverse-block-actor', - 'BlockController::attemptBlockActor', + 'BlockController::blockActorAction', [ 'as' => 'fediverse-attempt-block-actor', ], ); $routes->post( 'fediverse-block-domain', - 'BlockController::attemptBlockDomain', + 'BlockController::blockDomainAction', [ 'as' => 'fediverse-attempt-block-domain', ], ); $routes->post( 'fediverse-unblock-actor', - 'BlockController::attemptUnblockActor', + 'BlockController::unblockActorAction', [ 'as' => 'fediverse-attempt-unblock-actor', ], ); $routes->post( 'fediverse-unblock-domain', - 'BlockController::attemptUnblockDomain', + 'BlockController::unblockDomainAction', [ 'as' => 'fediverse-attempt-unblock-domain', ], diff --git a/modules/Fediverse/Controllers/ActorController.php b/modules/Fediverse/Controllers/ActorController.php index f5b6d186..90031eaa 100644 --- a/modules/Fediverse/Controllers/ActorController.php +++ b/modules/Fediverse/Controllers/ActorController.php @@ -319,7 +319,7 @@ class ActorController extends Controller ->setBody($followersCollection->toJSON()); } - public function attemptFollow(): RedirectResponse + public function followAction(): RedirectResponse { $rules = [ 'handle' => 'regex_match[/^@?(?P[\w\.\-]+)@(?P[\w\.\-]+)(?P:[\d]+)?$/]', diff --git a/modules/Fediverse/Controllers/BlockController.php b/modules/Fediverse/Controllers/BlockController.php index c279ce4e..e5304b0b 100644 --- a/modules/Fediverse/Controllers/BlockController.php +++ b/modules/Fediverse/Controllers/BlockController.php @@ -21,7 +21,7 @@ class BlockController extends Controller */ protected $helpers = ['fediverse']; - public function attemptBlockActor(): RedirectResponse + public function blockActorAction(): RedirectResponse { $rules = [ 'handle' => 'required|regex_match[/^@?([\w\.\-]+)@([\w\.\-]+)(:[\d]+)?$/]', @@ -58,7 +58,7 @@ class BlockController extends Controller ])); } - public function attemptUnblockActor(): RedirectResponse + public function unblockActorAction(): RedirectResponse { $rules = [ 'actor_id' => 'required', @@ -80,7 +80,7 @@ class BlockController extends Controller ->with('message', lang('Fediverse.messages.unblockActorSuccess')); } - public function attemptBlockDomain(): RedirectResponse + public function blockDomainAction(): RedirectResponse { $rules = [ 'domain' => 'required|regex_match[/^[\w\-\.]+[\w]+(:[\d]+)?/]', @@ -105,7 +105,7 @@ class BlockController extends Controller ])); } - public function attemptUnblockDomain(): RedirectResponse + public function unblockDomainAction(): RedirectResponse { $rules = [ 'domain' => 'required', diff --git a/modules/Fediverse/Controllers/PostController.php b/modules/Fediverse/Controllers/PostController.php index c67ed66c..68d87146 100644 --- a/modules/Fediverse/Controllers/PostController.php +++ b/modules/Fediverse/Controllers/PostController.php @@ -112,7 +112,7 @@ class PostController extends Controller ->setBody($collection->toJSON()); } - public function attemptCreate(): RedirectResponse + public function createAction(): RedirectResponse { $rules = [ 'actor_id' => 'required|is_natural_no_zero', @@ -147,7 +147,7 @@ class PostController extends Controller return redirect()->back(); } - public function attemptFavourite(): RedirectResponse + public function favouriteAction(): RedirectResponse { $rules = [ 'actor_id' => 'required|is_natural_no_zero', @@ -171,7 +171,7 @@ class PostController extends Controller return redirect()->back(); } - public function attemptReblog(): RedirectResponse + public function reblogAction(): RedirectResponse { $rules = [ 'actor_id' => 'required|is_natural_no_zero', @@ -195,7 +195,7 @@ class PostController extends Controller return redirect()->back(); } - public function attemptReply(): RedirectResponse + public function replyAction(): RedirectResponse { $rules = [ 'actor_id' => 'required|is_natural_no_zero', @@ -230,7 +230,7 @@ class PostController extends Controller return redirect()->back(); } - public function attemptRemoteAction(string $action): RedirectResponse | ResponseInterface + public function remoteActionAction(string $action): RedirectResponse | ResponseInterface { $rules = [ 'handle' => 'regex_match[/^@?(?P[\w\.\-]+)@(?P[\w\.\-]+)(?P:[\d]+)?$/]', @@ -277,21 +277,21 @@ class PostController extends Controller ); } - public function attemptBlockActor(): RedirectResponse + public function blockActorAction(): RedirectResponse { model('ActorModel', false)->blockActor($this->post->actor->id); return redirect()->back(); } - public function attemptBlockDomain(): RedirectResponse + public function blockDomainAction(): RedirectResponse { model('BlockedDomainModel', false)->blockDomain($this->post->actor->domain); return redirect()->back(); } - public function attemptDelete(): RedirectResponse + public function deleteAction(): RedirectResponse { model('PostModel', false)->removePost($this->post); diff --git a/modules/Install/Config/Routes.php b/modules/Install/Config/Routes.php index 42aec944..b8620f85 100644 --- a/modules/Install/Config/Routes.php +++ b/modules/Install/Config/Routes.php @@ -19,18 +19,18 @@ $routes->group( $routes->get('/', 'InstallController', [ 'as' => 'install', ]); - $routes->post('instance-config', 'InstallController::attemptInstanceConfig', [ + $routes->post('instance-config', 'InstallController::instanceConfigAction', [ 'as' => 'instance-config', ]); - $routes->post('database-config', 'InstallController::attemptDatabaseConfig', [ + $routes->post('database-config', 'InstallController::databaseConfigAction', [ 'as' => 'database-config', ]); - $routes->post('cache-config', 'InstallController::attemptCacheConfig', [ + $routes->post('cache-config', 'InstallController::cacheConfigAction', [ 'as' => 'cache-config', ]); $routes->post( 'create-superadmin', - 'InstallController::attemptCreateSuperAdmin', + 'InstallController::createSuperAdminAction', [ 'as' => 'create-superadmin', ], diff --git a/modules/Install/Controllers/InstallController.php b/modules/Install/Controllers/InstallController.php index 8c421285..587dca32 100644 --- a/modules/Install/Controllers/InstallController.php +++ b/modules/Install/Controllers/InstallController.php @@ -75,7 +75,7 @@ class InstallController extends Controller $dotenv->required(['app.baseURL', 'analytics.salt', 'admin.gateway', 'auth.gateway']); } catch (ValidationException) { // form to input instance configuration - return $this->instanceConfig(); + return $this->instanceConfigView(); } try { @@ -87,13 +87,13 @@ class InstallController extends Controller 'database.default.DBPrefix', ]); } catch (ValidationException) { - return $this->databaseConfig(); + return $this->databaseConfigView(); } try { $dotenv->required('cache.handler'); } catch (ValidationException) { - return $this->cacheConfig(); + return $this->cacheConfigView(); } } else { try { @@ -130,7 +130,7 @@ class InstallController extends Controller session() ->setFlashdata('error', lang('Install.messages.databaseConnectError')); - return $this->databaseConfig(); + return $this->databaseConfigView(); } // migrate if no user has been created @@ -139,15 +139,15 @@ class InstallController extends Controller // Check if all seeds have succeeded $this->seed(); - return $this->createSuperAdmin(); + return $this->createSuperAdminView(); } - public function instanceConfig(): string + public function instanceConfigView(): string { return view('instance_config'); } - public function attemptInstanceConfig(): RedirectResponse + public function instanceConfigAction(): RedirectResponse { $rules = [ 'hostname' => 'required|valid_url_strict', @@ -181,12 +181,12 @@ class InstallController extends Controller return redirect()->to(reduce_double_slashes($baseUrl . '/' . config('Install')->gateway)); } - public function databaseConfig(): string + public function databaseConfigView(): string { return view('database_config'); } - public function attemptDatabaseConfig(): RedirectResponse + public function databaseConfigAction(): RedirectResponse { $rules = [ 'db_hostname' => 'required', @@ -215,12 +215,12 @@ class InstallController extends Controller return redirect()->back(); } - public function cacheConfig(): string + public function cacheConfigView(): string { return view('cache_config'); } - public function attemptCacheConfig(): RedirectResponse + public function cacheConfigAction(): RedirectResponse { $rules = [ 'cache_handler' => 'required', @@ -267,7 +267,7 @@ class InstallController extends Controller /** * Returns the form to create a the first superadmin user for the instance. */ - public function createSuperAdmin(): string + public function createSuperAdminView(): string { return view('create_superadmin'); } @@ -277,7 +277,7 @@ class InstallController extends Controller * * After creation, user is redirected to login page to input its credentials. */ - public function attemptCreateSuperAdmin(): RedirectResponse + public function createSuperAdminAction(): RedirectResponse { // validate user password $rules = [ diff --git a/modules/Platforms/Config/Routes.php b/modules/Platforms/Config/Routes.php index fd017434..fb64efc7 100644 --- a/modules/Platforms/Config/Routes.php +++ b/modules/Platforms/Config/Routes.php @@ -21,7 +21,7 @@ $routes->group( $routes->group('podcasts/(:num)/platforms', static function ($routes): void { $routes->get( '/', - 'PlatformController::platforms/$1/podcasting', + 'PlatformController::list/$1/podcasting', [ 'as' => 'platforms-podcasting', 'filter' => 'permission:podcast$1.manage-platforms', @@ -29,7 +29,7 @@ $routes->group( ); $routes->get( 'social', - 'PlatformController::platforms/$1/social', + 'PlatformController::list/$1/social', [ 'as' => 'platforms-social', 'filter' => 'permission:podcast$1.manage-platforms', @@ -37,7 +37,7 @@ $routes->group( ); $routes->get( 'funding', - 'PlatformController::platforms/$1/funding', + 'PlatformController::list/$1/funding', [ 'as' => 'platforms-funding', 'filter' => 'permission:podcast$1.manage-platforms', @@ -45,7 +45,7 @@ $routes->group( ); $routes->post( 'save/(:platformType)', - 'PlatformController::attemptPlatformsUpdate/$1/$2', + 'PlatformController::updateAction/$1/$2', [ 'as' => 'platforms-save', 'filter' => 'permission:podcast$1.manage-platforms', @@ -53,7 +53,7 @@ $routes->group( ); $routes->get( '(:platformType)/(:slug)/podcast-platform-remove', - 'PlatformController::removePlatform/$1/$2/$3', + 'PlatformController::removeAction/$1/$2/$3', [ 'as' => 'podcast-platform-remove', 'filter' => 'permission:podcast$1.manage-platforms', diff --git a/modules/Platforms/Controllers/PlatformController.php b/modules/Platforms/Controllers/PlatformController.php index b104ec7a..1140f748 100644 --- a/modules/Platforms/Controllers/PlatformController.php +++ b/modules/Platforms/Controllers/PlatformController.php @@ -45,7 +45,7 @@ class PlatformController extends BaseController return view('podcast/platforms/dashboard'); } - public function platforms(string $platformType): string + public function list(string $platformType): string { helper('form'); @@ -62,7 +62,7 @@ class PlatformController extends BaseController return view('podcast/platforms', $data); } - public function attemptPlatformsUpdate(string $platformType): RedirectResponse + public function updateAction(string $platformType): RedirectResponse { $platformModel = new PlatformModel(); $validation = Services::validation(); @@ -99,7 +99,7 @@ class PlatformController extends BaseController ->with('message', lang('Platforms.messages.updateSuccess')); } - public function removePlatform(string $platformType, string $platformSlug): RedirectResponse + public function removeAction(string $platformType, string $platformSlug): RedirectResponse { (new PlatformModel())->removePlatform($this->podcast->id, $platformType, $platformSlug); diff --git a/modules/PremiumPodcasts/Config/Routes.php b/modules/PremiumPodcasts/Config/Routes.php index b8060be3..e9501417 100644 --- a/modules/PremiumPodcasts/Config/Routes.php +++ b/modules/PremiumPodcasts/Config/Routes.php @@ -23,18 +23,18 @@ $routes->group( 'as' => 'subscription-list', 'filter' => 'permission:podcast$1.manage-subscriptions', ]); - $routes->get('new', 'SubscriptionController::create/$1', [ + $routes->get('new', 'SubscriptionController::createView/$1', [ 'as' => 'subscription-create', 'filter' => 'permission:podcast$1.manage-subscriptions', ]); $routes->post( 'new', - 'SubscriptionController::attemptCreate/$1', + 'SubscriptionController::createAction/$1', [ 'filter' => 'permission:podcast$1.manage-subscriptions', ], ); - $routes->post('save-link', 'SubscriptionController::attemptLinkSave/$1', [ + $routes->post('save-link', 'SubscriptionController::linkSaveAction/$1', [ 'as' => 'subscription-link-save', 'filter' => 'permission:podcast$1.manage-subscriptions', ]); @@ -46,7 +46,7 @@ $routes->group( ]); $routes->get( 'edit', - 'SubscriptionController::edit/$1/$2', + 'SubscriptionController::editView/$1/$2', [ 'as' => 'subscription-edit', 'filter' => 'permission:podcast$1.manage-subscriptions', @@ -54,7 +54,7 @@ $routes->group( ); $routes->post( 'edit', - 'SubscriptionController::attemptEdit/$1/$2', + 'SubscriptionController::editAction/$1/$2', [ 'as' => 'subscription-edit', 'filter' => 'permission:podcast$1.manage-subscriptions', @@ -78,7 +78,7 @@ $routes->group( ); $routes->post( 'suspend', - 'SubscriptionController::attemptSuspend/$1/$2', + 'SubscriptionController::suspendAction/$1/$2', [ 'filter' => 'permission:podcast$1.manage-subscriptions', ], @@ -101,7 +101,7 @@ $routes->group( ); $routes->post( 'delete', - 'SubscriptionController::attemptDelete/$1/$2', + 'SubscriptionController::deleteAction/$1/$2', [ 'filter' => 'permission:podcast$1.manage-subscriptions', ], @@ -120,10 +120,10 @@ $routes->group( $routes->get('unlock', 'LockController::index/$1', [ 'as' => 'premium-podcast-unlock', ]); - $routes->post('unlock', 'LockController::attemptUnlock/$1', [ + $routes->post('unlock', 'LockController::unlockAction/$1', [ 'as' => 'premium-podcast-unlock', ]); - $routes->get('lock', 'LockController::attemptLock/$1', [ + $routes->get('lock', 'LockController::lockAction/$1', [ 'as' => 'premium-podcast-lock', ]); } diff --git a/modules/PremiumPodcasts/Controllers/LockController.php b/modules/PremiumPodcasts/Controllers/LockController.php index bcd53e22..5b91fcf2 100644 --- a/modules/PremiumPodcasts/Controllers/LockController.php +++ b/modules/PremiumPodcasts/Controllers/LockController.php @@ -58,7 +58,7 @@ class LockController extends BaseController return view('podcast/unlock', $data); } - public function attemptUnlock(): RedirectResponse + public function unlockAction(): RedirectResponse { $rules = [ 'token' => 'required', @@ -91,7 +91,7 @@ class LockController extends BaseController ->with('message', lang('PremiumPodcasts.messages.unlockSuccess')); } - public function attemptLock(): RedirectResponse + public function lockAction(): RedirectResponse { $this->premiumPodcasts->lock($this->podcast->handle); diff --git a/modules/PremiumPodcasts/Controllers/SubscriptionController.php b/modules/PremiumPodcasts/Controllers/SubscriptionController.php index 54182140..1088a331 100644 --- a/modules/PremiumPodcasts/Controllers/SubscriptionController.php +++ b/modules/PremiumPodcasts/Controllers/SubscriptionController.php @@ -66,7 +66,7 @@ class SubscriptionController extends BaseController return view('subscription/list', $data); } - public function attemptLinkSave(): RedirectResponse + public function linkSaveAction(): RedirectResponse { $rules = [ 'subscription_link' => 'valid_url_strict|permit_empty', @@ -118,7 +118,7 @@ class SubscriptionController extends BaseController return view('subscription/view', $data); } - public function create(): string + public function createView(): string { helper('form'); @@ -133,7 +133,7 @@ class SubscriptionController extends BaseController return view('subscription/create', $data); } - public function attemptCreate(): RedirectResponse + public function createAction(): RedirectResponse { helper('text'); @@ -244,7 +244,7 @@ class SubscriptionController extends BaseController ); } - public function edit(): string + public function editView(): string { helper('form'); @@ -261,7 +261,7 @@ class SubscriptionController extends BaseController return view('subscription/edit', $data); } - public function attemptEdit(): RedirectResponse + public function editAction(): RedirectResponse { $expiresAt = null; $expirationDate = $this->request->getPost('expiration_date'); @@ -330,7 +330,7 @@ class SubscriptionController extends BaseController return view('subscription/suspend', $data); } - public function attemptSuspend(): RedirectResponse + public function suspendAction(): RedirectResponse { $db = db_connect(); $db->transStart(); @@ -426,7 +426,7 @@ class SubscriptionController extends BaseController return view('subscription/delete', $data); } - public function attemptDelete(): RedirectResponse + public function deleteAction(): RedirectResponse { $db = db_connect(); $db->transStart(); diff --git a/tests/modules/Plugins/PluginsTest.php b/tests/modules/Plugins/PluginsTest.php index a27e232c..3e087131 100644 --- a/tests/modules/Plugins/PluginsTest.php +++ b/tests/modules/Plugins/PluginsTest.php @@ -117,7 +117,11 @@ final class PluginsTest extends CIUnitTestCase $this->assertEquals( (string) $head, - ' foo foo diff --git a/app/Libraries/Router.php b/app/Libraries/Router.php index 902c8c43..a7ad1196 100644 --- a/app/Libraries/Router.php +++ b/app/Libraries/Router.php @@ -15,9 +15,10 @@ declare(strict_types=1); namespace App\Libraries; use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\Router\Exceptions\RedirectException; +use CodeIgniter\HTTP\Exceptions\RedirectException; use CodeIgniter\Router\Exceptions\RouterException; use CodeIgniter\Router\Router as CodeIgniterRouter; +use Config\Routing; use Override; class Router extends CodeIgniterRouter @@ -68,7 +69,7 @@ class Router extends CodeIgniterRouter throw new RedirectException( preg_replace('#^' . $routeKey . '$#u', (string) $redirectTo, $uri), - $this->collection->getRedirectCode($routeKey) + $this->collection->getRedirectCode($routeKey), ); } @@ -78,7 +79,7 @@ class Router extends CodeIgniterRouter preg_match( '#^' . str_replace('{locale}', '(?[^/]+)', $matchedKey) . '$#u', $uri, - $matched + $matched, ); if ($this->collection->shouldUseSupportedLocalesOnly() @@ -181,24 +182,50 @@ class Router extends CodeIgniterRouter return true; } - [$controller] = explode('::', (string) $handler); + if (str_contains((string) $handler, '::')) { + [$controller, $methodAndParams] = explode('::', (string) $handler); + } else { + $controller = $handler; + $methodAndParams = ''; + } // Checks `/` in controller name - if (str_contains($controller, '/')) { + if (str_contains((string) $controller, '/')) { throw RouterException::forInvalidControllerName($handler); } if (str_contains((string) $handler, '$') && str_contains($routeKey, '(')) { // Checks dynamic controller - if (str_contains($controller, '$')) { + if (str_contains((string) $controller, '$')) { throw RouterException::forDynamicController($handler); } - // Using back-references - $handler = preg_replace('#^' . $routeKey . '$#u', (string) $handler, $uri); + if (config(Routing::class)->multipleSegmentsOneParam === false) { + // Using back-references + $segments = explode( + '/', + (string) preg_replace('#\A' . $routeKey . '\z#u', (string) $handler, $uri), + ); + } else { + if (str_contains($methodAndParams, '/')) { + [$method, $handlerParams] = explode('/', $methodAndParams, 2); + $params = explode('/', $handlerParams); + $handlerSegments = array_merge([$controller . '::' . $method], $params); + } else { + $handlerSegments = [$handler]; + } + + $segments = []; + + foreach ($handlerSegments as $segment) { + $segments[] = $this->replaceBackReferences($segment, $matches); + } + } + } else { + $segments = explode('/', (string) $handler); } - $this->setRequest(explode('/', (string) $handler)); + $this->setRequest($segments); $this->setMatchedRoute($matchedKey, $handler); diff --git a/app/Libraries/RssFeed.php b/app/Libraries/RssFeed.php index 44b959c5..7c34040b 100644 --- a/app/Libraries/RssFeed.php +++ b/app/Libraries/RssFeed.php @@ -35,7 +35,7 @@ class RssFeed extends SimpleXMLElement $this::ATOM_NAMESPACE, $this::ITUNES_NAMESPACE, $this::PODCAST_NAMESPACE, - $contents + $contents, )); } diff --git a/app/Libraries/ViewComponents/Component.php b/app/Libraries/ViewComponents/Component.php index 8cddcf38..eaf9744a 100644 --- a/app/Libraries/ViewComponents/Component.php +++ b/app/Libraries/ViewComponents/Component.php @@ -53,7 +53,7 @@ abstract class Component implements ComponentInterface 'boolean' => $value === 'true', 'number' => (int) $value, 'array' => json_decode(htmlspecialchars_decode($value), true), - default => $value + default => $value, }; } diff --git a/app/Libraries/ViewThemes/Theme.php b/app/Libraries/ViewThemes/Theme.php index 51d69ffe..b1b9b008 100644 --- a/app/Libraries/ViewThemes/Theme.php +++ b/app/Libraries/ViewThemes/Theme.php @@ -46,7 +46,7 @@ class Theme /** * Returns the path to the specified theme folder. If no theme is provided, will use the current theme. */ - public static function path(string $theme = null): string + public static function path(?string $theme = null): string { if ($theme === null) { $theme = static::current(); diff --git a/app/Libraries/Vite/Config/Services.php b/app/Libraries/Vite/Config/Services.php deleted file mode 100644 index cd5adfde..00000000 --- a/app/Libraries/Vite/Config/Services.php +++ /dev/null @@ -1,30 +0,0 @@ -|null - */ - protected ?array $manifestData = null; - - /** - * @var array|null - */ - protected ?array $manifestCSSData = null; - - public function asset(string $path, string $type): string - { - if (config('Vite')->environment !== 'production') { - return $this->loadDev($path, $type); - } - - return $this->loadProd($path, $type); - } - - private function loadDev(string $path, string $type): string - { - return $this->getHtmlTag(config('Vite') ->baseUrl . config('Vite')->assetsRoot . "/{$path}", $type); - } - - private function loadProd(string $path, string $type): string - { - if ($this->manifestData === null) { - $cacheName = 'vite-manifest'; - if (! ($cachedManifest = cache($cacheName))) { - $manifestPath = config('Vite') - ->assetsRoot . '/' . config('Vite') - ->manifestFile; - try { - if (($manifestContents = file_get_contents($manifestPath)) !== false) { - $cachedManifest = json_decode($manifestContents, true); - cache() - ->save($cacheName, $cachedManifest, DECADE); - } - } catch (ErrorException) { - // ERROR when retrieving the manifest file - die("Could not load manifest: {$manifestPath} file not found!"); - } - } - - $this->manifestData = $cachedManifest; - } - - $html = ''; - if (array_key_exists($path, $this->manifestData)) { - $manifestElement = $this->manifestData[$path]; - - // import css dependencies if any - if (array_key_exists('css', $manifestElement)) { - foreach ($manifestElement['css'] as $cssFile) { - $html .= $this->getHtmlTag('/' . config('Vite')->assetsRoot . '/' . $cssFile, 'css'); - } - } - - // import dependencies first for faster js loading - if (array_key_exists('imports', $manifestElement)) { - foreach ($manifestElement['imports'] as $importPath) { - if (array_key_exists($importPath, $this->manifestData)) { - // import css dependencies if any - if (array_key_exists('css', $this->manifestData[$importPath])) { - foreach ($this->manifestData[$importPath]['css'] as $cssFile) { - $html .= $this->getHtmlTag( - '/' . config('Vite')->assetsRoot . '/' . $cssFile, - 'css' - ); - } - } - - $html .= $this->getHtmlTag( - '/' . config('Vite')->assetsRoot . '/' . $this->manifestData[$importPath]['file'], - 'js' - ); - } - } - } - - $html .= $this->getHtmlTag('/' . config('Vite')->assetsRoot . '/' . $manifestElement['file'], $type); - } - - return $html; - } - - private function getHtmlTag(string $assetUrl, string $type): string - { - return match ($type) { - 'css' => << - HTML - , - 'js' => << - HTML - , - default => '', - }; - } -} diff --git a/app/Models/ClipModel.php b/app/Models/ClipModel.php index 16acbcfc..b65168d8 100644 --- a/app/Models/ClipModel.php +++ b/app/Models/ClipModel.php @@ -67,8 +67,8 @@ class ClipModel extends Model public function __construct( protected string $type = 'audio', - ConnectionInterface &$db = null, - ValidationInterface $validation = null + ?ConnectionInterface &$db = null, + ?ValidationInterface $validation = null, ) { switch ($type) { case 'audio': diff --git a/app/Models/EpisodeCommentModel.php b/app/Models/EpisodeCommentModel.php index f9954dc3..95adb292 100644 --- a/app/Models/EpisodeCommentModel.php +++ b/app/Models/EpisodeCommentModel.php @@ -102,7 +102,7 @@ class EpisodeCommentModel extends UuidModel 'episode-comment', esc($comment->actor->username), $comment->episode->slug, - $comment->id + $comment->id, ); $createActivity = new CreateActivity(); @@ -211,7 +211,7 @@ class EpisodeCommentModel extends UuidModel $postModel = new PostModel(); $episodePostsRepliesBuilder = $postModel->builder(); $episodePostsReplies = $episodePostsRepliesBuilder->select( - 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, favourites_count as likes_count, replies_count, published_at as created_at, created_by, 1 as is_from_post' + 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, favourites_count as likes_count, replies_count, published_at as created_at, created_by, 1 as is_from_post', ) ->whereIn('in_reply_to_id', static function (BaseBuilder $builder) use (&$episodeId): BaseBuilder { return $builder->select('id') @@ -226,12 +226,12 @@ class EpisodeCommentModel extends UuidModel /** @var BaseResult $allEpisodeComments */ $allEpisodeComments = $this->db->query( - $episodeComments . ' UNION ' . $episodePostsReplies . ' ORDER BY created_at ASC' + $episodeComments . ' UNION ' . $episodePostsReplies . ' ORDER BY created_at ASC', ); return $this->convertUuidFieldsToStrings( $allEpisodeComments->getCustomResultObject($this->tempReturnType), - $this->tempReturnType + $this->tempReturnType, ); } diff --git a/app/Models/EpisodeModel.php b/app/Models/EpisodeModel.php index 9ec14a54..a771431c 100644 --- a/app/Models/EpisodeModel.php +++ b/app/Models/EpisodeModel.php @@ -235,8 +235,8 @@ class EpisodeModel extends UuidModel public function getPodcastEpisodes( int $podcastId, string $podcastType, - string $year = null, - string $season = null + ?string $year = null, + ?string $season = null, ): array { $cacheName = implode( '_', @@ -347,7 +347,7 @@ class EpisodeModel extends UuidModel { $result = $this->builder() ->select( - 'COUNT(DISTINCT season_number) as number_of_seasons, COUNT(*) as number_of_episodes, MIN(published_at) as first_published_at' + 'COUNT(DISTINCT season_number) as number_of_seasons, COUNT(*) as number_of_episodes, MIN(published_at) as first_published_at', ) ->where('podcast_id', $podcastId) ->where('`published_at` <= UTC_TIMESTAMP()', null, false) @@ -384,7 +384,7 @@ class EpisodeModel extends UuidModel /** @var BaseResult $query */ $query = $this->db->query( - 'SELECT `episode_id` as `id`, SUM(`comments_count`) as `comments_count` FROM (' . $episodeCommentsCount . ' UNION ALL ' . $episodePostsRepliesCount . ') x GROUP BY `episode_id`' + 'SELECT `episode_id` as `id`, SUM(`comments_count`) as `comments_count` FROM (' . $episodeCommentsCount . ' UNION ALL ' . $episodePostsRepliesCount . ') x GROUP BY `episode_id`', ); $countsPerEpisodeId = $query->getResultArray(); @@ -480,7 +480,7 @@ class EpisodeModel extends UuidModel ') ->select("{$podcastTable}.created_at AS podcast_created_at") ->select( - "{$podcastTable}.title as podcast_title, {$podcastTable}.handle as podcast_handle, {$podcastTable}.description_markdown as podcast_description_markdown" + "{$podcastTable}.title as podcast_title, {$podcastTable}.handle as podcast_handle, {$podcastTable}.description_markdown as podcast_description_markdown", ) ->join($podcastTable, "{$podcastTable} on {$podcastTable}.id = {$episodeTable}.podcast_id") ->where(' @@ -489,7 +489,7 @@ class EpisodeModel extends UuidModel . 'OR' . $podcastModel->getFullTextMatchClauseForPodcasts($podcastTable, $query) . ') - '); + ', ); return $this->builder; } diff --git a/app/Models/PersonModel.php b/app/Models/PersonModel.php index 1c78007d..15509870 100644 --- a/app/Models/PersonModel.php +++ b/app/Models/PersonModel.php @@ -145,7 +145,7 @@ class PersonModel extends Model $this->select('`id`, `full_name`') ->orderBy('`full_name`', 'ASC') ->findAll(), - static function (array $result, $person): array { + static function (array $result, Person $person): array { $result[] = [ 'value' => $person->id, 'label' => $person->full_name, @@ -215,7 +215,7 @@ class PersonModel extends Model if (! ($found = cache($cacheName))) { $this->builder() ->select( - 'persons.*, episodes_persons.podcast_id as podcast_id, episodes_persons.episode_id as episode_id' + 'persons.*, episodes_persons.podcast_id as podcast_id, episodes_persons.episode_id as episode_id', ) ->distinct() ->join('episodes_persons', 'persons.id = episodes_persons.person_id') @@ -257,7 +257,7 @@ class PersonModel extends Model int $episodeId, int $personId, string $groupSlug, - string $roleSlug + string $roleSlug, ): bool { return $this->db->table('episodes_persons') ->insert([ diff --git a/app/Models/PodcastModel.php b/app/Models/PodcastModel.php index 90f62bf0..9b97f753 100644 --- a/app/Models/PodcastModel.php +++ b/app/Models/PodcastModel.php @@ -163,7 +163,7 @@ class PodcastModel extends Model /** * @return Podcast[] */ - public function getAllPodcasts(string $orderBy = null): array + public function getAllPodcasts(?string $orderBy = null): array { $prefix = $this->db->getPrefix(); @@ -175,7 +175,7 @@ class PodcastModel extends Model ->where( '`' . $prefix . 'fediverse_posts`.`published_at` <= UTC_TIMESTAMP()', null, - false + false, )->orWhere('fediverse_posts.published_at', null) ->groupEnd() ->groupBy('podcasts.actor_id') @@ -478,7 +478,7 @@ class PodcastModel extends Model { if (! array_key_exists( 'guid', - $data['data'] + $data['data'], ) || $data['data']['guid'] === null || $data['data']['guid'] === '') { $uuid = service('uuid'); $feedUrl = url_to('podcast-rss-feed', $data['data']['handle']); diff --git a/app/Resources/images/castopod-logo-base.svg b/app/Resources/images/castopod-logo-base.svg deleted file mode 100644 index 482eebfe..00000000 --- a/app/Resources/images/castopod-logo-base.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/Resources/images/castopod-logo.svg b/app/Resources/images/castopod-logo.svg deleted file mode 100644 index 039deb74..00000000 --- a/app/Resources/images/castopod-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/Resources/images/castopod-mascot_confused.svg b/app/Resources/images/castopod-mascot_confused.svg deleted file mode 100644 index ab32c445..00000000 --- a/app/Resources/images/castopod-mascot_confused.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/Resources/js/admin.ts b/app/Resources/js/admin.ts deleted file mode 100644 index abef7b9a..00000000 --- a/app/Resources/js/admin.ts +++ /dev/null @@ -1,43 +0,0 @@ -import "@github/markdown-toolbar-element"; -import "@github/relative-time-element"; -import "./modules/audio-clipper"; -import ClientTimezone from "./modules/ClientTimezone"; -import Clipboard from "./modules/Clipboard"; -import DateTimePicker from "./modules/DateTimePicker"; -import Dropdown from "./modules/Dropdown"; -import HotKeys from "./modules/HotKeys"; -import "./modules/markdown-preview"; -import "./modules/markdown-write-preview"; -import SelectMulti from "./modules/SelectMulti"; -import "./modules/permalink-edit"; -import "./modules/play-soundbite"; -import PublishMessageWarning from "./modules/PublishMessageWarning"; -import Select from "./modules/Select"; -import SidebarToggler from "./modules/SidebarToggler"; -import Slugify from "./modules/Slugify"; -import ThemePicker from "./modules/ThemePicker"; -import Time from "./modules/Time"; -import Tooltip from "./modules/Tooltip"; -import ValidateFileSize from "./modules/ValidateFileSize"; -import "./modules/video-clip-previewer"; -import VideoClipBuilder from "./modules/VideoClipBuilder"; -import "./modules/code-editor"; -import "@patternfly/elements/pf-tabs/pf-tabs.js"; -import FieldArray from "./modules/FieldArray"; - -Dropdown(); -Tooltip(); -Select(); -SelectMulti(); -Slugify(); -SidebarToggler(); -ClientTimezone(); -DateTimePicker(); -Time(); -Clipboard(); -ThemePicker(); -PublishMessageWarning(); -HotKeys(); -ValidateFileSize(); -VideoClipBuilder(); -FieldArray(); diff --git a/app/Resources/js/app.ts b/app/Resources/js/app.ts deleted file mode 100644 index 7b944f47..00000000 --- a/app/Resources/js/app.ts +++ /dev/null @@ -1,5 +0,0 @@ -import Dropdown from "./modules/Dropdown"; -import Tooltip from "./modules/Tooltip"; - -Dropdown(); -Tooltip(); diff --git a/app/Resources/js/charts.ts b/app/Resources/js/charts.ts deleted file mode 100644 index 97b2c4d9..00000000 --- a/app/Resources/js/charts.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DrawCharts from "./modules/Charts"; - -DrawCharts(); diff --git a/app/Resources/js/install.ts b/app/Resources/js/install.ts deleted file mode 100644 index e3bb9d53..00000000 --- a/app/Resources/js/install.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Tooltip from "./modules/Tooltip"; - -Tooltip(); diff --git a/app/Resources/js/map.ts b/app/Resources/js/map.ts deleted file mode 100644 index 195a97d0..00000000 --- a/app/Resources/js/map.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DrawEpisodesMaps from "./modules/EpisodesMap"; - -DrawEpisodesMaps(); diff --git a/app/Resources/js/podcast.ts b/app/Resources/js/podcast.ts deleted file mode 100644 index 1d53a99f..00000000 --- a/app/Resources/js/podcast.ts +++ /dev/null @@ -1,10 +0,0 @@ -import "@github/relative-time-element"; -import SidebarToggler from "./modules/SidebarToggler"; -import Time from "./modules/Time"; -import Toggler from "./modules/Toggler"; -import Tooltip from "./modules/Tooltip"; - -Time(); -Toggler(); -Tooltip(); -SidebarToggler(); diff --git a/app/Resources/styles/index.css b/app/Resources/styles/index.css deleted file mode 100644 index b894e7a3..00000000 --- a/app/Resources/styles/index.css +++ /dev/null @@ -1,15 +0,0 @@ -@import url("./tailwind.css"); -@import url("./custom.css"); -@import url("./fonts.css"); -@import url("./colors.css"); -@import url("./breadcrumb.css"); -@import url("./dropdown.css"); -@import url("./choices.css"); -@import url("./radioBtn.css"); -@import url("./colorRadioBtn.css"); -@import url("./switch.css"); -@import url("./radioToggler.css"); -@import url("./formInputTabs.css"); -@import url("./stickyHeader.css"); -@import url("./readMore.css"); -@import url("./seeMore.css"); diff --git a/app/Validation/FileRules.php b/app/Validation/FileRules.php index 579ec3ca..2a149d46 100644 --- a/app/Validation/FileRules.php +++ b/app/Validation/FileRules.php @@ -11,13 +11,15 @@ declare(strict_types=1); namespace App\Validation; use CodeIgniter\Validation\FileRules as ValidationFileRules; +use Override; class FileRules extends ValidationFileRules { /** * Checks an uploaded file to verify that the dimensions are within a specified allowable dimension. */ - public function min_dims(string $blank = null, string $params = ''): bool + #[Override] + public function min_dims(?string $blank = null, string $params = ''): bool { // Grab the file name off the top of the $params // after we split it. @@ -59,7 +61,7 @@ class FileRules extends ValidationFileRules /** * Checks an uploaded image to verify that the ratio corresponds to the params */ - public function is_image_ratio(string $blank = null, string $params = ''): bool + public function is_image_ratio(?string $blank = null, string $params = ''): bool { // Grab the file name off the top of the $params // after we split it. @@ -99,7 +101,7 @@ class FileRules extends ValidationFileRules /** * Checks that an uploaded json file's content is valid */ - public function is_json(string $blank = null, string $params = ''): bool + public function is_json(?string $blank = null, string $params = ''): bool { // Grab the file name off the top of the $params // after we split it. diff --git a/app/Views/Components/Forms/FormComponent.php b/app/Views/Components/Forms/FormComponent.php index 4d8c31d8..bcc46b26 100644 --- a/app/Views/Components/Forms/FormComponent.php +++ b/app/Views/Components/Forms/FormComponent.php @@ -76,7 +76,7 @@ abstract class FormComponent extends Component return old( $this->name, - in_array($this->value, ['', null], true) ? $this->defaultValue : $this->value + in_array($this->value, ['', null], true) ? $this->defaultValue : $this->value, ) ?? ''; } } diff --git a/app/Views/Components/Forms/MarkdownEditor.php b/app/Views/Components/Forms/MarkdownEditor.php index 027d28ad..0549fd05 100644 --- a/app/Views/Components/Forms/MarkdownEditor.php +++ b/app/Views/Components/Forms/MarkdownEditor.php @@ -31,7 +31,7 @@ class MarkdownEditor extends FormComponent $textarea = form_textarea( $this->attributes, - $this->getValue() + $this->getValue(), ); $markdownIcon = (string) icon('markdown-fill', [ 'class' => 'mr-1 text-lg opacity-40', diff --git a/app/Views/errors/html/debug.css b/app/Views/errors/html/debug.css index a17243d0..a022fcd0 100644 --- a/app/Views/errors/html/debug.css +++ b/app/Views/errors/html/debug.css @@ -11,8 +11,9 @@ body { height: 100%; background: var(--main-bg-color); - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, - sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; color: var(--main-text-color); font-weight: 300; margin: 0; @@ -48,6 +49,7 @@ p.lead { .header { background: var(--light-bg-color); color: var(--dark-text-color); + margin-top: 2.17rem; } .header .container { @@ -77,10 +79,13 @@ p.lead { } .environment { - background: var(--dark-bg-color); - color: var(--light-text-color); + background: var(--brand-primary-color); + color: var(--main-bg-color); text-align: center; - padding: 0.2rem; + padding: calc(4px + 0.2083vw); + width: 100%; + margin-top: -2.14rem; + position: fixed; } .source { diff --git a/app/Views/errors/html/error_400.php b/app/Views/errors/html/error_400.php new file mode 100644 index 00000000..555da042 --- /dev/null +++ b/app/Views/errors/html/error_400.php @@ -0,0 +1,84 @@ + + + + + <?= lang('Errors.badRequest') ?> + + + + +
+

400

+ +

+ + + + + +

+
+ + diff --git a/composer.json b/composer.json index 26acb97e..6fe46ddb 100644 --- a/composer.json +++ b/composer.json @@ -6,13 +6,13 @@ "homepage": "https://castopod.org", "license": "AGPL-3.0-or-later", "require": { - "php": "^8.3", + "php": "^8.4", "adaures/ipcat-php": "^v1.0.0", "adaures/podcast-persons-taxonomy": "^v1.0.1", - "aws/aws-sdk-php": "^3.336.6", + "aws/aws-sdk-php": "^3.342.5", "chrisjean/php-ico": "^1.0.4", "cocur/slugify": "^v4.6.0", - "codeigniter4/framework": "v4.5.6", + "codeigniter4/framework": "v4.6.0", "codeigniter4/settings": "v2.2.0", "codeigniter4/shield": "v1.1.0", "codeigniter4/tasks": "dev-develop", @@ -22,24 +22,25 @@ "league/html-to-markdown": "5.1.1", "melbahja/seo": "^v2.1.1", "michalsn/codeigniter4-uuid": "v1.1.0", - "mpratt/embera": "^2.0.41", + "mpratt/embera": "^2.0.42", "opawg/user-agents-v2-php": "dev-main", "phpseclib/phpseclib": "~2.0.48", "vlucas/phpdotenv": "v5.6.1", "whichbrowser/parser": "^v2.1.8", + "yassinedoghri/codeigniter-vite": "^v1.1.0", "yassinedoghri/php-icons": "^v1.2.0", "yassinedoghri/podcast-feed": "dev-main" }, "require-dev": { - "captainhook/captainhook": "^5.24.1", - "codeigniter/phpstan-codeigniter": "v1.5.1", + "captainhook/captainhook": "^5.25.0", + "codeigniter/phpstan-codeigniter": "v1.5.3", "mikey179/vfsstream": "^v1.6.12", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.0.4", - "phpunit/phpunit": "^11.5.2", - "rector/rector": "^2.0.4", + "phpstan/phpstan": "^2.1.8", + "phpunit/phpunit": "^11.5.12", + "rector/rector": "^2.0.10", "symplify/coding-standard": "^12.2.3", - "symplify/easy-coding-standard": "^12.5.4" + "symplify/easy-coding-standard": "^12.5.8" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index cf8f74a7..230da8ef 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6b99aa0bcdbc76f94b529ba8c5ff0ee7", + "content-hash": "b16de9c68628342bb1bbfda30d42f788", "packages": [ { "name": "adaures/ipcat-php", @@ -189,16 +189,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.336.6", + "version": "3.342.5", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "0a99dab427f0a1c082775301141aeac3558691ad" + "reference": "00523323c202121d2cc2e893a1bb7ff14928a5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/0a99dab427f0a1c082775301141aeac3558691ad", - "reference": "0a99dab427f0a1c082775301141aeac3558691ad", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/00523323c202121d2cc2e893a1bb7ff14928a5bb", + "reference": "00523323c202121d2cc2e893a1bb7ff14928a5bb", "shasum": "" }, "require": { @@ -206,31 +206,30 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "mtdowling/jmespath.php": "^2.6", - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0" + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/promises": "^2.0", + "guzzlehttp/psr7": "^2.4.5", + "mtdowling/jmespath.php": "^2.8.0", + "php": ">=8.1", + "psr/http-message": "^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", - "composer/composer": "^1.10.22", + "composer/composer": "^2.7.8", "dms/phpunit-arraysubset-asserts": "^0.4.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", "ext-pcntl": "*", "ext-sockets": "*", - "nette/neon": "^2.3", - "paragonie/random_compat": ">= 2", "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/simple-cache": "^1.0 || ^2.0 || ^3.0", - "sebastian/comparator": "^1.2.3 || ^4.0", - "yoast/phpunit-polyfills": "^1.0" + "psr/cache": "^2.0 || ^3.0", + "psr/simple-cache": "^2.0 || ^3.0", + "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", + "symfony/filesystem": "^v6.4.0 || ^v7.1.0", + "yoast/phpunit-polyfills": "^2.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", @@ -273,24 +272,24 @@ "sdk" ], "support": { - "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.336.6" + "source": "https://github.com/aws/aws-sdk-php/tree/3.342.5" }, - "time": "2024-12-28T04:16:13+00:00" + "time": "2025-03-13T18:04:13+00:00" }, { "name": "brick/math", - "version": "0.12.1", + "version": "0.12.3", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1" + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1", + "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", "shasum": "" }, "require": { @@ -299,7 +298,7 @@ "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^10.1", - "vimeo/psalm": "5.16.0" + "vimeo/psalm": "6.8.8" }, "type": "library", "autoload": { @@ -327,7 +326,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.1" + "source": "https://github.com/brick/math/tree/0.12.3" }, "funding": [ { @@ -335,7 +334,7 @@ "type": "github" } ], - "time": "2023-11-29T23:19:16+00:00" + "time": "2025-02-28T13:11:00+00:00" }, { "name": "chrisjean/php-ico", @@ -448,34 +447,34 @@ }, { "name": "codeigniter4/framework", - "version": "v4.5.6", + "version": "v4.6.0", "source": { "type": "git", "url": "https://github.com/codeigniter4/framework.git", - "reference": "7822476e6c672387b0ca1d64a74040ed28c42d9f" + "reference": "96a1e603b9a0f022b0febb2e249eab6971a7e0d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/framework/zipball/7822476e6c672387b0ca1d64a74040ed28c42d9f", - "reference": "7822476e6c672387b0ca1d64a74040ed28c42d9f", + "url": "https://api.github.com/repos/codeigniter4/framework/zipball/96a1e603b9a0f022b0febb2e249eab6971a7e0d5", + "reference": "96a1e603b9a0f022b0febb2e249eab6971a7e0d5", "shasum": "" }, "require": { "ext-intl": "*", "ext-mbstring": "*", - "laminas/laminas-escaper": "^2.13", + "laminas/laminas-escaper": "^2.14", "php": "^8.1", "psr/log": "^3.0" }, "require-dev": { "codeigniter/coding-standard": "^1.7", - "fakerphp/faker": "^1.9", + "fakerphp/faker": "^1.24", "friendsofphp/php-cs-fixer": "^3.47.1", - "kint-php/kint": "^5.0.4", - "mikey179/vfsstream": "^1.6", + "kint-php/kint": "^6.0", + "mikey179/vfsstream": "^1.6.12", "nexusphp/cs-config": "^3.6", "phpunit/phpunit": "^10.5.16 || ^11.2", - "predis/predis": "^1.1 || ^2.0" + "predis/predis": "^1.1 || ^2.3" }, "suggest": { "ext-curl": "If you use CURLRequest class", @@ -514,7 +513,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/CodeIgniter4" }, - "time": "2024-12-28T18:27:37+00:00" + "time": "2025-01-19T18:31:34+00:00" }, { "name": "codeigniter4/settings", @@ -639,25 +638,22 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/tasks.git", - "reference": "ec717c428c6f0e8e216e5dfbf18966a26a4f821f" + "reference": "2cb40662a6a312b07d1c64bfb1e9517a2673d939" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/ec717c428c6f0e8e216e5dfbf18966a26a4f821f", - "reference": "ec717c428c6f0e8e216e5dfbf18966a26a4f821f", + "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/2cb40662a6a312b07d1c64bfb1e9517a2673d939", + "reference": "2cb40662a6a312b07d1c64bfb1e9517a2673d939", "shasum": "" }, "require": { "codeigniter4/settings": "^2.0", "ext-json": "*", - "php": "^7.4 || ^8.0" + "php": "^8.1" }, "require-dev": { - "codeigniter/coding-standard": "1.7.*", - "codeigniter4/devkit": "^1.0", - "codeigniter4/framework": "^4.1", - "phpunit/phpunit": "^9.6", - "rector/rector": "1.2.10" + "codeigniter4/devkit": "^1.3", + "codeigniter4/framework": "^4.1" }, "default-branch": true, "type": "library", @@ -715,20 +711,20 @@ "source": "https://github.com/codeigniter4/tasks/tree/develop", "issues": "https://github.com/codeigniter4/tasks/issues" }, - "time": "2024-11-11T12:05:47+00:00" + "time": "2025-02-06T06:54:55+00:00" }, { "name": "composer/ca-bundle", - "version": "1.5.4", + "version": "1.5.6", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "bc0593537a463e55cadf45fd938d23b75095b7e1" + "reference": "f65c239c970e7f072f067ab78646e9f0b2935175" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/bc0593537a463e55cadf45fd938d23b75095b7e1", - "reference": "bc0593537a463e55cadf45fd938d23b75095b7e1", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/f65c239c970e7f072f067ab78646e9f0b2935175", + "reference": "f65c239c970e7f072f067ab78646e9f0b2935175", "shasum": "" }, "require": { @@ -767,7 +763,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.4" + "source": "https://github.com/composer/ca-bundle/tree/1.5.6" }, "funding": [ { @@ -783,7 +779,7 @@ "type": "tidelift" } ], - "time": "2024-11-27T15:35:25+00:00" + "time": "2025-03-06T14:30:56+00:00" }, { "name": "dflydev/dot-access-data", @@ -1354,16 +1350,16 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.15.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "c612b0488ae486284c39885efca494c180f16351" + "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/c612b0488ae486284c39885efca494c180f16351", - "reference": "c612b0488ae486284c39885efca494c180f16351", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", + "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", "shasum": "" }, "require": { @@ -1375,12 +1371,11 @@ "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.27.11", + "infection/infection": "^0.29.8", "laminas/laminas-coding-standard": "~3.0.1", - "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.6.22", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.2", + "vimeo/psalm": "^6.6.2" }, "type": "library", "autoload": { @@ -1407,7 +1402,7 @@ "type": "community_bridge" } ], - "time": "2024-12-17T19:39:54+00:00" + "time": "2025-02-17T12:40:19+00:00" }, { "name": "league/commonmark", @@ -1886,16 +1881,16 @@ }, { "name": "mpratt/embera", - "version": "2.0.41", + "version": "2.0.42", "source": { "type": "git", "url": "https://github.com/mpratt/Embera.git", - "reference": "069305b9252a428ba4ae6eb58d3dc8c6d9be5cd0" + "reference": "afa728339c6f078c803c9277a5054ca241b3c469" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mpratt/Embera/zipball/069305b9252a428ba4ae6eb58d3dc8c6d9be5cd0", - "reference": "069305b9252a428ba4ae6eb58d3dc8c6d9be5cd0", + "url": "https://api.github.com/repos/mpratt/Embera/zipball/afa728339c6f078c803c9277a5054ca241b3c469", + "reference": "afa728339c6f078c803c9277a5054ca241b3c469", "shasum": "" }, "require": { @@ -1904,7 +1899,8 @@ }, "require-dev": { "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.0||^10.0", + "symfony/yaml": "^2.1" }, "suggest": { "ext-curl": "Fetch data using curl instead of using file_get_contents" @@ -1942,7 +1938,7 @@ ], "support": { "issues": "https://github.com/mpratt/Embera/issues", - "source": "https://github.com/mpratt/Embera/tree/2.0.41" + "source": "https://github.com/mpratt/Embera/tree/2.0.42" }, "funding": [ { @@ -1950,7 +1946,7 @@ "type": "paypal" } ], - "time": "2024-08-17T04:27:29+00:00" + "time": "2025-01-04T06:07:59+00:00" }, { "name": "mtdowling/jmespath.php", @@ -2676,16 +2672,16 @@ }, { "name": "ramsey/collection", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "url": "https://api.github.com/repos/ramsey/collection/zipball/3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", + "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", "shasum": "" }, "require": { @@ -2693,25 +2689,22 @@ }, "require-dev": { "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" }, "type": "library", "extra": { @@ -2740,19 +2733,9 @@ "keywords": ["array", "collection", "hash", "map", "queue", "set"], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" + "source": "https://github.com/ramsey/collection/tree/2.1.0" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2022-12-31T21:50:55+00:00" + "time": "2025-03-02T04:48:29+00:00" }, { "name": "ramsey/uuid", @@ -3242,6 +3225,62 @@ }, "time": "2024-04-17T12:47:41+00:00" }, + { + "name": "yassinedoghri/codeigniter-vite", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/yassinedoghri/codeigniter-vite.git", + "reference": "b96cff850b868b992871ce7a92703567afc9db79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yassinedoghri/codeigniter-vite/zipball/b96cff850b868b992871ce7a92703567afc9db79", + "reference": "b96cff850b868b992871ce7a92703567afc9db79", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "codeigniter/phpstan-codeigniter": "v1.5.1", + "codeigniter4/framework": "v4.5.7", + "pestphp/pest": "v3.7.1", + "pestphp/pest-plugin-type-coverage": "v3.2.3", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.1", + "rector/rector": "^2.0.6", + "symplify/coding-standard": "^12.2.3", + "symplify/easy-coding-standard": "^12.5.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "CodeIgniterVite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": ["MIT"], + "authors": [ + { + "name": "Yassine Doghri", + "homepage": "https://yassinedoghri.com/" + } + ], + "description": "A simple ViteJS integration for CodeIgniter4 projects.", + "keywords": [ + "codeigniter", + "codeigniter4", + "iconify", + "icons", + "php-icons" + ], + "support": { + "issues": "https://github.com/yassinedoghri/codeigniter-vite/issues", + "source": "https://github.com/yassinedoghri/codeigniter-vite/tree/v1.1.0" + }, + "time": "2025-01-24T13:46:51+00:00" + }, { "name": "yassinedoghri/php-icons", "version": "v1.2.0", @@ -3301,12 +3340,12 @@ "source": { "type": "git", "url": "https://github.com/yassinedoghri/podcast-feed.git", - "reference": "f34156e62c9eef8bd5561f8a585d99501e235505" + "reference": "d617e204fe85e0b7bd12b9d382cae4064af280c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yassinedoghri/podcast-feed/zipball/f34156e62c9eef8bd5561f8a585d99501e235505", - "reference": "f34156e62c9eef8bd5561f8a585d99501e235505", + "url": "https://api.github.com/repos/yassinedoghri/podcast-feed/zipball/d617e204fe85e0b7bd12b9d382cae4064af280c8", + "reference": "d617e204fe85e0b7bd12b9d382cae4064af280c8", "shasum": "" }, "require": { @@ -3348,16 +3387,16 @@ "packages-dev": [ { "name": "captainhook/captainhook", - "version": "5.24.1", + "version": "5.25.0", "source": { "type": "git", "url": "https://github.com/captainhookphp/captainhook.git", - "reference": "1e56452fd7a7e486e5955ab72dc9ea34bb52a184" + "reference": "4c5bd310bf08f4d96f9bd4f680f894233f9836fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/1e56452fd7a7e486e5955ab72dc9ea34bb52a184", - "reference": "1e56452fd7a7e486e5955ab72dc9ea34bb52a184", + "url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/4c5bd310bf08f4d96f9bd4f680f894233f9836fc", + "reference": "4c5bd310bf08f4d96f9bd4f680f894233f9836fc", "shasum": "" }, "require": { @@ -3368,7 +3407,7 @@ "php": ">=8.0", "sebastianfeldmann/camino": "^0.9.2", "sebastianfeldmann/cli": "^3.3", - "sebastianfeldmann/git": "^3.10", + "sebastianfeldmann/git": "^3.13", "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" @@ -3416,7 +3455,7 @@ ], "support": { "issues": "https://github.com/captainhookphp/captainhook/issues", - "source": "https://github.com/captainhookphp/captainhook/tree/5.24.1" + "source": "https://github.com/captainhookphp/captainhook/tree/5.25.0" }, "funding": [ { @@ -3424,7 +3463,7 @@ "type": "github" } ], - "time": "2024-11-26T18:42:37+00:00" + "time": "2025-02-11T20:42:11+00:00" }, { "name": "captainhook/secrets", @@ -3544,20 +3583,19 @@ }, { "name": "codeigniter/phpstan-codeigniter", - "version": "v1.5.1", + "version": "v1.5.3", "source": { "type": "git", "url": "https://github.com/CodeIgniter/phpstan-codeigniter.git", - "reference": "4bfaba879007c7dfb9c3b687713bd5d45524f067" + "reference": "430e0b44b1a59b34de3cd55678f43472327c0e12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CodeIgniter/phpstan-codeigniter/zipball/4bfaba879007c7dfb9c3b687713bd5d45524f067", - "reference": "4bfaba879007c7dfb9c3b687713bd5d45524f067", + "url": "https://api.github.com/repos/CodeIgniter/phpstan-codeigniter/zipball/430e0b44b1a59b34de3cd55678f43472327c0e12", + "reference": "430e0b44b1a59b34de3cd55678f43472327c0e12", "shasum": "" }, "require": { - "codeigniter4/framework": "^4.5", "php": "^8.1", "phpstan/phpstan": "^2.0" }, @@ -3566,6 +3604,7 @@ }, "require-dev": { "codeigniter/coding-standard": "^1.7", + "codeigniter4/framework": "^4.5", "codeigniter4/shield": "^1.0", "friendsofphp/php-cs-fixer": "^3.49", "nexusphp/cs-config": "^3.21", @@ -3608,7 +3647,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/CodeIgniter/phpstan-codeigniter" }, - "time": "2024-12-02T15:33:25+00:00" + "time": "2025-01-24T19:52:36+00:00" }, { "name": "composer/pcre", @@ -3915,16 +3954,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.65.0", + "version": "v3.72.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "79d4f3e77b250a7d8043d76c6af8f0695e8a469f" + "reference": "900389362c43d116fee1ffc51f7878145fa61b57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/79d4f3e77b250a7d8043d76c6af8f0695e8a469f", - "reference": "79d4f3e77b250a7d8043d76c6af8f0695e8a469f", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/900389362c43d116fee1ffc51f7878145fa61b57", + "reference": "900389362c43d116fee1ffc51f7878145fa61b57", "shasum": "" }, "require": { @@ -3941,31 +3980,31 @@ "react/promise": "^2.0 || ^3.0", "react/socket": "^1.0", "react/stream": "^1.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", - "symfony/finder": "^5.4 || ^6.0 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-mbstring": "^1.28", - "symfony/polyfill-php80": "^1.28", - "symfony/polyfill-php81": "^1.28", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + "sebastian/diff": "^4.0 || ^5.1 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.4 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.4 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.4 || ^7.0", + "symfony/finder": "^5.4 || ^6.4 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.4 || ^7.0", + "symfony/polyfill-mbstring": "^1.31", + "symfony/polyfill-php80": "^1.31", + "symfony/polyfill-php81": "^1.31", + "symfony/process": "^5.4 || ^6.4 || ^7.2", + "symfony/stopwatch": "^5.4 || ^6.4 || ^7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.4", - "infection/infection": "^0.29.8", - "justinrainbow/json-schema": "^5.3 || ^6.0", + "facile-it/paraunit": "^1.3.1 || ^2.6", + "infection/infection": "^0.29.14", + "justinrainbow/json-schema": "^5.3 || ^6.2", "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.12", "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", - "phpunit/phpunit": "^9.6.21 || ^10.5.38 || ^11.4.3", - "symfony/var-dumper": "^5.4.47 || ^6.4.15 || ^7.1.8", - "symfony/yaml": "^5.4.45 || ^6.4.13 || ^7.1.6" + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", + "phpunit/phpunit": "^9.6.22 || ^10.5.45 || ^11.5.12", + "symfony/var-dumper": "^5.4.48 || ^6.4.18 || ^7.2.3", + "symfony/yaml": "^5.4.45 || ^6.4.18 || ^7.2.3" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -4000,7 +4039,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.65.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.72.0" }, "funding": [ { @@ -4008,7 +4047,7 @@ "type": "github" } ], - "time": "2024-11-25T00:39:24+00:00" + "time": "2025-03-13T11:25:37+00:00" }, { "name": "mikey179/vfsstream", @@ -4062,16 +4101,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.1", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", "shasum": "" }, "require": { @@ -4100,7 +4139,7 @@ "keywords": ["clone", "copy", "duplicate", "object", "object graph"], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" }, "funding": [ { @@ -4108,20 +4147,20 @@ "type": "tidelift" } ], - "time": "2024-11-08T17:47:46+00:00" + "time": "2025-02-12T12:17:51+00:00" }, { "name": "nikic/php-parser", - "version": "v5.3.1", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -4157,9 +4196,9 @@ "keywords": ["parser", "php"], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2024-10-08T18:51:32+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "phar-io/manifest", @@ -4316,16 +4355,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.0.4", + "version": "2.1.8", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "50d276fc3bf1430ec315f2f109bbde2769821524" + "reference": "f9adff3b87c03b12cc7e46a30a524648e497758f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/50d276fc3bf1430ec315f2f109bbde2769821524", - "reference": "50d276fc3bf1430ec315f2f109bbde2769821524", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f9adff3b87c03b12cc7e46a30a524648e497758f", + "reference": "f9adff3b87c03b12cc7e46a30a524648e497758f", "shasum": "" }, "require": { @@ -4360,27 +4399,27 @@ "type": "github" } ], - "time": "2024-12-17T17:14:01+00:00" + "time": "2025-03-09T09:30:48+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "11.0.8", + "version": "11.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "418c59fd080954f8c4aa5631d9502ecda2387118" + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/418c59fd080954f8c4aa5631d9502ecda2387118", - "reference": "418c59fd080954f8c4aa5631d9502ecda2387118", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/14d63fbcca18457e49c6f8bebaa91a87e8e188d7", + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.3.1", + "nikic/php-parser": "^5.4.0", "php": ">=8.2", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-text-template": "^4.0.1", @@ -4392,7 +4431,7 @@ "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^11.5.0" + "phpunit/phpunit": "^11.5.2" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -4422,7 +4461,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.8" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.9" }, "funding": [ { @@ -4430,7 +4469,7 @@ "type": "github" } ], - "time": "2024-12-11T12:34:27+00:00" + "time": "2025-02-25T13:26:39+00:00" }, { "name": "phpunit/php-file-iterator", @@ -4654,16 +4693,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.2", + "version": "11.5.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3" + "reference": "d42785840519401ed2113292263795eb4c0f95da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/153d0531b9f7e883c5053160cad6dd5ac28140b3", - "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d42785840519401ed2113292263795eb4c0f95da", + "reference": "d42785840519401ed2113292263795eb4c0f95da", "shasum": "" }, "require": { @@ -4673,18 +4712,18 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", + "myclabs/deep-copy": "^1.13.0", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.8", + "phpunit/php-code-coverage": "^11.0.9", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-invoker": "^5.0.1", "phpunit/php-text-template": "^4.0.1", "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", "sebastian/code-unit": "^3.0.2", - "sebastian/comparator": "^6.2.1", + "sebastian/comparator": "^6.3.1", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.0", "sebastian/exporter": "^6.3.0", @@ -4723,7 +4762,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.12" }, "funding": [ { @@ -4739,7 +4778,7 @@ "type": "tidelift" } ], - "time": "2024-12-21T05:51:08+00:00" + "time": "2025-03-07T07:31:03+00:00" }, { "name": "psr/container", @@ -4859,33 +4898,33 @@ }, { "name": "react/child-process", - "version": "v0.6.5", + "version": "v0.6.6", "source": { "type": "git", "url": "https://github.com/reactphp/child-process.git", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", "shasum": "" }, "require": { "evenement/evenement": "^3.0 || ^2.0 || ^1.0", "php": ">=5.3.0", "react/event-loop": "^1.2", - "react/stream": "^1.2" + "react/stream": "^1.4" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/socket": "^1.8", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/socket": "^1.16", "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" }, "type": "library", "autoload": { "psr-4": { - "React\\ChildProcess\\": "src" + "React\\ChildProcess\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4916,19 +4955,15 @@ "keywords": ["event-driven", "process", "reactphp"], "support": { "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + "source": "https://github.com/reactphp/child-process/tree/v0.6.6" }, "funding": [ { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2022-09-16T13:41:56+00:00" + "time": "2025-01-01T16:37:48+00:00" }, { "name": "react/dns", @@ -5282,21 +5317,21 @@ }, { "name": "rector/rector", - "version": "2.0.4", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "df5de7b80deced1ea7f719a0b4d02e4aee87dd21" + "reference": "5844a718acb40f40afcd110394270afa55509fd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/df5de7b80deced1ea7f719a0b4d02e4aee87dd21", - "reference": "df5de7b80deced1ea7f719a0b4d02e4aee87dd21", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/5844a718acb40f40afcd110394270afa55509fd0", + "reference": "5844a718acb40f40afcd110394270afa55509fd0", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.0.4" + "phpstan/phpstan": "^2.1.6" }, "conflict": { "rector/rector-doctrine": "*", @@ -5318,7 +5353,7 @@ "keywords": ["automation", "dev", "migration", "refactoring"], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.0.4" + "source": "https://github.com/rectorphp/rector/tree/2.0.10" }, "funding": [ { @@ -5326,7 +5361,7 @@ "type": "github" } ], - "time": "2024-12-26T23:06:19+00:00" + "time": "2025-03-03T17:35:18+00:00" }, { "name": "sebastian/cli-parser", @@ -5488,16 +5523,16 @@ }, { "name": "sebastian/comparator", - "version": "6.2.1", + "version": "6.3.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739" + "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/43d129d6a0f81c78bee378b46688293eb7ea3739", - "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959", + "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959", "shasum": "" }, "require": { @@ -5510,10 +5545,13 @@ "require-dev": { "phpunit/phpunit": "^11.4" }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.2-dev" + "dev-main": "6.3-dev" } }, "autoload": { @@ -5545,7 +5583,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.2.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1" }, "funding": [ { @@ -5553,7 +5591,7 @@ "type": "github" } ], - "time": "2024-10-31T05:30:08+00:00" + "time": "2025-03-07T06:57:01+00:00" }, { "name": "sebastian/complexity", @@ -6280,16 +6318,16 @@ }, { "name": "sebastianfeldmann/git", - "version": "3.11.1", + "version": "3.13.2", "source": { "type": "git", "url": "https://github.com/sebastianfeldmann/git.git", - "reference": "96b9f384d45106f757df98a74c11b42b393ff18f" + "reference": "95c5fccbbf5e94ad86c459a73f0c2d2d2e776d98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/96b9f384d45106f757df98a74c11b42b393ff18f", - "reference": "96b9f384d45106f757df98a74c11b42b393ff18f", + "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/95c5fccbbf5e94ad86c459a73f0c2d2d2e776d98", + "reference": "95c5fccbbf5e94ad86c459a73f0c2d2d2e776d98", "shasum": "" }, "require": { @@ -6326,7 +6364,7 @@ "keywords": ["git"], "support": { "issues": "https://github.com/sebastianfeldmann/git/issues", - "source": "https://github.com/sebastianfeldmann/git/tree/3.11.1" + "source": "https://github.com/sebastianfeldmann/git/tree/3.13.2" }, "funding": [ { @@ -6334,7 +6372,7 @@ "type": "github" } ], - "time": "2024-11-26T18:37:20+00:00" + "time": "2025-02-11T19:34:51+00:00" }, { "name": "staabm/side-effects-detector", @@ -6680,16 +6718,16 @@ }, { "name": "symfony/finder", - "version": "v7.2.0", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49" + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6de263e5868b9a137602dd1e33e4d48bfae99c49", - "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", "shasum": "" }, "require": { @@ -6720,7 +6758,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.2.0" + "source": "https://github.com/symfony/finder/tree/v7.2.2" }, "funding": [ { @@ -6736,7 +6774,7 @@ "type": "tidelift" } ], - "time": "2024-10-23T06:56:12+00:00" + "time": "2024-12-30T19:00:17+00:00" }, { "name": "symfony/options-resolver", @@ -7013,16 +7051,16 @@ }, { "name": "symfony/process", - "version": "v7.2.0", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" + "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", - "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", + "url": "https://api.github.com/repos/symfony/process/zipball/d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", + "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", "shasum": "" }, "require": { @@ -7050,7 +7088,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.2.0" + "source": "https://github.com/symfony/process/tree/v7.2.4" }, "funding": [ { @@ -7066,7 +7104,7 @@ "type": "tidelift" } ], - "time": "2024-11-06T14:24:19+00:00" + "time": "2025-02-05T08:33:46+00:00" }, { "name": "symfony/service-contracts", @@ -7149,16 +7187,16 @@ }, { "name": "symfony/stopwatch", - "version": "v7.2.0", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "696f418b0d722a4225e1c3d95489d262971ca924" + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/696f418b0d722a4225e1c3d95489d262971ca924", - "reference": "696f418b0d722a4225e1c3d95489d262971ca924", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", "shasum": "" }, "require": { @@ -7187,7 +7225,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.2.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.2.4" }, "funding": [ { @@ -7203,7 +7241,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-02-24T10:49:57+00:00" }, { "name": "symfony/string", @@ -7338,16 +7376,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.5.4", + "version": "12.5.8", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "5673ecbc03eef9d7b2f563819c80e8e1ce0161be" + "reference": "2bf0e468dc9679f3835c835cd3fd4a25ff6e4e14" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/5673ecbc03eef9d7b2f563819c80e8e1ce0161be", - "reference": "5673ecbc03eef9d7b2f563819c80e8e1ce0161be", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/2bf0e468dc9679f3835c835cd3fd4a25ff6e4e14", + "reference": "2bf0e468dc9679f3835c835cd3fd4a25ff6e4e14", "shasum": "" }, "require": { @@ -7372,7 +7410,7 @@ "keywords": ["Code style", "automation", "fixer", "static analysis"], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.4" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.8" }, "funding": [ { @@ -7384,7 +7422,7 @@ "type": "github" } ], - "time": "2024-12-12T15:36:04+00:00" + "time": "2025-01-31T13:59:38+00:00" }, { "name": "symplify/rule-doc-generator-contracts", @@ -7500,7 +7538,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.3" + "php": "^8.4" }, "platform-dev": {}, "plugin-api-version": "2.6.0" diff --git a/docker/ci/Dockerfile b/docker/ci/Dockerfile index 10efa624..81878fe1 100644 --- a/docker/ci/Dockerfile +++ b/docker/ci/Dockerfile @@ -4,7 +4,7 @@ # ⚠️ NOT optimized for production # should be used only for continuous integration #--------------------------------------------------- -FROM php:8.3-fpm-alpine3.20 +FROM php:8.4-fpm-alpine3.21 LABEL maintainer="Yassine Doghri " diff --git a/docker/production/app/Dockerfile b/docker/production/app/Dockerfile index 672a6565..bafd25f2 100644 --- a/docker/production/app/Dockerfile +++ b/docker/production/app/Dockerfile @@ -11,7 +11,7 @@ RUN apt-get update && \ mv supercronic /usr/local/bin -FROM docker.io/php:8.3-fpm +FROM docker.io/php:8.4-fpm COPY --from=CRON_BUILDER /usr/local/bin/supercronic /usr/local/bin/supercronic diff --git a/docker/production/castopod/Dockerfile b/docker/production/castopod/Dockerfile index 5a5fc552..00a628a2 100644 --- a/docker/production/castopod/Dockerfile +++ b/docker/production/castopod/Dockerfile @@ -11,7 +11,7 @@ RUN apt-get update && \ mv supercronic /usr/local/bin -FROM docker.io/php:8.3-cli +FROM docker.io/php:8.4-cli ARG UNIT_VERSION=1.31.1 diff --git a/docs/package.json b/docs/package.json index 434b8202..5a74385d 100644 --- a/docs/package.json +++ b/docs/package.json @@ -12,19 +12,19 @@ }, "dependencies": { "@astrojs/check": "^0.9.4", - "@astrojs/starlight": "^0.30.3", + "@astrojs/starlight": "^0.32.2", "@astrojs/starlight-tailwind": "^3.0.0", - "@astrojs/tailwind": "^5.1.4", - "@fontsource/inter": "^5.1.1", - "@fontsource/rubik": "^5.1.1", - "astro": "^5.1.1", - "autoprefixer": "^10.4.20", + "@astrojs/tailwind": "^5.1.5", + "@fontsource/inter": "^5.2.5", + "@fontsource/rubik": "^5.2.5", + "astro": "^5.5.2", + "autoprefixer": "^10.4.21", "cssnano": "^7.0.6", - "postcss-preset-env": "^10.1.3", + "postcss-preset-env": "^10.1.5", "sharp": "^0.33.5", - "starlight-openapi": "^0.9.0", + "starlight-openapi": "^0.14.1", "tailwindcss": "^3.4.17", - "typescript": "^5.7.2", - "zod": "3.24.1" + "typescript": "^5.8.2", + "zod": "3.24.2" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 00d9fa87..fc3e44d7 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -9,49 +9,49 @@ importers: dependencies: "@astrojs/check": specifier: ^0.9.4 - version: 0.9.4(typescript@5.7.2) + version: 0.9.4(typescript@5.8.2) "@astrojs/starlight": - specifier: ^0.30.3 - version: 0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)) + specifier: ^0.32.2 + version: 0.32.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)) "@astrojs/starlight-tailwind": specifier: ^3.0.0 - version: 3.0.0(@astrojs/starlight@0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)))(@astrojs/tailwind@5.1.4(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.17))(tailwindcss@3.4.17) + version: 3.0.0(@astrojs/starlight@0.32.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)))(@astrojs/tailwind@5.1.5(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1))(tailwindcss@3.4.17))(tailwindcss@3.4.17) "@astrojs/tailwind": - specifier: ^5.1.4 - version: 5.1.4(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.17) + specifier: ^5.1.5 + version: 5.1.5(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1))(tailwindcss@3.4.17) "@fontsource/inter": - specifier: ^5.1.1 - version: 5.1.1 + specifier: ^5.2.5 + version: 5.2.5 "@fontsource/rubik": - specifier: ^5.1.1 - version: 5.1.1 + specifier: ^5.2.5 + version: 5.2.5 astro: - specifier: ^5.1.1 - version: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1) + specifier: ^5.5.2 + version: 5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1) autoprefixer: - specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.49) + specifier: ^10.4.21 + version: 10.4.21(postcss@8.5.3) cssnano: specifier: ^7.0.6 - version: 7.0.6(postcss@8.4.49) + version: 7.0.6(postcss@8.5.3) postcss-preset-env: - specifier: ^10.1.3 - version: 10.1.3(postcss@8.4.49) + specifier: ^10.1.5 + version: 10.1.5(postcss@8.5.3) sharp: specifier: ^0.33.5 version: 0.33.5 starlight-openapi: - specifier: ^0.9.0 - version: 0.9.0(@astrojs/markdown-remark@6.0.1)(@astrojs/starlight@0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)))(openapi-types@12.1.3) + specifier: ^0.14.1 + version: 0.14.1(@astrojs/markdown-remark@6.3.0)(@astrojs/starlight@0.32.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)))(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1))(openapi-types@12.1.3) tailwindcss: specifier: ^3.4.17 version: 3.4.17 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.8.2 + version: 5.8.2 zod: - specifier: 3.24.1 - version: 3.24.1 + specifier: 3.24.2 + version: 3.24.2 packages: "@alloc/quick-lru@5.2.0": @@ -82,10 +82,16 @@ packages: integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==, } - "@astrojs/internal-helpers@0.4.2": + "@astrojs/compiler@2.11.0": resolution: { - integrity: sha512-EdDWkC3JJVcpGpqJAU/5hSk2LKXyG3mNGkzGoAuyK+xoPHbaVdSuIWoN1QTnmK3N/gGfaaAfM8gO2KDCAW7S3w==, + integrity: sha512-zZOO7i+JhojO8qmlyR/URui6LyfHJY6m+L9nwyX5GiKD78YoRaZ5tzz6X0fkl+5bD3uwlDHayf6Oe8Fu36RKNg==, + } + + "@astrojs/internal-helpers@0.6.1": + resolution: + { + integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==, } "@astrojs/language-server@2.15.4": @@ -103,16 +109,16 @@ packages: prettier-plugin-astro: optional: true - "@astrojs/markdown-remark@6.0.1": + "@astrojs/markdown-remark@6.3.0": resolution: { - integrity: sha512-CTSYijj25NfxgZi15TU3CwPwgyD1/7yA3FcdcNmB9p94nydupiUbrIiq3IqeTp2m5kCVzxbPZeC7fTwEOaNyGw==, + integrity: sha512-imInEojAbpeV9D/SRaSQBz3yUzvtg3UQC1euX70QHVf8X0kWAIAArmzBbgXl8LlyxSFe52f/++PXQ4t14V9b+A==, } - "@astrojs/mdx@4.0.3": + "@astrojs/mdx@4.2.0": resolution: { - integrity: sha512-8HcuyNG/KgYUAQWVzKFkboXcTOBCW6aQ0WK0Er/iSmVSF0y3yimg4/3QSt+Twv9dogpwIHL+E8iBJKqieFv4+g==, + integrity: sha512-MHiogYeb7XdzbqUktoMsrziph1vK10WfLgwDJVejGOieEsJ1eOUtNtQCl2vv85tnr/+IGBqZ0bOf6ydQGgJMYA==, } engines: { node: ^18.17.1 || ^20.3.0 || >=22.0.0 } peerDependencies: @@ -141,18 +147,18 @@ packages: "@astrojs/tailwind": ^5.1.3 tailwindcss: ^3.3.3 - "@astrojs/starlight@0.30.3": + "@astrojs/starlight@0.32.2": resolution: { - integrity: sha512-HbGYYIR2Rnrvvc2jD0dUpp8zUzv3jQYtG5im3aulDgE4Jo21Ahw0yXlb/Y134G3LALLbqhImmlbt/h/nDV3yMA==, + integrity: sha512-FLz8Y8R+GsD0jD/G64bYijwwVsAq99Ugk2bJYRmH2k1reYMh83GRma2IaKGgSI2fLNEu7tdyG4cpkwrwP3W02A==, } peerDependencies: - astro: ^5.0.0 + astro: ^5.1.5 - "@astrojs/tailwind@5.1.4": + "@astrojs/tailwind@5.1.5": resolution: { - integrity: sha512-EJ3uoTZZr0RYwTrVS2HgYN0+VbXvg7h87AtwpD5OzqS3GyMwRmzfOwHfORTxoWGQRrY9k/Fi+Awk60kwpvRL5Q==, + integrity: sha512-1diguZEau7FZ9vIjzE4BwavGdhD3+JkdS8zmibl1ene+EHgIU5hI0NMgRYG3yea+Niaf7cyMwjeWeLvzq/maxg==, } peerDependencies: astro: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -224,27 +230,27 @@ packages: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - "@csstools/color-helpers@5.0.1": + "@csstools/color-helpers@5.0.2": resolution: { - integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==, + integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==, } engines: { node: ">=18" } - "@csstools/css-calc@2.1.1": + "@csstools/css-calc@2.1.2": resolution: { - integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==, + integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==, } engines: { node: ">=18" } peerDependencies: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - "@csstools/css-color-parser@3.0.7": + "@csstools/css-color-parser@3.0.8": resolution: { - integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==, + integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==, } engines: { node: ">=18" } peerDependencies: @@ -286,19 +292,19 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-function@4.0.7": + "@csstools/postcss-color-function@4.0.8": resolution: { - integrity: sha512-aDHYmhNIHR6iLw4ElWhf+tRqqaXwKnMl0YsQ/X105Zc4dQwe6yJpMrTN6BwOoESrkDjOYMOfORviSSLeDTJkdQ==, + integrity: sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-mix-function@3.0.7": + "@csstools/postcss-color-mix-function@3.0.8": resolution: { - integrity: sha512-e68Nev4CxZYCLcrfWhHH4u/N1YocOfTmw67/kVX5Rb7rnguqqLyxPjhHWjSBX8o4bmyuukmNf3wrUSU3//kT7g==, + integrity: sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==, } engines: { node: ">=18" } peerDependencies: @@ -313,10 +319,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-exponential-functions@2.0.6": + "@csstools/postcss-exponential-functions@2.0.7": resolution: { - integrity: sha512-IgJA5DQsQLu/upA3HcdvC6xEMR051ufebBTIXZ5E9/9iiaA7juXWz1ceYj814lnDYP/7eWjZnw0grRJlX4eI6g==, + integrity: sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==, } engines: { node: ">=18" } peerDependencies: @@ -331,28 +337,28 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-gamut-mapping@2.0.7": + "@csstools/postcss-gamut-mapping@2.0.8": resolution: { - integrity: sha512-gzFEZPoOkY0HqGdyeBXR3JP218Owr683u7KOZazTK7tQZBE8s2yhg06W1tshOqk7R7SWvw9gkw2TQogKpIW8Xw==, + integrity: sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-gradients-interpolation-method@5.0.7": + "@csstools/postcss-gradients-interpolation-method@5.0.8": resolution: { - integrity: sha512-WgEyBeg6glUeTdS2XT7qeTFBthTJuXlS9GFro/DVomj7W7WMTamAwpoP4oQCq/0Ki2gvfRYFi/uZtmRE14/DFA==, + integrity: sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-hwb-function@4.0.7": + "@csstools/postcss-hwb-function@4.0.8": resolution: { - integrity: sha512-LKYqjO+wGwDCfNIEllessCBWfR4MS/sS1WXO+j00KKyOjm7jDW2L6jzUmqASEiv/kkJO39GcoIOvTTfB3yeBUA==, + integrity: sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==, } engines: { node: ">=18" } peerDependencies: @@ -367,10 +373,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-initial@2.0.0": + "@csstools/postcss-initial@2.0.1": resolution: { - integrity: sha512-dv2lNUKR+JV+OOhZm9paWzYBXOCi+rJPqJ2cJuhh9xd8USVrd0cBEPczla81HNOyThMQWeCcdln3gZkQV2kYxA==, + integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==, } engines: { node: ">=18" } peerDependencies: @@ -439,10 +445,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-media-minmax@2.0.6": + "@csstools/postcss-media-minmax@2.0.7": resolution: { - integrity: sha512-J1+4Fr2W3pLZsfxkFazK+9kr96LhEYqoeBszLmFjb6AjYs+g9oDAw3J5oQignLKk3rC9XHW+ebPTZ9FaW5u5pg==, + integrity: sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==, } engines: { node: ">=18" } peerDependencies: @@ -475,10 +481,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-oklab-function@4.0.7": + "@csstools/postcss-oklab-function@4.0.8": resolution: { - integrity: sha512-I6WFQIbEKG2IO3vhaMGZDkucbCaUSXMxvHNzDdnfsTCF5tc0UlV3Oe2AhamatQoKFjBi75dSEMrgWq3+RegsOQ==, + integrity: sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==, } engines: { node: ">=18" } peerDependencies: @@ -493,19 +499,19 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-random-function@1.0.2": + "@csstools/postcss-random-function@1.0.3": resolution: { - integrity: sha512-vBCT6JvgdEkvRc91NFoNrLjgGtkLWt47GKT6E2UDn3nd8ZkMBiziQ1Md1OiKoSsgzxsSnGKG3RVdhlbdZEkHjA==, + integrity: sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-relative-color-syntax@3.0.7": + "@csstools/postcss-relative-color-syntax@3.0.8": resolution: { - integrity: sha512-apbT31vsJVd18MabfPOnE977xgct5B1I+Jpf+Munw3n6kKb1MMuUmGGH+PT9Hm/fFs6fe61Q/EWnkrb4bNoNQw==, + integrity: sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==, } engines: { node: ">=18" } peerDependencies: @@ -520,37 +526,37 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-sign-functions@1.1.1": + "@csstools/postcss-sign-functions@1.1.2": resolution: { - integrity: sha512-MslYkZCeMQDxetNkfmmQYgKCy4c+w9pPDfgOBCJOo/RI1RveEUdZQYtOfrC6cIZB7sD7/PHr2VGOcMXlZawrnA==, + integrity: sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-stepped-value-functions@4.0.6": + "@csstools/postcss-stepped-value-functions@4.0.7": resolution: { - integrity: sha512-/dwlO9w8vfKgiADxpxUbZOWlL5zKoRIsCymYoh1IPuBsXODKanKnfuZRr32DEqT0//3Av1VjfNZU9yhxtEfIeA==, + integrity: sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-text-decoration-shorthand@4.0.1": + "@csstools/postcss-text-decoration-shorthand@4.0.2": resolution: { - integrity: sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==, + integrity: sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-trigonometric-functions@4.0.6": + "@csstools/postcss-trigonometric-functions@4.0.7": resolution: { - integrity: sha512-c4Y1D2Why/PeccaSouXnTt6WcNHJkoJRidV2VW9s5gJ97cNxnLgQ4Qj8qOqkIR9VmTQKJyNcbF4hy79ZQnWD7A==, + integrity: sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==, } engines: { node: ">=18" } peerDependencies: @@ -647,463 +653,265 @@ packages: integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==, } - "@esbuild/aix-ppc64@0.21.5": + "@esbuild/aix-ppc64@0.25.1": resolution: { - integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==, - } - engines: { node: ">=12" } - cpu: [ppc64] - os: [aix] - - "@esbuild/aix-ppc64@0.24.0": - resolution: - { - integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==, + integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==, } engines: { node: ">=18" } cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.21.5": + "@esbuild/android-arm64@0.25.1": resolution: { - integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [android] - - "@esbuild/android-arm64@0.24.0": - resolution: - { - integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==, + integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==, } engines: { node: ">=18" } cpu: [arm64] os: [android] - "@esbuild/android-arm@0.21.5": + "@esbuild/android-arm@0.25.1": resolution: { - integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==, - } - engines: { node: ">=12" } - cpu: [arm] - os: [android] - - "@esbuild/android-arm@0.24.0": - resolution: - { - integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==, + integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==, } engines: { node: ">=18" } cpu: [arm] os: [android] - "@esbuild/android-x64@0.21.5": + "@esbuild/android-x64@0.25.1": resolution: { - integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [android] - - "@esbuild/android-x64@0.24.0": - resolution: - { - integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==, + integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==, } engines: { node: ">=18" } cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.21.5": + "@esbuild/darwin-arm64@0.25.1": resolution: { - integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [darwin] - - "@esbuild/darwin-arm64@0.24.0": - resolution: - { - integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==, + integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==, } engines: { node: ">=18" } cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.21.5": + "@esbuild/darwin-x64@0.25.1": resolution: { - integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [darwin] - - "@esbuild/darwin-x64@0.24.0": - resolution: - { - integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==, + integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==, } engines: { node: ">=18" } cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.21.5": + "@esbuild/freebsd-arm64@0.25.1": resolution: { - integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [freebsd] - - "@esbuild/freebsd-arm64@0.24.0": - resolution: - { - integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==, + integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==, } engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.21.5": + "@esbuild/freebsd-x64@0.25.1": resolution: { - integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [freebsd] - - "@esbuild/freebsd-x64@0.24.0": - resolution: - { - integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==, + integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==, } engines: { node: ">=18" } cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.21.5": + "@esbuild/linux-arm64@0.25.1": resolution: { - integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [linux] - - "@esbuild/linux-arm64@0.24.0": - resolution: - { - integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==, + integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==, } engines: { node: ">=18" } cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.21.5": + "@esbuild/linux-arm@0.25.1": resolution: { - integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==, - } - engines: { node: ">=12" } - cpu: [arm] - os: [linux] - - "@esbuild/linux-arm@0.24.0": - resolution: - { - integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==, + integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==, } engines: { node: ">=18" } cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.21.5": + "@esbuild/linux-ia32@0.25.1": resolution: { - integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [linux] - - "@esbuild/linux-ia32@0.24.0": - resolution: - { - integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==, + integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==, } engines: { node: ">=18" } cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.21.5": + "@esbuild/linux-loong64@0.25.1": resolution: { - integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==, - } - engines: { node: ">=12" } - cpu: [loong64] - os: [linux] - - "@esbuild/linux-loong64@0.24.0": - resolution: - { - integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==, + integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==, } engines: { node: ">=18" } cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.21.5": + "@esbuild/linux-mips64el@0.25.1": resolution: { - integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==, - } - engines: { node: ">=12" } - cpu: [mips64el] - os: [linux] - - "@esbuild/linux-mips64el@0.24.0": - resolution: - { - integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==, + integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==, } engines: { node: ">=18" } cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.21.5": + "@esbuild/linux-ppc64@0.25.1": resolution: { - integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==, - } - engines: { node: ">=12" } - cpu: [ppc64] - os: [linux] - - "@esbuild/linux-ppc64@0.24.0": - resolution: - { - integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==, + integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==, } engines: { node: ">=18" } cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.21.5": + "@esbuild/linux-riscv64@0.25.1": resolution: { - integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==, - } - engines: { node: ">=12" } - cpu: [riscv64] - os: [linux] - - "@esbuild/linux-riscv64@0.24.0": - resolution: - { - integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==, + integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==, } engines: { node: ">=18" } cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.21.5": + "@esbuild/linux-s390x@0.25.1": resolution: { - integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==, - } - engines: { node: ">=12" } - cpu: [s390x] - os: [linux] - - "@esbuild/linux-s390x@0.24.0": - resolution: - { - integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==, + integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==, } engines: { node: ">=18" } cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.21.5": + "@esbuild/linux-x64@0.25.1": resolution: { - integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [linux] - - "@esbuild/linux-x64@0.24.0": - resolution: - { - integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==, + integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==, } engines: { node: ">=18" } cpu: [x64] os: [linux] - "@esbuild/netbsd-x64@0.21.5": + "@esbuild/netbsd-arm64@0.25.1": resolution: { - integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==, + integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==, } - engines: { node: ">=12" } - cpu: [x64] + engines: { node: ">=18" } + cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.24.0": + "@esbuild/netbsd-x64@0.25.1": resolution: { - integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==, + integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==, } engines: { node: ">=18" } cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.24.0": + "@esbuild/openbsd-arm64@0.25.1": resolution: { - integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==, + integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==, } engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.21.5": + "@esbuild/openbsd-x64@0.25.1": resolution: { - integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [openbsd] - - "@esbuild/openbsd-x64@0.24.0": - resolution: - { - integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==, + integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==, } engines: { node: ">=18" } cpu: [x64] os: [openbsd] - "@esbuild/sunos-x64@0.21.5": + "@esbuild/sunos-x64@0.25.1": resolution: { - integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [sunos] - - "@esbuild/sunos-x64@0.24.0": - resolution: - { - integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==, + integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==, } engines: { node: ">=18" } cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.21.5": + "@esbuild/win32-arm64@0.25.1": resolution: { - integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [win32] - - "@esbuild/win32-arm64@0.24.0": - resolution: - { - integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==, + integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==, } engines: { node: ">=18" } cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.21.5": + "@esbuild/win32-ia32@0.25.1": resolution: { - integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [win32] - - "@esbuild/win32-ia32@0.24.0": - resolution: - { - integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==, + integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==, } engines: { node: ">=18" } cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.21.5": + "@esbuild/win32-x64@0.25.1": resolution: { - integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [win32] - - "@esbuild/win32-x64@0.24.0": - resolution: - { - integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==, + integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==, } engines: { node: ">=18" } cpu: [x64] os: [win32] - "@expressive-code/core@0.38.3": + "@expressive-code/core@0.40.2": resolution: { - integrity: sha512-s0/OtdRpBONwcn23O8nVwDNQqpBGKscysejkeBkwlIeHRLZWgiTVrusT5Idrdz1d8cW5wRk9iGsAIQmwDPXgJg==, + integrity: sha512-gXY3v7jbgz6nWKvRpoDxK4AHUPkZRuJsM79vHX/5uhV9/qX6Qnctp/U/dMHog/LCVXcuOps+5nRmf1uxQVPb3w==, } - "@expressive-code/plugin-frames@0.38.3": + "@expressive-code/plugin-frames@0.40.2": resolution: { - integrity: sha512-qL2oC6FplmHNQfZ8ZkTR64/wKo9x0c8uP2WDftR/ydwN/yhe1ed7ZWYb8r3dezxsls+tDokCnN4zYR594jbpvg==, + integrity: sha512-aLw5IlDlZWb10Jo/TTDCVsmJhKfZ7FJI83Zo9VDrV0OBlmHAg7klZqw68VDz7FlftIBVAmMby53/MNXPnMjTSQ==, } - "@expressive-code/plugin-shiki@0.38.3": + "@expressive-code/plugin-shiki@0.40.2": resolution: { - integrity: sha512-kqHnglZeesqG3UKrb6e9Fq5W36AZ05Y9tCREmSN2lw8LVTqENIeCIkLDdWtQ5VoHlKqwUEQFTVlRehdwoY7Gmw==, + integrity: sha512-t2HMR5BO6GdDW1c1ISBTk66xO503e/Z8ecZdNcr6E4NpUfvY+MRje+LtrcvbBqMwWBBO8RpVKcam/Uy+1GxwKQ==, } - "@expressive-code/plugin-text-markers@0.38.3": + "@expressive-code/plugin-text-markers@0.40.2": resolution: { - integrity: sha512-dPK3+BVGTbTmGQGU3Fkj3jZ3OltWUAlxetMHI6limUGCWBCucZiwoZeFM/WmqQa71GyKRzhBT+iEov6kkz2xVA==, + integrity: sha512-/XoLjD67K9nfM4TgDlXAExzMJp6ewFKxNpfUw4F7q5Ecy+IU3/9zQQG/O70Zy+RxYTwKGw2MA9kd7yelsxnSmw==, } - "@fontsource/inter@5.1.1": + "@fontsource/inter@5.2.5": resolution: { - integrity: sha512-weN3E+rq0Xb3Z93VHJ+Rc7WOQX9ETJPTAJ+gDcaMHtjft67L58sfS65rAjC5tZUXQ2FdZ/V1/sSzCwZ6v05kJw==, + integrity: sha512-kbsPKj0S4p44JdYRFiW78Td8Ge2sBVxi/PIBwmih+RpSXUdvS9nbs1HIiuUSPtRMi14CqLEZ/fbk7dj7vni1Sg==, } - "@fontsource/rubik@5.1.1": + "@fontsource/rubik@5.2.5": resolution: { - integrity: sha512-g5H+vzDxwTxUBtEpPoNNF3uVZkqIvrXnYn0S8aQZNz1r2LMfpT0o/pnWr43hVumapVpm0CsT4xvH2Mw9LHnGqQ==, + integrity: sha512-vr7hwIRJfK+OGi8+pEcNdLCzMoOAxfHPOmfDfZ63mDzG1/OUSeTLWiAtYywKCwPluTcV84hY2CHBUBF+OpKEcw==, } "@humanwhocodes/momoa@2.0.4": @@ -1400,139 +1208,6 @@ packages: cpu: [x64] os: [win32] - "@parcel/watcher-android-arm64@2.5.0": - resolution: - { - integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==, - } - engines: { node: ">= 10.0.0" } - cpu: [arm64] - os: [android] - - "@parcel/watcher-darwin-arm64@2.5.0": - resolution: - { - integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==, - } - engines: { node: ">= 10.0.0" } - cpu: [arm64] - os: [darwin] - - "@parcel/watcher-darwin-x64@2.5.0": - resolution: - { - integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==, - } - engines: { node: ">= 10.0.0" } - cpu: [x64] - os: [darwin] - - "@parcel/watcher-freebsd-x64@2.5.0": - resolution: - { - integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==, - } - engines: { node: ">= 10.0.0" } - cpu: [x64] - os: [freebsd] - - "@parcel/watcher-linux-arm-glibc@2.5.0": - resolution: - { - integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==, - } - engines: { node: ">= 10.0.0" } - cpu: [arm] - os: [linux] - - "@parcel/watcher-linux-arm-musl@2.5.0": - resolution: - { - integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==, - } - engines: { node: ">= 10.0.0" } - cpu: [arm] - os: [linux] - - "@parcel/watcher-linux-arm64-glibc@2.5.0": - resolution: - { - integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==, - } - engines: { node: ">= 10.0.0" } - cpu: [arm64] - os: [linux] - - "@parcel/watcher-linux-arm64-musl@2.5.0": - resolution: - { - integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==, - } - engines: { node: ">= 10.0.0" } - cpu: [arm64] - os: [linux] - - "@parcel/watcher-linux-x64-glibc@2.5.0": - resolution: - { - integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==, - } - engines: { node: ">= 10.0.0" } - cpu: [x64] - os: [linux] - - "@parcel/watcher-linux-x64-musl@2.5.0": - resolution: - { - integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==, - } - engines: { node: ">= 10.0.0" } - cpu: [x64] - os: [linux] - - "@parcel/watcher-wasm@2.5.0": - resolution: - { - integrity: sha512-Z4ouuR8Pfggk1EYYbTaIoxc+Yv4o7cGQnH0Xy8+pQ+HbiW+ZnwhcD2LPf/prfq1nIWpAxjOkQ8uSMFWMtBLiVQ==, - } - engines: { node: ">= 10.0.0" } - bundledDependencies: - - napi-wasm - - "@parcel/watcher-win32-arm64@2.5.0": - resolution: - { - integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==, - } - engines: { node: ">= 10.0.0" } - cpu: [arm64] - os: [win32] - - "@parcel/watcher-win32-ia32@2.5.0": - resolution: - { - integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==, - } - engines: { node: ">= 10.0.0" } - cpu: [ia32] - os: [win32] - - "@parcel/watcher-win32-x64@2.5.0": - resolution: - { - integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==, - } - engines: { node: ">= 10.0.0" } - cpu: [x64] - os: [win32] - - "@parcel/watcher@2.5.0": - resolution: - { - integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==, - } - engines: { node: ">= 10.0.0" } - "@pkgjs/parseargs@0.11.0": resolution: { @@ -1554,6 +1229,7 @@ packages: { integrity: sha512-Bt3QVovFSua4QmHa65EHUmh2xS0XJ3rgTEUPH998f4OW4VVJke3BuS16f+kM0ZLOGdvIrzrPRqwihuv5BAjtrA==, } + deprecated: This package is no longer maintained. Please use `@apidevtools/json-schema-ref-parser` instead. "@readme/openapi-parser@2.6.0": resolution: @@ -1583,186 +1259,198 @@ packages: rollup: optional: true - "@rollup/rollup-android-arm-eabi@4.29.1": + "@rollup/rollup-android-arm-eabi@4.35.0": resolution: { - integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==, + integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==, } cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.29.1": + "@rollup/rollup-android-arm64@4.35.0": resolution: { - integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==, + integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==, } cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.29.1": + "@rollup/rollup-darwin-arm64@4.35.0": resolution: { - integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==, + integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==, } cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.29.1": + "@rollup/rollup-darwin-x64@4.35.0": resolution: { - integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==, + integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==, } cpu: [x64] os: [darwin] - "@rollup/rollup-freebsd-arm64@4.29.1": + "@rollup/rollup-freebsd-arm64@4.35.0": resolution: { - integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==, + integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==, } cpu: [arm64] os: [freebsd] - "@rollup/rollup-freebsd-x64@4.29.1": + "@rollup/rollup-freebsd-x64@4.35.0": resolution: { - integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==, + integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==, } cpu: [x64] os: [freebsd] - "@rollup/rollup-linux-arm-gnueabihf@4.29.1": + "@rollup/rollup-linux-arm-gnueabihf@4.35.0": resolution: { - integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==, + integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==, } cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm-musleabihf@4.29.1": + "@rollup/rollup-linux-arm-musleabihf@4.35.0": resolution: { - integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==, + integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==, } cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm64-gnu@4.29.1": + "@rollup/rollup-linux-arm64-gnu@4.35.0": resolution: { - integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==, + integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==, } cpu: [arm64] os: [linux] - "@rollup/rollup-linux-arm64-musl@4.29.1": + "@rollup/rollup-linux-arm64-musl@4.35.0": resolution: { - integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==, + integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==, } cpu: [arm64] os: [linux] - "@rollup/rollup-linux-loongarch64-gnu@4.29.1": + "@rollup/rollup-linux-loongarch64-gnu@4.35.0": resolution: { - integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==, + integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==, } cpu: [loong64] os: [linux] - "@rollup/rollup-linux-powerpc64le-gnu@4.29.1": + "@rollup/rollup-linux-powerpc64le-gnu@4.35.0": resolution: { - integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==, + integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==, } cpu: [ppc64] os: [linux] - "@rollup/rollup-linux-riscv64-gnu@4.29.1": + "@rollup/rollup-linux-riscv64-gnu@4.35.0": resolution: { - integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==, + integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==, } cpu: [riscv64] os: [linux] - "@rollup/rollup-linux-s390x-gnu@4.29.1": + "@rollup/rollup-linux-s390x-gnu@4.35.0": resolution: { - integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==, + integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==, } cpu: [s390x] os: [linux] - "@rollup/rollup-linux-x64-gnu@4.29.1": + "@rollup/rollup-linux-x64-gnu@4.35.0": resolution: { - integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==, + integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==, } cpu: [x64] os: [linux] - "@rollup/rollup-linux-x64-musl@4.29.1": + "@rollup/rollup-linux-x64-musl@4.35.0": resolution: { - integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==, + integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==, } cpu: [x64] os: [linux] - "@rollup/rollup-win32-arm64-msvc@4.29.1": + "@rollup/rollup-win32-arm64-msvc@4.35.0": resolution: { - integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==, + integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==, } cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.29.1": + "@rollup/rollup-win32-ia32-msvc@4.35.0": resolution: { - integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==, + integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==, } cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.29.1": + "@rollup/rollup-win32-x64-msvc@4.35.0": resolution: { - integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==, + integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==, } cpu: [x64] os: [win32] - "@shikijs/core@1.24.4": + "@shikijs/core@1.29.2": resolution: { - integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==, + integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==, } - "@shikijs/engine-javascript@1.24.4": + "@shikijs/engine-javascript@1.29.2": resolution: { - integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==, + integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==, } - "@shikijs/engine-oniguruma@1.24.4": + "@shikijs/engine-oniguruma@1.29.2": resolution: { - integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==, + integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==, } - "@shikijs/types@1.24.4": + "@shikijs/langs@1.29.2": resolution: { - integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==, + integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==, } - "@shikijs/vscode-textmate@9.3.1": + "@shikijs/themes@1.29.2": resolution: { - integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==, + integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==, + } + + "@shikijs/types@1.29.2": + resolution: + { + integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==, + } + + "@shikijs/vscode-textmate@10.0.2": + resolution: + { + integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==, } "@trysound/sax@0.2.0": @@ -1932,10 +1620,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.0: + acorn@8.14.1: resolution: { - integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==, + integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==, } engines: { node: ">=0.4.0" } hasBin: true @@ -2010,12 +1698,6 @@ packages: integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, } - argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } - argparse@2.0.1: resolution: { @@ -2042,27 +1724,27 @@ packages: } hasBin: true - astro-expressive-code@0.38.3: + astro-expressive-code@0.40.2: resolution: { - integrity: sha512-Tvdc7RV0G92BbtyEOsfJtXU35w41CkM94fOAzxbQP67Wj5jArfserJ321FO4XA7WG9QMV0GIBmQq77NBIRDzpQ==, + integrity: sha512-yJMQId0yXSAbW9I6yqvJ3FcjKzJ8zRL7elbJbllkv1ZJPlsI0NI83Pxn1YL1IapEM347EvOOkSW2GL+2+NO61w==, } peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.1.1: + astro@5.5.2: resolution: { - integrity: sha512-prpWC2PRs4P3FKQg6gZaU+VNMqbZi5pDvORGB2nrjfRjkrvF6/l4BqhvkJ6YQ0Ohm5rIMVz8ljgaRI77mLHbwg==, + integrity: sha512-SOTJxB8mqxe/KEYEJiLIot0YULiCffyfTEclwmdeaASitDJ7eLM/KYrJ9sx3U5hq9GVI17Z4Y0P/1T2aQ0ZN3A==, } engines: { node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0" } hasBin: true - autoprefixer@10.4.20: + autoprefixer@10.4.21: resolution: { - integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==, + integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==, } engines: { node: ^10 || ^12 || >=14 } hasBin: true @@ -2147,6 +1829,14 @@ packages: engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true + browserslist@4.24.4: + resolution: + { + integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + call-me-maybe@1.0.2: resolution: { @@ -2179,6 +1869,12 @@ packages: integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==, } + caniuse-lite@1.0.30001704: + resolution: + { + integrity: sha512-+L2IgBbV6gXB4ETf0keSvLr7JUrRVbIaB/lrQ1+z8mRcQiisG5k+lG6O4n6Y5q6f5EuNfaYXKgymucphlEXQew==, + } + ccount@2.0.1: resolution: { @@ -2237,19 +1933,13 @@ packages: } engines: { node: ">= 14.16.0" } - ci-info@4.1.0: + ci-info@4.2.0: resolution: { - integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==, + integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==, } engines: { node: ">=8" } - citty@0.1.6: - resolution: - { - integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==, - } - cli-boxes@3.0.0: resolution: { @@ -2257,13 +1947,6 @@ packages: } engines: { node: ">=10" } - clipboardy@4.0.0: - resolution: - { - integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==, - } - engines: { node: ">=18" } - cliui@8.0.1: resolution: { @@ -2349,19 +2032,6 @@ packages: integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==, } - confbox@0.1.8: - resolution: - { - integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==, - } - - consola@3.3.1: - resolution: - { - integrity: sha512-GyKnPG3/I+a4RtJxgHquJXWr70g9I3c4NT3dvqh0LPHQP2nZFQBOBszb7a5u/pGzqr40AKplQA6UxM1BSynSXg==, - } - engines: { node: ^14.18.0 || >=16.10.0 } - cookie-es@1.2.2: resolution: { @@ -2382,10 +2052,10 @@ packages: } engines: { node: ">= 8" } - crossws@0.3.1: + crossws@0.3.4: resolution: { - integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==, + integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==, } css-blank-pseudo@7.0.1: @@ -2542,14 +2212,6 @@ packages: integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==, } - detect-libc@1.0.3: - resolution: - { - integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==, - } - engines: { node: ">=0.10" } - hasBin: true - detect-libc@2.0.3: resolution: { @@ -2683,10 +2345,10 @@ packages: } engines: { node: ">=0.12" } - es-module-lexer@1.5.4: + es-module-lexer@1.6.0: resolution: { - integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==, + integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==, } esast-util-from-estree@2.0.0: @@ -2701,18 +2363,10 @@ packages: integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==, } - esbuild@0.21.5: + esbuild@0.25.1: resolution: { - integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==, - } - engines: { node: ">=12" } - hasBin: true - - esbuild@0.24.0: - resolution: - { - integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==, + integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==, } engines: { node: ">=18" } hasBin: true @@ -2731,14 +2385,6 @@ packages: } engines: { node: ">=12" } - esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } - hasBin: true - estree-util-attach-comments@3.0.0: resolution: { @@ -2793,17 +2439,10 @@ packages: integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, } - execa@8.0.1: + expressive-code@0.40.2: resolution: { - integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, - } - engines: { node: ">=16.17" } - - expressive-code@0.38.3: - resolution: - { - integrity: sha512-COM04AiUotHCKJgWdn7NtW2lqu8OW8owAidMpkXt1qxrZ9Q2iC7+tok/1qIn2ocGnczvr9paIySgGnEwFeEQ8Q==, + integrity: sha512-1zIda2rB0qiDZACawzw2rbdBQiWHBT56uBctS+ezFe5XMAaFaHLnnSYND/Kd+dVzO9HfCXRDpzH3d+3fvOWRcw==, } extend@3.0.2: @@ -2837,6 +2476,17 @@ packages: integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==, } + fdir@6.4.3: + resolution: + { + integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==, + } + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fill-range@7.1.1: resolution: { @@ -2844,26 +2494,6 @@ packages: } engines: { node: ">=8" } - find-up-simple@1.0.0: - resolution: - { - integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==, - } - engines: { node: ">=18" } - - find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: ">=8" } - - find-yarn-workspace-root2@1.2.16: - resolution: - { - integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==, - } - flattie@1.1.1: resolution: { @@ -2871,10 +2501,10 @@ packages: } engines: { node: ">=8" } - foreground-child@3.3.0: + foreground-child@3.3.1: resolution: { - integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==, + integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==, } engines: { node: ">=14" } @@ -2912,19 +2542,6 @@ packages: } engines: { node: ">=18" } - get-port-please@3.1.2: - resolution: - { - integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==, - } - - get-stream@8.0.1: - resolution: - { - integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==, - } - engines: { node: ">=16" } - github-slugger@2.0.0: resolution: { @@ -2952,22 +2569,16 @@ packages: } hasBin: true - graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } - grapheme-splitter@1.0.4: resolution: { integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==, } - h3@1.13.0: + h3@1.15.1: resolution: { - integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==, + integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==, } has-flag@4.0.0: @@ -3068,6 +2679,12 @@ packages: integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==, } + hast-util-to-html@9.0.5: + resolution: + { + integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==, + } + hast-util-to-jsx-runtime@2.3.2: resolution: { @@ -3128,20 +2745,6 @@ packages: integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==, } - http-shutdown@1.2.2: - resolution: - { - integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==, - } - engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } - - human-signals@5.0.0: - resolution: - { - integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==, - } - engines: { node: ">=16.17.0" } - i18next@23.16.8: resolution: { @@ -3267,13 +2870,6 @@ packages: } engines: { node: ">=12" } - is-stream@3.0.0: - resolution: - { - integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - is-wsl@3.1.0: resolution: { @@ -3281,13 +2877,6 @@ packages: } engines: { node: ">=16" } - is64bit@2.0.0: - resolution: - { - integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==, - } - engines: { node: ">=18" } - isexe@2.0.0: resolution: { @@ -3320,13 +2909,6 @@ packages: integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, } - js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } - hasBin: true - js-yaml@4.1.0: resolution: { @@ -3380,6 +2962,13 @@ packages: } engines: { node: ">=6" } + klona@2.0.6: + resolution: + { + integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==, + } + engines: { node: ">= 8" } + leven@3.1.0: resolution: { @@ -3387,6 +2976,103 @@ packages: } engines: { node: ">=6" } + lightningcss-darwin-arm64@1.29.2: + resolution: + { + integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==, + } + engines: { node: ">= 12.0.0" } + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.2: + resolution: + { + integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==, + } + engines: { node: ">= 12.0.0" } + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.2: + resolution: + { + integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==, + } + engines: { node: ">= 12.0.0" } + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: + { + integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==, + } + engines: { node: ">= 12.0.0" } + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.2: + resolution: + { + integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==, + } + engines: { node: ">= 12.0.0" } + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.2: + resolution: + { + integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==, + } + engines: { node: ">= 12.0.0" } + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.2: + resolution: + { + integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==, + } + engines: { node: ">= 12.0.0" } + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.2: + resolution: + { + integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==, + } + engines: { node: ">= 12.0.0" } + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.2: + resolution: + { + integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==, + } + engines: { node: ">= 12.0.0" } + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.2: + resolution: + { + integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==, + } + engines: { node: ">= 12.0.0" } + cpu: [x64] + os: [win32] + + lightningcss@1.29.2: + resolution: + { + integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==, + } + engines: { node: ">= 12.0.0" } + lilconfig@3.1.3: resolution: { @@ -3400,27 +3086,6 @@ packages: integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } - listhen@1.9.0: - resolution: - { - integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==, - } - hasBin: true - - load-yaml-file@0.2.0: - resolution: - { - integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==, - } - engines: { node: ">=6" } - - locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: ">=8" } - lodash.memoize@4.1.2: resolution: { @@ -3596,12 +3261,6 @@ packages: integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, } - merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } - merge2@1.4.1: resolution: { @@ -3832,21 +3491,6 @@ packages: } engines: { node: ">=8.6" } - mime@3.0.0: - resolution: - { - integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==, - } - engines: { node: ">=10.0.0" } - hasBin: true - - mimic-fn@4.0.0: - resolution: - { - integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, - } - engines: { node: ">=12" } - minimatch@9.0.5: resolution: { @@ -3861,16 +3505,10 @@ packages: } engines: { node: ">=16 || 14 >=14.17" } - mlly@1.7.3: + mrmime@2.0.1: resolution: { - integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==, - } - - mrmime@2.0.0: - resolution: - { - integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==, + integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==, } engines: { node: ">=10" } @@ -3913,25 +3551,18 @@ packages: integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==, } - node-addon-api@7.1.1: + node-fetch-native@1.6.6: resolution: { - integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==, + integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==, } - node-fetch-native@1.6.4: + node-mock-http@1.0.0: resolution: { - integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==, + integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==, } - node-forge@1.3.1: - resolution: - { - integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==, - } - engines: { node: ">= 6.13.0" } - node-releases@2.0.19: resolution: { @@ -3952,13 +3583,6 @@ packages: } engines: { node: ">=0.10.0" } - npm-run-path@5.3.0: - resolution: - { - integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - nth-check@2.1.1: resolution: { @@ -3985,23 +3609,10 @@ packages: integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==, } - ohash@1.1.4: + oniguruma-to-es@2.3.0: resolution: { - integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==, - } - - onetime@6.0.0: - resolution: - { - integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, - } - engines: { node: ">=12" } - - oniguruma-to-es@0.8.1: - resolution: - { - integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==, + integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==, } openapi-types@12.1.3: @@ -4010,13 +3621,6 @@ packages: integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==, } - p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: ">=6" } - p-limit@6.2.0: resolution: { @@ -4024,17 +3628,10 @@ packages: } engines: { node: ">=18" } - p-locate@4.1.0: + p-queue@8.1.0: resolution: { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: ">=8" } - - p-queue@8.0.1: - resolution: - { - integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==, + integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==, } engines: { node: ">=18" } @@ -4045,19 +3642,18 @@ packages: } engines: { node: ">=14.16" } - p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: ">=6" } - package-json-from-dist@1.0.1: resolution: { integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==, } + package-manager-detector@1.0.0: + resolution: + { + integrity: sha512-7elnH+9zMsRo7aS72w6MeRugTpdRvInmEB4Kmm9BVvPw/SLG8gXUGQ+4wF0Mys0RSWPz0B9nuBbDe8vFeA2sfg==, + } + pagefind@1.3.0: resolution: { @@ -4089,13 +3685,6 @@ packages: integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==, } - path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } - path-key@3.1.1: resolution: { @@ -4103,13 +3692,6 @@ packages: } engines: { node: ">=8" } - path-key@4.0.0: - resolution: - { - integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, - } - engines: { node: ">=12" } - path-parse@1.0.7: resolution: { @@ -4123,12 +3705,6 @@ packages: } engines: { node: ">=16 || 14 >=14.18" } - pathe@1.1.2: - resolution: - { - integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==, - } - picocolors@1.1.1: resolution: { @@ -4156,13 +3732,6 @@ packages: } engines: { node: ">=0.10.0" } - pify@4.0.1: - resolution: - { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, - } - engines: { node: ">=6" } - pirates@4.0.6: resolution: { @@ -4170,19 +3739,6 @@ packages: } engines: { node: ">= 6" } - pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: ">=8" } - - pkg-types@1.2.1: - resolution: - { - integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==, - } - postcss-attribute-case-insensitive@7.0.1: resolution: { @@ -4210,10 +3766,10 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.7: + postcss-color-functional-notation@7.0.8: resolution: { - integrity: sha512-EZvAHsvyASX63vXnyXOIynkxhaHRSsdb7z6yiXKIovGXAolW4cMZ3qoh7k3VdTsLBS6VGdksGfIo3r6+waLoOw==, + integrity: sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==, } engines: { node: ">=18" } peerDependencies: @@ -4398,10 +3954,10 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-lab-function@7.0.7: + postcss-lab-function@7.0.8: resolution: { - integrity: sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig==, + integrity: sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==, } engines: { node: ">=18" } peerDependencies: @@ -4422,10 +3978,10 @@ packages: ts-node: optional: true - postcss-logical@8.0.0: + postcss-logical@8.1.0: resolution: { - integrity: sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg==, + integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==, } engines: { node: ">=18" } peerDependencies: @@ -4628,10 +4184,10 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.1.3: + postcss-preset-env@10.1.5: resolution: { - integrity: sha512-9qzVhcMFU/MnwYHyYpJz4JhGku/4+xEiPTmhn0hj3IxnUYlEF9vbh7OC1KoLAnenS6Fgg43TKNp9xcuMeAi4Zw==, + integrity: sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==, } engines: { node: ">=18" } peerDependencies: @@ -4726,12 +4282,12 @@ packages: } engines: { node: ^10 || ^12 || >=14 } - preferred-pm@4.0.0: + postcss@8.5.3: resolution: { - integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==, + integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==, } - engines: { node: ">=18.12" } + engines: { node: ^10 || ^12 || >=14 } prettier@2.8.7: resolution: @@ -4761,6 +4317,12 @@ packages: integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==, } + property-information@7.0.0: + resolution: + { + integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==, + } + queue-microtask@1.2.3: resolution: { @@ -4823,10 +4385,10 @@ packages: integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, } - regex-recursion@5.0.0: + regex-recursion@5.1.1: resolution: { - integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==, + integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==, } regex-utilities@2.3.0: @@ -4835,16 +4397,16 @@ packages: integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==, } - regex@5.0.2: + regex@5.1.1: resolution: { - integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==, + integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==, } - rehype-expressive-code@0.38.3: + rehype-expressive-code@0.40.2: resolution: { - integrity: sha512-RYSSDkMBikoTbycZPkcWp6ELneANT4eTpND1DSRJ6nI2eVFUwTBDCvE2vO6jOOTaavwnPiydi4i/87NRyjpdOA==, + integrity: sha512-+kn+AMGCrGzvtH8Q5lC6Y5lnmTV/r33fdmi5QU/IH1KPHKobKr5UnLwJuqHv5jBTSN/0v2wLDS7RTM73FVzqmQ==, } rehype-format@5.0.1: @@ -4889,10 +4451,10 @@ packages: integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==, } - remark-gfm@4.0.0: + remark-gfm@4.0.1: resolution: { - integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==, + integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==, } remark-mdx@3.1.0: @@ -4991,10 +4553,10 @@ packages: } engines: { iojs: ">=1.0.0", node: ">=0.10.0" } - rollup@4.29.1: + rollup@4.35.0: resolution: { - integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==, + integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==, } engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true @@ -5019,6 +4581,14 @@ packages: engines: { node: ">=10" } hasBin: true + semver@7.7.1: + resolution: + { + integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==, + } + engines: { node: ">=10" } + hasBin: true + sharp@0.33.5: resolution: { @@ -5040,10 +4610,10 @@ packages: } engines: { node: ">=8" } - shiki@1.24.4: + shiki@1.29.2: resolution: { - integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==, + integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==, } signal-exit@4.1.0: @@ -5073,6 +4643,13 @@ packages: engines: { node: ">=14.0.0", npm: ">=6.0.0" } hasBin: true + smol-toml@1.3.1: + resolution: + { + integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==, + } + engines: { node: ">= 18" } + source-map-js@1.2.1: resolution: { @@ -5093,27 +4670,16 @@ packages: integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, } - sprintf-js@1.0.3: + starlight-openapi@0.14.1: resolution: { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } - - starlight-openapi@0.9.0: - resolution: - { - integrity: sha512-YKsYNqYhWu3VF91z4XB1os4ZXwTsgz1LCZggeK/G6RguV4hcaFH18wHYGtO9icqPR+ZbJyrLAdlAjF3CvGBAWA==, + integrity: sha512-hCmeNR2KA0RrvJMjewPmqmHSY470TobyU1PDKDbwbHMbP0OcYxD36pTOTXkWFxdSnIQc7WPC0jc8trMNzb3/tw==, } engines: { node: ">=18.17.1" } peerDependencies: - "@astrojs/markdown-remark": ">=6.0.0" + "@astrojs/markdown-remark": ">=6.0.1" "@astrojs/starlight": ">=0.30.0" - - std-env@3.8.0: - resolution: - { - integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==, - } + astro: ">=5.1.5" stream-replace-string@2.0.0: resolution: @@ -5162,20 +4728,6 @@ packages: } engines: { node: ">=12" } - strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: ">=4" } - - strip-final-newline@3.0.0: - resolution: - { - integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, - } - engines: { node: ">=12" } - style-to-object@0.4.4: resolution: { @@ -5227,13 +4779,6 @@ packages: engines: { node: ">=14.0.0" } hasBin: true - system-architecture@0.1.0: - resolution: - { - integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==, - } - engines: { node: ">=18" } - tailwindcss@3.4.17: resolution: { @@ -5255,12 +4800,19 @@ packages: integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, } - tinyexec@0.3.1: + tinyexec@0.3.2: resolution: { - integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==, + integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==, } + tinyglobby@0.2.12: + resolution: + { + integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==, + } + engines: { node: ">=12.0.0" } + to-regex-range@5.0.1: resolution: { @@ -5286,10 +4838,10 @@ packages: integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, } - tsconfck@3.1.4: + tsconfck@3.1.5: resolution: { - integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==, + integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==, } engines: { node: ^18 || >=20 } hasBin: true @@ -5324,10 +4876,10 @@ packages: integrity: sha512-fAIveQKsoYj55CozUiBoj4b/7WpN0i4o74wiGY5JVUEoD0XiqDk1tJqTEjgzL2/AizKQrXxyRosSebyDzBZKjw==, } - typescript@5.7.2: + typescript@5.8.2: resolution: { - integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==, + integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==, } engines: { node: ">=14.17" } hasBin: true @@ -5350,12 +4902,6 @@ packages: integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==, } - unenv@1.10.0: - resolution: - { - integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==, - } - unified@11.0.5: resolution: { @@ -5422,30 +4968,30 @@ packages: integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==, } - unstorage@1.14.1: + unstorage@1.15.0: resolution: { - integrity: sha512-0MBKpoVhNLL/Ixvue9lIsrHkwwWW9/f3TRftsYu1R7nZJJyHSdgPMBDjny2op07nirnS3OX6H3u+YDFGld+1Bg==, + integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==, } peerDependencies: "@azure/app-configuration": ^1.8.0 "@azure/cosmos": ^4.2.0 "@azure/data-tables": ^13.3.0 - "@azure/identity": ^4.5.0 + "@azure/identity": ^4.6.0 "@azure/keyvault-secrets": ^4.9.0 "@azure/storage-blob": ^12.26.0 "@capacitor/preferences": ^6.0.3 - "@deno/kv": ">=0.8.4" + "@deno/kv": ">=0.9.0" "@netlify/blobs": ^6.5.0 || ^7.0.0 || ^8.1.0 "@planetscale/database": ^1.19.0 "@upstash/redis": ^1.34.3 - "@vercel/blob": ">=0.27.0" + "@vercel/blob": ">=0.27.1" "@vercel/kv": ^1.0.1 aws4fetch: ^1.0.20 db0: ">=0.2.1" idb-keyval: ^6.2.1 - ioredis: ^5.4.1 - uploadthing: ^7.4.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 peerDependenciesMeta: "@azure/app-configuration": optional: true @@ -5484,13 +5030,6 @@ packages: uploadthing: optional: true - untun@0.1.3: - resolution: - { - integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==, - } - hasBin: true - update-browserslist-db@1.1.1: resolution: { @@ -5500,11 +5039,12 @@ packages: peerDependencies: browserslist: ">= 4.21.0" - uqr@0.1.2: + url-template@3.1.1: resolution: { - integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==, + integrity: sha512-4oszoaEKE/mQOtAmdMWqIRHmkxWkUZMnXFnjQ5i01CuRSK3uluxcH1MRVVVWmhlnzT1SCDfKxxficm2G37qzCA==, } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } util-deprecate@1.0.2: resolution: @@ -5530,10 +5070,10 @@ packages: integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, } - vite@6.0.5: + vite@6.2.2: resolution: { - integrity: sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==, + integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==, } engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } hasBin: true @@ -5573,10 +5113,10 @@ packages: yaml: optional: true - vitefu@1.0.4: + vitefu@1.0.6: resolution: { - integrity: sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==, + integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==, } peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 @@ -5766,13 +5306,6 @@ packages: } engines: { node: ">=4" } - which-pm@3.0.0: - resolution: - { - integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==, - } - engines: { node: ">=18.12" } - which@2.0.2: resolution: { @@ -5865,10 +5398,10 @@ packages: } engines: { node: ">=12.20" } - yocto-spinner@0.1.2: + yocto-spinner@0.2.1: resolution: { - integrity: sha512-VfmLIh/ZSZOJnVRQZc/dvpPP90lWL4G0bmxQMP0+U/2vKBA8GSpcBuWv17y7F+CZItRuO97HN1wdbb4p10uhOg==, + integrity: sha512-lHHxjh0bXaLgdJy3cNnVb/F9myx3CkhrvSOEVTkaUgNMXnYFa2xYPVhtGnqhh3jErY2gParBOHallCbc7NrlZQ==, } engines: { node: ">=18.19" } @@ -5879,10 +5412,10 @@ packages: } engines: { node: ">=18" } - zod-to-json-schema@3.24.1: + zod-to-json-schema@3.24.3: resolution: { - integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==, + integrity: sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A==, } peerDependencies: zod: ^3.24.1 @@ -5896,10 +5429,10 @@ packages: typescript: ^4.9.4 || ^5.0.2 zod: ^3 - zod@3.24.1: + zod@3.24.2: resolution: { - integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==, + integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==, } zwitch@2.0.4: @@ -5913,12 +5446,12 @@ snapshots: "@apidevtools/swagger-methods@3.0.2": {} - "@astrojs/check@0.9.4(typescript@5.7.2)": + "@astrojs/check@0.9.4(typescript@5.8.2)": dependencies: - "@astrojs/language-server": 2.15.4(typescript@5.7.2) + "@astrojs/language-server": 2.15.4(typescript@5.8.2) chokidar: 4.0.3 kleur: 4.1.5 - typescript: 5.7.2 + typescript: 5.8.2 yargs: 17.7.2 transitivePeerDependencies: - prettier @@ -5926,14 +5459,16 @@ snapshots: "@astrojs/compiler@2.10.3": {} - "@astrojs/internal-helpers@0.4.2": {} + "@astrojs/compiler@2.11.0": {} - "@astrojs/language-server@2.15.4(typescript@5.7.2)": + "@astrojs/internal-helpers@0.6.1": {} + + "@astrojs/language-server@2.15.4(typescript@5.8.2)": dependencies: "@astrojs/compiler": 2.10.3 "@astrojs/yaml2ts": 0.2.2 "@jridgewell/sourcemap-codec": 1.5.0 - "@volar/kit": 2.4.11(typescript@5.7.2) + "@volar/kit": 2.4.11(typescript@5.8.2) "@volar/language-core": 2.4.11 "@volar/language-server": 2.4.11 "@volar/language-service": 2.4.11 @@ -5951,8 +5486,9 @@ snapshots: transitivePeerDependencies: - typescript - "@astrojs/markdown-remark@6.0.1": + "@astrojs/markdown-remark@6.3.0": dependencies: + "@astrojs/internal-helpers": 0.6.1 "@astrojs/prism": 3.2.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 @@ -5962,11 +5498,12 @@ snapshots: mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 - remark-gfm: 4.0.0 + remark-gfm: 4.0.1 remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-smartypants: 3.0.2 - shiki: 1.24.4 + shiki: 1.29.2 + smol-toml: 1.3.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -5975,18 +5512,18 @@ snapshots: transitivePeerDependencies: - supports-color - "@astrojs/mdx@4.0.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1))": + "@astrojs/mdx@4.2.0(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1))": dependencies: - "@astrojs/markdown-remark": 6.0.1 - "@mdx-js/mdx": 3.1.0(acorn@8.14.0) - acorn: 8.14.0 - astro: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1) - es-module-lexer: 1.5.4 + "@astrojs/markdown-remark": 6.3.0 + "@mdx-js/mdx": 3.1.0(acorn@8.14.1) + acorn: 8.14.1 + astro: 5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1) + es-module-lexer: 1.6.0 estree-util-visit: 2.0.0 - hast-util-to-html: 9.0.4 + hast-util-to-html: 9.0.5 kleur: 4.1.5 rehype-raw: 7.0.0 - remark-gfm: 4.0.0 + remark-gfm: 4.0.1 remark-smartypants: 3.0.2 source-map: 0.7.4 unist-util-visit: 5.0.0 @@ -6002,24 +5539,24 @@ snapshots: dependencies: sitemap: 8.0.0 stream-replace-string: 2.0.0 - zod: 3.24.1 + zod: 3.24.2 - "@astrojs/starlight-tailwind@3.0.0(@astrojs/starlight@0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)))(@astrojs/tailwind@5.1.4(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.17))(tailwindcss@3.4.17)": + "@astrojs/starlight-tailwind@3.0.0(@astrojs/starlight@0.32.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)))(@astrojs/tailwind@5.1.5(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1))(tailwindcss@3.4.17))(tailwindcss@3.4.17)": dependencies: - "@astrojs/starlight": 0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)) - "@astrojs/tailwind": 5.1.4(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.17) + "@astrojs/starlight": 0.32.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)) + "@astrojs/tailwind": 5.1.5(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1))(tailwindcss@3.4.17) tailwindcss: 3.4.17 - "@astrojs/starlight@0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1))": + "@astrojs/starlight@0.32.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1))": dependencies: - "@astrojs/mdx": 4.0.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)) + "@astrojs/mdx": 4.2.0(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)) "@astrojs/sitemap": 3.2.1 "@pagefind/default-ui": 1.3.0 "@types/hast": 3.0.4 "@types/js-yaml": 4.0.9 "@types/mdast": 4.0.4 - astro: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1) - astro-expressive-code: 0.38.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)) + astro: 5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1) + astro-expressive-code: 0.40.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.3 @@ -6027,6 +5564,7 @@ snapshots: hastscript: 9.0.0 i18next: 23.16.8 js-yaml: 4.1.0 + klona: 2.0.6 mdast-util-directive: 3.0.0 mdast-util-to-markdown: 2.1.2 mdast-util-to-string: 4.0.0 @@ -6040,19 +5578,19 @@ snapshots: transitivePeerDependencies: - supports-color - "@astrojs/tailwind@5.1.4(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.17)": + "@astrojs/tailwind@5.1.5(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1))(tailwindcss@3.4.17)": dependencies: - astro: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1) - autoprefixer: 10.4.20(postcss@8.4.49) - postcss: 8.4.49 - postcss-load-config: 4.0.2(postcss@8.4.49) + astro: 5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1) + autoprefixer: 10.4.21(postcss@8.5.3) + postcss: 8.5.3 + postcss-load-config: 4.0.2(postcss@8.5.3) tailwindcss: 3.4.17 transitivePeerDependencies: - ts-node "@astrojs/telemetry@3.2.0": dependencies: - ci-info: 4.1.0 + ci-info: 4.2.0 debug: 4.4.0 dlv: 1.1.3 dset: 3.1.4 @@ -6094,17 +5632,17 @@ snapshots: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/color-helpers@5.0.1": {} + "@csstools/color-helpers@5.0.2": {} - "@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": dependencies: - "@csstools/color-helpers": 5.0.1 - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/color-helpers": 5.0.2 + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 @@ -6119,215 +5657,215 @@ snapshots: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-cascade-layers@5.0.1(postcss@8.4.49)": + "@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.3)": dependencies: "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - "@csstools/postcss-color-function@4.0.7(postcss@8.4.49)": + "@csstools/postcss-color-function@4.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-color-mix-function@3.0.7(postcss@8.4.49)": + "@csstools/postcss-color-mix-function@3.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-content-alt-text@2.0.4(postcss@8.4.49)": + "@csstools/postcss-content-alt-text@2.0.4(postcss@8.5.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-exponential-functions@2.0.6(postcss@8.4.49)": + "@csstools/postcss-exponential-functions@2.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-font-format-keywords@4.0.0(postcss@8.4.49)": + "@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.3)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-gamut-mapping@2.0.7(postcss@8.4.49)": + "@csstools/postcss-gamut-mapping@2.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-gradients-interpolation-method@5.0.7(postcss@8.4.49)": + "@csstools/postcss-gradients-interpolation-method@5.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-hwb-function@4.0.7(postcss@8.4.49)": + "@csstools/postcss-hwb-function@4.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-ic-unit@4.0.0(postcss@8.4.49)": + "@csstools/postcss-ic-unit@4.0.0(postcss@8.5.3)": dependencies: - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-initial@2.0.0(postcss@8.4.49)": + "@csstools/postcss-initial@2.0.1(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.4.49)": + "@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.3)": dependencies: "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - "@csstools/postcss-light-dark-function@2.0.7(postcss@8.4.49)": + "@csstools/postcss-light-dark-function@2.0.7(postcss@8.5.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-logical-overflow@2.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-logical-resize@3.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-resize@3.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.4.49)": + "@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.3)": dependencies: "@csstools/css-tokenizer": 3.0.3 - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-media-minmax@2.0.6(postcss@8.4.49)": + "@csstools/postcss-media-minmax@2.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.4.49)": + "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-nested-calc@4.0.0(postcss@8.4.49)": + "@csstools/postcss-nested-calc@4.0.0(postcss@8.5.3)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-normalize-display-values@4.0.0(postcss@8.4.49)": + "@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-oklab-function@4.0.7(postcss@8.4.49)": + "@csstools/postcss-oklab-function@4.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.4.49)": + "@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-random-function@1.0.2(postcss@8.4.49)": + "@csstools/postcss-random-function@1.0.3(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-relative-color-syntax@3.0.7(postcss@8.4.49)": + "@csstools/postcss-relative-color-syntax@3.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.4.49)": + "@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - "@csstools/postcss-sign-functions@1.1.1(postcss@8.4.49)": + "@csstools/postcss-sign-functions@1.1.2(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-stepped-value-functions@4.0.6(postcss@8.4.49)": + "@csstools/postcss-stepped-value-functions@4.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-text-decoration-shorthand@4.0.1(postcss@8.4.49)": + "@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.3)": dependencies: - "@csstools/color-helpers": 5.0.1 - postcss: 8.4.49 + "@csstools/color-helpers": 5.0.2 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-trigonometric-functions@4.0.6(postcss@8.4.49)": + "@csstools/postcss-trigonometric-functions@4.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-unset-value@4.0.0(postcss@8.4.49)": + "@csstools/postcss-unset-value@4.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 "@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.0.0)": dependencies: @@ -6337,9 +5875,9 @@ snapshots: dependencies: postcss-selector-parser: 7.0.0 - "@csstools/utilities@2.0.0(postcss@8.4.49)": + "@csstools/utilities@2.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 "@ctrl/tinycolor@4.1.0": {} @@ -6371,148 +5909,82 @@ snapshots: tslib: 2.8.1 optional: true - "@esbuild/aix-ppc64@0.21.5": + "@esbuild/aix-ppc64@0.25.1": optional: true - "@esbuild/aix-ppc64@0.24.0": + "@esbuild/android-arm64@0.25.1": optional: true - "@esbuild/android-arm64@0.21.5": + "@esbuild/android-arm@0.25.1": optional: true - "@esbuild/android-arm64@0.24.0": + "@esbuild/android-x64@0.25.1": optional: true - "@esbuild/android-arm@0.21.5": + "@esbuild/darwin-arm64@0.25.1": optional: true - "@esbuild/android-arm@0.24.0": + "@esbuild/darwin-x64@0.25.1": optional: true - "@esbuild/android-x64@0.21.5": + "@esbuild/freebsd-arm64@0.25.1": optional: true - "@esbuild/android-x64@0.24.0": + "@esbuild/freebsd-x64@0.25.1": optional: true - "@esbuild/darwin-arm64@0.21.5": + "@esbuild/linux-arm64@0.25.1": optional: true - "@esbuild/darwin-arm64@0.24.0": + "@esbuild/linux-arm@0.25.1": optional: true - "@esbuild/darwin-x64@0.21.5": + "@esbuild/linux-ia32@0.25.1": optional: true - "@esbuild/darwin-x64@0.24.0": + "@esbuild/linux-loong64@0.25.1": optional: true - "@esbuild/freebsd-arm64@0.21.5": + "@esbuild/linux-mips64el@0.25.1": optional: true - "@esbuild/freebsd-arm64@0.24.0": + "@esbuild/linux-ppc64@0.25.1": optional: true - "@esbuild/freebsd-x64@0.21.5": + "@esbuild/linux-riscv64@0.25.1": optional: true - "@esbuild/freebsd-x64@0.24.0": + "@esbuild/linux-s390x@0.25.1": optional: true - "@esbuild/linux-arm64@0.21.5": + "@esbuild/linux-x64@0.25.1": optional: true - "@esbuild/linux-arm64@0.24.0": + "@esbuild/netbsd-arm64@0.25.1": optional: true - "@esbuild/linux-arm@0.21.5": + "@esbuild/netbsd-x64@0.25.1": optional: true - "@esbuild/linux-arm@0.24.0": + "@esbuild/openbsd-arm64@0.25.1": optional: true - "@esbuild/linux-ia32@0.21.5": + "@esbuild/openbsd-x64@0.25.1": optional: true - "@esbuild/linux-ia32@0.24.0": + "@esbuild/sunos-x64@0.25.1": optional: true - "@esbuild/linux-loong64@0.21.5": + "@esbuild/win32-arm64@0.25.1": optional: true - "@esbuild/linux-loong64@0.24.0": + "@esbuild/win32-ia32@0.25.1": optional: true - "@esbuild/linux-mips64el@0.21.5": + "@esbuild/win32-x64@0.25.1": optional: true - "@esbuild/linux-mips64el@0.24.0": - optional: true - - "@esbuild/linux-ppc64@0.21.5": - optional: true - - "@esbuild/linux-ppc64@0.24.0": - optional: true - - "@esbuild/linux-riscv64@0.21.5": - optional: true - - "@esbuild/linux-riscv64@0.24.0": - optional: true - - "@esbuild/linux-s390x@0.21.5": - optional: true - - "@esbuild/linux-s390x@0.24.0": - optional: true - - "@esbuild/linux-x64@0.21.5": - optional: true - - "@esbuild/linux-x64@0.24.0": - optional: true - - "@esbuild/netbsd-x64@0.21.5": - optional: true - - "@esbuild/netbsd-x64@0.24.0": - optional: true - - "@esbuild/openbsd-arm64@0.24.0": - optional: true - - "@esbuild/openbsd-x64@0.21.5": - optional: true - - "@esbuild/openbsd-x64@0.24.0": - optional: true - - "@esbuild/sunos-x64@0.21.5": - optional: true - - "@esbuild/sunos-x64@0.24.0": - optional: true - - "@esbuild/win32-arm64@0.21.5": - optional: true - - "@esbuild/win32-arm64@0.24.0": - optional: true - - "@esbuild/win32-ia32@0.21.5": - optional: true - - "@esbuild/win32-ia32@0.24.0": - optional: true - - "@esbuild/win32-x64@0.21.5": - optional: true - - "@esbuild/win32-x64@0.24.0": - optional: true - - "@expressive-code/core@0.38.3": + "@expressive-code/core@0.40.2": dependencies: "@ctrl/tinycolor": 4.1.0 hast-util-select: 6.0.3 @@ -6524,22 +5996,22 @@ snapshots: unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - "@expressive-code/plugin-frames@0.38.3": + "@expressive-code/plugin-frames@0.40.2": dependencies: - "@expressive-code/core": 0.38.3 + "@expressive-code/core": 0.40.2 - "@expressive-code/plugin-shiki@0.38.3": + "@expressive-code/plugin-shiki@0.40.2": dependencies: - "@expressive-code/core": 0.38.3 - shiki: 1.24.4 + "@expressive-code/core": 0.40.2 + shiki: 1.29.2 - "@expressive-code/plugin-text-markers@0.38.3": + "@expressive-code/plugin-text-markers@0.40.2": dependencies: - "@expressive-code/core": 0.38.3 + "@expressive-code/core": 0.40.2 - "@fontsource/inter@5.1.1": {} + "@fontsource/inter@5.2.5": {} - "@fontsource/rubik@5.1.1": {} + "@fontsource/rubik@5.2.5": {} "@humanwhocodes/momoa@2.0.4": {} @@ -6646,7 +6118,7 @@ snapshots: "@jsdevtools/ono@7.1.3": {} - "@mdx-js/mdx@3.1.0(acorn@8.14.0)": + "@mdx-js/mdx@3.1.0(acorn@8.14.1)": dependencies: "@types/estree": 1.0.6 "@types/estree-jsx": 1.0.5 @@ -6660,7 +6132,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.2 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.14.0) + recma-jsx: 1.0.0(acorn@8.14.1) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.0 @@ -6707,71 +6179,6 @@ snapshots: "@pagefind/windows-x64@1.3.0": optional: true - "@parcel/watcher-android-arm64@2.5.0": - optional: true - - "@parcel/watcher-darwin-arm64@2.5.0": - optional: true - - "@parcel/watcher-darwin-x64@2.5.0": - optional: true - - "@parcel/watcher-freebsd-x64@2.5.0": - optional: true - - "@parcel/watcher-linux-arm-glibc@2.5.0": - optional: true - - "@parcel/watcher-linux-arm-musl@2.5.0": - optional: true - - "@parcel/watcher-linux-arm64-glibc@2.5.0": - optional: true - - "@parcel/watcher-linux-arm64-musl@2.5.0": - optional: true - - "@parcel/watcher-linux-x64-glibc@2.5.0": - optional: true - - "@parcel/watcher-linux-x64-musl@2.5.0": - optional: true - - "@parcel/watcher-wasm@2.5.0": - dependencies: - is-glob: 4.0.3 - micromatch: 4.0.8 - - "@parcel/watcher-win32-arm64@2.5.0": - optional: true - - "@parcel/watcher-win32-ia32@2.5.0": - optional: true - - "@parcel/watcher-win32-x64@2.5.0": - optional: true - - "@parcel/watcher@2.5.0": - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.1.1 - optionalDependencies: - "@parcel/watcher-android-arm64": 2.5.0 - "@parcel/watcher-darwin-arm64": 2.5.0 - "@parcel/watcher-darwin-x64": 2.5.0 - "@parcel/watcher-freebsd-x64": 2.5.0 - "@parcel/watcher-linux-arm-glibc": 2.5.0 - "@parcel/watcher-linux-arm-musl": 2.5.0 - "@parcel/watcher-linux-arm64-glibc": 2.5.0 - "@parcel/watcher-linux-arm64-musl": 2.5.0 - "@parcel/watcher-linux-x64-glibc": 2.5.0 - "@parcel/watcher-linux-x64-musl": 2.5.0 - "@parcel/watcher-win32-arm64": 2.5.0 - "@parcel/watcher-win32-ia32": 2.5.0 - "@parcel/watcher-win32-x64": 2.5.0 - "@pkgjs/parseargs@0.11.0": optional: true @@ -6807,97 +6214,105 @@ snapshots: "@readme/openapi-schemas@3.1.0": {} - "@rollup/pluginutils@5.1.4(rollup@4.29.1)": + "@rollup/pluginutils@5.1.4(rollup@4.35.0)": dependencies: "@types/estree": 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.29.1 + rollup: 4.35.0 - "@rollup/rollup-android-arm-eabi@4.29.1": + "@rollup/rollup-android-arm-eabi@4.35.0": optional: true - "@rollup/rollup-android-arm64@4.29.1": + "@rollup/rollup-android-arm64@4.35.0": optional: true - "@rollup/rollup-darwin-arm64@4.29.1": + "@rollup/rollup-darwin-arm64@4.35.0": optional: true - "@rollup/rollup-darwin-x64@4.29.1": + "@rollup/rollup-darwin-x64@4.35.0": optional: true - "@rollup/rollup-freebsd-arm64@4.29.1": + "@rollup/rollup-freebsd-arm64@4.35.0": optional: true - "@rollup/rollup-freebsd-x64@4.29.1": + "@rollup/rollup-freebsd-x64@4.35.0": optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.29.1": + "@rollup/rollup-linux-arm-gnueabihf@4.35.0": optional: true - "@rollup/rollup-linux-arm-musleabihf@4.29.1": + "@rollup/rollup-linux-arm-musleabihf@4.35.0": optional: true - "@rollup/rollup-linux-arm64-gnu@4.29.1": + "@rollup/rollup-linux-arm64-gnu@4.35.0": optional: true - "@rollup/rollup-linux-arm64-musl@4.29.1": + "@rollup/rollup-linux-arm64-musl@4.35.0": optional: true - "@rollup/rollup-linux-loongarch64-gnu@4.29.1": + "@rollup/rollup-linux-loongarch64-gnu@4.35.0": optional: true - "@rollup/rollup-linux-powerpc64le-gnu@4.29.1": + "@rollup/rollup-linux-powerpc64le-gnu@4.35.0": optional: true - "@rollup/rollup-linux-riscv64-gnu@4.29.1": + "@rollup/rollup-linux-riscv64-gnu@4.35.0": optional: true - "@rollup/rollup-linux-s390x-gnu@4.29.1": + "@rollup/rollup-linux-s390x-gnu@4.35.0": optional: true - "@rollup/rollup-linux-x64-gnu@4.29.1": + "@rollup/rollup-linux-x64-gnu@4.35.0": optional: true - "@rollup/rollup-linux-x64-musl@4.29.1": + "@rollup/rollup-linux-x64-musl@4.35.0": optional: true - "@rollup/rollup-win32-arm64-msvc@4.29.1": + "@rollup/rollup-win32-arm64-msvc@4.35.0": optional: true - "@rollup/rollup-win32-ia32-msvc@4.29.1": + "@rollup/rollup-win32-ia32-msvc@4.35.0": optional: true - "@rollup/rollup-win32-x64-msvc@4.29.1": + "@rollup/rollup-win32-x64-msvc@4.35.0": optional: true - "@shikijs/core@1.24.4": + "@shikijs/core@1.29.2": dependencies: - "@shikijs/engine-javascript": 1.24.4 - "@shikijs/engine-oniguruma": 1.24.4 - "@shikijs/types": 1.24.4 - "@shikijs/vscode-textmate": 9.3.1 + "@shikijs/engine-javascript": 1.29.2 + "@shikijs/engine-oniguruma": 1.29.2 + "@shikijs/types": 1.29.2 + "@shikijs/vscode-textmate": 10.0.2 "@types/hast": 3.0.4 hast-util-to-html: 9.0.4 - "@shikijs/engine-javascript@1.24.4": + "@shikijs/engine-javascript@1.29.2": dependencies: - "@shikijs/types": 1.24.4 - "@shikijs/vscode-textmate": 9.3.1 - oniguruma-to-es: 0.8.1 + "@shikijs/types": 1.29.2 + "@shikijs/vscode-textmate": 10.0.2 + oniguruma-to-es: 2.3.0 - "@shikijs/engine-oniguruma@1.24.4": + "@shikijs/engine-oniguruma@1.29.2": dependencies: - "@shikijs/types": 1.24.4 - "@shikijs/vscode-textmate": 9.3.1 + "@shikijs/types": 1.29.2 + "@shikijs/vscode-textmate": 10.0.2 - "@shikijs/types@1.24.4": + "@shikijs/langs@1.29.2": dependencies: - "@shikijs/vscode-textmate": 9.3.1 + "@shikijs/types": 1.29.2 + + "@shikijs/themes@1.29.2": + dependencies: + "@shikijs/types": 1.29.2 + + "@shikijs/types@1.29.2": + dependencies: + "@shikijs/vscode-textmate": 10.0.2 "@types/hast": 3.0.4 - "@shikijs/vscode-textmate@9.3.1": {} + "@shikijs/vscode-textmate@10.0.2": {} "@trysound/sax@0.2.0": {} @@ -6949,12 +6364,12 @@ snapshots: "@ungap/structured-clone@1.2.1": {} - "@volar/kit@2.4.11(typescript@5.7.2)": + "@volar/kit@2.4.11(typescript@5.8.2)": dependencies: "@volar/language-service": 2.4.11 "@volar/typescript": 2.4.11 typesafe-path: 0.2.2 - typescript: 5.7.2 + typescript: 5.8.2 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 @@ -6999,11 +6414,11 @@ snapshots: "@vscode/l10n@0.0.18": {} - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: - acorn: 8.14.0 + acorn: 8.14.1 - acorn@8.14.0: {} + acorn@8.14.1: {} ajv-draft-04@1.0.0(ajv@8.17.1): optionalDependencies: @@ -7039,10 +6454,6 @@ snapshots: arg@5.0.2: {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} aria-query@5.3.2: {} @@ -7051,25 +6462,25 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.38.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)): + astro-expressive-code@0.40.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)): dependencies: - astro: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1) - rehype-expressive-code: 0.38.3 + astro: 5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1) + rehype-expressive-code: 0.40.2 - astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1): + astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1): dependencies: - "@astrojs/compiler": 2.10.3 - "@astrojs/internal-helpers": 0.4.2 - "@astrojs/markdown-remark": 6.0.1 + "@astrojs/compiler": 2.11.0 + "@astrojs/internal-helpers": 0.6.1 + "@astrojs/markdown-remark": 6.3.0 "@astrojs/telemetry": 3.2.0 "@oslojs/encoding": 1.1.0 - "@rollup/pluginutils": 5.1.4(rollup@4.29.1) + "@rollup/pluginutils": 5.1.4(rollup@4.35.0) "@types/cookie": 0.6.0 - acorn: 8.14.0 + acorn: 8.14.1 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 - ci-info: 4.1.0 + ci-info: 4.2.0 clsx: 2.1.1 common-ancestor-path: 1.0.1 cookie: 0.7.2 @@ -7080,10 +6491,9 @@ snapshots: diff: 5.2.0 dlv: 1.1.3 dset: 3.1.4 - es-module-lexer: 1.5.4 - esbuild: 0.21.5 + es-module-lexer: 1.6.0 + esbuild: 0.25.1 estree-walker: 3.0.3 - fast-glob: 3.3.2 flattie: 1.1.1 github-slugger: 2.0.0 html-escaper: 3.0.3 @@ -7092,31 +6502,31 @@ snapshots: kleur: 4.1.5 magic-string: 0.30.17 magicast: 0.3.5 - micromatch: 4.0.8 - mrmime: 2.0.0 + mrmime: 2.0.1 neotraverse: 0.6.18 p-limit: 6.2.0 - p-queue: 8.0.1 - preferred-pm: 4.0.0 + p-queue: 8.1.0 + package-manager-detector: 1.0.0 + picomatch: 4.0.2 prompts: 2.4.2 rehype: 13.0.2 - semver: 7.6.3 - shiki: 1.24.4 - tinyexec: 0.3.1 - tsconfck: 3.1.4(typescript@5.7.2) + semver: 7.7.1 + shiki: 1.29.2 + tinyexec: 0.3.2 + tinyglobby: 0.2.12 + tsconfck: 3.1.5(typescript@5.8.2) ultrahtml: 1.5.3 unist-util-visit: 5.0.0 - unstorage: 1.14.1 + unstorage: 1.15.0 vfile: 6.0.3 - vite: 6.0.5(jiti@2.4.2)(yaml@2.6.1) - vitefu: 1.0.4(vite@6.0.5(jiti@2.4.2)(yaml@2.6.1)) - which-pm: 3.0.0 + vite: 6.2.2(jiti@2.4.2)(lightningcss@1.29.2)(yaml@2.6.1) + vitefu: 1.0.6(vite@6.2.2(jiti@2.4.2)(lightningcss@1.29.2)(yaml@2.6.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 - yocto-spinner: 0.1.2 - zod: 3.24.1 - zod-to-json-schema: 3.24.1(zod@3.24.1) - zod-to-ts: 1.2.0(typescript@5.7.2)(zod@3.24.1) + yocto-spinner: 0.2.1 + zod: 3.24.2 + zod-to-json-schema: 3.24.3(zod@3.24.2) + zod-to-ts: 1.2.0(typescript@5.8.2)(zod@3.24.2) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: @@ -7153,14 +6563,14 @@ snapshots: - uploadthing - yaml - autoprefixer@10.4.20(postcss@8.4.49): + autoprefixer@10.4.21(postcss@8.5.3): dependencies: - browserslist: 4.24.3 - caniuse-lite: 1.0.30001690 + browserslist: 4.24.4 + caniuse-lite: 1.0.30001704 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 axobject-query@4.1.0: {} @@ -7209,6 +6619,13 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.1(browserslist@4.24.3) + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001704 + electron-to-chromium: 1.5.76 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.4) + call-me-maybe@1.0.2: {} camelcase-css@2.0.1: {} @@ -7224,6 +6641,8 @@ snapshots: caniuse-lite@1.0.30001690: {} + caniuse-lite@1.0.30001704: {} + ccount@2.0.1: {} chalk@4.1.2: @@ -7257,20 +6676,10 @@ snapshots: dependencies: readdirp: 4.0.2 - ci-info@4.1.0: {} - - citty@0.1.6: - dependencies: - consola: 3.3.1 + ci-info@4.2.0: {} cli-boxes@3.0.0: {} - clipboardy@4.0.0: - dependencies: - execa: 8.0.1 - is-wsl: 3.1.0 - is64bit: 2.0.0 - cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -7309,10 +6718,6 @@ snapshots: common-ancestor-path@1.0.1: {} - confbox@0.1.8: {} - - consola@3.3.1: {} - cookie-es@1.2.2: {} cookie@0.7.2: {} @@ -7323,29 +6728,29 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crossws@0.3.1: + crossws@0.3.4: dependencies: uncrypto: 0.1.3 - css-blank-pseudo@7.0.1(postcss@8.4.49): + css-blank-pseudo@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - css-declaration-sorter@7.2.0(postcss@8.4.49): + css-declaration-sorter@7.2.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - css-has-pseudo@7.0.2(postcss@8.4.49): + css-has-pseudo@7.0.2(postcss@8.5.3): dependencies: "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - css-prefers-color-scheme@10.0.0(postcss@8.4.49): + css-prefers-color-scheme@10.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 css-select@5.1.0: dependencies: @@ -7373,49 +6778,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.6(postcss@8.4.49): + cssnano-preset-default@7.0.6(postcss@8.5.3): dependencies: browserslist: 4.24.3 - css-declaration-sorter: 7.2.0(postcss@8.4.49) - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 - postcss-calc: 10.0.2(postcss@8.4.49) - postcss-colormin: 7.0.2(postcss@8.4.49) - postcss-convert-values: 7.0.4(postcss@8.4.49) - postcss-discard-comments: 7.0.3(postcss@8.4.49) - postcss-discard-duplicates: 7.0.1(postcss@8.4.49) - postcss-discard-empty: 7.0.0(postcss@8.4.49) - postcss-discard-overridden: 7.0.0(postcss@8.4.49) - postcss-merge-longhand: 7.0.4(postcss@8.4.49) - postcss-merge-rules: 7.0.4(postcss@8.4.49) - postcss-minify-font-values: 7.0.0(postcss@8.4.49) - postcss-minify-gradients: 7.0.0(postcss@8.4.49) - postcss-minify-params: 7.0.2(postcss@8.4.49) - postcss-minify-selectors: 7.0.4(postcss@8.4.49) - postcss-normalize-charset: 7.0.0(postcss@8.4.49) - postcss-normalize-display-values: 7.0.0(postcss@8.4.49) - postcss-normalize-positions: 7.0.0(postcss@8.4.49) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.49) - postcss-normalize-string: 7.0.0(postcss@8.4.49) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.49) - postcss-normalize-unicode: 7.0.2(postcss@8.4.49) - postcss-normalize-url: 7.0.0(postcss@8.4.49) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.49) - postcss-ordered-values: 7.0.1(postcss@8.4.49) - postcss-reduce-initial: 7.0.2(postcss@8.4.49) - postcss-reduce-transforms: 7.0.0(postcss@8.4.49) - postcss-svgo: 7.0.1(postcss@8.4.49) - postcss-unique-selectors: 7.0.3(postcss@8.4.49) + css-declaration-sorter: 7.2.0(postcss@8.5.3) + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-calc: 10.0.2(postcss@8.5.3) + postcss-colormin: 7.0.2(postcss@8.5.3) + postcss-convert-values: 7.0.4(postcss@8.5.3) + postcss-discard-comments: 7.0.3(postcss@8.5.3) + postcss-discard-duplicates: 7.0.1(postcss@8.5.3) + postcss-discard-empty: 7.0.0(postcss@8.5.3) + postcss-discard-overridden: 7.0.0(postcss@8.5.3) + postcss-merge-longhand: 7.0.4(postcss@8.5.3) + postcss-merge-rules: 7.0.4(postcss@8.5.3) + postcss-minify-font-values: 7.0.0(postcss@8.5.3) + postcss-minify-gradients: 7.0.0(postcss@8.5.3) + postcss-minify-params: 7.0.2(postcss@8.5.3) + postcss-minify-selectors: 7.0.4(postcss@8.5.3) + postcss-normalize-charset: 7.0.0(postcss@8.5.3) + postcss-normalize-display-values: 7.0.0(postcss@8.5.3) + postcss-normalize-positions: 7.0.0(postcss@8.5.3) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.3) + postcss-normalize-string: 7.0.0(postcss@8.5.3) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.3) + postcss-normalize-unicode: 7.0.2(postcss@8.5.3) + postcss-normalize-url: 7.0.0(postcss@8.5.3) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.3) + postcss-ordered-values: 7.0.1(postcss@8.5.3) + postcss-reduce-initial: 7.0.2(postcss@8.5.3) + postcss-reduce-transforms: 7.0.0(postcss@8.5.3) + postcss-svgo: 7.0.1(postcss@8.5.3) + postcss-unique-selectors: 7.0.3(postcss@8.5.3) - cssnano-utils@5.0.0(postcss@8.4.49): + cssnano-utils@5.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - cssnano@7.0.6(postcss@8.4.49): + cssnano@7.0.6(postcss@8.5.3): dependencies: - cssnano-preset-default: 7.0.6(postcss@8.4.49) + cssnano-preset-default: 7.0.6(postcss@8.5.3) lilconfig: 3.1.3 - postcss: 8.4.49 + postcss: 8.5.3 csso@5.0.5: dependencies: @@ -7435,8 +6840,6 @@ snapshots: destr@2.0.3: {} - detect-libc@1.0.3: {} - detect-libc@2.0.3: {} deterministic-object-hash@2.0.2: @@ -7496,7 +6899,7 @@ snapshots: entities@4.5.0: {} - es-module-lexer@1.5.4: {} + es-module-lexer@1.6.0: {} esast-util-from-estree@2.0.0: dependencies: @@ -7508,69 +6911,42 @@ snapshots: esast-util-from-js@2.0.1: dependencies: "@types/estree-jsx": 1.0.5 - acorn: 8.14.0 + acorn: 8.14.1 esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 - esbuild@0.21.5: + esbuild@0.25.1: optionalDependencies: - "@esbuild/aix-ppc64": 0.21.5 - "@esbuild/android-arm": 0.21.5 - "@esbuild/android-arm64": 0.21.5 - "@esbuild/android-x64": 0.21.5 - "@esbuild/darwin-arm64": 0.21.5 - "@esbuild/darwin-x64": 0.21.5 - "@esbuild/freebsd-arm64": 0.21.5 - "@esbuild/freebsd-x64": 0.21.5 - "@esbuild/linux-arm": 0.21.5 - "@esbuild/linux-arm64": 0.21.5 - "@esbuild/linux-ia32": 0.21.5 - "@esbuild/linux-loong64": 0.21.5 - "@esbuild/linux-mips64el": 0.21.5 - "@esbuild/linux-ppc64": 0.21.5 - "@esbuild/linux-riscv64": 0.21.5 - "@esbuild/linux-s390x": 0.21.5 - "@esbuild/linux-x64": 0.21.5 - "@esbuild/netbsd-x64": 0.21.5 - "@esbuild/openbsd-x64": 0.21.5 - "@esbuild/sunos-x64": 0.21.5 - "@esbuild/win32-arm64": 0.21.5 - "@esbuild/win32-ia32": 0.21.5 - "@esbuild/win32-x64": 0.21.5 - - esbuild@0.24.0: - optionalDependencies: - "@esbuild/aix-ppc64": 0.24.0 - "@esbuild/android-arm": 0.24.0 - "@esbuild/android-arm64": 0.24.0 - "@esbuild/android-x64": 0.24.0 - "@esbuild/darwin-arm64": 0.24.0 - "@esbuild/darwin-x64": 0.24.0 - "@esbuild/freebsd-arm64": 0.24.0 - "@esbuild/freebsd-x64": 0.24.0 - "@esbuild/linux-arm": 0.24.0 - "@esbuild/linux-arm64": 0.24.0 - "@esbuild/linux-ia32": 0.24.0 - "@esbuild/linux-loong64": 0.24.0 - "@esbuild/linux-mips64el": 0.24.0 - "@esbuild/linux-ppc64": 0.24.0 - "@esbuild/linux-riscv64": 0.24.0 - "@esbuild/linux-s390x": 0.24.0 - "@esbuild/linux-x64": 0.24.0 - "@esbuild/netbsd-x64": 0.24.0 - "@esbuild/openbsd-arm64": 0.24.0 - "@esbuild/openbsd-x64": 0.24.0 - "@esbuild/sunos-x64": 0.24.0 - "@esbuild/win32-arm64": 0.24.0 - "@esbuild/win32-ia32": 0.24.0 - "@esbuild/win32-x64": 0.24.0 + "@esbuild/aix-ppc64": 0.25.1 + "@esbuild/android-arm": 0.25.1 + "@esbuild/android-arm64": 0.25.1 + "@esbuild/android-x64": 0.25.1 + "@esbuild/darwin-arm64": 0.25.1 + "@esbuild/darwin-x64": 0.25.1 + "@esbuild/freebsd-arm64": 0.25.1 + "@esbuild/freebsd-x64": 0.25.1 + "@esbuild/linux-arm": 0.25.1 + "@esbuild/linux-arm64": 0.25.1 + "@esbuild/linux-ia32": 0.25.1 + "@esbuild/linux-loong64": 0.25.1 + "@esbuild/linux-mips64el": 0.25.1 + "@esbuild/linux-ppc64": 0.25.1 + "@esbuild/linux-riscv64": 0.25.1 + "@esbuild/linux-s390x": 0.25.1 + "@esbuild/linux-x64": 0.25.1 + "@esbuild/netbsd-arm64": 0.25.1 + "@esbuild/netbsd-x64": 0.25.1 + "@esbuild/openbsd-arm64": 0.25.1 + "@esbuild/openbsd-x64": 0.25.1 + "@esbuild/sunos-x64": 0.25.1 + "@esbuild/win32-arm64": 0.25.1 + "@esbuild/win32-ia32": 0.25.1 + "@esbuild/win32-x64": 0.25.1 escalade@3.2.0: {} escape-string-regexp@5.0.0: {} - esprima@4.0.1: {} - estree-util-attach-comments@3.0.0: dependencies: "@types/estree": 1.0.6 @@ -7608,24 +6984,12 @@ snapshots: eventemitter3@5.0.1: {} - execa@8.0.1: + expressive-code@0.40.2: dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - expressive-code@0.38.3: - dependencies: - "@expressive-code/core": 0.38.3 - "@expressive-code/plugin-frames": 0.38.3 - "@expressive-code/plugin-shiki": 0.38.3 - "@expressive-code/plugin-text-markers": 0.38.3 + "@expressive-code/core": 0.40.2 + "@expressive-code/plugin-frames": 0.40.2 + "@expressive-code/plugin-shiki": 0.40.2 + "@expressive-code/plugin-text-markers": 0.40.2 extend@3.0.2: {} @@ -7645,25 +7009,17 @@ snapshots: dependencies: reusify: 1.0.4 + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - find-up-simple@1.0.0: {} - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - find-yarn-workspace-root2@1.2.16: - dependencies: - micromatch: 4.0.8 - pkg-dir: 4.2.0 - flattie@1.1.1: {} - foreground-child@3.3.0: + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 @@ -7679,10 +7035,6 @@ snapshots: get-east-asian-width@1.3.0: {} - get-port-please@3.1.2: {} - - get-stream@8.0.1: {} - github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -7695,29 +7047,26 @@ snapshots: glob@10.4.5: dependencies: - foreground-child: 3.3.0 + foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} - h3@1.13.0: + h3@1.15.1: dependencies: cookie-es: 1.2.2 - crossws: 0.3.1 + crossws: 0.3.4 defu: 6.1.4 destr: 2.0.3 iron-webcrypto: 1.2.1 - ohash: 1.1.4 + node-mock-http: 1.0.0 radix3: 1.1.2 ufo: 1.5.4 uncrypto: 0.1.3 - unenv: 1.10.0 has-flag@4.0.0: {} @@ -7861,6 +7210,20 @@ snapshots: stringify-entities: 4.0.4 zwitch: 2.0.4 + hast-util-to-html@9.0.5: + dependencies: + "@types/hast": 3.0.4 + "@types/unist": 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + hast-util-to-jsx-runtime@2.3.2: dependencies: "@types/estree": 1.0.6 @@ -7922,10 +7285,6 @@ snapshots: http-cache-semantics@4.1.1: {} - http-shutdown@1.2.2: {} - - human-signals@5.0.0: {} - i18next@23.16.8: dependencies: "@babel/runtime": 7.26.0 @@ -7977,16 +7336,10 @@ snapshots: is-plain-obj@4.1.0: {} - is-stream@3.0.0: {} - is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 - is64bit@2.0.0: - dependencies: - system-architecture: 0.1.0 - isexe@2.0.0: {} jackspeak@3.4.3: @@ -7997,15 +7350,11 @@ snapshots: jiti@1.21.7: {} - jiti@2.4.2: {} + jiti@2.4.2: + optional: true js-tokens@4.0.0: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -8027,44 +7376,60 @@ snapshots: kleur@4.1.5: {} + klona@2.0.6: {} + leven@3.1.0: {} + lightningcss-darwin-arm64@1.29.2: + optional: true + + lightningcss-darwin-x64@1.29.2: + optional: true + + lightningcss-freebsd-x64@1.29.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + + lightningcss-linux-arm64-musl@1.29.2: + optional: true + + lightningcss-linux-x64-gnu@1.29.2: + optional: true + + lightningcss-linux-x64-musl@1.29.2: + optional: true + + lightningcss-win32-arm64-msvc@1.29.2: + optional: true + + lightningcss-win32-x64-msvc@1.29.2: + optional: true + + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 + optional: true + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} - listhen@1.9.0: - dependencies: - "@parcel/watcher": 2.5.0 - "@parcel/watcher-wasm": 2.5.0 - citty: 0.1.6 - clipboardy: 4.0.0 - consola: 3.3.1 - crossws: 0.3.1 - defu: 6.1.4 - get-port-please: 3.1.2 - h3: 1.13.0 - http-shutdown: 1.2.2 - jiti: 2.4.2 - mlly: 1.7.3 - node-forge: 1.3.1 - pathe: 1.1.2 - std-env: 3.8.0 - ufo: 1.5.4 - untun: 0.1.3 - uqr: 0.1.2 - - load-yaml-file@0.2.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - lodash.memoize@4.1.2: {} lodash.uniq@4.5.0: {} @@ -8275,8 +7640,6 @@ snapshots: mdn-data@2.0.30: {} - merge-stream@2.0.0: {} - merge2@1.4.1: {} micromark-core-commonmark@2.0.2: @@ -8409,8 +7772,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 @@ -8560,24 +7923,13 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime@3.0.0: {} - - mimic-fn@4.0.0: {} - minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 minipass@7.1.2: {} - mlly@1.7.3: - dependencies: - acorn: 8.14.0 - pathe: 1.1.2 - pkg-types: 1.2.1 - ufo: 1.5.4 - - mrmime@2.0.0: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -8597,11 +7949,9 @@ snapshots: dependencies: "@types/nlcst": 2.0.3 - node-addon-api@7.1.1: {} + node-fetch-native@1.6.6: {} - node-fetch-native@1.6.4: {} - - node-forge@1.3.1: {} + node-mock-http@1.0.0: {} node-releases@2.0.19: {} @@ -8609,10 +7959,6 @@ snapshots: normalize-range@0.1.2: {} - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -8624,46 +7970,32 @@ snapshots: ofetch@1.4.1: dependencies: destr: 2.0.3 - node-fetch-native: 1.6.4 + node-fetch-native: 1.6.6 ufo: 1.5.4 - ohash@1.1.4: {} - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - oniguruma-to-es@0.8.1: + oniguruma-to-es@2.3.0: dependencies: emoji-regex-xs: 1.0.0 - regex: 5.0.2 - regex-recursion: 5.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 openapi-types@12.1.3: {} - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - p-limit@6.2.0: dependencies: yocto-queue: 1.1.1 - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-queue@8.0.1: + p-queue@8.1.0: dependencies: eventemitter3: 5.0.1 p-timeout: 6.1.3 p-timeout@6.1.3: {} - p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} + package-manager-detector@1.0.0: {} + pagefind@1.3.0: optionalDependencies: "@pagefind/darwin-arm64": 1.3.0 @@ -8697,12 +8029,8 @@ snapshots: path-browserify@1.0.1: {} - path-exists@4.0.0: {} - path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} path-scurry@1.11.1: @@ -8710,8 +8038,6 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - pathe@1.1.2: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -8720,219 +8046,207 @@ snapshots: pify@2.3.0: {} - pify@4.0.1: {} - pirates@4.0.6: {} - pkg-dir@4.2.0: + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.3): dependencies: - find-up: 4.1.0 - - pkg-types@1.2.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.3 - pathe: 1.1.2 - - postcss-attribute-case-insensitive@7.0.1(postcss@8.4.49): - dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-calc@10.0.2(postcss@8.4.49): + postcss-calc@10.0.2(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-clamp@4.1.0(postcss@8.4.49): + postcss-clamp@4.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.7(postcss@8.4.49): + postcss-color-functional-notation@7.0.8(postcss@8.5.3): dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - postcss-color-hex-alpha@10.0.0(postcss@8.4.49): + postcss-color-hex-alpha@10.0.0(postcss@8.5.3): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@10.0.0(postcss@8.4.49): + postcss-color-rebeccapurple@10.0.0(postcss@8.5.3): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.4.49): + postcss-colormin@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.3 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.4.49): + postcss-convert-values@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.3 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.5(postcss@8.4.49): + postcss-custom-media@11.0.5(postcss@8.5.3): dependencies: "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.4.49 + postcss: 8.5.3 - postcss-custom-properties@14.0.4(postcss@8.4.49): + postcss-custom-properties@14.0.4(postcss@8.5.3): dependencies: "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.4(postcss@8.4.49): + postcss-custom-selectors@8.0.4(postcss@8.5.3): dependencies: "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-dir-pseudo-class@9.0.1(postcss@8.4.49): + postcss-dir-pseudo-class@9.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-discard-comments@7.0.3(postcss@8.4.49): + postcss-discard-comments@7.0.3(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.4.49): + postcss-discard-duplicates@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-discard-empty@7.0.0(postcss@8.4.49): + postcss-discard-empty@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-discard-overridden@7.0.0(postcss@8.4.49): + postcss-discard-overridden@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-double-position-gradients@6.0.0(postcss@8.4.49): + postcss-double-position-gradients@6.0.0(postcss@8.5.3): dependencies: - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-focus-visible@10.0.1(postcss@8.4.49): + postcss-focus-visible@10.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-focus-within@9.0.1(postcss@8.4.49): + postcss-focus-within@9.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-font-variant@5.0.0(postcss@8.4.49): + postcss-font-variant@5.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-gap-properties@6.0.0(postcss@8.4.49): + postcss-gap-properties@6.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-image-set-function@7.0.0(postcss@8.4.49): + postcss-image-set-function@7.0.0(postcss@8.5.3): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-import@15.1.0(postcss@8.4.49): + postcss-import@15.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.10 - postcss-js@4.0.1(postcss@8.4.49): + postcss-js@4.0.1(postcss@8.5.3): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.49 + postcss: 8.5.3 - postcss-lab-function@7.0.7(postcss@8.4.49): + postcss-lab-function@7.0.8(postcss@8.5.3): dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - postcss-load-config@4.0.2(postcss@8.4.49): + postcss-load-config@4.0.2(postcss@8.5.3): dependencies: lilconfig: 3.1.3 yaml: 2.6.1 optionalDependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-logical@8.0.0(postcss@8.4.49): + postcss-logical@8.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-merge-longhand@7.0.4(postcss@8.4.49): + postcss-merge-longhand@7.0.4(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.4.49) + stylehacks: 7.0.4(postcss@8.5.3) - postcss-merge-rules@7.0.4(postcss@8.4.49): + postcss-merge-rules@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.3 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.4.49): + postcss-minify-font-values@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.49): + postcss-minify-gradients@7.0.0(postcss@8.5.3): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.4.49): + postcss-minify-params@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.3 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.4.49): + postcss-minify-selectors@7.0.4(postcss@8.5.3): dependencies: cssesc: 3.0.0 - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-nested@6.2.0(postcss@8.4.49): @@ -8940,172 +8254,177 @@ snapshots: postcss: 8.4.49 postcss-selector-parser: 6.1.2 - postcss-nesting@13.0.1(postcss@8.4.49): + postcss-nested@6.2.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-nesting@13.0.1(postcss@8.5.3): dependencies: "@csstools/selector-resolve-nested": 3.0.0(postcss-selector-parser@7.0.0) "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-normalize-charset@7.0.0(postcss@8.4.49): + postcss-normalize-charset@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-normalize-display-values@7.0.0(postcss@8.4.49): + postcss-normalize-display-values@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.49): + postcss-normalize-positions@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.49): + postcss-normalize-repeat-style@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.49): + postcss-normalize-string@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.49): + postcss-normalize-timing-functions@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.4.49): + postcss-normalize-unicode@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.3 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.49): + postcss-normalize-url@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.49): + postcss-normalize-whitespace@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-opacity-percentage@3.0.0(postcss@8.4.49): + postcss-opacity-percentage@3.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-ordered-values@7.0.1(postcss@8.4.49): + postcss-ordered-values@7.0.1(postcss@8.5.3): dependencies: - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-overflow-shorthand@6.0.0(postcss@8.4.49): + postcss-overflow-shorthand@6.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.4.49): + postcss-page-break@3.0.4(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-place@10.0.0(postcss@8.4.49): + postcss-place@10.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-preset-env@10.1.3(postcss@8.4.49): + postcss-preset-env@10.1.5(postcss@8.5.3): dependencies: - "@csstools/postcss-cascade-layers": 5.0.1(postcss@8.4.49) - "@csstools/postcss-color-function": 4.0.7(postcss@8.4.49) - "@csstools/postcss-color-mix-function": 3.0.7(postcss@8.4.49) - "@csstools/postcss-content-alt-text": 2.0.4(postcss@8.4.49) - "@csstools/postcss-exponential-functions": 2.0.6(postcss@8.4.49) - "@csstools/postcss-font-format-keywords": 4.0.0(postcss@8.4.49) - "@csstools/postcss-gamut-mapping": 2.0.7(postcss@8.4.49) - "@csstools/postcss-gradients-interpolation-method": 5.0.7(postcss@8.4.49) - "@csstools/postcss-hwb-function": 4.0.7(postcss@8.4.49) - "@csstools/postcss-ic-unit": 4.0.0(postcss@8.4.49) - "@csstools/postcss-initial": 2.0.0(postcss@8.4.49) - "@csstools/postcss-is-pseudo-class": 5.0.1(postcss@8.4.49) - "@csstools/postcss-light-dark-function": 2.0.7(postcss@8.4.49) - "@csstools/postcss-logical-float-and-clear": 3.0.0(postcss@8.4.49) - "@csstools/postcss-logical-overflow": 2.0.0(postcss@8.4.49) - "@csstools/postcss-logical-overscroll-behavior": 2.0.0(postcss@8.4.49) - "@csstools/postcss-logical-resize": 3.0.0(postcss@8.4.49) - "@csstools/postcss-logical-viewport-units": 3.0.3(postcss@8.4.49) - "@csstools/postcss-media-minmax": 2.0.6(postcss@8.4.49) - "@csstools/postcss-media-queries-aspect-ratio-number-values": 3.0.4(postcss@8.4.49) - "@csstools/postcss-nested-calc": 4.0.0(postcss@8.4.49) - "@csstools/postcss-normalize-display-values": 4.0.0(postcss@8.4.49) - "@csstools/postcss-oklab-function": 4.0.7(postcss@8.4.49) - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/postcss-random-function": 1.0.2(postcss@8.4.49) - "@csstools/postcss-relative-color-syntax": 3.0.7(postcss@8.4.49) - "@csstools/postcss-scope-pseudo-class": 4.0.1(postcss@8.4.49) - "@csstools/postcss-sign-functions": 1.1.1(postcss@8.4.49) - "@csstools/postcss-stepped-value-functions": 4.0.6(postcss@8.4.49) - "@csstools/postcss-text-decoration-shorthand": 4.0.1(postcss@8.4.49) - "@csstools/postcss-trigonometric-functions": 4.0.6(postcss@8.4.49) - "@csstools/postcss-unset-value": 4.0.0(postcss@8.4.49) - autoprefixer: 10.4.20(postcss@8.4.49) - browserslist: 4.24.3 - css-blank-pseudo: 7.0.1(postcss@8.4.49) - css-has-pseudo: 7.0.2(postcss@8.4.49) - css-prefers-color-scheme: 10.0.0(postcss@8.4.49) + "@csstools/postcss-cascade-layers": 5.0.1(postcss@8.5.3) + "@csstools/postcss-color-function": 4.0.8(postcss@8.5.3) + "@csstools/postcss-color-mix-function": 3.0.8(postcss@8.5.3) + "@csstools/postcss-content-alt-text": 2.0.4(postcss@8.5.3) + "@csstools/postcss-exponential-functions": 2.0.7(postcss@8.5.3) + "@csstools/postcss-font-format-keywords": 4.0.0(postcss@8.5.3) + "@csstools/postcss-gamut-mapping": 2.0.8(postcss@8.5.3) + "@csstools/postcss-gradients-interpolation-method": 5.0.8(postcss@8.5.3) + "@csstools/postcss-hwb-function": 4.0.8(postcss@8.5.3) + "@csstools/postcss-ic-unit": 4.0.0(postcss@8.5.3) + "@csstools/postcss-initial": 2.0.1(postcss@8.5.3) + "@csstools/postcss-is-pseudo-class": 5.0.1(postcss@8.5.3) + "@csstools/postcss-light-dark-function": 2.0.7(postcss@8.5.3) + "@csstools/postcss-logical-float-and-clear": 3.0.0(postcss@8.5.3) + "@csstools/postcss-logical-overflow": 2.0.0(postcss@8.5.3) + "@csstools/postcss-logical-overscroll-behavior": 2.0.0(postcss@8.5.3) + "@csstools/postcss-logical-resize": 3.0.0(postcss@8.5.3) + "@csstools/postcss-logical-viewport-units": 3.0.3(postcss@8.5.3) + "@csstools/postcss-media-minmax": 2.0.7(postcss@8.5.3) + "@csstools/postcss-media-queries-aspect-ratio-number-values": 3.0.4(postcss@8.5.3) + "@csstools/postcss-nested-calc": 4.0.0(postcss@8.5.3) + "@csstools/postcss-normalize-display-values": 4.0.0(postcss@8.5.3) + "@csstools/postcss-oklab-function": 4.0.8(postcss@8.5.3) + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/postcss-random-function": 1.0.3(postcss@8.5.3) + "@csstools/postcss-relative-color-syntax": 3.0.8(postcss@8.5.3) + "@csstools/postcss-scope-pseudo-class": 4.0.1(postcss@8.5.3) + "@csstools/postcss-sign-functions": 1.1.2(postcss@8.5.3) + "@csstools/postcss-stepped-value-functions": 4.0.7(postcss@8.5.3) + "@csstools/postcss-text-decoration-shorthand": 4.0.2(postcss@8.5.3) + "@csstools/postcss-trigonometric-functions": 4.0.7(postcss@8.5.3) + "@csstools/postcss-unset-value": 4.0.0(postcss@8.5.3) + autoprefixer: 10.4.21(postcss@8.5.3) + browserslist: 4.24.4 + css-blank-pseudo: 7.0.1(postcss@8.5.3) + css-has-pseudo: 7.0.2(postcss@8.5.3) + css-prefers-color-scheme: 10.0.0(postcss@8.5.3) cssdb: 8.2.3 - postcss: 8.4.49 - postcss-attribute-case-insensitive: 7.0.1(postcss@8.4.49) - postcss-clamp: 4.1.0(postcss@8.4.49) - postcss-color-functional-notation: 7.0.7(postcss@8.4.49) - postcss-color-hex-alpha: 10.0.0(postcss@8.4.49) - postcss-color-rebeccapurple: 10.0.0(postcss@8.4.49) - postcss-custom-media: 11.0.5(postcss@8.4.49) - postcss-custom-properties: 14.0.4(postcss@8.4.49) - postcss-custom-selectors: 8.0.4(postcss@8.4.49) - postcss-dir-pseudo-class: 9.0.1(postcss@8.4.49) - postcss-double-position-gradients: 6.0.0(postcss@8.4.49) - postcss-focus-visible: 10.0.1(postcss@8.4.49) - postcss-focus-within: 9.0.1(postcss@8.4.49) - postcss-font-variant: 5.0.0(postcss@8.4.49) - postcss-gap-properties: 6.0.0(postcss@8.4.49) - postcss-image-set-function: 7.0.0(postcss@8.4.49) - postcss-lab-function: 7.0.7(postcss@8.4.49) - postcss-logical: 8.0.0(postcss@8.4.49) - postcss-nesting: 13.0.1(postcss@8.4.49) - postcss-opacity-percentage: 3.0.0(postcss@8.4.49) - postcss-overflow-shorthand: 6.0.0(postcss@8.4.49) - postcss-page-break: 3.0.4(postcss@8.4.49) - postcss-place: 10.0.0(postcss@8.4.49) - postcss-pseudo-class-any-link: 10.0.1(postcss@8.4.49) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.49) - postcss-selector-not: 8.0.1(postcss@8.4.49) + postcss: 8.5.3 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.3) + postcss-clamp: 4.1.0(postcss@8.5.3) + postcss-color-functional-notation: 7.0.8(postcss@8.5.3) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.3) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.3) + postcss-custom-media: 11.0.5(postcss@8.5.3) + postcss-custom-properties: 14.0.4(postcss@8.5.3) + postcss-custom-selectors: 8.0.4(postcss@8.5.3) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.3) + postcss-double-position-gradients: 6.0.0(postcss@8.5.3) + postcss-focus-visible: 10.0.1(postcss@8.5.3) + postcss-focus-within: 9.0.1(postcss@8.5.3) + postcss-font-variant: 5.0.0(postcss@8.5.3) + postcss-gap-properties: 6.0.0(postcss@8.5.3) + postcss-image-set-function: 7.0.0(postcss@8.5.3) + postcss-lab-function: 7.0.8(postcss@8.5.3) + postcss-logical: 8.1.0(postcss@8.5.3) + postcss-nesting: 13.0.1(postcss@8.5.3) + postcss-opacity-percentage: 3.0.0(postcss@8.5.3) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.3) + postcss-page-break: 3.0.4(postcss@8.5.3) + postcss-place: 10.0.0(postcss@8.5.3) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.3) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.3) + postcss-selector-not: 8.0.1(postcss@8.5.3) - postcss-pseudo-class-any-link@10.0.1(postcss@8.4.49): + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-reduce-initial@7.0.2(postcss@8.4.49): + postcss-reduce-initial@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.3 caniuse-api: 3.0.0 - postcss: 8.4.49 + postcss: 8.5.3 - postcss-reduce-transforms@7.0.0(postcss@8.4.49): + postcss-reduce-transforms@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-replace-overflow-wrap@4.0.0(postcss@8.4.49): + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-selector-not@8.0.1(postcss@8.4.49): + postcss-selector-not@8.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 postcss-selector-parser@6.1.2: @@ -9118,15 +8437,15 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.4.49): + postcss-svgo@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.4.49): + postcss-unique-selectors@7.0.3(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} @@ -9137,11 +8456,11 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preferred-pm@4.0.0: + postcss@8.5.3: dependencies: - find-up-simple: 1.0.0 - find-yarn-workspace-root2: 1.2.16 - which-pm: 3.0.0 + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 prettier@2.8.7: optional: true @@ -9155,6 +8474,8 @@ snapshots: property-information@6.5.0: {} + property-information@7.0.0: {} + queue-microtask@1.2.3: {} radix3@1.1.2: {} @@ -9175,9 +8496,9 @@ snapshots: estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.0(acorn@8.14.0): + recma-jsx@1.0.0(acorn@8.14.1): dependencies: - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn-jsx: 5.3.2(acorn@8.14.1) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -9201,19 +8522,20 @@ snapshots: regenerator-runtime@0.14.1: {} - regex-recursion@5.0.0: + regex-recursion@5.1.1: dependencies: + regex: 5.1.1 regex-utilities: 2.3.0 regex-utilities@2.3.0: {} - regex@5.0.2: + regex@5.1.1: dependencies: regex-utilities: 2.3.0 - rehype-expressive-code@0.38.3: + rehype-expressive-code@0.40.2: dependencies: - expressive-code: 0.38.3 + expressive-code: 0.40.2 rehype-format@5.0.1: dependencies: @@ -9262,7 +8584,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-gfm@4.0.0: + remark-gfm@4.0.1: dependencies: "@types/mdast": 4.0.4 mdast-util-gfm: 3.0.0 @@ -9351,29 +8673,29 @@ snapshots: reusify@1.0.4: {} - rollup@4.29.1: + rollup@4.35.0: dependencies: "@types/estree": 1.0.6 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.29.1 - "@rollup/rollup-android-arm64": 4.29.1 - "@rollup/rollup-darwin-arm64": 4.29.1 - "@rollup/rollup-darwin-x64": 4.29.1 - "@rollup/rollup-freebsd-arm64": 4.29.1 - "@rollup/rollup-freebsd-x64": 4.29.1 - "@rollup/rollup-linux-arm-gnueabihf": 4.29.1 - "@rollup/rollup-linux-arm-musleabihf": 4.29.1 - "@rollup/rollup-linux-arm64-gnu": 4.29.1 - "@rollup/rollup-linux-arm64-musl": 4.29.1 - "@rollup/rollup-linux-loongarch64-gnu": 4.29.1 - "@rollup/rollup-linux-powerpc64le-gnu": 4.29.1 - "@rollup/rollup-linux-riscv64-gnu": 4.29.1 - "@rollup/rollup-linux-s390x-gnu": 4.29.1 - "@rollup/rollup-linux-x64-gnu": 4.29.1 - "@rollup/rollup-linux-x64-musl": 4.29.1 - "@rollup/rollup-win32-arm64-msvc": 4.29.1 - "@rollup/rollup-win32-ia32-msvc": 4.29.1 - "@rollup/rollup-win32-x64-msvc": 4.29.1 + "@rollup/rollup-android-arm-eabi": 4.35.0 + "@rollup/rollup-android-arm64": 4.35.0 + "@rollup/rollup-darwin-arm64": 4.35.0 + "@rollup/rollup-darwin-x64": 4.35.0 + "@rollup/rollup-freebsd-arm64": 4.35.0 + "@rollup/rollup-freebsd-x64": 4.35.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.35.0 + "@rollup/rollup-linux-arm-musleabihf": 4.35.0 + "@rollup/rollup-linux-arm64-gnu": 4.35.0 + "@rollup/rollup-linux-arm64-musl": 4.35.0 + "@rollup/rollup-linux-loongarch64-gnu": 4.35.0 + "@rollup/rollup-linux-powerpc64le-gnu": 4.35.0 + "@rollup/rollup-linux-riscv64-gnu": 4.35.0 + "@rollup/rollup-linux-s390x-gnu": 4.35.0 + "@rollup/rollup-linux-x64-gnu": 4.35.0 + "@rollup/rollup-linux-x64-musl": 4.35.0 + "@rollup/rollup-win32-arm64-msvc": 4.35.0 + "@rollup/rollup-win32-ia32-msvc": 4.35.0 + "@rollup/rollup-win32-x64-msvc": 4.35.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -9384,6 +8706,8 @@ snapshots: semver@7.6.3: {} + semver@7.7.1: {} + sharp@0.33.5: dependencies: color: 4.2.3 @@ -9416,13 +8740,15 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.24.4: + shiki@1.29.2: dependencies: - "@shikijs/core": 1.24.4 - "@shikijs/engine-javascript": 1.24.4 - "@shikijs/engine-oniguruma": 1.24.4 - "@shikijs/types": 1.24.4 - "@shikijs/vscode-textmate": 9.3.1 + "@shikijs/core": 1.29.2 + "@shikijs/engine-javascript": 1.29.2 + "@shikijs/engine-oniguruma": 1.29.2 + "@shikijs/langs": 1.29.2 + "@shikijs/themes": 1.29.2 + "@shikijs/types": 1.29.2 + "@shikijs/vscode-textmate": 10.0.2 "@types/hast": 3.0.4 signal-exit@4.1.0: {} @@ -9440,25 +8766,25 @@ snapshots: arg: 5.0.2 sax: 1.4.1 + smol-toml@1.3.1: {} + source-map-js@1.2.1: {} source-map@0.7.4: {} space-separated-tokens@2.0.2: {} - sprintf-js@1.0.3: {} - - starlight-openapi@0.9.0(@astrojs/markdown-remark@6.0.1)(@astrojs/starlight@0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)))(openapi-types@12.1.3): + starlight-openapi@0.14.1(@astrojs/markdown-remark@6.3.0)(@astrojs/starlight@0.32.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)))(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1))(openapi-types@12.1.3): dependencies: - "@astrojs/markdown-remark": 6.0.1 - "@astrojs/starlight": 0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(typescript@5.7.2)(yaml@2.6.1)) + "@astrojs/markdown-remark": 6.3.0 + "@astrojs/starlight": 0.32.2(astro@5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1)) "@readme/openapi-parser": 2.6.0(openapi-types@12.1.3) + astro: 5.5.2(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)(yaml@2.6.1) github-slugger: 2.0.0 + url-template: 3.1.1 transitivePeerDependencies: - openapi-types - std-env@3.8.0: {} - stream-replace-string@2.0.0: {} string-width@4.2.3: @@ -9492,10 +8818,6 @@ snapshots: dependencies: ansi-regex: 6.1.0 - strip-bom@3.0.0: {} - - strip-final-newline@3.0.0: {} - style-to-object@0.4.4: dependencies: inline-style-parser: 0.1.1 @@ -9504,10 +8826,10 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - stylehacks@7.0.4(postcss@8.4.49): + stylehacks@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.3 - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 sucrase@3.35.0: @@ -9536,8 +8858,6 @@ snapshots: csso: 5.0.5 picocolors: 1.1.1 - system-architecture@0.1.0: {} - tailwindcss@3.4.17: dependencies: "@alloc/quick-lru": 5.2.0 @@ -9554,11 +8874,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.49 - postcss-import: 15.1.0(postcss@8.4.49) - postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49) - postcss-nested: 6.2.0(postcss@8.4.49) + postcss: 8.5.3 + postcss-import: 15.1.0(postcss@8.5.3) + postcss-js: 4.0.1(postcss@8.5.3) + postcss-load-config: 4.0.2(postcss@8.5.3) + postcss-nested: 6.2.0(postcss@8.5.3) postcss-selector-parser: 6.1.2 resolve: 1.22.10 sucrase: 3.35.0 @@ -9573,7 +8893,12 @@ snapshots: dependencies: any-promise: 1.3.0 - tinyexec@0.3.1: {} + tinyexec@0.3.2: {} + + tinyglobby@0.2.12: + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 to-regex-range@5.0.1: dependencies: @@ -9585,9 +8910,9 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.1.4(typescript@5.7.2): + tsconfck@3.1.5(typescript@5.8.2): optionalDependencies: - typescript: 5.7.2 + typescript: 5.8.2 tslib@2.8.1: optional: true @@ -9600,7 +8925,7 @@ snapshots: dependencies: semver: 7.6.3 - typescript@5.7.2: {} + typescript@5.8.2: {} ufo@1.5.4: {} @@ -9608,14 +8933,6 @@ snapshots: uncrypto@0.1.3: {} - unenv@1.10.0: - dependencies: - consola: 3.3.1 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.4 - pathe: 1.1.2 - unified@11.0.5: dependencies: "@types/unist": 3.0.3 @@ -9672,32 +8989,30 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - unstorage@1.14.1: + unstorage@1.15.0: dependencies: anymatch: 3.1.3 - chokidar: 3.6.0 - citty: 0.1.6 + chokidar: 4.0.3 destr: 2.0.3 - h3: 1.13.0 - listhen: 1.9.0 + h3: 1.15.1 lru-cache: 10.4.3 - node-fetch-native: 1.6.4 + node-fetch-native: 1.6.6 ofetch: 1.4.1 ufo: 1.5.4 - untun@0.1.3: - dependencies: - citty: 0.1.6 - consola: 3.3.1 - pathe: 1.1.2 - update-browserslist-db@1.1.1(browserslist@4.24.3): dependencies: browserslist: 4.24.3 escalade: 3.2.0 picocolors: 1.1.1 - uqr@0.1.2: {} + update-browserslist-db@1.1.1(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + url-template@3.1.1: {} util-deprecate@1.0.2: {} @@ -9716,19 +9031,20 @@ snapshots: "@types/unist": 3.0.3 vfile-message: 4.0.2 - vite@6.0.5(jiti@2.4.2)(yaml@2.6.1): + vite@6.2.2(jiti@2.4.2)(lightningcss@1.29.2)(yaml@2.6.1): dependencies: - esbuild: 0.24.0 - postcss: 8.4.49 - rollup: 4.29.1 + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.35.0 optionalDependencies: fsevents: 2.3.3 jiti: 2.4.2 + lightningcss: 1.29.2 yaml: 2.6.1 - vitefu@1.0.4(vite@6.0.5(jiti@2.4.2)(yaml@2.6.1)): + vitefu@1.0.6(vite@6.2.2(jiti@2.4.2)(lightningcss@1.29.2)(yaml@2.6.1)): optionalDependencies: - vite: 6.0.5(jiti@2.4.2)(yaml@2.6.1) + vite: 6.2.2(jiti@2.4.2)(lightningcss@1.29.2)(yaml@2.6.1) volar-service-css@0.0.62(@volar/language-service@2.4.11): dependencies: @@ -9843,10 +9159,6 @@ snapshots: which-pm-runs@1.1.0: {} - which-pm@3.0.0: - dependencies: - load-yaml-file: 0.2.0 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -9910,21 +9222,21 @@ snapshots: yocto-queue@1.1.1: {} - yocto-spinner@0.1.2: + yocto-spinner@0.2.1: dependencies: yoctocolors: 2.1.1 yoctocolors@2.1.1: {} - zod-to-json-schema@3.24.1(zod@3.24.1): + zod-to-json-schema@3.24.3(zod@3.24.2): dependencies: - zod: 3.24.1 + zod: 3.24.2 - zod-to-ts@1.2.0(typescript@5.7.2)(zod@3.24.1): + zod-to-ts@1.2.0(typescript@5.8.2)(zod@3.24.2): dependencies: - typescript: 5.7.2 - zod: 3.24.1 + typescript: 5.8.2 + zod: 3.24.2 - zod@3.24.1: {} + zod@3.24.2: {} zwitch@2.0.4: {} diff --git a/docs/src/content/docs/br/getting-started/install.mdx b/docs/src/content/docs/br/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/br/getting-started/install.mdx +++ b/docs/src/content/docs/br/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/da/getting-started/install.mdx b/docs/src/content/docs/da/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/da/getting-started/install.mdx +++ b/docs/src/content/docs/da/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/de/getting-started/install.mdx b/docs/src/content/docs/de/getting-started/install.mdx index b7c1c1cf..6ae19ce8 100644 --- a/docs/src/content/docs/de/getting-started/install.mdx +++ b/docs/src/content/docs/de/getting-started/install.mdx @@ -10,13 +10,13 @@ installieren. ## Voraussetzungen -- PHP v8.3 oder höher +- PHP v8.4 oder höher - MySQL Version 5.7 oder höher oder MariaDB Version 10.2 oder höher - HTTPS-Unterstützung - Eine [ntp-synchronisierte Uhr](https://wiki.debian.org/NTP) um die eingehenden Anfragen zu überprüfen -### PHP v8.3 oder höher +### PHP v8.4 oder höher PHP Version 8.3 oder höher ist erforderlich, mit folgenden Erweiterungen installiert: diff --git a/docs/src/content/docs/el/getting-started/install.mdx b/docs/src/content/docs/el/getting-started/install.mdx index 22cf77e2..bae5070e 100644 --- a/docs/src/content/docs/el/getting-started/install.mdx +++ b/docs/src/content/docs/el/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/en/getting-started/install.mdx b/docs/src/content/docs/en/getting-started/install.mdx index 49c73ba9..f0cf758c 100644 --- a/docs/src/content/docs/en/getting-started/install.mdx +++ b/docs/src/content/docs/en/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/es/getting-started/install.mdx b/docs/src/content/docs/es/getting-started/install.mdx index e4a47942..44e87d00 100644 --- a/docs/src/content/docs/es/getting-started/install.mdx +++ b/docs/src/content/docs/es/getting-started/install.mdx @@ -10,13 +10,13 @@ compatibles con PHP-MySQL. ## Requisitos -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL versión 5.7 o superior o MariaDB versión 10.2 o superior - Soporte HTTPS - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/eu/getting-started/install.mdx b/docs/src/content/docs/eu/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/eu/getting-started/install.mdx +++ b/docs/src/content/docs/eu/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/fa/getting-started/install.mdx b/docs/src/content/docs/fa/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/fa/getting-started/install.mdx +++ b/docs/src/content/docs/fa/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/fr/getting-started/install.mdx b/docs/src/content/docs/fr/getting-started/install.mdx index 5481f0f7..8e2d9223 100644 --- a/docs/src/content/docs/fr/getting-started/install.mdx +++ b/docs/src/content/docs/fr/getting-started/install.mdx @@ -10,13 +10,13 @@ serveurs web compatibles avec PHP-MySQL. ## Prérequis -- PHP v8.3 ou supérieure +- PHP v8.4 ou supérieure - MySQL version 5.7 ou supérieure ou MariaDB version 10.2 ou supérieure - Prise en charge HTTPS - Une horloge [synchronisée ntp](https://wiki.debian.org/NTP) pour valider les requêtes fédérés entrantes -### PHP v8.3 ou supérieure +### PHP v8.4 ou supérieure PHP version 8.3 ou supérieure est requise, avec les extensions suivantes installées : diff --git a/docs/src/content/docs/fr2/getting-started/install.mdx b/docs/src/content/docs/fr2/getting-started/install.mdx index f9808cf0..74b1a612 100644 --- a/docs/src/content/docs/fr2/getting-started/install.mdx +++ b/docs/src/content/docs/fr2/getting-started/install.mdx @@ -10,13 +10,13 @@ serveurs web compatibles avec PHP-MySQL. ## Prérequis -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 ou supérieure ou MariaDB version 10.2 ou supérieure - Prise en charge HTTPS - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/gd/getting-started/install.mdx b/docs/src/content/docs/gd/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/gd/getting-started/install.mdx +++ b/docs/src/content/docs/gd/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/gl/getting-started/install.mdx b/docs/src/content/docs/gl/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/gl/getting-started/install.mdx +++ b/docs/src/content/docs/gl/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/id/getting-started/install.mdx b/docs/src/content/docs/id/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/id/getting-started/install.mdx +++ b/docs/src/content/docs/id/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/it/getting-started/install.mdx b/docs/src/content/docs/it/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/it/getting-started/install.mdx +++ b/docs/src/content/docs/it/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/ja/getting-started/install.mdx b/docs/src/content/docs/ja/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/ja/getting-started/install.mdx +++ b/docs/src/content/docs/ja/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/kk/getting-started/install.mdx b/docs/src/content/docs/kk/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/kk/getting-started/install.mdx +++ b/docs/src/content/docs/kk/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/ko/getting-started/install.mdx b/docs/src/content/docs/ko/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/ko/getting-started/install.mdx +++ b/docs/src/content/docs/ko/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/nl/getting-started/install.mdx b/docs/src/content/docs/nl/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/nl/getting-started/install.mdx +++ b/docs/src/content/docs/nl/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/oc/getting-started/install.mdx b/docs/src/content/docs/oc/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/oc/getting-started/install.mdx +++ b/docs/src/content/docs/oc/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/pl/getting-started/install.mdx b/docs/src/content/docs/pl/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/pl/getting-started/install.mdx +++ b/docs/src/content/docs/pl/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/pt-br/getting-started/install.mdx b/docs/src/content/docs/pt-br/getting-started/install.mdx index 2a49e17b..3e1455aa 100644 --- a/docs/src/content/docs/pt-br/getting-started/install.mdx +++ b/docs/src/content/docs/pt-br/getting-started/install.mdx @@ -10,13 +10,13 @@ com PHP-MySQL. ## Requisitos -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL versão 5.7 ou superior ou MariaDB versão 10.2 ou superior - Suporte a HTTPS - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/pt/getting-started/install.mdx b/docs/src/content/docs/pt/getting-started/install.mdx index bff853c4..456131b8 100644 --- a/docs/src/content/docs/pt/getting-started/install.mdx +++ b/docs/src/content/docs/pt/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/ro/getting-started/install.mdx b/docs/src/content/docs/ro/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/ro/getting-started/install.mdx +++ b/docs/src/content/docs/ro/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/ru/getting-started/install.mdx b/docs/src/content/docs/ru/getting-started/install.mdx index bff853c4..456131b8 100644 --- a/docs/src/content/docs/ru/getting-started/install.mdx +++ b/docs/src/content/docs/ru/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/sk/getting-started/install.mdx b/docs/src/content/docs/sk/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/sk/getting-started/install.mdx +++ b/docs/src/content/docs/sk/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/zh-hans/getting-started/install.mdx b/docs/src/content/docs/zh-hans/getting-started/install.mdx index 00727621..beb41b92 100644 --- a/docs/src/content/docs/zh-hans/getting-started/install.mdx +++ b/docs/src/content/docs/zh-hans/getting-started/install.mdx @@ -9,12 +9,12 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## 要求 -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL 5.7 或更高版本与 MariaDB 10.2 或更高版本 - HTTPS 支持 - 用于验证的 [NTP 同步时钟](https://wiki.debian.org/NTP) 传入请求 -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/docs/src/content/docs/zh-hant/getting-started/install.mdx b/docs/src/content/docs/zh-hant/getting-started/install.mdx index 169b0f84..20f1a978 100644 --- a/docs/src/content/docs/zh-hant/getting-started/install.mdx +++ b/docs/src/content/docs/zh-hant/getting-started/install.mdx @@ -9,13 +9,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.3 or higher +- PHP v8.4 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.3 or higher +### PHP v8.4 or higher PHP version 8.3 or higher is required, with the following extensions installed: diff --git a/ecs.php b/ecs.php index 4d41a5ce..8b1a94f5 100644 --- a/ecs.php +++ b/ecs.php @@ -2,12 +2,11 @@ declare(strict_types=1); -use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff; +use PhpCsFixer\Fixer\ControlStructure\TrailingCommaInMultilineFixer; use PhpCsFixer\Fixer\Operator\BinaryOperatorSpacesFixer; use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer; use PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer; use Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer; -use Symplify\CodingStandard\Fixer\Naming\StandardizeHereNowDocKeywordFixer; use Symplify\CodingStandard\Fixer\Spacing\MethodChainingNewlineFixer; use Symplify\EasyCodingStandard\Config\ECSConfig; @@ -28,13 +27,6 @@ return ECSConfig::configure() // skip specific generated files __DIR__ . '/modules/Admin/Language/*/PersonsTaxonomy.php', - StandardizeHereNowDocKeywordFixer::class => [ - __DIR__ . '/app/Views/Components/*', - __DIR__ . '/modules/**/Views/Components/*', - __DIR__ . '/themes/**/Views/Components/*', - __DIR__ . '/app/Helpers/components_helper.php', - ], - LineLengthFixer::class => [__DIR__ . '/app/Views/*', __DIR__ . '/modules/**/Views/*', __DIR__ . '/themes/*'], IndentationTypeFixer::class => [ @@ -54,11 +46,12 @@ return ECSConfig::configure() SingleQuoteFixer::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/**/Language/*'], BinaryOperatorSpacesFixer::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/**/Language/*'], - - AssignmentInConditionSniff::class, ]) ->withConfiguredRule(BinaryOperatorSpacesFixer::class, [ 'operators' => [ '=>' => 'align_single_space_minimal', ], + ]) + ->withConfiguredRule(TrailingCommaInMultilineFixer::class, [ + 'elements' => ['arguments', 'array_destructuring', 'arrays', 'match', 'parameters'], ]); diff --git a/modules/Admin/Config/Routes.php b/modules/Admin/Config/Routes.php index fc290913..375b2943 100644 --- a/modules/Admin/Config/Routes.php +++ b/modules/Admin/Config/Routes.php @@ -483,7 +483,7 @@ $routes->group( [ 'as' => 'comment-attempt-create', 'filter' => 'permission:podcast$1.episodes.manage-comments', - ] + ], ); $routes->post( '(:uuid)/reply', @@ -491,7 +491,7 @@ $routes->group( [ 'as' => 'comment-attempt-reply', 'filter' => 'permission:podcast$1.episodes.manage-comments', - ] + ], ); $routes->post( 'delete', @@ -499,7 +499,7 @@ $routes->group( [ 'as' => 'comment-attempt-delete', 'filter' => 'permission:podcast$1.episodes.manage-comments', - ] + ], ); }); }); diff --git a/modules/Admin/Controllers/BaseController.php b/modules/Admin/Controllers/BaseController.php index 28c3525f..1c18f2d0 100644 --- a/modules/Admin/Controllers/BaseController.php +++ b/modules/Admin/Controllers/BaseController.php @@ -33,7 +33,7 @@ abstract class BaseController extends Controller public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { $this->helpers = [...$this->helpers, 'auth', 'breadcrumb', 'svg', 'components', 'misc']; @@ -51,7 +51,7 @@ abstract class BaseController extends Controller $head ->title($title . ' | Castopod Admin') ->description( - 'Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.' + 'Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.', ); } } diff --git a/modules/Admin/Controllers/DashboardController.php b/modules/Admin/Controllers/DashboardController.php index 21977775..845ed564 100644 --- a/modules/Admin/Controllers/DashboardController.php +++ b/modules/Admin/Controllers/DashboardController.php @@ -29,7 +29,7 @@ class DashboardController extends BaseController ->getResultArray()[0]['last_published_at']; $podcastsData['number_of_podcasts'] = (int) $podcastsCount; $podcastsData['last_published_at'] = $podcastsLastPublishedAt === null ? null : new Time( - $podcastsLastPublishedAt + $podcastsLastPublishedAt, ); $episodesData = []; @@ -42,7 +42,7 @@ class DashboardController extends BaseController ->getResultArray()[0]['last_published_at']; $episodesData['number_of_episodes'] = (int) $episodesCount; $episodesData['last_published_at'] = $episodesLastPublishedAt === null ? null : new Time( - $episodesLastPublishedAt + $episodesLastPublishedAt, ); $totalUploaded = (new MediaModel())->builder() diff --git a/modules/Admin/Controllers/EpisodeController.php b/modules/Admin/Controllers/EpisodeController.php index c684754a..1d8c87dc 100644 --- a/modules/Admin/Controllers/EpisodeController.php +++ b/modules/Admin/Controllers/EpisodeController.php @@ -82,8 +82,8 @@ class EpisodeController extends BaseController ->where('podcast_id', $podcast->id) ->where( "MATCH (title, description_markdown, slug, location_name) AGAINST ('{$episodeModel->db->escapeString( - $query - )}')" + $query, + )}')", ); } } else { @@ -188,7 +188,7 @@ class EpisodeController extends BaseController 'cover' => $this->request->getFile('cover'), 'description_markdown' => $this->request->getPost('description'), 'location' => $this->request->getPost('location_name') === '' ? null : new Location( - $this->request->getPost('location_name') + $this->request->getPost('location_name'), ), 'transcript' => $this->request->getFile('transcript'), 'chapters' => $this->request->getFile('chapters'), @@ -212,7 +212,7 @@ class EpisodeController extends BaseController $newEpisode->setTranscript($this->request->getFile('transcript_file')); } elseif ($transcriptChoice === 'remote-url') { $newEpisode->transcript_remote_url = $this->request->getPost( - 'transcript_remote_url' + 'transcript_remote_url', ) === '' ? null : $this->request->getPost('transcript_remote_url'); } @@ -221,7 +221,7 @@ class EpisodeController extends BaseController $newEpisode->setChapters($this->request->getFile('chapters_file')); } elseif ($chaptersChoice === 'remote-url') { $newEpisode->chapters_remote_url = $this->request->getPost( - 'chapters_remote_url' + 'chapters_remote_url', ) === '' ? null : $this->request->getPost('chapters_remote_url'); } @@ -235,7 +235,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$podcast->id, $newEpisodeId])->with( 'message', - lang('Episode.messages.createSuccess') + lang('Episode.messages.createSuccess'), ); } @@ -284,7 +284,7 @@ class EpisodeController extends BaseController $episode->slug = $validData['slug']; $episode->description_markdown = $this->request->getPost('description'); $episode->location = $this->request->getPost('location_name') === '' ? null : new Location( - $this->request->getPost('location_name') + $this->request->getPost('location_name'), ); $episode->parental_advisory = $this->request->getPost('parental_advisory') !== 'undefined' @@ -349,7 +349,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-edit', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Episode.messages.editSuccess') + lang('Episode.messages.editSuccess'), ); } @@ -407,7 +407,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', - lang('Episode.publish_error') + lang('Episode.publish_error'), ); } @@ -490,7 +490,7 @@ class EpisodeController extends BaseController 'message', lang('Episode.messages.publishSuccess', [ 'publication_status' => $episode->publication_status, - ]) + ]), ); } @@ -520,7 +520,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', - lang('Episode.publish_edit_error') + lang('Episode.publish_edit_error'), ); } @@ -602,7 +602,7 @@ class EpisodeController extends BaseController 'message', lang('Episode.messages.publishSuccess', [ 'publication_status' => $episode->publication_status, - ]) + ]), ); } @@ -636,7 +636,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Episode.messages.publishCancelSuccess') + lang('Episode.messages.publishCancelSuccess'), ); } @@ -649,7 +649,7 @@ class EpisodeController extends BaseController if ($episode->publication_status !== 'published') { return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', - lang('Episode.publish_date_edit_error') + lang('Episode.publish_date_edit_error'), ); } @@ -716,7 +716,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Episode.publish_date_edit_success') + lang('Episode.publish_date_edit_success'), ); } @@ -725,7 +725,7 @@ class EpisodeController extends BaseController if ($episode->publication_status !== 'published') { return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', - lang('Episode.unpublish_error') + lang('Episode.unpublish_error'), ); } @@ -906,7 +906,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-list', [$episode->podcast_id])->with( 'message', - lang('Episode.messages.deleteSuccess') + lang('Episode.messages.deleteSuccess'), ); } diff --git a/modules/Admin/Controllers/PersonController.php b/modules/Admin/Controllers/PersonController.php index f41b6097..51d4a21c 100644 --- a/modules/Admin/Controllers/PersonController.php +++ b/modules/Admin/Controllers/PersonController.php @@ -149,7 +149,7 @@ class PersonController extends BaseController return redirect()->route('person-edit', [$person->id])->with( 'message', - lang('Person.messages.editSuccess') + lang('Person.messages.editSuccess'), ); } diff --git a/modules/Admin/Controllers/PodcastController.php b/modules/Admin/Controllers/PodcastController.php index 89f0079e..870b66a5 100644 --- a/modules/Admin/Controllers/PodcastController.php +++ b/modules/Admin/Controllers/PodcastController.php @@ -226,7 +226,7 @@ class PodcastController extends BaseController 'type' => $this->request->getPost('type'), 'copyright' => $this->request->getPost('copyright'), 'location' => $this->request->getPost('location_name') === '' ? null : new Location( - $this->request->getPost('location_name') + $this->request->getPost('location_name'), ), 'is_blocked' => $this->request->getPost('block') === 'yes', 'is_completed' => $this->request->getPost('complete') === 'yes', @@ -260,7 +260,7 @@ class PodcastController extends BaseController return redirect()->route('podcast-view', [$newPodcastId])->with( 'message', - lang('Podcast.messages.createSuccess') + lang('Podcast.messages.createSuccess'), ); } @@ -317,10 +317,10 @@ class PodcastController extends BaseController $podcast->type = $this->request->getPost('type'); $podcast->copyright = $this->request->getPost('copyright'); $podcast->location = $this->request->getPost('location_name') === '' ? null : new Location( - $this->request->getPost('location_name') + $this->request->getPost('location_name'), ); $podcast->new_feed_url = $this->request->getPost('new_feed_url') === '' ? null : $this->request->getPost( - 'new_feed_url' + 'new_feed_url', ); $podcast->is_blocked = $this->request->getPost('block') === 'yes'; @@ -356,14 +356,14 @@ class PodcastController extends BaseController ->set( 'Podcast.redirect_to_new_feed', $this->request->getPost('redirect_to_new_feed') === 'yes', - 'podcast:' . $podcast->id + 'podcast:' . $podcast->id, ); $db->transComplete(); return redirect()->route('podcast-edit', [$podcast->id])->with( 'message', - lang('Podcast.messages.editSuccess') + lang('Podcast.messages.editSuccess'), ); } @@ -607,7 +607,7 @@ class PodcastController extends BaseController if ($podcast->publication_status !== 'not_published') { return redirect()->route('podcast-view', [$podcast->id])->with( 'error', - lang('Podcast.messages.publishError') + lang('Podcast.messages.publishError'), ); } @@ -742,7 +742,7 @@ class PodcastController extends BaseController if ($podcast->publication_status !== 'scheduled') { return redirect()->route('podcast-view', [$podcast->id])->with( 'error', - lang('Podcast.messages.publishEditError') + lang('Podcast.messages.publishEditError'), ); } @@ -942,7 +942,7 @@ class PodcastController extends BaseController return redirect()->route('podcast-view', [$podcast->id])->with( 'message', - lang('Podcast.messages.publishCancelSuccess') + lang('Podcast.messages.publishCancelSuccess'), ); } } diff --git a/modules/Admin/Controllers/SoundbiteController.php b/modules/Admin/Controllers/SoundbiteController.php index 5be40f35..faf72bee 100644 --- a/modules/Admin/Controllers/SoundbiteController.php +++ b/modules/Admin/Controllers/SoundbiteController.php @@ -131,7 +131,7 @@ class SoundbiteController extends BaseController return redirect()->route('soundbites-list', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Soundbite.messages.createSuccess') + lang('Soundbite.messages.createSuccess'), ); } @@ -161,7 +161,7 @@ class SoundbiteController extends BaseController return redirect()->route('soundbites-list', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Soundbite.messages.deleteSuccess') + lang('Soundbite.messages.deleteSuccess'), ); } } diff --git a/modules/Admin/Controllers/VideoClipsController.php b/modules/Admin/Controllers/VideoClipsController.php index 99cd1187..573042e6 100644 --- a/modules/Admin/Controllers/VideoClipsController.php +++ b/modules/Admin/Controllers/VideoClipsController.php @@ -125,7 +125,7 @@ class VideoClipsController extends BaseController $this->setHtmlHead(lang('VideoClip.form.title')); - if (in_array(false, $checks, true)) { + if (array_any($checks, fn (bool $value): bool => ! $value)) { $data['checks'] = $checks; return view('episode/video_clips_requirements', $data); } @@ -188,7 +188,7 @@ class VideoClipsController extends BaseController return redirect()->route('video-clips-list', [$episode->podcast_id, $episode->id])->with( 'message', - lang('VideoClip.messages.addToQueueSuccess') + lang('VideoClip.messages.addToQueueSuccess'), ); } diff --git a/modules/Analytics/Controllers/EpisodeAnalyticsController.php b/modules/Analytics/Controllers/EpisodeAnalyticsController.php index 743ccd2a..5da42457 100644 --- a/modules/Analytics/Controllers/EpisodeAnalyticsController.php +++ b/modules/Analytics/Controllers/EpisodeAnalyticsController.php @@ -40,7 +40,7 @@ class EpisodeAnalyticsController extends Controller return redirect()->route( 'episode-audio', - [$episode->podcast->handle, $episode->slug, $episode->audio->file_extension] + [$episode->podcast->handle, $episode->slug, $episode->audio->file_extension], ); } } diff --git a/modules/Analytics/Helpers/analytics_helper.php b/modules/Analytics/Helpers/analytics_helper.php index 3630462f..adf97da4 100644 --- a/modules/Analytics/Helpers/analytics_helper.php +++ b/modules/Analytics/Helpers/analytics_helper.php @@ -259,8 +259,8 @@ if (! function_exists('podcast_hit')) { 'Analytics_Episode_' . sha1( $salt . '_' . date( - 'Y-m-d' - ) . '_' . $clientIp . '_' . $superglobals->server('HTTP_USER_AGENT') . '_' . $episodeId + 'Y-m-d', + ) . '_' . $clientIp . '_' . $superglobals->server('HTTP_USER_AGENT') . '_' . $episodeId, ); // The cache expires at midnight: $secondsToMidnight = strtotime('tomorrow') - time(); @@ -308,8 +308,8 @@ if (! function_exists('podcast_hit')) { 'Analytics_Podcast_' . sha1( $salt . '_' . date( - 'Y-m-d' - ) . '_' . $clientIp . '_' . $superglobals->server('HTTP_USER_AGENT') . '_' . $podcastId + 'Y-m-d', + ) . '_' . $clientIp . '_' . $superglobals->server('HTTP_USER_AGENT') . '_' . $podcastId, ); $newListener = 1; diff --git a/modules/Analytics/Models/AnalyticsPodcastByEpisodeModel.php b/modules/Analytics/Models/AnalyticsPodcastByEpisodeModel.php index 06aef9f4..7115284a 100644 --- a/modules/Analytics/Models/AnalyticsPodcastByEpisodeModel.php +++ b/modules/Analytics/Models/AnalyticsPodcastByEpisodeModel.php @@ -66,7 +66,7 @@ class AnalyticsPodcastByEpisodeModel extends Model /** * @return AnalyticsPodcastsByEpisode[] */ - public function getDataByMonth(int $podcastId, int $episodeId = null): array + public function getDataByMonth(int $podcastId, ?int $episodeId = null): array { if ( ! ($found = cache("{$podcastId}_{$episodeId}_analytics_podcast_by_episode_by_month")) diff --git a/modules/Analytics/Models/AnalyticsPodcastModel.php b/modules/Analytics/Models/AnalyticsPodcastModel.php index e58f574e..1b4775e0 100644 --- a/modules/Analytics/Models/AnalyticsPodcastModel.php +++ b/modules/Analytics/Models/AnalyticsPodcastModel.php @@ -246,7 +246,7 @@ class AnalyticsPodcastModel extends Model { if (! ($found = cache('analytics_total_bandwidth_by_month'))) { $found = $this->select( - 'DATE_FORMAT(updated_at,"%Y-%m") as labels, ROUND(sum(bandwidth) / 1000000, 2) as `values`' + 'DATE_FORMAT(updated_at,"%Y-%m") as labels, ROUND(sum(bandwidth) / 1000000, 2) as `values`', ) ->groupBy('labels') ->orderBy('labels', 'ASC') @@ -268,7 +268,7 @@ class AnalyticsPodcastModel extends Model { if (! ($found = cache('analytics_total_storage_by_month'))) { $found = (new MediaModel())->select( - 'DATE_FORMAT(uploaded_at,"%Y-%m") as labels, ROUND(sum(file_size) / 1000000, 2) as `values`' + 'DATE_FORMAT(uploaded_at,"%Y-%m") as labels, ROUND(sum(file_size) / 1000000, 2) as `values`', ) ->groupBy('labels') ->orderBy('labels', 'ASC') diff --git a/modules/Api/Rest/V1/Config/Routes.php b/modules/Api/Rest/V1/Config/Routes.php index 99429fa7..5f717129 100644 --- a/modules/Api/Rest/V1/Config/Routes.php +++ b/modules/Api/Rest/V1/Config/Routes.php @@ -19,7 +19,7 @@ $routes->group( $routes->get('/', 'PodcastController::list'); $routes->get('(:num)', 'PodcastController::view/$1'); $routes->get('(:any)', 'ExceptionController::notFound'); - } + }, ); $routes->group( @@ -35,5 +35,5 @@ $routes->group( $routes->post('(:num)/publish', 'EpisodeController::attemptPublish/$1'); $routes->get('(:num)', 'EpisodeController::view/$1'); $routes->get('(:any)', 'ExceptionController::notFound'); - } + }, ); diff --git a/modules/Api/Rest/V1/Controllers/EpisodeController.php b/modules/Api/Rest/V1/Controllers/EpisodeController.php index 4688a858..ad9dcff3 100644 --- a/modules/Api/Rest/V1/Controllers/EpisodeController.php +++ b/modules/Api/Rest/V1/Controllers/EpisodeController.php @@ -52,7 +52,7 @@ class EpisodeController extends Controller $data = $builder->findAll( (int) ($this->request->getGet('limit') ?? config('RestApi')->limit), - (int) $this->request->getGet('offset') + (int) $this->request->getGet('offset'), ); array_map(static function ($episode): void { @@ -155,10 +155,10 @@ class EpisodeController extends Controller ? $this->request->getPost('parental_advisory') : null, 'number' => $this->request->getPost('episode_number') ? (int) $this->request->getPost( - 'episode_number' + 'episode_number', ) : null, 'season_number' => $this->request->getPost('season_number') ? (int) $this->request->getPost( - 'season_number' + 'season_number', ) : null, 'type' => $this->request->getPost('type'), 'is_blocked' => $this->request->getPost('block') === 'yes', @@ -172,7 +172,7 @@ class EpisodeController extends Controller $newEpisode->setTranscript($this->request->getFile('transcript_file')); } elseif ($transcriptChoice === 'remote-url') { $newEpisode->transcript_remote_url = $this->request->getPost( - 'transcript_remote_url' + 'transcript_remote_url', ) === '' ? null : $this->request->getPost('transcript_remote_url'); } @@ -181,7 +181,7 @@ class EpisodeController extends Controller $newEpisode->setChapters($this->request->getFile('chapters_file')); } elseif ($chaptersChoice === 'remote-url') { $newEpisode->chapters_remote_url = $this->request->getPost( - 'chapters_remote_url' + 'chapters_remote_url', ) === '' ? null : $this->request->getPost('chapters_remote_url'); } @@ -257,7 +257,7 @@ class EpisodeController extends Controller $episode->published_at = Time::createFromFormat( 'Y-m-d H:i', $scheduledPublicationDate, - $clientTimezone + $clientTimezone, )->setTimezone(app_timezone()); } else { $db->transRollback(); diff --git a/modules/Api/Rest/V1/Filters/ApiFilter.php b/modules/Api/Rest/V1/Filters/ApiFilter.php index 4b1932d3..8bb25935 100644 --- a/modules/Api/Rest/V1/Filters/ApiFilter.php +++ b/modules/Api/Rest/V1/Filters/ApiFilter.php @@ -17,7 +17,8 @@ class ApiFilter implements FilterInterface { /** * @param Request $request - * @return RequestInterface|ResponseInterface|string|void + * + * @return RequestInterface|ResponseInterface|string|null */ #[Override] public function before(RequestInterface $request, $arguments = null) @@ -62,11 +63,18 @@ class ApiFilter implements FilterInterface return $response; } } + + return null; } + /** + * @param string[]|null $arguments + * + * @return ResponseInterface|null + */ #[Override] - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { - // Do something here + return null; } } diff --git a/modules/Auth/Commands/RolesDoc.php b/modules/Auth/Commands/RolesDoc.php index 5f95bfa9..84d7b941 100644 --- a/modules/Auth/Commands/RolesDoc.php +++ b/modules/Auth/Commands/RolesDoc.php @@ -88,7 +88,7 @@ class RolesDoc extends BaseCommand $authGroups->instanceGroups, static function ($table, $key, array $value) use ($instanceMatrix): void { $table->addRow($value['title'], $value['description'], implode(', ', $instanceMatrix[$key])); - } + }, ); } @@ -101,7 +101,7 @@ class RolesDoc extends BaseCommand $authGroups->instancePermissions, static function ($table, $key, $value): void { $table->addRow($key, $value); - } + }, ); } @@ -115,7 +115,7 @@ class RolesDoc extends BaseCommand $authGroups->podcastGroups, static function ($table, $key, array $value) use ($podcastMatrix): void { $table->addRow($value['title'], $value['description'], implode(', ', $podcastMatrix[$key])); - } + }, ); } @@ -128,7 +128,7 @@ class RolesDoc extends BaseCommand $authGroups->podcastPermissions, static function ($table, $key, $value): void { $table->addRow($key, $value); - } + }, ); } @@ -141,7 +141,7 @@ class RolesDoc extends BaseCommand string $pattern, array $tableHeading, array $data, - Closure $callback + Closure $callback, ): string { // check if it has the start and end comments to insert roles table // looking for and @@ -169,7 +169,7 @@ class RolesDoc extends BaseCommand $newFileContents = preg_replace( $pattern, '${1}' . PHP_EOL . PHP_EOL . $markdownTable . PHP_EOL . PHP_EOL . '${2}', - $fileContents + $fileContents, ); if ($newFileContents === null) { @@ -184,7 +184,7 @@ class RolesDoc extends BaseCommand preg_match( '~docs\/src\/content\/docs\/(?:([a-z]{2}(?:-[A-Za-z]{2,})?)\/)getting-started\/auth\.mdx~', $fileKey, - $match + $match, ); if ($match === []) { diff --git a/modules/Auth/Config/Routes.php b/modules/Auth/Config/Routes.php index aa56747e..535646f6 100644 --- a/modules/Auth/Config/Routes.php +++ b/modules/Auth/Config/Routes.php @@ -132,5 +132,5 @@ $routes->group( ); }); }); - } + }, ); diff --git a/modules/Auth/Controllers/ActionController.php b/modules/Auth/Controllers/ActionController.php index 087bfa16..649005ee 100644 --- a/modules/Auth/Controllers/ActionController.php +++ b/modules/Auth/Controllers/ActionController.php @@ -20,7 +20,7 @@ class ActionController extends ShieldActionController public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { parent::initController($request, $response, $logger); diff --git a/modules/Auth/Controllers/ContributorController.php b/modules/Auth/Controllers/ContributorController.php index 6c75aaeb..400c0ad3 100644 --- a/modules/Auth/Controllers/ContributorController.php +++ b/modules/Auth/Controllers/ContributorController.php @@ -42,7 +42,7 @@ class ContributorController extends BaseController if (($this->contributor = (new UserModel())->getPodcastContributor( (int) $params[1], - (int) $params[0] + (int) $params[0], )) instanceof User) { return $this->{$method}(); } @@ -88,7 +88,7 @@ class ContributorController extends BaseController $users = (new UserModel())->findAll(); $contributorOptions = array_reduce( $users, - static function (array $result, $user): array { + static function (array $result, User $user): array { $result[] = [ 'value' => $user->id, 'label' => $user->username, @@ -202,7 +202,7 @@ class ContributorController extends BaseController return redirect()->route('contributor-list', [$this->podcast->id])->with( 'message', - lang('Contributor.messages.editSuccess') + lang('Contributor.messages.editSuccess'), ); } diff --git a/modules/Auth/Controllers/LoginController.php b/modules/Auth/Controllers/LoginController.php index 91e375c6..d4d7386e 100644 --- a/modules/Auth/Controllers/LoginController.php +++ b/modules/Auth/Controllers/LoginController.php @@ -17,7 +17,7 @@ class LoginController extends ShieldLoginController public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { parent::initController($request, $response, $logger); diff --git a/modules/Auth/Controllers/MagicLinkController.php b/modules/Auth/Controllers/MagicLinkController.php index d37f85ee..5be3ff3b 100644 --- a/modules/Auth/Controllers/MagicLinkController.php +++ b/modules/Auth/Controllers/MagicLinkController.php @@ -24,7 +24,7 @@ class MagicLinkController extends ShieldMagicLinkController public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { parent::initController($request, $response, $logger); diff --git a/modules/Auth/Controllers/RegisterController.php b/modules/Auth/Controllers/RegisterController.php index d015392f..4a093f95 100644 --- a/modules/Auth/Controllers/RegisterController.php +++ b/modules/Auth/Controllers/RegisterController.php @@ -20,7 +20,7 @@ class RegisterController extends ShieldRegisterController public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { parent::initController($request, $response, $logger); diff --git a/modules/Auth/Filters/PermissionFilter.php b/modules/Auth/Filters/PermissionFilter.php index b12ee6bb..e958d910 100644 --- a/modules/Auth/Filters/PermissionFilter.php +++ b/modules/Auth/Filters/PermissionFilter.php @@ -20,13 +20,13 @@ class PermissionFilter implements FilterInterface /** * @param string[]|null $arguments * - * @return RequestInterface|ResponseInterface|string|void + * @return RequestInterface|ResponseInterface|string|null */ #[Override] public function before(RequestInterface $request, $arguments = null) { if ($arguments === null || $arguments === []) { - return; + return null; } if (! auth()->loggedIn()) { @@ -34,7 +34,7 @@ class PermissionFilter implements FilterInterface } if ($this->isAuthorized($arguments)) { - return; + return null; } throw new RuntimeException(lang('Auth.notEnoughPrivilege'), 403); @@ -42,10 +42,13 @@ class PermissionFilter implements FilterInterface /** * @param string[]|null $arguments + * + * @return ResponseInterface|null */ #[Override] - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { + return null; } /** @@ -67,7 +70,7 @@ class PermissionFilter implements FilterInterface if (! preg_match('/\$(\d+)\./', $permission, $match)) { throw new RuntimeException(sprintf( 'Could not get podcast identifier from permission %s', - $permission + $permission, ), 1); } diff --git a/modules/Auth/Helpers/auth_helper.php b/modules/Auth/Helpers/auth_helper.php index b4765c87..7e32e57c 100644 --- a/modules/Auth/Helpers/auth_helper.php +++ b/modules/Auth/Helpers/auth_helper.php @@ -104,7 +104,7 @@ if (! function_exists('get_instance_group')) { { $instanceGroups = array_filter( $user->getGroups() ?? [], - static fn ($group): bool => ! str_starts_with((string) $group, 'podcast#') + static fn ($group): bool => ! str_starts_with((string) $group, 'podcast#'), ); if ($instanceGroups === []) { @@ -141,7 +141,7 @@ if (! function_exists('get_podcast_group')) { { $podcastGroups = array_filter( $user->getGroups() ?? [], - static fn ($group): bool => str_starts_with((string) $group, "podcast#{$podcastId}-") + static fn ($group): bool => str_starts_with((string) $group, "podcast#{$podcastId}-"), ); if ($podcastGroups === []) { @@ -184,7 +184,7 @@ if (! function_exists('get_podcast_groups')) { { $podcastGroups = array_filter( $user->getGroups() ?? [], - static fn ($group): bool => str_starts_with((string) $group, 'podcast#') + static fn ($group): bool => str_starts_with((string) $group, 'podcast#'), ); $userPodcastIds = []; @@ -281,7 +281,7 @@ if (! function_exists('get_actor_ids_with_unread_notifications')) { $unreadNotifications = (new NotificationModel())->whereIn( 'target_actor_id', - array_column($userPodcasts, 'actor_id') + array_column($userPodcasts, 'actor_id'), ) ->where('read_at', null) ->findAll(); diff --git a/modules/Fediverse/Commands/Broadcast.php b/modules/Fediverse/Commands/Broadcast.php index 4f2b3e5f..3e096946 100644 --- a/modules/Fediverse/Commands/Broadcast.php +++ b/modules/Fediverse/Commands/Broadcast.php @@ -42,7 +42,7 @@ class Broadcast extends BaseCommand send_activity_to_actor( $scheduledActivity->actor, $scheduledActivity->targetActor, - json_encode($scheduledActivity->payload, JSON_THROW_ON_ERROR) + json_encode($scheduledActivity->payload, JSON_THROW_ON_ERROR), ); } } else { diff --git a/modules/Fediverse/Filters/FediverseFilter.php b/modules/Fediverse/Filters/FediverseFilter.php index 1e64839b..0c8f406e 100644 --- a/modules/Fediverse/Filters/FediverseFilter.php +++ b/modules/Fediverse/Filters/FediverseFilter.php @@ -16,19 +16,15 @@ use Override; class FediverseFilter implements FilterInterface { /** - * Do whatever processing this filter needs to do. By default it should not return anything during normal execution. - * However, when an abnormal state is found, it should return an instance of CodeIgniter\HTTP\Response. If it does, - * script execution will end and that Response will be sent back to the client, allowing for error pages, redirects, - * etc. + * @param string[]|null $params * - * @param string[]|null $params - * @return RequestInterface|ResponseInterface|string|void + * @return RequestInterface|ResponseInterface|string|null */ #[Override] public function before(RequestInterface $request, $params = null) { if ($params === null) { - return; + return null; } if (in_array('verify-activitystream', $params, true)) { @@ -72,20 +68,18 @@ class FediverseFilter implements FilterInterface return service('response')->setStatusCode(401); } } - } - //-------------------------------------------------------------------- + return null; + } /** - * Allows After filters to inspect and modify the response object as needed. This method does not allow any way to - * stop execution of other after filters, short of throwing an Exception or Error. + * @param string[]|null $arguments * - * @param string[]|null $arguments + * @return ResponseInterface|null */ #[Override] - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { + return null; } - - //-------------------------------------------------------------------- } diff --git a/modules/Fediverse/HttpSignature.php b/modules/Fediverse/HttpSignature.php index 3b9eccdc..145f0848 100644 --- a/modules/Fediverse/HttpSignature.php +++ b/modules/Fediverse/HttpSignature.php @@ -24,9 +24,6 @@ use phpseclib\Crypt\RSA; */ class HttpSignature { - /** - * @var string - */ private const string SIGNATURE_PATTERN = '/ (?=.*(keyId="(?Phttps?:\/\/[\w\-\.]+[\w]+(:[\d]+)?[\w\-\.#\/@]+)")) (?=.*(signature="(?P[\w+\/]+={0,2})")) @@ -36,7 +33,7 @@ class HttpSignature protected IncomingRequest $request; - public function __construct(IncomingRequest $request = null) + public function __construct(?IncomingRequest $request = null) { if (! $request instanceof IncomingRequest) { $request = service('request'); @@ -164,7 +161,7 @@ class HttpSignature string $publicKeyPem, string $data, string $signature, - string $algorithm = 'rsa-sha256' + string $algorithm = 'rsa-sha256', ): bool { if ($algorithm === 'rsa-sha512' || $algorithm === 'rsa-sha256') { $hash = substr($algorithm, strpos($algorithm, '-') + 1); diff --git a/modules/Fediverse/Models/ActivityModel.php b/modules/Fediverse/Models/ActivityModel.php index 548ee4a4..c06881ff 100644 --- a/modules/Fediverse/Models/ActivityModel.php +++ b/modules/Fediverse/Models/ActivityModel.php @@ -100,8 +100,8 @@ class ActivityModel extends UuidModel ?int $targetActorId, ?string $postId, string $payload, - DateTimeInterface $scheduledAt = null, - ?string $taskStatus = null + ?DateTimeInterface $scheduledAt = null, + ?string $taskStatus = null, ): BaseResult | int | string | false { return $this->insert( [ @@ -110,7 +110,7 @@ class ActivityModel extends UuidModel 'post_id' => $postId, 'type' => $type === 'Undo' ? $type . '_' . (json_decode( $payload, - true + true, ))['object']['type'] : $type, 'payload' => $payload, 'scheduled_at' => $scheduledAt, diff --git a/modules/Fediverse/Models/ActorModel.php b/modules/Fediverse/Models/ActorModel.php index 28079a62..065815dc 100644 --- a/modules/Fediverse/Models/ActorModel.php +++ b/modules/Fediverse/Models/ActorModel.php @@ -231,24 +231,24 @@ class ActorModel extends Model ->join( $tablePrefix . 'fediverse_posts', $tablePrefix . 'fediverse_actors.id = ' . $tablePrefix . 'fediverse_posts.actor_id', - 'left outer' + 'left outer', ) ->join( $tablePrefix . 'fediverse_favourites', $tablePrefix . 'fediverse_actors.id = ' . $tablePrefix . 'fediverse_favourites.actor_id', - 'left outer' + 'left outer', ) ->where($tablePrefix . 'fediverse_actors.domain', get_current_domain()) ->groupStart() ->where( "`{$tablePrefix}fediverse_posts`.`created_at` >= UTC_TIMESTAMP() - INTERVAL {$lastNumberOfMonths} month", null, - false + false, ) ->orWhere( "`{$tablePrefix}fediverse_favourites`.`created_at` >= UTC_TIMESTAMP() - INTERVAL {$lastNumberOfMonths} month", null, - false + false, ) ->groupEnd() ->get() diff --git a/modules/Fediverse/Models/PostModel.php b/modules/Fediverse/Models/PostModel.php index cec9dcf8..a1b4a54d 100644 --- a/modules/Fediverse/Models/PostModel.php +++ b/modules/Fediverse/Models/PostModel.php @@ -234,7 +234,7 @@ class PostModel extends UuidModel public function addPost( Post $post, bool $createPreviewCard = true, - bool $registerActivity = true + bool $registerActivity = true, ): bool|int|object|string { helper('fediverse'); @@ -327,6 +327,7 @@ class PostModel extends UuidModel // update published date in payload $newPayload = $scheduledActivity->payload; $newPayload->object->published = $updatedPost->published_at->format(DATE_W3C); + model('ActivityModel', false) ->update($scheduledActivity->id, [ 'payload' => json_encode($newPayload, JSON_THROW_ON_ERROR), @@ -431,7 +432,7 @@ class PostModel extends UuidModel public function addReply( Post $reply, bool $createPreviewCard = true, - bool $registerActivity = true + bool $registerActivity = true, ): string | false { if (! $reply->in_reply_to_id) { throw new Exception('Passed post is not a reply!'); diff --git a/modules/Fediverse/Objects/OrderedCollectionObject.php b/modules/Fediverse/Objects/OrderedCollectionObject.php index 11438361..5877de52 100644 --- a/modules/Fediverse/Objects/OrderedCollectionObject.php +++ b/modules/Fediverse/Objects/OrderedCollectionObject.php @@ -32,7 +32,7 @@ class OrderedCollectionObject extends ObjectType */ public function __construct( protected ?array $orderedItems = null, - ?Pager $pager = null + ?Pager $pager = null, ) { $this->id = current_url(); diff --git a/modules/Fediverse/WebFinger.php b/modules/Fediverse/WebFinger.php index f8d0b8c8..e07f5115 100644 --- a/modules/Fediverse/WebFinger.php +++ b/modules/Fediverse/WebFinger.php @@ -15,9 +15,6 @@ use Modules\Fediverse\Entities\Actor; class WebFinger { - /** - * @var string - */ private const string RESOURCE_PATTERN = '/^acct:(?P([\w_]+))@(?P([\w\-\.]+[\w]+)(:[\d]+)?)$/x'; protected string $username; @@ -39,7 +36,7 @@ class WebFinger protected array $links = []; public function __construct( - protected string $subject + protected string $subject, ) { // Split resource into its parts (username, domain) $parts = $this->splitResource($subject); diff --git a/modules/Install/Commands/CreateSuperadmin.php b/modules/Install/Commands/CreateSuperadmin.php index 7cf6a6ec..0dfdad71 100644 --- a/modules/Install/Commands/CreateSuperadmin.php +++ b/modules/Install/Commands/CreateSuperadmin.php @@ -74,7 +74,7 @@ class CreateSuperadmin extends BaseCommand $passwordConfirm = $this->prompt( 'Password confirmation', null, - $this->validationRules['password']['rules'] + $this->validationRules['password']['rules'], ); if ($password !== $passwordConfirm) { diff --git a/modules/Install/Config/Routes.php b/modules/Install/Config/Routes.php index b8620f85..481d01fd 100644 --- a/modules/Install/Config/Routes.php +++ b/modules/Install/Config/Routes.php @@ -35,5 +35,5 @@ $routes->group( 'as' => 'create-superadmin', ], ); - } + }, ); diff --git a/modules/Install/Controllers/InstallController.php b/modules/Install/Controllers/InstallController.php index 15bd9c6d..95425bf3 100644 --- a/modules/Install/Controllers/InstallController.php +++ b/modules/Install/Controllers/InstallController.php @@ -38,7 +38,7 @@ class InstallController extends Controller public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { // Do Not Edit This Line parent::initController($request, $response, $logger); @@ -347,7 +347,7 @@ class InstallController extends Controller return $line; }, - $envData + $envData, ); if (! $replaced) { diff --git a/modules/Media/Entities/Image.php b/modules/Media/Entities/Image.php index 2d88bd3a..02319af1 100644 --- a/modules/Media/Entities/Image.php +++ b/modules/Media/Entities/Image.php @@ -87,7 +87,7 @@ class Image extends BaseMedia if ($this->file_mimetype === 'image/jpeg' && $metadata = @exif_read_data( $file->getRealPath(), null, - true + true, )) { $metadata['sizes'] = $this->attributes['sizes']; $this->attributes['file_size'] = $metadata['FILE']['FileSize']; diff --git a/modules/Media/FileManagers/FS.php b/modules/Media/FileManagers/FS.php index e58001df..8fbb918e 100644 --- a/modules/Media/FileManagers/FS.php +++ b/modules/Media/FileManagers/FS.php @@ -12,9 +12,8 @@ use Override; class FS implements FileManagerInterface { public function __construct( - protected MediaConfig $config + protected MediaConfig $config, ) { - $this->config = $config; } /** diff --git a/modules/Media/FileManagers/S3.php b/modules/Media/FileManagers/S3.php index ef96de59..f31a25c3 100644 --- a/modules/Media/FileManagers/S3.php +++ b/modules/Media/FileManagers/S3.php @@ -16,7 +16,7 @@ class S3 implements FileManagerInterface public S3Client $s3; public function __construct( - protected MediaConfig $config + protected MediaConfig $config, ) { $this->s3 = new S3Client([ 'version' => 'latest', diff --git a/modules/Media/Helpers/url_helper.php b/modules/Media/Helpers/url_helper.php index aba33540..e9cbcdc2 100644 --- a/modules/Media/Helpers/url_helper.php +++ b/modules/Media/Helpers/url_helper.php @@ -24,7 +24,7 @@ if (! function_exists('media_url')) { $uri->getAuthority(), $uri->getPath(), $uri->getQuery(), - $uri->getFragment() + $uri->getFragment(), ); } } diff --git a/modules/Media/Models/MediaModel.php b/modules/Media/Models/MediaModel.php index 78d1ce97..d6b948a6 100644 --- a/modules/Media/Models/MediaModel.php +++ b/modules/Media/Models/MediaModel.php @@ -81,8 +81,8 @@ class MediaModel extends Model */ public function __construct( protected string $fileType = 'document', - ConnectionInterface &$db = null, - ValidationInterface $validation = null + ?ConnectionInterface &$db = null, + ?ValidationInterface $validation = null, ) { $this->returnType = match ($fileType) { 'audio' => Audio::class, @@ -90,7 +90,7 @@ class MediaModel extends Model 'image' => Image::class, 'transcript' => Transcript::class, 'chapters' => Chapters::class, - default => Document::class + default => Document::class, }; parent::__construct($db, $validation); diff --git a/modules/MediaClipper/VideoClipper.php b/modules/MediaClipper/VideoClipper.php index 96653088..039a2b33 100644 --- a/modules/MediaClipper/VideoClipper.php +++ b/modules/MediaClipper/VideoClipper.php @@ -96,7 +96,7 @@ class VideoClipper if (! $tempFile) { throw new Exception( - 'Could not create temporary files, check for permissions on your ' . WRITEPATH . 'temp folder.' + 'Could not create temporary files, check for permissions on your ' . WRITEPATH . 'temp folder.', ); } @@ -233,11 +233,11 @@ class VideoClipper '[m][a]alphamerge[waves_t3]', "[waves_t3]scale={$this->dimensions['soundwaves']['rescaleWidth']}:{$this->dimensions['soundwaves']['rescaleHeight']},lutrgb=r='if(gt(val,100),{$this->colors['soundwaves'][0]},val)':g='if(gt(val,100),{$this->colors['soundwaves'][1]},val)':b='if(gt(val,100),{$this->colors['soundwaves'][2]},val)'[waves_final]", "[1:v][waves_final]overlay=x={$this->dimensions['soundwaves']['x']}:y={$this->dimensions['soundwaves']['y']}:shortest=1,drawtext=fontfile=" . $this->getFont( - 'timestamp' + 'timestamp', ) . ":text='%{pts\:gmtime\:{$this->start}\:%H\\\\\\\\\\:%M\\\\\\\\\\:%S\}':x={$this->dimensions['timestamp']['x']}:y={$this->dimensions['timestamp']['y']}:fontsize={$this->dimensions['timestamp']['fontsize']}:fontcolor=0x{$this->colors['timestampText']}:box=1:boxcolor=0x{$this->colors['timestampBg']}:boxborderw={$this->dimensions['timestamp']['padding']}[v3]", "color=c=0x{$this->colors['progressbar']}:s={$this->dimensions['width']}x{$this->dimensions['progressbar']['height']}[progressbar]", "[v3][progressbar]overlay=-w+(w/{$this->duration})*t:0:shortest=1:format=rgb,subtitles={$this->subtitlesClipOutput}:fontsdir=" . config( - 'MediaClipper' + 'MediaClipper', )->fontsFolder . ":force_style='Fontname=" . self::FONTS['subtitles'] . ",Alignment=5,Fontsize={$this->dimensions['subtitles']['fontsize']},PrimaryColour=&H{$this->colors['subtitles']}&,BorderStyle=1,Outline=0,Shadow=0,MarginL={$this->dimensions['subtitles']['marginL']},MarginR={$this->dimensions['subtitles']['marginR']},MarginV={$this->dimensions['subtitles']['marginV']}'[outv]", "[6:v]scale={$this->dimensions['watermark']['width']}:{$this->dimensions['watermark']['height']}[watermark]", "color=0x{$this->colors['watermarkBg']}:{$this->dimensions['watermark']['width']}x{$this->dimensions['watermark']['height']}[over]", @@ -313,7 +313,7 @@ class VideoClipper $scaledEpisodeCover = $this->scaleImage( $episodeCover, $this->dimensions['cover']['width'], - $this->dimensions['cover']['height'] + $this->dimensions['cover']['height'], ); if (! $scaledEpisodeCover) { @@ -332,7 +332,7 @@ class VideoClipper $this->dimensions['cover']['x'], $this->dimensions['cover']['y'], $this->dimensions['cover']['width'], - $this->dimensions['cover']['height'] + $this->dimensions['cover']['height'], ); if (! $isOverlaid) { @@ -357,13 +357,13 @@ class VideoClipper $this->dimensions['episodeTitle']['fontsize'], 0, $this->getFont('episodeTitle'), - $this->episode->title + $this->episode->title, ); $episodeNumberingBox = $this->calculateTextBox( $this->dimensions['episodeNumbering']['fontsize'], 0, $this->getFont('episodeNumbering'), - $this->episodeNumbering + $this->episodeNumbering, ); if (! $episodeTitleBox || ! $episodeNumberingBox) { return false; @@ -419,7 +419,7 @@ class VideoClipper $scaledQuotes = $this->scaleImage( $cleanedQuotes, $this->dimensions['quotes']['width'], - $this->dimensions['quotes']['height'] + $this->dimensions['quotes']['height'], ); if (! $scaledQuotes) { @@ -433,7 +433,7 @@ class VideoClipper $this->dimensions['quotes']['x'], $this->dimensions['quotes']['y'], $this->dimensions['quotes']['width'], - $this->dimensions['quotes']['height'] + $this->dimensions['quotes']['height'], ); // Save Image @@ -606,7 +606,7 @@ class VideoClipper int $x, int $y, int $width, - int $height + int $height, ): bool { return imagecopy($background, $foreground, $x, $y, 0, 0, $width, $height); } @@ -646,7 +646,7 @@ class VideoClipper $y + $fontsize + ($leading * $i), $textColor, $fontPath, - $line + $line, ); } diff --git a/modules/Platforms/Config/Routes.php b/modules/Platforms/Config/Routes.php index fb64efc7..06284656 100644 --- a/modules/Platforms/Config/Routes.php +++ b/modules/Platforms/Config/Routes.php @@ -60,5 +60,5 @@ $routes->group( ], ); }); - } + }, ); diff --git a/modules/Plugins/Commands/CreatePlugin.php b/modules/Plugins/Commands/CreatePlugin.php index 8a6e28ce..57141a5d 100644 --- a/modules/Plugins/Commands/CreatePlugin.php +++ b/modules/Plugins/Commands/CreatePlugin.php @@ -71,7 +71,7 @@ class CreatePlugin extends BaseCommand $pluginName = CLI::prompt( 'Plugin name (/)', 'acme/hello-world', - Manifest::$validation_rules['name'] + Manifest::$validation_rules['name'], ); CLI::newLine(); $description = CLI::prompt('Description', '', Manifest::$validation_rules['description']); @@ -111,19 +111,19 @@ class CreatePlugin extends BaseCommand $manifestContents = str_replace( '"description": ""', '"description": "' . $description . '"', - $manifestContents + $manifestContents, ); $manifestContents = str_replace('"license": ""', '"license": "' . $license . '"', $manifestContents); $manifestContents = str_replace( '"hooks": []', '"hooks": ["' . implode('", "', $hooks) . '"]', - $manifestContents + $manifestContents, ); $pluginClassName = str_replace( ' ', '', - ucwords(str_replace(['-', '_', '.'], ' ', $vendor . ' ' . $name)) . 'Plugin' + ucwords(str_replace(['-', '_', '.'], ' ', $vendor . ' ' . $name)) . 'Plugin', ); $pluginClassContents = str_replace('class Plugin', 'class ' . $pluginClassName, $pluginClassTemplate); @@ -153,7 +153,7 @@ class CreatePlugin extends BaseCommand CLI::newLine(1); CLI::write( sprintf('Plugin %s created in %s', CLI::color($pluginName, 'white'), CLI::color($pluginDirectory, 'white')), - 'green' + 'green', ); } } diff --git a/modules/Plugins/Config/Routes.php b/modules/Plugins/Config/Routes.php index 3f7880ce..61ea5d5c 100644 --- a/modules/Plugins/Config/Routes.php +++ b/modules/Plugins/Config/Routes.php @@ -65,5 +65,5 @@ $routes->group( ]); }); }); - } + }, ); diff --git a/modules/Plugins/Controllers/PluginController.php b/modules/Plugins/Controllers/PluginController.php index 78a0b252..95c8e5be 100644 --- a/modules/Plugins/Controllers/PluginController.php +++ b/modules/Plugins/Controllers/PluginController.php @@ -84,8 +84,8 @@ class PluginController extends BaseController public function settingsView( string $vendor, string $package, - string $podcastId = null, - string $episodeId = null + ?string $podcastId = null, + ?string $episodeId = null, ): string { $plugin = $this->plugins->getPlugin($vendor, $package); @@ -152,8 +152,8 @@ class PluginController extends BaseController public function settingsAction( string $vendor, string $package, - string $podcastId = null, - string $episodeId = null + ?string $podcastId = null, + ?string $episodeId = null, ): RedirectResponse { $plugin = $this->plugins->getPlugin($vendor, $package); @@ -350,7 +350,7 @@ class PluginController extends BaseController 'datetime' => Time::createFromFormat( 'Y-m-d H:i', $value, - $this->request->getPost('client_timezone') + $this->request->getPost('client_timezone'), )->setTimezone(app_timezone()), 'markdown' => new Markdown($value), 'rss' => new RSS($value), diff --git a/modules/Plugins/Core/BasePlugin.php b/modules/Plugins/Core/BasePlugin.php index 27734dbb..bd3f67a5 100644 --- a/modules/Plugins/Core/BasePlugin.php +++ b/modules/Plugins/Core/BasePlugin.php @@ -45,7 +45,7 @@ abstract class BasePlugin implements PluginInterface public function __construct( protected string $vendor, protected string $package, - protected string $directory + protected string $directory, ) { $this->key = sprintf('%s/%s', $vendor, $package); @@ -59,7 +59,7 @@ abstract class BasePlugin implements PluginInterface if ($this->manifest->minCastopodVersion !== null && version_compare( CP_VERSION, $this->manifest->minCastopodVersion, - '<' + '<', )) { $this->status = PluginStatus::INCOMPATIBLE; } else { @@ -342,7 +342,7 @@ abstract class BasePlugin implements PluginInterface return 'data:image/svg+xml;utf8,' . str_replace( ['%20', '%22', '%27', '%3D'], [' ', "'", "'", '='], - $encodedIcon + $encodedIcon, ); } @@ -369,13 +369,13 @@ abstract class BasePlugin implements PluginInterface DocumentParsedEvent::class, static function (DocumentParsedEvent $event): void { (new ExternalLinkProcessor())->onDocumentParsed($event); - } + }, ); $environment->addEventListener( DocumentParsedEvent::class, static function (DocumentParsedEvent $event): void { (new ExternalImageProcessor())->onDocumentParsed($event); - } + }, ); $converter = new MarkdownConverter($environment); diff --git a/modules/Plugins/Core/Markdown.php b/modules/Plugins/Core/Markdown.php index 318a8562..2e6b1af7 100644 --- a/modules/Plugins/Core/Markdown.php +++ b/modules/Plugins/Core/Markdown.php @@ -16,7 +16,7 @@ use Stringable; class Markdown implements Stringable { public function __construct( - protected string $markdown + protected string $markdown, ) { } diff --git a/modules/Plugins/Core/Plugins.php b/modules/Plugins/Core/Plugins.php index 29b9eb0f..eb0a9771 100644 --- a/modules/Plugins/Core/Plugins.php +++ b/modules/Plugins/Core/Plugins.php @@ -76,7 +76,7 @@ class Plugins protected static int $activeCount = 0; public function __construct( - protected PluginsConfig $config + protected PluginsConfig $config, ) { helper('plugins'); @@ -235,7 +235,7 @@ class Plugins /** * @param ?array{'podcast'|'episode',int} $additionalContext */ - public function setOption(BasePlugin $plugin, string $name, mixed $value, array $additionalContext = null): void + public function setOption(BasePlugin $plugin, string $name, mixed $value, ?array $additionalContext = null): void { set_plugin_setting($plugin->getKey(), $name, $value, $additionalContext); } @@ -294,7 +294,7 @@ class Plugins $className = str_replace( ' ', '', - ucwords(str_replace(['-', '_', '.'], ' ', $vendor . ' ' . $package)) . 'Plugin' + ucwords(str_replace(['-', '_', '.'], ' ', $vendor . ' ' . $package)) . 'Plugin', ); $pluginFile = $pluginDirectory . DIRECTORY_SEPARATOR . 'Plugin.php'; diff --git a/modules/Plugins/Core/RSS.php b/modules/Plugins/Core/RSS.php index e7332afa..36a96fe7 100644 --- a/modules/Plugins/Core/RSS.php +++ b/modules/Plugins/Core/RSS.php @@ -12,7 +12,7 @@ use Stringable; class RSS implements Stringable { public function __construct( - protected string $rss + protected string $rss, ) { } diff --git a/modules/Plugins/Helpers/plugins_helper.php b/modules/Plugins/Helpers/plugins_helper.php index 7fa36c39..3a2c926d 100644 --- a/modules/Plugins/Helpers/plugins_helper.php +++ b/modules/Plugins/Helpers/plugins_helper.php @@ -15,7 +15,7 @@ if (! function_exists('get_plugin_setting')) { /** * @param ?array{'podcast'|'episode',int} $additionalContext */ - function get_plugin_setting(string $pluginKey, string $option, array $additionalContext = null): mixed + function get_plugin_setting(string $pluginKey, string $option, ?array $additionalContext = null): mixed { $key = sprintf('Plugins.%s', $option); $context = sprintf('plugin:%s', $pluginKey); @@ -36,7 +36,7 @@ if (! function_exists('set_plugin_setting')) { string $pluginKey, string $option, mixed $value = null, - array $additionalContext = null + ?array $additionalContext = null, ): void { $key = sprintf('Plugins.%s', $option); $context = sprintf('plugin:%s', $pluginKey); diff --git a/modules/Plugins/Manifest/ManifestObject.php b/modules/Plugins/Manifest/ManifestObject.php index a5f46113..4070d24f 100644 --- a/modules/Plugins/Manifest/ManifestObject.php +++ b/modules/Plugins/Manifest/ManifestObject.php @@ -116,7 +116,7 @@ abstract class ManifestObject foreach ($value as $valueKey => $valueElement) { if (is_subclass_of($cast[0], self::class)) { $manifestClass = $cast[0] === Field::class ? $this->getFieldClass( - $valueElement + $valueElement, ) : $cast[0]; $value[$valueKey] = new $manifestClass($this->pluginKey); $value[$valueKey]->loadData($valueElement); @@ -160,7 +160,7 @@ abstract class ManifestObject return rtrim(Field::class, "\Field") . '\\Fields\\' . str_replace( ' ', '', - ucwords(str_replace('-', ' ', $fieldType)) + ucwords(str_replace('-', ' ', $fieldType)), ); } } diff --git a/modules/Plugins/Manifest/manifest.schema.json b/modules/Plugins/Manifest/manifest.schema.json index fe474390..71c71980 100644 --- a/modules/Plugins/Manifest/manifest.schema.json +++ b/modules/Plugins/Manifest/manifest.schema.json @@ -204,7 +204,6 @@ "optional": { "type": "boolean" }, - "validationRules": { "anyOf": [ { diff --git a/modules/PodcastImport/Commands/PodcastImport.php b/modules/PodcastImport/Commands/PodcastImport.php index 3479cc06..2bd3f9e9 100644 --- a/modules/PodcastImport/Commands/PodcastImport.php +++ b/modules/PodcastImport/Commands/PodcastImport.php @@ -51,7 +51,7 @@ class PodcastImport extends BaseCommand $importQueue = get_import_tasks(); $currentImport = current( - array_filter($importQueue, static fn ($task): bool => $task->status === TaskStatus::Running) + array_filter($importQueue, static fn ($task): bool => $task->status === TaskStatus::Running), ); if ($currentImport instanceof PodcastImportTask) { @@ -104,7 +104,7 @@ class PodcastImport extends BaseCommand CLI::write('All good! Feed was parsed successfully!'); CLI::write( - 'Starting import for @' . $this->importTask->handle . ' using feed: ' . $this->importTask->feed_url + 'Starting import for @' . $this->importTask->handle . ' using feed: ' . $this->importTask->feed_url, ); // --- START IMPORT TASK --- @@ -155,7 +155,7 @@ class PodcastImport extends BaseCommand // set podcast publication date to the first ever published episode $this->podcast->published_at = $this->getOldestEpisodePublicationDate( - $this->podcast->id + $this->podcast->id, ) ?? $this->podcast->created_at; $podcastModel = new PodcastModel(); @@ -171,7 +171,7 @@ class PodcastImport extends BaseCommand $this->error($exception->getMessage()); log_message( 'critical', - 'Error when importing ' . $this->importTask?->feed_url . PHP_EOL . $exception->getMessage() . PHP_EOL . $exception->getTraceAsString() + 'Error when importing ' . $this->importTask?->feed_url . PHP_EOL . $exception->getMessage() . PHP_EOL . $exception->getTraceAsString(), ); } } @@ -213,13 +213,13 @@ class PodcastImport extends BaseCommand if (($ownerName = $this->podcastFeed->channel->itunes_owner->itunes_name->getValue()) === null) { throw new Exception( - 'Missing podcast owner name. Please include an tag inside the tag.' + 'Missing podcast owner name. Please include an tag inside the tag.', ); } if (($ownerEmail = $this->podcastFeed->channel->itunes_owner->itunes_email->getValue()) === null) { throw new Exception( - 'Missing podcast owner email. Please include an tag inside the tag.' + 'Missing podcast owner email. Please include an tag inside the tag.', ); } @@ -351,7 +351,7 @@ class PodcastImport extends BaseCommand $this->podcast->id, $newPersonId, $personGroupSlug, - $personRoleSlug + $personRoleSlug, )) { throw new Exception(print_r($podcastPersonModel->errors(), true)); } @@ -474,12 +474,12 @@ class PodcastImport extends BaseCommand 'podcast_id' => $this->podcast->id, 'title' => $item->title->getValue(), 'slug' => slugify((string) $item->title->getValue(), 120) . '-' . strtolower( - random_string('alnum', 5) + random_string('alnum', 5), ), 'guid' => $item->guid->getValue(), 'audio' => download_file( $item->enclosure->getAttribute('url'), - $item->enclosure->getAttribute('type') + $item->enclosure->getAttribute('type'), ), 'description_markdown' => $htmlConverter->convert($showNotes), 'description_html' => $showNotes, @@ -572,7 +572,7 @@ class PodcastImport extends BaseCommand $episodeId, $newPersonId, $personGroupSlug, - $personRoleSlug + $personRoleSlug, )) { throw new Exception(print_r($episodePersonModel->errors(), true)); } diff --git a/modules/PodcastImport/Config/Routes.php b/modules/PodcastImport/Config/Routes.php index ed936369..ede5be52 100644 --- a/modules/PodcastImport/Config/Routes.php +++ b/modules/PodcastImport/Config/Routes.php @@ -46,5 +46,5 @@ $routes->group( 'filter' => 'permission:podcast$1.manage-import', ]); }); - } + }, ); diff --git a/modules/PodcastImport/Helpers/podcast_import_helper.php b/modules/PodcastImport/Helpers/podcast_import_helper.php index 29a8bda0..6d086bcf 100644 --- a/modules/PodcastImport/Helpers/podcast_import_helper.php +++ b/modules/PodcastImport/Helpers/podcast_import_helper.php @@ -24,7 +24,7 @@ if (! function_exists('get_import_tasks')) { if ($podcastHandle !== null) { $podcastImportsQueue = array_filter( $podcastImportsQueue, - static fn ($importTask): bool => $importTask->handle === $podcastHandle + static fn ($importTask): bool => $importTask->handle === $podcastHandle, ); } diff --git a/modules/PremiumPodcasts/Config/Routes.php b/modules/PremiumPodcasts/Config/Routes.php index e9501417..80d19586 100644 --- a/modules/PremiumPodcasts/Config/Routes.php +++ b/modules/PremiumPodcasts/Config/Routes.php @@ -66,7 +66,7 @@ $routes->group( [ 'as' => 'subscription-regenerate-token', 'filter' => 'permission:podcast$1.manage-subscriptions', - ] + ], ); $routes->get( 'suspend', @@ -108,7 +108,7 @@ $routes->group( ); }); }); - } + }, ); $routes->group( @@ -126,5 +126,5 @@ $routes->group( $routes->get('lock', 'LockController::lockAction/$1', [ 'as' => 'premium-podcast-lock', ]); - } + }, ); diff --git a/modules/PremiumPodcasts/Config/Services.php b/modules/PremiumPodcasts/Config/Services.php index fb9ec7c0..9ca49df7 100644 --- a/modules/PremiumPodcasts/Config/Services.php +++ b/modules/PremiumPodcasts/Config/Services.php @@ -12,7 +12,7 @@ class Services extends BaseService { public static function premium_podcasts( ?SubscriptionModel $subscriptionModel = null, - bool $getShared = true + bool $getShared = true, ): PremiumPodcasts { if ($getShared) { return self::getSharedInstance('premium_podcasts', $subscriptionModel); diff --git a/modules/PremiumPodcasts/Controllers/SubscriptionController.php b/modules/PremiumPodcasts/Controllers/SubscriptionController.php index 1088a331..4a5d38a5 100644 --- a/modules/PremiumPodcasts/Controllers/SubscriptionController.php +++ b/modules/PremiumPodcasts/Controllers/SubscriptionController.php @@ -43,7 +43,7 @@ class SubscriptionController extends BaseController } if (! ($this->subscription = (new SubscriptionModel())->getSubscriptionById( - (int) $params[1] + (int) $params[1], )) instanceof Subscription) { throw PageNotFoundException::forPageNotFound(); } @@ -86,7 +86,7 @@ class SubscriptionController extends BaseController return redirect()->route('subscription-list', [$this->podcast->id])->with( 'message', - lang('Subscription.messages.linkRemoveSuccess') + lang('Subscription.messages.linkRemoveSuccess'), ); } @@ -99,7 +99,7 @@ class SubscriptionController extends BaseController return redirect()->route('subscription-list', [$this->podcast->id])->with( 'message', - lang('Subscription.messages.linkSaveSuccess') + lang('Subscription.messages.linkSaveSuccess'), ); } @@ -183,7 +183,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.addError'), $email->printDebugger([])] + [lang('Subscription.messages.addError'), $email->printDebugger([])], ); } @@ -193,7 +193,7 @@ class SubscriptionController extends BaseController 'message', lang('Subscription.messages.addSuccess', [ 'subscriber' => $newSubscription->email, - ]) + ]), ); } @@ -230,7 +230,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.regenerateTokenError'), $email->printDebugger([])] + [lang('Subscription.messages.regenerateTokenError'), $email->printDebugger([])], ); } @@ -240,7 +240,7 @@ class SubscriptionController extends BaseController 'message', lang('Subscription.messages.regenerateTokenSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } @@ -299,7 +299,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.editError'), $email->printDebugger([])] + [lang('Subscription.messages.editError'), $email->printDebugger([])], ); } @@ -309,7 +309,7 @@ class SubscriptionController extends BaseController 'message', lang('Subscription.messages.editSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } @@ -355,7 +355,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.suspendError'), $email->printDebugger([])] + [lang('Subscription.messages.suspendError'), $email->printDebugger([])], ); } @@ -365,7 +365,7 @@ class SubscriptionController extends BaseController 'messages', lang('Subscription.messages.suspendSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } @@ -395,7 +395,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.resumeError'), $email->printDebugger([])] + [lang('Subscription.messages.resumeError'), $email->printDebugger([])], ); } @@ -405,7 +405,7 @@ class SubscriptionController extends BaseController 'message', lang('Subscription.messages.resumeSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } @@ -445,7 +445,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.deleteError'), $email->printDebugger([])] + [lang('Subscription.messages.deleteError'), $email->printDebugger([])], ); } @@ -455,7 +455,7 @@ class SubscriptionController extends BaseController 'messages', lang('Subscription.messages.deleteSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } } diff --git a/modules/PremiumPodcasts/Entities/Subscription.php b/modules/PremiumPodcasts/Entities/Subscription.php index 99ead690..0de27443 100644 --- a/modules/PremiumPodcasts/Entities/Subscription.php +++ b/modules/PremiumPodcasts/Entities/Subscription.php @@ -115,7 +115,7 @@ class Subscription extends Entity { return (new AnalyticsPodcastBySubscriptionModel())->getNumberOfDownloadsLast3Months( $this->podcast_id, - $this->id + $this->id, ); } } diff --git a/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php b/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php index cb8d3f56..cc2495c2 100644 --- a/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php +++ b/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php @@ -20,7 +20,7 @@ class PodcastUnlockFilter implements FilterInterface * * @param string[]|null $arguments * - * @return RequestInterface|ResponseInterface|string|void + * @return RequestInterface|ResponseInterface|string|null */ #[Override] public function before(RequestInterface $request, $arguments = null) @@ -34,55 +34,61 @@ class PodcastUnlockFilter implements FilterInterface $routerParams = $router->params(); if ($routerParams === []) { - return; + return null; } // no need to go through the unlock form if user is connected if (auth()->loggedIn()) { - return; + return null; } // Make sure this isn't already a premium podcast route if (url_is((string) route_to('premium-podcast-unlock', $routerParams[0]))) { - return; + return null; } // expect 2 parameters (podcast handle and episode slug) if (count($routerParams) < 2) { - return; + return null; } $episode = (new EpisodeModel())->getEpisodeBySlug($routerParams[0], $routerParams[1]); if (! $episode instanceof Episode) { - return; + return null; } // Make sure that public episodes are still accessible if (! $episode->is_premium) { - return; + return null; } // Episode should be embeddable even if it is premium if (url_is((string) route_to('embed', $episode->podcast->handle, $episode->slug))) { - return; + return null; } - // if podcast is locked then send to the unlock form /** @var PremiumPodcasts $premiumPodcasts */ $premiumPodcasts = service('premium_podcasts'); - if (! $premiumPodcasts->check($routerParams[0])) { - session()->set('redirect_url', current_url()); - - return redirect()->route('premium-podcast-unlock', [$routerParams[0]]); + if ($premiumPodcasts->check($routerParams[0])) { + return null; } + + // podcast is locked, send to the unlock form + session() + ->set('redirect_url', current_url()); + + return redirect()->route('premium-podcast-unlock', [$routerParams[0]]); } /** - * @param string[]|null $arguments + * @param list|null $arguments + * + * @return ResponseInterface|null */ #[Override] - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { + return null; } } diff --git a/modules/PremiumPodcasts/PremiumPodcasts.php b/modules/PremiumPodcasts/PremiumPodcasts.php index e1469d97..036b6f05 100644 --- a/modules/PremiumPodcasts/PremiumPodcasts.php +++ b/modules/PremiumPodcasts/PremiumPodcasts.php @@ -63,7 +63,7 @@ class PremiumPodcasts { if (array_key_exists( $podcastHandle, - $this->subscriptions + $this->subscriptions, ) && ($this->subscriptions[$podcastHandle] instanceof Subscription)) { return true; } @@ -86,7 +86,7 @@ class PremiumPodcasts // Store the current subscription object $this->subscriptions[$podcastHandle] = $this->subscriptionModel->getSubscriptionById( - $this->subscriptions[$podcastHandle]->id + $this->subscriptions[$podcastHandle]->id, ); if (! $this->subscriptions[$podcastHandle] instanceof Subscription) { diff --git a/modules/WebSub/Commands/Publish.php b/modules/WebSub/Commands/Publish.php index 9ecd6bfd..4bdee5a4 100644 --- a/modules/WebSub/Commands/Publish.php +++ b/modules/WebSub/Commands/Publish.php @@ -72,7 +72,7 @@ class Publish extends BaseCommand } catch (Exception $exception) { log_message( 'warning', - "COULD NOT PUBLISH @{$podcast->handle} ON {$hub}" . PHP_EOL . $exception->getMessage() + "COULD NOT PUBLISH @{$podcast->handle} ON {$hub}" . PHP_EOL . $exception->getMessage(), ); } } diff --git a/package.json b/package.json index 091973a3..b9a95d6b 100644 --- a/package.json +++ b/package.json @@ -14,14 +14,14 @@ "build": "tsc && vite build", "serve": "vite preview", "build:static": "pnpm run build:icons && pnpm run build:svg", - "build:icons": "svgo -f app/Resources/icons -o app/Resources/icons -r --config=./.svgo.icons.cjs", - "build:svg": "svgo -f app/Resources/images -o public/assets/images -r --config=./.svgo.cjs", + "build:icons": "svgo -f resources/icons -o resources/icons -r --config=./.svgo.icons.cjs", + "build:svg": "svgo -f resources/static/images -o resources/static/images -r --config=./.svgo.cjs", "lint": "eslint", "lint:fix": "eslint --fix", - "lint:css": "stylelint -f verbose \"app/Resources/**/*.css\"", - "lint:css:fix": "stylelint -f verbose --fix \"app/Resources/**/*.css\"", + "lint:css": "stylelint -f verbose \"resources/**/*.css\"", + "lint:css:fix": "stylelint -f verbose --fix \"resources/**/*.css\"", "prettier": "prettier --check .", - "prettier:fix": "prettier --write .", + "format": "prettier --write .", "typecheck": "tsc", "all-contributors:add": "all-contributors add", "all-contributors:generate": "all-contributors generate", @@ -30,75 +30,79 @@ "prepare": "is-ci || husky" }, "dependencies": { - "@amcharts/amcharts4": "^4.10.39", + "@amcharts/amcharts4": "^4.10.40", "@amcharts/amcharts4-geodata": "^4.1.30", - "@codemirror/commands": "^6.7.1", + "@codemirror/commands": "^6.8.0", "@codemirror/lang-html": "^6.4.9", "@codemirror/lang-xml": "^6.1.0", - "@codemirror/language": "^6.10.8", - "@codemirror/state": "^6.5.0", - "@codemirror/view": "^6.36.1", - "@floating-ui/dom": "^1.6.12", + "@codemirror/language": "^6.11.0", + "@codemirror/state": "^6.5.2", + "@codemirror/view": "^6.36.4", + "@floating-ui/dom": "^1.6.13", "@github/clipboard-copy-element": "^1.3.0", "@github/hotkey": "^3.1.1", "@github/markdown-toolbar-element": "^2.2.3", - "@github/relative-time-element": "^4.4.4", + "@github/relative-time-element": "^4.4.5", "@patternfly/elements": "^4.0.2", "@vime/core": "^5.4.1", - "choices.js": "^11.0.3", + "choices.js": "^11.1.0", "codemirror": "^6.0.1", "flatpickr": "^4.6.13", - "htmlfy": "^0.5.0", + "htmlfy": "^0.6.2", "leaflet": "^1.9.4", "leaflet.markercluster": "^1.5.3", "lit": "^3.2.1", - "marked": "^15.0.4", - "wavesurfer.js": "^7.8.14", - "xml-formatter": "^3.6.3" + "marked": "^15.0.7", + "wavesurfer.js": "^7.9.1", + "xml-formatter": "^3.6.4" }, "devDependencies": { - "@commitlint/cli": "^19.6.1", - "@commitlint/config-conventional": "^19.6.0", + "@commitlint/cli": "^19.8.0", + "@commitlint/config-conventional": "^19.8.0", "@csstools/css-tokenizer": "^3.0.3", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.17.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "^9.22.0", "@semantic-release/changelog": "^6.0.3", - "@semantic-release/exec": "^6.0.3", + "@semantic-release/exec": "^7.0.3", "@semantic-release/git": "^10.0.1", - "@semantic-release/gitlab": "^13.2.3", - "@tailwindcss/forms": "^0.5.9", - "@tailwindcss/typography": "^0.5.15", - "@types/eslint__js": "^8.42.3", - "@types/leaflet": "^1.9.15", + "@semantic-release/gitlab": "^13.2.4", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.16", + "@types/leaflet": "^1.9.16", "all-contributors-cli": "^6.26.1", "commitizen": "^4.3.1", "conventional-changelog-conventionalcommits": "^8.0.0", "cross-env": "^7.0.3", "cssnano": "^7.0.6", "cz-conventional-changelog": "^3.3.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint": "^9.17.0", - "globals": "^15.14.0", + "eslint": "^9.22.0", + "eslint-config-prettier": "^10.1.1", + "eslint-plugin-prettier": "^5.2.3", + "glob": "^11.0.1", + "globals": "^16.0.0", "husky": "^9.1.7", "is-ci": "^4.1.0", - "lint-staged": "^15.3.0", + "lint-staged": "^15.5.0", + "postcss": "^8.5.3", "postcss-import": "^16.1.0", "postcss-nesting": "^13.0.1", - "postcss-preset-env": "^10.1.3", + "postcss-preset-env": "^10.1.5", "postcss-reporter": "^7.1.0", - "postcss": "^8.4.49", + "prettier": "3.5.3", "prettier-plugin-organize-imports": "^4.1.0", - "prettier": "3.4.2", - "semantic-release": "^24.2.0", - "stylelint-config-standard": "^36.0.1", - "stylelint": "^16.12.0", + "semantic-release": "^24.2.3", + "sharp": "^0.33.5", + "stylelint": "^16.15.0", + "stylelint-config-standard": "^37.0.0", "svgo": "^3.3.2", "tailwindcss": "^3.4.17", - "typescript-eslint": "^8.18.2", - "typescript": "~5.7.2", + "typescript": "~5.7.3", + "typescript-eslint": "^8.26.1", + "vite": "^6.2.2", + "vite-plugin-codeigniter": "^1.0.1", + "vite-plugin-inspect": "^11.0.0", "vite-plugin-pwa": "^0.21.1", - "vite": "^6.0.6", + "vite-plugin-static-copy": "^2.3.0", "workbox-build": "^7.3.0", "workbox-core": "^7.3.0", "workbox-routing": "^7.3.0", diff --git a/php-icons.php b/php-icons.php index 64c626a3..f3f59198 100644 --- a/php-icons.php +++ b/php-icons.php @@ -5,11 +5,11 @@ declare(strict_types=1); use PHPIcons\Config\PHPIconsConfig; return PHPIconsConfig::configure() - ->withPaths([__DIR__ . '/app', __DIR__ . '/themes']) + ->withPaths([__DIR__ . '/app', __DIR__ . '/themes', __DIR__ . '/resources']) ->withLocalIconSets([ - 'funding' => __DIR__ . '/app/Resources/icons/funding', - 'podcasting' => __DIR__ . '/app/Resources/icons/podcasting', - 'social' => __DIR__ . '/app/Resources/icons/social', + 'funding' => __DIR__ . '/resources/icons/funding', + 'podcasting' => __DIR__ . '/resources/icons/podcasting', + 'social' => __DIR__ . '/resources/icons/social', ]) ->withDefaultIconPerSet([ 'funding' => 'funding:default', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94a674fd..4f6bc67c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,14 +8,14 @@ importers: .: dependencies: "@amcharts/amcharts4": - specifier: ^4.10.39 - version: 4.10.39 + specifier: ^4.10.40 + version: 4.10.40 "@amcharts/amcharts4-geodata": specifier: ^4.1.30 version: 4.1.30 "@codemirror/commands": - specifier: ^6.7.1 - version: 6.7.1 + specifier: ^6.8.0 + version: 6.8.0 "@codemirror/lang-html": specifier: ^6.4.9 version: 6.4.9 @@ -23,17 +23,17 @@ importers: specifier: ^6.1.0 version: 6.1.0 "@codemirror/language": - specifier: ^6.10.8 - version: 6.10.8 + specifier: ^6.11.0 + version: 6.11.0 "@codemirror/state": - specifier: ^6.5.0 - version: 6.5.0 + specifier: ^6.5.2 + version: 6.5.2 "@codemirror/view": - specifier: ^6.36.1 - version: 6.36.1 + specifier: ^6.36.4 + version: 6.36.4 "@floating-ui/dom": - specifier: ^1.6.12 - version: 1.6.12 + specifier: ^1.6.13 + version: 1.6.13 "@github/clipboard-copy-element": specifier: ^1.3.0 version: 1.3.0 @@ -44,8 +44,8 @@ importers: specifier: ^2.2.3 version: 2.2.3 "@github/relative-time-element": - specifier: ^4.4.4 - version: 4.4.4 + specifier: ^4.4.5 + version: 4.4.5 "@patternfly/elements": specifier: ^4.0.2 version: 4.0.2 @@ -53,8 +53,8 @@ importers: specifier: ^5.4.1 version: 5.4.1 choices.js: - specifier: ^11.0.3 - version: 11.0.3 + specifier: ^11.1.0 + version: 11.1.0 codemirror: specifier: ^6.0.1 version: 6.0.1(@lezer/common@1.2.3) @@ -62,8 +62,8 @@ importers: specifier: ^4.6.13 version: 4.6.13 htmlfy: - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.6.2 + version: 0.6.2 leaflet: specifier: ^1.9.4 version: 1.9.4 @@ -74,60 +74,57 @@ importers: specifier: ^3.2.1 version: 3.2.1 marked: - specifier: ^15.0.4 - version: 15.0.4 + specifier: ^15.0.7 + version: 15.0.7 wavesurfer.js: - specifier: ^7.8.14 - version: 7.8.14 + specifier: ^7.9.1 + version: 7.9.1 xml-formatter: - specifier: ^3.6.3 - version: 3.6.3 + specifier: ^3.6.4 + version: 3.6.4 devDependencies: "@commitlint/cli": - specifier: ^19.6.1 - version: 19.6.1(@types/node@22.9.0)(typescript@5.7.2) + specifier: ^19.8.0 + version: 19.8.0(@types/node@22.9.0)(typescript@5.7.3) "@commitlint/config-conventional": - specifier: ^19.6.0 - version: 19.6.0 + specifier: ^19.8.0 + version: 19.8.0 "@csstools/css-tokenizer": specifier: ^3.0.3 version: 3.0.3 "@eslint/eslintrc": - specifier: ^3.2.0 - version: 3.2.0 + specifier: ^3.3.0 + version: 3.3.0 "@eslint/js": - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.22.0 + version: 9.22.0 "@semantic-release/changelog": specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.2.0(typescript@5.7.2)) + version: 6.0.3(semantic-release@24.2.3(typescript@5.7.3)) "@semantic-release/exec": - specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.2.0(typescript@5.7.2)) + specifier: ^7.0.3 + version: 7.0.3(semantic-release@24.2.3(typescript@5.7.3)) "@semantic-release/git": specifier: ^10.0.1 - version: 10.0.1(semantic-release@24.2.0(typescript@5.7.2)) + version: 10.0.1(semantic-release@24.2.3(typescript@5.7.3)) "@semantic-release/gitlab": - specifier: ^13.2.3 - version: 13.2.3(semantic-release@24.2.0(typescript@5.7.2)) + specifier: ^13.2.4 + version: 13.2.4(semantic-release@24.2.3(typescript@5.7.3)) "@tailwindcss/forms": - specifier: ^0.5.9 - version: 0.5.9(tailwindcss@3.4.17) + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@3.4.17) "@tailwindcss/typography": - specifier: ^0.5.15 - version: 0.5.15(tailwindcss@3.4.17) - "@types/eslint__js": - specifier: ^8.42.3 - version: 8.42.3 + specifier: ^0.5.16 + version: 0.5.16(tailwindcss@3.4.17) "@types/leaflet": - specifier: ^1.9.15 - version: 1.9.15 + specifier: ^1.9.16 + version: 1.9.16 all-contributors-cli: specifier: ^6.26.1 version: 6.26.1 commitizen: specifier: ^4.3.1 - version: 4.3.1(@types/node@22.9.0)(typescript@5.7.2) + version: 4.3.1(@types/node@22.9.0)(typescript@5.7.3) conventional-changelog-conventionalcommits: specifier: ^8.0.0 version: 8.0.0 @@ -136,22 +133,25 @@ importers: version: 7.0.3 cssnano: specifier: ^7.0.6 - version: 7.0.6(postcss@8.4.49) + version: 7.0.6(postcss@8.5.3) cz-conventional-changelog: specifier: ^3.3.0 - version: 3.3.0(@types/node@22.9.0)(typescript@5.7.2) + version: 3.3.0(@types/node@22.9.0)(typescript@5.7.3) eslint: - specifier: ^9.17.0 - version: 9.17.0(jiti@2.4.1) + specifier: ^9.22.0 + version: 9.22.0(jiti@2.4.1) eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@9.17.0(jiti@2.4.1)) + specifier: ^10.1.1 + version: 10.1.1(eslint@9.22.0(jiti@2.4.1)) eslint-plugin-prettier: - specifier: ^5.2.1 - version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.17.0(jiti@2.4.1)))(eslint@9.17.0(jiti@2.4.1))(prettier@3.4.2) + specifier: ^5.2.3 + version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.1)))(eslint@9.22.0(jiti@2.4.1))(prettier@3.5.3) + glob: + specifier: ^11.0.1 + version: 11.0.1 globals: - specifier: ^15.14.0 - version: 15.14.0 + specifier: ^16.0.0 + version: 16.0.0 husky: specifier: ^9.1.7 version: 9.1.7 @@ -159,38 +159,41 @@ importers: specifier: ^4.1.0 version: 4.1.0 lint-staged: - specifier: ^15.3.0 - version: 15.3.0 + specifier: ^15.5.0 + version: 15.5.0 postcss: - specifier: ^8.4.49 - version: 8.4.49 + specifier: ^8.5.3 + version: 8.5.3 postcss-import: specifier: ^16.1.0 - version: 16.1.0(postcss@8.4.49) + version: 16.1.0(postcss@8.5.3) postcss-nesting: specifier: ^13.0.1 - version: 13.0.1(postcss@8.4.49) + version: 13.0.1(postcss@8.5.3) postcss-preset-env: - specifier: ^10.1.3 - version: 10.1.3(postcss@8.4.49) + specifier: ^10.1.5 + version: 10.1.5(postcss@8.5.3) postcss-reporter: specifier: ^7.1.0 - version: 7.1.0(postcss@8.4.49) + version: 7.1.0(postcss@8.5.3) prettier: - specifier: 3.4.2 - version: 3.4.2 + specifier: 3.5.3 + version: 3.5.3 prettier-plugin-organize-imports: specifier: ^4.1.0 - version: 4.1.0(prettier@3.4.2)(typescript@5.7.2) + version: 4.1.0(prettier@3.5.3)(typescript@5.7.3) semantic-release: - specifier: ^24.2.0 - version: 24.2.0(typescript@5.7.2) + specifier: ^24.2.3 + version: 24.2.3(typescript@5.7.3) + sharp: + specifier: ^0.33.5 + version: 0.33.5 stylelint: - specifier: ^16.12.0 - version: 16.12.0(typescript@5.7.2) + specifier: ^16.15.0 + version: 16.15.0(typescript@5.7.3) stylelint-config-standard: - specifier: ^36.0.1 - version: 36.0.1(stylelint@16.12.0(typescript@5.7.2)) + specifier: ^37.0.0 + version: 37.0.0(stylelint@16.15.0(typescript@5.7.3)) svgo: specifier: ^3.3.2 version: 3.3.2 @@ -198,17 +201,26 @@ importers: specifier: ^3.4.17 version: 3.4.17 typescript: - specifier: ~5.7.2 - version: 5.7.2 + specifier: ~5.7.3 + version: 5.7.3 typescript-eslint: - specifier: ^8.18.2 - version: 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) + specifier: ^8.26.1 + version: 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) vite: - specifier: ^6.0.6 - version: 6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1) + specifier: ^6.2.2 + version: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + vite-plugin-codeigniter: + specifier: ^1.0.1 + version: 1.0.1(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + vite-plugin-inspect: + specifier: ^11.0.0 + version: 11.0.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) vite-plugin-pwa: specifier: ^0.21.1 - version: 0.21.1(vite@6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1))(workbox-build@7.3.0)(workbox-window@7.3.0) + version: 0.21.1(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0) + vite-plugin-static-copy: + specifier: ^2.3.0 + version: 2.3.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) workbox-build: specifier: ^7.3.0 version: 7.3.0 @@ -236,10 +248,10 @@ packages: integrity: sha512-dM2wOMyyivHpTI+T3RxXgcgN0cv23DzMFuG2s/0ImNZGAWn97RdCdtbVEGcaI1Bi+hbbV9n0X7onNP5bnxZ+RQ==, } - "@amcharts/amcharts4@4.10.39": + "@amcharts/amcharts4@4.10.40": resolution: { - integrity: sha512-5WbpZgI0m0Mf8Ydwlm1XWB8hIzkk6fJifzYmJqo5HLdA8jCQa+4I+8uOlGlvSMxbBTkvxanEgA2WX27+99X44w==, + integrity: sha512-F5RrlWCg/fIRvTnnXenWZg7bTlEWJDvELyvXVAAi5GFvFVF4IegIP1vk5TatkgBzYO5v+SNGj2S3N1MkLwYA8w==, } "@ampproject/remapping@2.3.0": @@ -1032,10 +1044,10 @@ packages: "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - "@codemirror/commands@6.7.1": + "@codemirror/commands@6.8.0": resolution: { - integrity: sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==, + integrity: sha512-q8VPEFaEP4ikSlt6ZxjB3zW72+7osfAYW9i8Zu943uqbKuz6utc1+F170hyLUCUltXORjQXRyYQNfkckzA/bPQ==, } "@codemirror/lang-css@6.3.1": @@ -1062,10 +1074,10 @@ packages: integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==, } - "@codemirror/language@6.10.8": + "@codemirror/language@6.11.0": resolution: { - integrity: sha512-wcP8XPPhDH2vTqf181U8MbZnW+tDyPYy0UzVOa+oHORjyT+mhhom9vBd7dApJwoDz9Nb/a8kHjJIsuA/t8vNFw==, + integrity: sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==, } "@codemirror/lint@6.8.2": @@ -1080,16 +1092,16 @@ packages: integrity: sha512-6+iLsXvITWKHYlkgHPCs/qiX4dNzn8N78YfhOFvPtPYCkuXqZq10rAfsUMhOq7O/1VjJqdXRflyExlfVcu/9VQ==, } - "@codemirror/state@6.5.0": + "@codemirror/state@6.5.2": resolution: { - integrity: sha512-MwBHVK60IiIHDcoMet78lxt6iw5gJOGSbNbOIVBHWVXIH4/Nq1+GQgLLGgI1KlnN86WDXsPudVaqYHKBIx7Eyw==, + integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==, } - "@codemirror/view@6.36.1": + "@codemirror/view@6.36.4": resolution: { - integrity: sha512-miD1nyT4m4uopZaDdO2uXU/LLHliKNYL9kB1C1wJHrunHLm/rpkb5QVSokqgw9hFqEZakrdlb/VGWX8aYZTslQ==, + integrity: sha512-ZQ0V5ovw/miKEXTvjgzRyjnrk9TwriUB1k4R5p7uNnHR9Hus+D1SXHGdJshijEzPFjU25xea/7nhIeSqYFKdbA==, } "@colors/colors@1.5.0": @@ -1099,18 +1111,18 @@ packages: } engines: { node: ">=0.1.90" } - "@commitlint/cli@19.6.1": + "@commitlint/cli@19.8.0": resolution: { - integrity: sha512-8hcyA6ZoHwWXC76BoC8qVOSr8xHy00LZhZpauiD0iO0VYbVhMnED0da85lTfIULxl7Lj4c6vZgF0Wu/ed1+jlQ==, + integrity: sha512-t/fCrLVu+Ru01h0DtlgHZXbHV2Y8gKocTR5elDOqIRUzQd0/6hpt2VIWOj9b3NDo7y4/gfxeR2zRtXq/qO6iUg==, } engines: { node: ">=v18" } hasBin: true - "@commitlint/config-conventional@19.6.0": + "@commitlint/config-conventional@19.8.0": resolution: { - integrity: sha512-DJT40iMnTYtBtUfw9ApbsLZFke1zKh6llITVJ+x9mtpHD08gsNXaIRqHTmwTZL3dNX5+WoyK7pCN/5zswvkBCQ==, + integrity: sha512-9I2kKJwcAPwMoAj38hwqFXG0CzS2Kj+SAByPUQ0SlHTfb7VUhYVmo7G2w2tBrqmOf7PFd6MpZ/a1GQJo8na8kw==, } engines: { node: ">=v18" } @@ -1121,10 +1133,17 @@ packages: } engines: { node: ">=v18" } - "@commitlint/ensure@19.5.0": + "@commitlint/config-validator@19.8.0": resolution: { - integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==, + integrity: sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA==, + } + engines: { node: ">=v18" } + + "@commitlint/ensure@19.8.0": + resolution: + { + integrity: sha512-kNiNU4/bhEQ/wutI1tp1pVW1mQ0QbAjfPRo5v8SaxoVV+ARhkB8Wjg3BSseNYECPzWWfg/WDqQGIfV1RaBFQZg==, } engines: { node: ">=v18" } @@ -1135,24 +1154,31 @@ packages: } engines: { node: ">=v18" } - "@commitlint/format@19.5.0": + "@commitlint/execute-rule@19.8.0": resolution: { - integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==, + integrity: sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A==, } engines: { node: ">=v18" } - "@commitlint/is-ignored@19.6.0": + "@commitlint/format@19.8.0": resolution: { - integrity: sha512-Ov6iBgxJQFR9koOupDPHvcHU9keFupDgtB3lObdEZDroiG4jj1rzky60fbQozFKVYRTUdrBGICHG0YVmRuAJmw==, + integrity: sha512-EOpA8IERpQstxwp/WGnDArA7S+wlZDeTeKi98WMOvaDLKbjptuHWdOYYr790iO7kTCif/z971PKPI2PkWMfOxg==, } engines: { node: ">=v18" } - "@commitlint/lint@19.6.0": + "@commitlint/is-ignored@19.8.0": resolution: { - integrity: sha512-LRo7zDkXtcIrpco9RnfhOKeg8PAnE3oDDoalnrVU/EVaKHYBWYL1DlRR7+3AWn0JiBqD8yKOfetVxJGdEtZ0tg==, + integrity: sha512-L2Jv9yUg/I+jF3zikOV0rdiHUul9X3a/oU5HIXhAJLE2+TXTnEBfqYP9G5yMw/Yb40SnR764g4fyDK6WR2xtpw==, + } + engines: { node: ">=v18" } + + "@commitlint/lint@19.8.0": + resolution: + { + integrity: sha512-+/NZKyWKSf39FeNpqhfMebmaLa1P90i1Nrb1SrA7oSU5GNN/lksA4z6+ZTnsft01YfhRZSYMbgGsARXvkr/VLQ==, } engines: { node: ">=v18" } @@ -1163,31 +1189,31 @@ packages: } engines: { node: ">=v18" } - "@commitlint/load@19.6.1": + "@commitlint/load@19.8.0": resolution: { - integrity: sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==, + integrity: sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ==, } engines: { node: ">=v18" } - "@commitlint/message@19.5.0": + "@commitlint/message@19.8.0": resolution: { - integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==, + integrity: sha512-qs/5Vi9bYjf+ZV40bvdCyBn5DvbuelhR6qewLE8Bh476F7KnNyLfdM/ETJ4cp96WgeeHo6tesA2TMXS0sh5X4A==, } engines: { node: ">=v18" } - "@commitlint/parse@19.5.0": + "@commitlint/parse@19.8.0": resolution: { - integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==, + integrity: sha512-YNIKAc4EXvNeAvyeEnzgvm1VyAe0/b3Wax7pjJSwXuhqIQ1/t2hD3OYRXb6D5/GffIvaX82RbjD+nWtMZCLL7Q==, } engines: { node: ">=v18" } - "@commitlint/read@19.5.0": + "@commitlint/read@19.8.0": resolution: { - integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==, + integrity: sha512-6ywxOGYajcxK1y1MfzrOnwsXO6nnErna88gRWEl3qqOOP8MDu/DTeRkGLXBFIZuRZ7mm5yyxU5BmeUvMpNte5w==, } engines: { node: ">=v18" } @@ -1198,24 +1224,31 @@ packages: } engines: { node: ">=v18" } - "@commitlint/rules@19.6.0": + "@commitlint/resolve-extends@19.8.0": resolution: { - integrity: sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==, + integrity: sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ==, } engines: { node: ">=v18" } - "@commitlint/to-lines@19.5.0": + "@commitlint/rules@19.8.0": resolution: { - integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==, + integrity: sha512-IZ5IE90h6DSWNuNK/cwjABLAKdy8tP8OgGVGbXe1noBEX5hSsu00uRlLu6JuruiXjWJz2dZc+YSw3H0UZyl/mA==, } engines: { node: ">=v18" } - "@commitlint/top-level@19.5.0": + "@commitlint/to-lines@19.8.0": resolution: { - integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==, + integrity: sha512-3CKLUw41Cur8VMjh16y8LcsOaKbmQjAKCWlXx6B0vOUREplp6em9uIVhI8Cv934qiwkbi2+uv+mVZPnXJi1o9A==, + } + engines: { node: ">=v18" } + + "@commitlint/top-level@19.8.0": + resolution: + { + integrity: sha512-Rphgoc/omYZisoNkcfaBRPQr4myZEHhLPx2/vTXNLjiCw4RgfPR1wEgUpJ9OOmDCiv5ZyIExhprNLhteqH4FuQ==, } engines: { node: ">=v18" } @@ -1226,6 +1259,13 @@ packages: } engines: { node: ">=v18" } + "@commitlint/types@19.8.0": + resolution: + { + integrity: sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==, + } + engines: { node: ">=v18" } + "@csstools/cascade-layer-name-parser@2.0.4": resolution: { @@ -1236,27 +1276,27 @@ packages: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - "@csstools/color-helpers@5.0.1": + "@csstools/color-helpers@5.0.2": resolution: { - integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==, + integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==, } engines: { node: ">=18" } - "@csstools/css-calc@2.1.1": + "@csstools/css-calc@2.1.2": resolution: { - integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==, + integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==, } engines: { node: ">=18" } peerDependencies: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - "@csstools/css-color-parser@3.0.7": + "@csstools/css-color-parser@3.0.8": resolution: { - integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==, + integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==, } engines: { node: ">=18" } peerDependencies: @@ -1298,19 +1338,19 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-function@4.0.7": + "@csstools/postcss-color-function@4.0.8": resolution: { - integrity: sha512-aDHYmhNIHR6iLw4ElWhf+tRqqaXwKnMl0YsQ/X105Zc4dQwe6yJpMrTN6BwOoESrkDjOYMOfORviSSLeDTJkdQ==, + integrity: sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-mix-function@3.0.7": + "@csstools/postcss-color-mix-function@3.0.8": resolution: { - integrity: sha512-e68Nev4CxZYCLcrfWhHH4u/N1YocOfTmw67/kVX5Rb7rnguqqLyxPjhHWjSBX8o4bmyuukmNf3wrUSU3//kT7g==, + integrity: sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==, } engines: { node: ">=18" } peerDependencies: @@ -1325,10 +1365,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-exponential-functions@2.0.6": + "@csstools/postcss-exponential-functions@2.0.7": resolution: { - integrity: sha512-IgJA5DQsQLu/upA3HcdvC6xEMR051ufebBTIXZ5E9/9iiaA7juXWz1ceYj814lnDYP/7eWjZnw0grRJlX4eI6g==, + integrity: sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==, } engines: { node: ">=18" } peerDependencies: @@ -1343,28 +1383,28 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-gamut-mapping@2.0.7": + "@csstools/postcss-gamut-mapping@2.0.8": resolution: { - integrity: sha512-gzFEZPoOkY0HqGdyeBXR3JP218Owr683u7KOZazTK7tQZBE8s2yhg06W1tshOqk7R7SWvw9gkw2TQogKpIW8Xw==, + integrity: sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-gradients-interpolation-method@5.0.7": + "@csstools/postcss-gradients-interpolation-method@5.0.8": resolution: { - integrity: sha512-WgEyBeg6glUeTdS2XT7qeTFBthTJuXlS9GFro/DVomj7W7WMTamAwpoP4oQCq/0Ki2gvfRYFi/uZtmRE14/DFA==, + integrity: sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-hwb-function@4.0.7": + "@csstools/postcss-hwb-function@4.0.8": resolution: { - integrity: sha512-LKYqjO+wGwDCfNIEllessCBWfR4MS/sS1WXO+j00KKyOjm7jDW2L6jzUmqASEiv/kkJO39GcoIOvTTfB3yeBUA==, + integrity: sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==, } engines: { node: ">=18" } peerDependencies: @@ -1379,10 +1419,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-initial@2.0.0": + "@csstools/postcss-initial@2.0.1": resolution: { - integrity: sha512-dv2lNUKR+JV+OOhZm9paWzYBXOCi+rJPqJ2cJuhh9xd8USVrd0cBEPczla81HNOyThMQWeCcdln3gZkQV2kYxA==, + integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==, } engines: { node: ">=18" } peerDependencies: @@ -1451,10 +1491,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-media-minmax@2.0.6": + "@csstools/postcss-media-minmax@2.0.7": resolution: { - integrity: sha512-J1+4Fr2W3pLZsfxkFazK+9kr96LhEYqoeBszLmFjb6AjYs+g9oDAw3J5oQignLKk3rC9XHW+ebPTZ9FaW5u5pg==, + integrity: sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==, } engines: { node: ">=18" } peerDependencies: @@ -1487,10 +1527,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-oklab-function@4.0.7": + "@csstools/postcss-oklab-function@4.0.8": resolution: { - integrity: sha512-I6WFQIbEKG2IO3vhaMGZDkucbCaUSXMxvHNzDdnfsTCF5tc0UlV3Oe2AhamatQoKFjBi75dSEMrgWq3+RegsOQ==, + integrity: sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==, } engines: { node: ">=18" } peerDependencies: @@ -1505,19 +1545,19 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-random-function@1.0.2": + "@csstools/postcss-random-function@1.0.3": resolution: { - integrity: sha512-vBCT6JvgdEkvRc91NFoNrLjgGtkLWt47GKT6E2UDn3nd8ZkMBiziQ1Md1OiKoSsgzxsSnGKG3RVdhlbdZEkHjA==, + integrity: sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-relative-color-syntax@3.0.7": + "@csstools/postcss-relative-color-syntax@3.0.8": resolution: { - integrity: sha512-apbT31vsJVd18MabfPOnE977xgct5B1I+Jpf+Munw3n6kKb1MMuUmGGH+PT9Hm/fFs6fe61Q/EWnkrb4bNoNQw==, + integrity: sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==, } engines: { node: ">=18" } peerDependencies: @@ -1532,37 +1572,37 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-sign-functions@1.1.1": + "@csstools/postcss-sign-functions@1.1.2": resolution: { - integrity: sha512-MslYkZCeMQDxetNkfmmQYgKCy4c+w9pPDfgOBCJOo/RI1RveEUdZQYtOfrC6cIZB7sD7/PHr2VGOcMXlZawrnA==, + integrity: sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-stepped-value-functions@4.0.6": + "@csstools/postcss-stepped-value-functions@4.0.7": resolution: { - integrity: sha512-/dwlO9w8vfKgiADxpxUbZOWlL5zKoRIsCymYoh1IPuBsXODKanKnfuZRr32DEqT0//3Av1VjfNZU9yhxtEfIeA==, + integrity: sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-text-decoration-shorthand@4.0.1": + "@csstools/postcss-text-decoration-shorthand@4.0.2": resolution: { - integrity: sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==, + integrity: sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-trigonometric-functions@4.0.6": + "@csstools/postcss-trigonometric-functions@4.0.7": resolution: { - integrity: sha512-c4Y1D2Why/PeccaSouXnTt6WcNHJkoJRidV2VW9s5gJ97cNxnLgQ4Qj8qOqkIR9VmTQKJyNcbF4hy79ZQnWD7A==, + integrity: sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==, } engines: { node: ">=18" } peerDependencies: @@ -1610,226 +1650,232 @@ packages: integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==, } - "@esbuild/aix-ppc64@0.24.2": + "@emnapi/runtime@1.3.1": resolution: { - integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==, + integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==, + } + + "@esbuild/aix-ppc64@0.25.0": + resolution: + { + integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==, } engines: { node: ">=18" } cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.24.2": + "@esbuild/android-arm64@0.25.0": resolution: { - integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==, + integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==, } engines: { node: ">=18" } cpu: [arm64] os: [android] - "@esbuild/android-arm@0.24.2": + "@esbuild/android-arm@0.25.0": resolution: { - integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==, + integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==, } engines: { node: ">=18" } cpu: [arm] os: [android] - "@esbuild/android-x64@0.24.2": + "@esbuild/android-x64@0.25.0": resolution: { - integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==, + integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==, } engines: { node: ">=18" } cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.24.2": + "@esbuild/darwin-arm64@0.25.0": resolution: { - integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==, + integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==, } engines: { node: ">=18" } cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.24.2": + "@esbuild/darwin-x64@0.25.0": resolution: { - integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==, + integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==, } engines: { node: ">=18" } cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.24.2": + "@esbuild/freebsd-arm64@0.25.0": resolution: { - integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==, + integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==, } engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.24.2": + "@esbuild/freebsd-x64@0.25.0": resolution: { - integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==, + integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==, } engines: { node: ">=18" } cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.24.2": + "@esbuild/linux-arm64@0.25.0": resolution: { - integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==, + integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==, } engines: { node: ">=18" } cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.24.2": + "@esbuild/linux-arm@0.25.0": resolution: { - integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==, + integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==, } engines: { node: ">=18" } cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.24.2": + "@esbuild/linux-ia32@0.25.0": resolution: { - integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==, + integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==, } engines: { node: ">=18" } cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.24.2": + "@esbuild/linux-loong64@0.25.0": resolution: { - integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==, + integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==, } engines: { node: ">=18" } cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.24.2": + "@esbuild/linux-mips64el@0.25.0": resolution: { - integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==, + integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==, } engines: { node: ">=18" } cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.24.2": + "@esbuild/linux-ppc64@0.25.0": resolution: { - integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==, + integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==, } engines: { node: ">=18" } cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.24.2": + "@esbuild/linux-riscv64@0.25.0": resolution: { - integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==, + integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==, } engines: { node: ">=18" } cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.24.2": + "@esbuild/linux-s390x@0.25.0": resolution: { - integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==, + integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==, } engines: { node: ">=18" } cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.24.2": + "@esbuild/linux-x64@0.25.0": resolution: { - integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==, + integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==, } engines: { node: ">=18" } cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.24.2": + "@esbuild/netbsd-arm64@0.25.0": resolution: { - integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==, + integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==, } engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.24.2": + "@esbuild/netbsd-x64@0.25.0": resolution: { - integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==, + integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==, } engines: { node: ">=18" } cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.24.2": + "@esbuild/openbsd-arm64@0.25.0": resolution: { - integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==, + integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==, } engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.24.2": + "@esbuild/openbsd-x64@0.25.0": resolution: { - integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==, + integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==, } engines: { node: ">=18" } cpu: [x64] os: [openbsd] - "@esbuild/sunos-x64@0.24.2": + "@esbuild/sunos-x64@0.25.0": resolution: { - integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==, + integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==, } engines: { node: ">=18" } cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.24.2": + "@esbuild/win32-arm64@0.25.0": resolution: { - integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==, + integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==, } engines: { node: ">=18" } cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.24.2": + "@esbuild/win32-ia32@0.25.0": resolution: { - integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==, + integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==, } engines: { node: ">=18" } cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.24.2": + "@esbuild/win32-x64@0.25.0": resolution: { - integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==, + integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==, } engines: { node: ">=18" } cpu: [x64] @@ -1851,45 +1897,52 @@ packages: } engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - "@eslint/config-array@0.19.1": + "@eslint/config-array@0.19.2": resolution: { - integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==, + integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/core@0.9.1": + "@eslint/config-helpers@0.1.0": resolution: { - integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==, + integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/eslintrc@3.2.0": + "@eslint/core@0.12.0": resolution: { - integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==, + integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/js@9.17.0": + "@eslint/eslintrc@3.3.0": resolution: { - integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==, + integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/object-schema@2.1.5": + "@eslint/js@9.22.0": resolution: { - integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==, + integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/plugin-kit@0.2.4": + "@eslint/object-schema@2.1.6": resolution: { - integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==, + integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/plugin-kit@0.2.7": + resolution: + { + integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -1899,16 +1952,16 @@ packages: integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==, } - "@floating-ui/dom@1.6.12": + "@floating-ui/dom@1.6.13": resolution: { - integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==, + integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==, } - "@floating-ui/utils@0.2.8": + "@floating-ui/utils@0.2.9": resolution: { - integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==, + integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==, } "@foliojs-fork/fontkit@1.9.2": @@ -1953,10 +2006,10 @@ packages: integrity: sha512-AlquKGee+IWiAMYVB0xyHFZRMnu4n3X4HTvJHu79GiVJ1ojTukCWyxMlF5NMsecoLcBKsuBhx3QPv2vkE/zQ0A==, } - "@github/relative-time-element@4.4.4": + "@github/relative-time-element@4.4.5": resolution: { - integrity: sha512-Oi8uOL8O+ZWLD7dHRWCkm2cudcTYtB3VyOYf9BtzCgDGm+OKomyOREtItNMtWl1dxvec62BTKErq36uy+RYxQg==, + integrity: sha512-9ejPtayBDIJfEU8x1fg/w2o5mahHkkp1SC6uObDtoKs4Gn+2a1vNK8XIiNDD8rMeEfpvDjydgSZZ+uk+7N0VsQ==, } "@humanfs/core@0.19.1": @@ -1987,13 +2040,175 @@ packages: } engines: { node: ">=18.18" } - "@humanwhocodes/retry@0.4.1": + "@humanwhocodes/retry@0.4.2": resolution: { - integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==, + integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==, } engines: { node: ">=18.18" } + "@img/sharp-darwin-arm64@0.33.5": + resolution: + { + integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [darwin] + + "@img/sharp-darwin-x64@0.33.5": + resolution: + { + integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-darwin-arm64@1.0.4": + resolution: + { + integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==, + } + cpu: [arm64] + os: [darwin] + + "@img/sharp-libvips-darwin-x64@1.0.4": + resolution: + { + integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==, + } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-linux-arm64@1.0.4": + resolution: + { + integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==, + } + cpu: [arm64] + os: [linux] + + "@img/sharp-libvips-linux-arm@1.0.5": + resolution: + { + integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==, + } + cpu: [arm] + os: [linux] + + "@img/sharp-libvips-linux-s390x@1.0.4": + resolution: + { + integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==, + } + cpu: [s390x] + os: [linux] + + "@img/sharp-libvips-linux-x64@1.0.4": + resolution: + { + integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==, + } + cpu: [x64] + os: [linux] + + "@img/sharp-libvips-linuxmusl-arm64@1.0.4": + resolution: + { + integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==, + } + cpu: [arm64] + os: [linux] + + "@img/sharp-libvips-linuxmusl-x64@1.0.4": + resolution: + { + integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==, + } + cpu: [x64] + os: [linux] + + "@img/sharp-linux-arm64@0.33.5": + resolution: + { + integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [linux] + + "@img/sharp-linux-arm@0.33.5": + resolution: + { + integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm] + os: [linux] + + "@img/sharp-linux-s390x@0.33.5": + resolution: + { + integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [s390x] + os: [linux] + + "@img/sharp-linux-x64@0.33.5": + resolution: + { + integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [linux] + + "@img/sharp-linuxmusl-arm64@0.33.5": + resolution: + { + integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [linux] + + "@img/sharp-linuxmusl-x64@0.33.5": + resolution: + { + integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [linux] + + "@img/sharp-wasm32@0.33.5": + resolution: + { + integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [wasm32] + + "@img/sharp-win32-ia32@0.33.5": + resolution: + { + integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [ia32] + os: [win32] + + "@img/sharp-win32-x64@0.33.5": + resolution: + { + integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [win32] + "@isaacs/cliui@8.0.2": resolution: { @@ -2040,6 +2255,12 @@ packages: integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, } + "@keyv/serialize@1.0.2": + resolution: + { + integrity: sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==, + } + "@lezer/common@1.2.3": resolution: { @@ -2261,6 +2482,12 @@ packages: } engines: { node: ">=12" } + "@polka/url@1.0.0-next.28": + resolution: + { + integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==, + } + "@rollup/plugin-babel@5.3.1": resolution: { @@ -2328,146 +2555,154 @@ packages: rollup: optional: true - "@rollup/rollup-android-arm-eabi@4.24.4": + "@rollup/rollup-android-arm-eabi@4.34.8": resolution: { - integrity: sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==, + integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==, } cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.24.4": + "@rollup/rollup-android-arm64@4.34.8": resolution: { - integrity: sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==, + integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==, } cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.24.4": + "@rollup/rollup-darwin-arm64@4.34.8": resolution: { - integrity: sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==, + integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==, } cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.24.4": + "@rollup/rollup-darwin-x64@4.34.8": resolution: { - integrity: sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==, + integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==, } cpu: [x64] os: [darwin] - "@rollup/rollup-freebsd-arm64@4.24.4": + "@rollup/rollup-freebsd-arm64@4.34.8": resolution: { - integrity: sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==, + integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==, } cpu: [arm64] os: [freebsd] - "@rollup/rollup-freebsd-x64@4.24.4": + "@rollup/rollup-freebsd-x64@4.34.8": resolution: { - integrity: sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==, + integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==, } cpu: [x64] os: [freebsd] - "@rollup/rollup-linux-arm-gnueabihf@4.24.4": + "@rollup/rollup-linux-arm-gnueabihf@4.34.8": resolution: { - integrity: sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==, + integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==, } cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm-musleabihf@4.24.4": + "@rollup/rollup-linux-arm-musleabihf@4.34.8": resolution: { - integrity: sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==, + integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==, } cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm64-gnu@4.24.4": + "@rollup/rollup-linux-arm64-gnu@4.34.8": resolution: { - integrity: sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==, + integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==, } cpu: [arm64] os: [linux] - "@rollup/rollup-linux-arm64-musl@4.24.4": + "@rollup/rollup-linux-arm64-musl@4.34.8": resolution: { - integrity: sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==, + integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==, } cpu: [arm64] os: [linux] - "@rollup/rollup-linux-powerpc64le-gnu@4.24.4": + "@rollup/rollup-linux-loongarch64-gnu@4.34.8": resolution: { - integrity: sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==, + integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==, + } + cpu: [loong64] + os: [linux] + + "@rollup/rollup-linux-powerpc64le-gnu@4.34.8": + resolution: + { + integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==, } cpu: [ppc64] os: [linux] - "@rollup/rollup-linux-riscv64-gnu@4.24.4": + "@rollup/rollup-linux-riscv64-gnu@4.34.8": resolution: { - integrity: sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==, + integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==, } cpu: [riscv64] os: [linux] - "@rollup/rollup-linux-s390x-gnu@4.24.4": + "@rollup/rollup-linux-s390x-gnu@4.34.8": resolution: { - integrity: sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==, + integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==, } cpu: [s390x] os: [linux] - "@rollup/rollup-linux-x64-gnu@4.24.4": + "@rollup/rollup-linux-x64-gnu@4.34.8": resolution: { - integrity: sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==, + integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==, } cpu: [x64] os: [linux] - "@rollup/rollup-linux-x64-musl@4.24.4": + "@rollup/rollup-linux-x64-musl@4.34.8": resolution: { - integrity: sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==, + integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==, } cpu: [x64] os: [linux] - "@rollup/rollup-win32-arm64-msvc@4.24.4": + "@rollup/rollup-win32-arm64-msvc@4.34.8": resolution: { - integrity: sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==, + integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==, } cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.24.4": + "@rollup/rollup-win32-ia32-msvc@4.34.8": resolution: { - integrity: sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==, + integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==, } cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.24.4": + "@rollup/rollup-win32-x64-msvc@4.34.8": resolution: { - integrity: sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==, + integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==, } cpu: [x64] os: [win32] @@ -2510,14 +2745,14 @@ packages: } engines: { node: ">=18" } - "@semantic-release/exec@6.0.3": + "@semantic-release/exec@7.0.3": resolution: { - integrity: sha512-bxAq8vLOw76aV89vxxICecEa8jfaWwYITw6X74zzlO0mc/Bgieqx9kBRz9z96pHectiTAtsCwsQcUyLYWnp3VQ==, + integrity: sha512-uNWwPNtWi3WTcTm3fWfFQEuj8otOvwoS5m9yo2jSVHuvqdZNsOWmuL0/FqcVyZnCI32fxyYV0G7PPb/TzCH6jw==, } - engines: { node: ">=14.17" } + engines: { node: ">=20.8.1" } peerDependencies: - semantic-release: ">=18.0.0" + semantic-release: ">=24.1.0" "@semantic-release/git@10.0.1": resolution: @@ -2537,10 +2772,10 @@ packages: peerDependencies: semantic-release: ">=24.1.0" - "@semantic-release/gitlab@13.2.3": + "@semantic-release/gitlab@13.2.4": resolution: { - integrity: sha512-AzH/s7r8CLDN8dnbkrXnC+Gy9NYG/qRIIKMalaqNFAorgR+goGcqMb/6vIY9aVvwaoT1bo8xr1A+eeuuL4dGEQ==, + integrity: sha512-oj9LphVriiNyrB3oV/6tMxXrtYMaoq3VKUe7gxxkZIp4KmRhFbeSsxDrEGDnTke8uTm2PKAqgsGjD9oocv7bKw==, } engines: { node: ">=20.8.1" } peerDependencies: @@ -2613,21 +2848,21 @@ packages: } engines: { node: ">=14.16" } - "@tailwindcss/forms@0.5.9": + "@tailwindcss/forms@0.5.10": resolution: { - integrity: sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==, + integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==, } peerDependencies: - tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20" + tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" - "@tailwindcss/typography@0.5.15": + "@tailwindcss/typography@0.5.16": resolution: { - integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==, + integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==, } peerDependencies: - tailwindcss: ">=3.0.0 || insiders || >=4.0.0-alpha.20" + tailwindcss: ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" "@trysound/sax@0.2.0": resolution: @@ -2648,12 +2883,6 @@ packages: integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==, } - "@types/eslint__js@8.42.3": - resolution: - { - integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==, - } - "@types/estree@0.0.39": resolution: { @@ -2690,10 +2919,10 @@ packages: integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, } - "@types/leaflet@1.9.15": + "@types/leaflet@1.9.16": resolution: { - integrity: sha512-7UuggAuAs+mva66gtf2OTB1nEhzU/9JED93TIaOEgvFMvG/dIGQaukHE7izHo1Zd+Ko1L4ETUw7TBc8yUxevpg==, + integrity: sha512-wzZoyySUxkgMZ0ihJ7IaUIblG8Rdc8AbbZKLneyn+QjYsj5q1QU7TEKYqwTr10BGSzY5LI7tJk9Ifo+mEjdFRw==, } "@types/node@22.9.0": @@ -2732,74 +2961,74 @@ packages: integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, } - "@typescript-eslint/eslint-plugin@8.18.2": + "@typescript-eslint/eslint-plugin@8.26.1": resolution: { - integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==, + integrity: sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" + typescript: ">=4.8.4 <5.9.0" - "@typescript-eslint/parser@8.18.2": + "@typescript-eslint/parser@8.26.1": resolution: { - integrity: sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==, + integrity: sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" + typescript: ">=4.8.4 <5.9.0" - "@typescript-eslint/scope-manager@8.18.2": + "@typescript-eslint/scope-manager@8.26.1": resolution: { - integrity: sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==, + integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/type-utils@8.18.2": + "@typescript-eslint/type-utils@8.26.1": resolution: { - integrity: sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==, + integrity: sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" + typescript: ">=4.8.4 <5.9.0" - "@typescript-eslint/types@8.18.2": + "@typescript-eslint/types@8.26.1": resolution: { - integrity: sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==, + integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/typescript-estree@8.18.2": + "@typescript-eslint/typescript-estree@8.26.1": resolution: { - integrity: sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==, + integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: ">=4.8.4 <5.8.0" + typescript: ">=4.8.4 <5.9.0" - "@typescript-eslint/utils@8.18.2": + "@typescript-eslint/utils@8.26.1": resolution: { - integrity: sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==, + integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" + typescript: ">=4.8.4 <5.9.0" - "@typescript-eslint/visitor-keys@8.18.2": + "@typescript-eslint/visitor-keys@8.26.1": resolution: { - integrity: sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==, + integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -2922,6 +3151,13 @@ packages: } engines: { node: ">=12" } + ansis@3.16.0: + resolution: + { + integrity: sha512-sU7d/tfZiYrsIAXbdL/CNZld5bCkruzwT5KmqmadCJYxuLxHAOBjidxD5+iLmN/6xEfjcQq1l7OpsiCBlc4LzA==, + } + engines: { node: ">=14" } + any-promise@1.3.0: resolution: { @@ -3078,6 +3314,12 @@ packages: } engines: { node: ">=8" } + birpc@2.2.0: + resolution: + { + integrity: sha512-1/22obknhoj56PcE+pZPp6AbWDdY55M81/ofpPW3Ltlp9Eh4zoFFLswvZmNpRTb790CY5tsNfgbYeNOqIARJfQ==, + } + bl@4.1.0: resolution: { @@ -3129,6 +3371,14 @@ packages: engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true + browserslist@4.24.4: + resolution: + { + integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + buffer-from@1.1.2: resolution: { @@ -3141,6 +3391,19 @@ packages: integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, } + buffer@6.0.3: + resolution: + { + integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, + } + + bundle-name@4.1.0: + resolution: + { + integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==, + } + engines: { node: ">=18" } + cacheable-lookup@7.0.0: resolution: { @@ -3155,6 +3418,12 @@ packages: } engines: { node: ">=18" } + cacheable@1.8.8: + resolution: + { + integrity: sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw==, + } + cachedir@2.3.0: resolution: { @@ -3202,6 +3471,12 @@ packages: integrity: sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==, } + caniuse-lite@1.0.30001700: + resolution: + { + integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==, + } + chalk@2.4.2: resolution: { @@ -3243,10 +3518,10 @@ packages: integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, } - choices.js@11.0.3: + choices.js@11.1.0: resolution: { - integrity: sha512-sn1oLUEcvjj7vSSIT0QyexmLIeD6PFGSWrUUXKShL2LUtVFXU3OAIY/smNIQg0OKav3yk1rFa+F56hZ/uYC4cg==, + integrity: sha512-mIt0uLhedHg2ea/K2PACrVpt391vRGHuOoctPAiHcyemezwzNMxj7jOzNEk8e7EbjLh0S0sspDkSCADOKz9kcw==, } chokidar@3.6.0: @@ -3384,6 +3659,19 @@ packages: integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } + color-string@1.9.1: + resolution: + { + integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, + } + + color@4.2.3: + resolution: + { + integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, + } + engines: { node: ">=12.5.0" } + colord@2.9.3: resolution: { @@ -3396,10 +3684,10 @@ packages: integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, } - commander@12.1.0: + commander@13.1.0: resolution: { - integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, + integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==, } engines: { node: ">=18" } @@ -3697,10 +3985,10 @@ packages: } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } - css-tree@3.0.1: + css-tree@3.1.0: resolution: { - integrity: sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==, + integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==, } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } @@ -3952,6 +4240,20 @@ packages: } engines: { node: ">=0.10.0" } + default-browser-id@5.0.0: + resolution: + { + integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==, + } + engines: { node: ">=18" } + + default-browser@5.2.1: + resolution: + { + integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==, + } + engines: { node: ">=18" } + defaults@1.0.4: resolution: { @@ -3972,6 +4274,13 @@ packages: } engines: { node: ">= 0.4" } + define-lazy-prop@3.0.0: + resolution: + { + integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, + } + engines: { node: ">=12" } + define-properties@1.2.1: resolution: { @@ -3993,6 +4302,13 @@ packages: } engines: { node: ">=8" } + detect-libc@2.0.3: + resolution: + { + integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==, + } + engines: { node: ">=8" } + dfa@1.2.0: resolution: { @@ -4070,6 +4386,12 @@ packages: engines: { node: ">=0.10.0" } hasBin: true + electron-to-chromium@1.5.104: + resolution: + { + integrity: sha512-Us9M2L4cO/zMBqVkJtnj353nQhMju9slHm62NprKTmdF3HH8wYOtNvDFq/JB2+ZRoGLzdvYDiATlMHs98XBM1g==, + } + electron-to-chromium@1.5.52: resolution: { @@ -4134,6 +4456,12 @@ packages: integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, } + error-stack-parser-es@1.0.5: + resolution: + { + integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==, + } + es-abstract@1.23.3: resolution: { @@ -4176,10 +4504,10 @@ packages: } engines: { node: ">= 0.4" } - esbuild@0.24.2: + esbuild@0.25.0: resolution: { - integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==, + integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==, } engines: { node: ">=18" } hasBin: true @@ -4212,19 +4540,19 @@ packages: } engines: { node: ">=12" } - eslint-config-prettier@9.1.0: + eslint-config-prettier@10.1.1: resolution: { - integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==, + integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==, } hasBin: true peerDependencies: eslint: ">=7.0.0" - eslint-plugin-prettier@5.2.1: + eslint-plugin-prettier@5.2.3: resolution: { - integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==, + integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==, } engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: @@ -4238,10 +4566,10 @@ packages: eslint-config-prettier: optional: true - eslint-scope@8.2.0: + eslint-scope@8.3.0: resolution: { - integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==, + integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -4259,10 +4587,10 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eslint@9.17.0: + eslint@9.22.0: resolution: { - integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==, + integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } hasBin: true @@ -4379,6 +4707,13 @@ packages: } engines: { node: ">=8.6.0" } + fast-glob@3.3.3: + resolution: + { + integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, + } + engines: { node: ">=8.6.0" } + fast-json-stable-stringify@2.1.0: resolution: { @@ -4442,6 +4777,12 @@ packages: } engines: { node: ">=18" } + file-entry-cache@10.0.6: + resolution: + { + integrity: sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==, + } + file-entry-cache@8.0.0: resolution: { @@ -4449,13 +4790,6 @@ packages: } engines: { node: ">=16.0.0" } - file-entry-cache@9.1.0: - resolution: - { - integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==, - } - engines: { node: ">=18" } - filelist@1.0.4: resolution: { @@ -4537,12 +4871,11 @@ packages: } engines: { node: ">=16" } - flat-cache@5.0.0: + flat-cache@6.1.6: resolution: { - integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==, + integrity: sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ==, } - engines: { node: ">=18" } flatpickr@4.6.13: resolution: @@ -4550,10 +4883,10 @@ packages: integrity: sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==, } - flatted@3.3.1: + flatted@3.3.2: resolution: { - integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==, + integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==, } for-each@0.3.3: @@ -4766,6 +5099,14 @@ packages: } hasBin: true + glob@11.0.1: + resolution: + { + integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==, + } + engines: { node: 20 || >=22 } + hasBin: true + glob@7.2.3: resolution: { @@ -4822,10 +5163,10 @@ packages: } engines: { node: ">=18" } - globals@15.14.0: + globals@16.0.0: resolution: { - integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==, + integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==, } engines: { node: ">=18" } @@ -4969,6 +5310,12 @@ packages: } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hookified@1.7.0: + resolution: + { + integrity: sha512-XQdMjqC1AyeOzfs+17cnIk7Wdfu1hh2JtcyNfBf5u9jHrT3iZUlGHxLTntFBuk5lwkqJ6l3+daeQdHK5yByHVA==, + } + hosted-git-info@7.0.2: resolution: { @@ -4997,10 +5344,10 @@ packages: } engines: { node: ">=8" } - htmlfy@0.5.0: + htmlfy@0.6.2: resolution: { - integrity: sha512-/g4imybF9k7eJT+VEsjtpx1i3BHYxFxv6/RS0Lf8veh1+pw0HzAEndGTdjvrlVRqUSu7YurJZkfnLXpVZ2yrEw==, + integrity: sha512-dWRE+TW3QSB5mXsnYCUPLoPmaCu2O7kp6/3xh5fayiGuaNtRL/64SdjhoTBwJ2XvuSkLoMgQDLunrAqwxJj40Q==, } http-cache-semantics@4.1.1: @@ -5092,10 +5439,10 @@ packages: } engines: { node: ">= 4" } - ignore@6.0.2: + ignore@7.0.3: resolution: { - integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==, + integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==, } engines: { node: ">= 4" } @@ -5113,6 +5460,13 @@ packages: } engines: { node: ">=16.20" } + import-from-esm@2.0.0: + resolution: + { + integrity: sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==, + } + engines: { node: ">=18.20" } + import-meta-resolve@4.1.0: resolution: { @@ -5228,6 +5582,12 @@ packages: integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, } + is-arrayish@0.3.2: + resolution: + { + integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, + } + is-bigint@1.0.4: resolution: { @@ -5283,6 +5643,14 @@ packages: } engines: { node: ">= 0.4" } + is-docker@3.0.0: + resolution: + { + integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hasBin: true + is-extglob@2.1.1: resolution: { @@ -5318,6 +5686,14 @@ packages: } engines: { node: ">=0.10.0" } + is-inside-container@1.0.0: + resolution: + { + integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, + } + engines: { node: ">=14.16" } + hasBin: true + is-interactive@1.0.0: resolution: { @@ -5483,6 +5859,13 @@ packages: } engines: { node: ">=0.10.0" } + is-wsl@3.1.0: + resolution: + { + integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==, + } + engines: { node: ">=16" } + isarray@1.0.0: resolution: { @@ -5514,6 +5897,13 @@ packages: integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, } + jackspeak@4.0.2: + resolution: + { + integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==, + } + engines: { node: 20 || >=22 } + jake@10.9.2: resolution: { @@ -5653,6 +6043,12 @@ packages: integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, } + keyv@5.2.3: + resolution: + { + integrity: sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==, + } + kind-of@6.0.3: resolution: { @@ -5714,10 +6110,10 @@ packages: integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } - lint-staged@15.3.0: + lint-staged@15.5.0: resolution: { - integrity: sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==, + integrity: sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==, } engines: { node: ">=18.12.0" } hasBin: true @@ -5942,6 +6338,13 @@ packages: integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, } + lru-cache@11.0.2: + resolution: + { + integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==, + } + engines: { node: 20 || >=22 } + lru-cache@5.1.1: resolution: { @@ -5971,10 +6374,10 @@ packages: engines: { node: ">= 18" } hasBin: true - marked@15.0.4: + marked@15.0.7: resolution: { - integrity: sha512-TCHvDqmb3ZJ4PWG7VEGVgtefA5/euFmsIhxtD0XsBxI39gUSKL81mIRFdt0AiNQozUahd4ke98ZdirExd/vSEw==, + integrity: sha512-dgLIeKGLx5FwziAnsk4ONoGwHwGPJzselimvlVskE9XLN4Orv9u2VA3GWw/lYUqjfA0rUT/6fqKwfZJapP9BEg==, } engines: { node: ">= 18" } hasBin: true @@ -5997,10 +6400,10 @@ packages: integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, } - mdn-data@2.12.1: + mdn-data@2.12.2: resolution: { - integrity: sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==, + integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==, } meow@12.1.1: @@ -6093,6 +6496,13 @@ packages: } hasBin: true + minimatch@10.0.1: + resolution: + { + integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==, + } + engines: { node: 20 || >=22 } + minimatch@3.1.2: resolution: { @@ -6138,6 +6548,13 @@ packages: integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==, } + mrmime@2.0.0: + resolution: + { + integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==, + } + engines: { node: ">=10" } + ms@2.1.3: resolution: { @@ -6156,10 +6573,10 @@ packages: integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, } - nanoid@3.3.7: + nanoid@3.3.8: resolution: { - integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, + integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==, } engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true @@ -6207,6 +6624,12 @@ packages: integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==, } + node-releases@2.0.19: + resolution: + { + integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, + } + normalize-package-data@6.0.2: resolution: { @@ -6381,6 +6804,12 @@ packages: } engines: { node: ">= 0.4" } + ohash@2.0.4: + resolution: + { + integrity: sha512-ac+SFwzhdHb0hp48/dbR7Jta39qfbuj7t3hApd9uyHS8bisHTfVzSEvjOVgV0L3zG7VR2/7JjkSGimP75D+hOQ==, + } + once@1.4.0: resolution: { @@ -6408,6 +6837,13 @@ packages: } engines: { node: ">=18" } + open@10.1.0: + resolution: + { + integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==, + } + engines: { node: ">=18" } + optionator@0.9.4: resolution: { @@ -6520,6 +6956,13 @@ packages: } engines: { node: ">=18" } + p-map@7.0.3: + resolution: + { + integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==, + } + engines: { node: ">=18" } + p-reduce@2.1.0: resolution: { @@ -6688,6 +7131,13 @@ packages: } engines: { node: ">=16 || 14 >=14.18" } + path-scurry@2.0.0: + resolution: + { + integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==, + } + engines: { node: 20 || >=22 } + path-type@4.0.0: resolution: { @@ -6702,6 +7152,12 @@ packages: } engines: { node: ">=12" } + pathe@2.0.3: + resolution: + { + integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, + } + pdfmake@0.2.15: resolution: { @@ -6717,6 +7173,12 @@ packages: engines: { node: ">=0.10" } hasBin: true + perfect-debounce@1.0.0: + resolution: + { + integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==, + } + performance-now@2.1.0: resolution: { @@ -6832,10 +7294,10 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.7: + postcss-color-functional-notation@7.0.8: resolution: { - integrity: sha512-EZvAHsvyASX63vXnyXOIynkxhaHRSsdb7z6yiXKIovGXAolW4cMZ3qoh7k3VdTsLBS6VGdksGfIo3r6+waLoOw==, + integrity: sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==, } engines: { node: ">=18" } peerDependencies: @@ -7029,10 +7491,10 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-lab-function@7.0.7: + postcss-lab-function@7.0.8: resolution: { - integrity: sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig==, + integrity: sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==, } engines: { node: ">=18" } peerDependencies: @@ -7053,10 +7515,10 @@ packages: ts-node: optional: true - postcss-logical@8.0.0: + postcss-logical@8.1.0: resolution: { - integrity: sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg==, + integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==, } engines: { node: ">=18" } peerDependencies: @@ -7259,10 +7721,10 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.1.3: + postcss-preset-env@10.1.5: resolution: { - integrity: sha512-9qzVhcMFU/MnwYHyYpJz4JhGku/4+xEiPTmhn0hj3IxnUYlEF9vbh7OC1KoLAnenS6Fgg43TKNp9xcuMeAi4Zw==, + integrity: sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==, } engines: { node: ">=18" } peerDependencies: @@ -7357,6 +7819,13 @@ packages: } engines: { node: ">=4" } + postcss-selector-parser@7.1.0: + resolution: + { + integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==, + } + engines: { node: ">=4" } + postcss-svgo@7.0.1: resolution: { @@ -7381,10 +7850,10 @@ packages: integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, } - postcss@8.4.49: + postcss@8.5.3: resolution: { - integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==, + integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==, } engines: { node: ^10 || ^12 || >=14 } @@ -7423,10 +7892,10 @@ packages: engines: { node: ">=10.13.0" } hasBin: true - prettier@3.4.2: + prettier@3.5.3: resolution: { - integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==, + integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==, } engines: { node: ">=14" } hasBin: true @@ -7717,14 +8186,21 @@ packages: engines: { node: ">=10.0.0" } hasBin: true - rollup@4.24.4: + rollup@4.34.8: resolution: { - integrity: sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==, + integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==, } engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true + run-applescript@7.0.0: + resolution: + { + integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==, + } + engines: { node: ">=18" } + run-async@2.4.1: resolution: { @@ -7789,10 +8265,10 @@ packages: integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, } - semantic-release@24.2.0: + semantic-release@24.2.3: resolution: { - integrity: sha512-fQfn6e/aYToRtVJYKqneFM1Rg3KP2gh3wSWtpYsLlz6uaPKlISrTzvYAFn+mYWo07F0X1Cz5ucU89AVE8X1mbg==, + integrity: sha512-KRhQG9cUazPavJiJEFIJ3XAMjgfd0fcK3B+T26qOl8L0UG5aZUjeRfREO0KM5InGtYwxqiiytkJrbcYoLDEv0A==, } engines: { node: ">=20.8.1" } hasBin: true @@ -7852,6 +8328,13 @@ packages: } engines: { node: ">= 0.4" } + sharp@0.33.5: + resolution: + { + integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + shebang-command@2.0.0: resolution: { @@ -7893,6 +8376,19 @@ packages: } engines: { node: ">=6" } + simple-swizzle@0.2.2: + resolution: + { + integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, + } + + sirv@3.0.1: + resolution: + { + integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==, + } + engines: { node: ">=18" } + skin-tone@2.0.0: resolution: { @@ -8196,28 +8692,28 @@ packages: peerDependencies: postcss: ^8.4.31 - stylelint-config-recommended@14.0.1: + stylelint-config-recommended@15.0.0: resolution: { - integrity: sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==, + integrity: sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==, } engines: { node: ">=18.12.0" } peerDependencies: - stylelint: ^16.1.0 + stylelint: ^16.13.0 - stylelint-config-standard@36.0.1: + stylelint-config-standard@37.0.0: resolution: { - integrity: sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==, + integrity: sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==, } engines: { node: ">=18.12.0" } peerDependencies: - stylelint: ^16.1.0 + stylelint: ^16.13.0 - stylelint@16.12.0: + stylelint@16.15.0: resolution: { - integrity: sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==, + integrity: sha512-OK6Rs7EPdcdmjqiDycadZY4fw3f5/TC1X6/tGjnF3OosbwCeNs7nG+79MCAtjEg7ckwqTJTsku08e0Rmaz5nUw==, } engines: { node: ">=18.12.0" } hasBin: true @@ -8258,6 +8754,13 @@ packages: } engines: { node: ">=14.18" } + supports-hyperlinks@3.2.0: + resolution: + { + integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==, + } + engines: { node: ">=14.18" } + supports-preserve-symlinks-flag@1.0.0: resolution: { @@ -8421,6 +8924,13 @@ packages: } engines: { node: ">=8.0" } + totalist@3.0.1: + resolution: + { + integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, + } + engines: { node: ">=6" } + tr46@0.0.3: resolution: { @@ -8440,14 +8950,14 @@ packages: } engines: { node: ">= 0.4" } - ts-api-utils@1.4.0: + ts-api-utils@2.0.1: resolution: { - integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==, + integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==, } - engines: { node: ">=16" } + engines: { node: ">=18.12" } peerDependencies: - typescript: ">=4.2.0" + typescript: ">=4.8.4" ts-interface-checker@0.1.13: resolution: @@ -8537,20 +9047,20 @@ packages: } engines: { node: ">= 0.4" } - typescript-eslint@8.18.2: + typescript-eslint@8.26.1: resolution: { - integrity: sha512-KuXezG6jHkvC3MvizeXgupZzaG5wjhU3yE8E7e6viOvAvD9xAWYp8/vy0WULTGe9DYDWcQu7aW03YIV3mSitrQ==, + integrity: sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" + typescript: ">=4.8.4 <5.9.0" - typescript@5.7.2: + typescript@5.7.3: resolution: { - integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==, + integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==, } engines: { node: ">=14.17" } hasBin: true @@ -8663,6 +9173,13 @@ packages: } engines: { node: ">= 10.0.0" } + unplugin-utils@0.2.4: + resolution: + { + integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==, + } + engines: { node: ">=18.12.0" } + upath@1.2.0: resolution: { @@ -8710,6 +9227,43 @@ packages: integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, } + vite-dev-rpc@1.0.7: + resolution: + { + integrity: sha512-FxSTEofDbUi2XXujCA+hdzCDkXFG1PXktMjSk1efq9Qb5lOYaaM9zNSvKvPPF7645Bak79kSp1PTooMW2wktcA==, + } + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 + + vite-hot-client@2.0.4: + resolution: + { + integrity: sha512-W9LOGAyGMrbGArYJN4LBCdOC5+Zwh7dHvOHC0KmGKkJhsOzaKbpo/jEjpPKVHIW0/jBWj8RZG0NUxfgA8BxgAg==, + } + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + + vite-plugin-codeigniter@1.0.1: + resolution: + { + integrity: sha512-VXrzMeMKiqluyMKVALjaw0IK8TaIWwAdOIt6H2vU0QSnG7HI8NnHYcKSh3Zbb5/arwK5Op4JitbEVU6KzllPgQ==, + } + peerDependencies: + vite: ^6.0.0 + + vite-plugin-inspect@11.0.0: + resolution: + { + integrity: sha512-Q0RDNcMs1mbI2yGRwOzSapnnA6NFO0j88+Vb8pJX0iYMw34WczwKJi3JgheItDhbWRq/CLUR0cs+ajZpcUaIFQ==, + } + engines: { node: ">=14" } + peerDependencies: + "@nuxt/kit": "*" + vite: ^6.0.0 + peerDependenciesMeta: + "@nuxt/kit": + optional: true + vite-plugin-pwa@0.21.1: resolution: { @@ -8725,10 +9279,19 @@ packages: "@vite-pwa/assets-generator": optional: true - vite@6.0.6: + vite-plugin-static-copy@2.3.0: resolution: { - integrity: sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==, + integrity: sha512-LLKwhhHetGaCnWz4mas4qqjjguDka6/6b4+SeIohRroj8aCE7QTfiZECfPecslFQkWZ3HdQuq5kOPmWZjNYlKA==, + } + engines: { node: ^18.0.0 || >=20.0.0 } + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + + vite@6.2.2: + resolution: + { + integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==, } engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } hasBin: true @@ -8774,10 +9337,10 @@ packages: integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, } - wavesurfer.js@7.8.14: + wavesurfer.js@7.9.1: resolution: { - integrity: sha512-VwljnCf97GxpA/I6gKWVriBvGYEcwAsOCaLb3vauPE4Jm6rIl1C9zVZ2S0a9CCLjVzeG0UukHZxXSblQV8dReA==, + integrity: sha512-+pG8X9c9BrfAW8KR54OPzZcAj/57sOL08He/tc6/7Mt6NCX3IfDFwexQxXVTILggGZUOUk7tFKfny32yGrysKA==, } wcwidth@1.0.1: @@ -8995,10 +9558,10 @@ packages: } engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - xml-formatter@3.6.3: + xml-formatter@3.6.4: resolution: { - integrity: sha512-++x1TlRO1FRlQ82AZ4WnoCSufaI/PT/sycn4K8nRl4gnrNC1uYY2VV/67aALZ2m0Q4Q/BLj/L69K360Itw9NNg==, + integrity: sha512-vkvTNw4u9mp72lMmJHw771NE9EJLX0kfwIcP+ZEo9eJ6HmotX23vmykyROyIQ9Y3a+ckdUdhxIE2ZO66rYuPrg==, } engines: { node: ">= 16" } @@ -9041,10 +9604,10 @@ packages: integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, } - yaml@2.6.1: + yaml@2.7.0: resolution: { - integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==, + integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==, } engines: { node: ">= 14" } hasBin: true @@ -9112,12 +9675,18 @@ packages: } engines: { node: ">=18" } + zod@3.24.2: + resolution: + { + integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==, + } + snapshots: "@alloc/quick-lru@5.2.0": {} "@amcharts/amcharts4-geodata@4.1.30": {} - "@amcharts/amcharts4@4.10.39": + "@amcharts/amcharts4@4.10.40": dependencies: "@babel/runtime": 7.26.0 core-js: 3.39.0 @@ -9167,7 +9736,7 @@ snapshots: "@babel/traverse": 7.25.9 "@babel/types": 7.26.0 convert-source-map: 2.0.0 - debug: 4.3.7 + debug: 4.4.0 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -9226,7 +9795,7 @@ snapshots: "@babel/core": 7.26.0 "@babel/helper-compilation-targets": 7.25.9 "@babel/helper-plugin-utils": 7.25.9 - debug: 4.3.7 + debug: 4.4.0 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -9793,7 +10362,7 @@ snapshots: "@babel/parser": 7.26.2 "@babel/template": 7.25.9 "@babel/types": 7.26.0 - debug: 4.3.7 + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -9803,25 +10372,25 @@ snapshots: "@babel/helper-string-parser": 7.25.9 "@babel/helper-validator-identifier": 7.25.9 - "@codemirror/autocomplete@6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3)": + "@codemirror/autocomplete@6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3)": dependencies: - "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/language": 6.11.0 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.4 "@lezer/common": 1.2.3 - "@codemirror/commands@6.7.1": + "@codemirror/commands@6.8.0": dependencies: - "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/language": 6.11.0 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.4 "@lezer/common": 1.2.3 - "@codemirror/lang-css@6.3.1(@codemirror/view@6.36.1)": + "@codemirror/lang-css@6.3.1(@codemirror/view@6.36.4)": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) - "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) + "@codemirror/language": 6.11.0 + "@codemirror/state": 6.5.2 "@lezer/common": 1.2.3 "@lezer/css": 1.1.9 transitivePeerDependencies: @@ -9829,39 +10398,39 @@ snapshots: "@codemirror/lang-html@6.4.9": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) - "@codemirror/lang-css": 6.3.1(@codemirror/view@6.36.1) + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) + "@codemirror/lang-css": 6.3.1(@codemirror/view@6.36.4) "@codemirror/lang-javascript": 6.2.2 - "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/language": 6.11.0 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.4 "@lezer/common": 1.2.3 "@lezer/css": 1.1.9 "@lezer/html": 1.3.10 "@codemirror/lang-javascript@6.2.2": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) - "@codemirror/language": 6.10.8 + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) + "@codemirror/language": 6.11.0 "@codemirror/lint": 6.8.2 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.4 "@lezer/common": 1.2.3 "@lezer/javascript": 1.4.21 "@codemirror/lang-xml@6.1.0": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) - "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) + "@codemirror/language": 6.11.0 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.4 "@lezer/common": 1.2.3 "@lezer/xml": 1.0.5 - "@codemirror/language@6.10.8": + "@codemirror/language@6.11.0": dependencies: - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.4 "@lezer/common": 1.2.3 "@lezer/highlight": 1.2.1 "@lezer/lr": 1.4.2 @@ -9869,89 +10438,98 @@ snapshots: "@codemirror/lint@6.8.2": dependencies: - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.4 crelt: 1.0.6 "@codemirror/search@6.5.7": dependencies: - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.4 crelt: 1.0.6 - "@codemirror/state@6.5.0": + "@codemirror/state@6.5.2": dependencies: "@marijn/find-cluster-break": 1.0.2 - "@codemirror/view@6.36.1": + "@codemirror/view@6.36.4": dependencies: - "@codemirror/state": 6.5.0 + "@codemirror/state": 6.5.2 style-mod: 4.1.2 w3c-keyname: 2.2.8 "@colors/colors@1.5.0": optional: true - "@commitlint/cli@19.6.1(@types/node@22.9.0)(typescript@5.7.2)": + "@commitlint/cli@19.8.0(@types/node@22.9.0)(typescript@5.7.3)": dependencies: - "@commitlint/format": 19.5.0 - "@commitlint/lint": 19.6.0 - "@commitlint/load": 19.6.1(@types/node@22.9.0)(typescript@5.7.2) - "@commitlint/read": 19.5.0 - "@commitlint/types": 19.5.0 + "@commitlint/format": 19.8.0 + "@commitlint/lint": 19.8.0 + "@commitlint/load": 19.8.0(@types/node@22.9.0)(typescript@5.7.3) + "@commitlint/read": 19.8.0 + "@commitlint/types": 19.8.0 tinyexec: 0.3.1 yargs: 17.7.2 transitivePeerDependencies: - "@types/node" - typescript - "@commitlint/config-conventional@19.6.0": + "@commitlint/config-conventional@19.8.0": dependencies: - "@commitlint/types": 19.5.0 + "@commitlint/types": 19.8.0 conventional-changelog-conventionalcommits: 7.0.2 "@commitlint/config-validator@19.5.0": dependencies: "@commitlint/types": 19.5.0 ajv: 8.17.1 + optional: true - "@commitlint/ensure@19.5.0": + "@commitlint/config-validator@19.8.0": dependencies: - "@commitlint/types": 19.5.0 + "@commitlint/types": 19.8.0 + ajv: 8.17.1 + + "@commitlint/ensure@19.8.0": + dependencies: + "@commitlint/types": 19.8.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 lodash.startcase: 4.4.0 lodash.upperfirst: 4.3.1 - "@commitlint/execute-rule@19.5.0": {} + "@commitlint/execute-rule@19.5.0": + optional: true - "@commitlint/format@19.5.0": - dependencies: - "@commitlint/types": 19.5.0 - chalk: 5.3.0 + "@commitlint/execute-rule@19.8.0": {} - "@commitlint/is-ignored@19.6.0": + "@commitlint/format@19.8.0": dependencies: - "@commitlint/types": 19.5.0 + "@commitlint/types": 19.8.0 + chalk: 5.4.1 + + "@commitlint/is-ignored@19.8.0": + dependencies: + "@commitlint/types": 19.8.0 semver: 7.6.3 - "@commitlint/lint@19.6.0": + "@commitlint/lint@19.8.0": dependencies: - "@commitlint/is-ignored": 19.6.0 - "@commitlint/parse": 19.5.0 - "@commitlint/rules": 19.6.0 - "@commitlint/types": 19.5.0 + "@commitlint/is-ignored": 19.8.0 + "@commitlint/parse": 19.8.0 + "@commitlint/rules": 19.8.0 + "@commitlint/types": 19.8.0 - "@commitlint/load@19.5.0(@types/node@22.9.0)(typescript@5.7.2)": + "@commitlint/load@19.5.0(@types/node@22.9.0)(typescript@5.7.3)": dependencies: "@commitlint/config-validator": 19.5.0 "@commitlint/execute-rule": 19.5.0 "@commitlint/resolve-extends": 19.5.0 "@commitlint/types": 19.5.0 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.7.2) - cosmiconfig-typescript-loader: 5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) + cosmiconfig-typescript-loader: 5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -9960,15 +10538,15 @@ snapshots: - typescript optional: true - "@commitlint/load@19.6.1(@types/node@22.9.0)(typescript@5.7.2)": + "@commitlint/load@19.8.0(@types/node@22.9.0)(typescript@5.7.3)": dependencies: - "@commitlint/config-validator": 19.5.0 - "@commitlint/execute-rule": 19.5.0 - "@commitlint/resolve-extends": 19.5.0 - "@commitlint/types": 19.5.0 - chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.7.2) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2) + "@commitlint/config-validator": 19.8.0 + "@commitlint/execute-rule": 19.8.0 + "@commitlint/resolve-extends": 19.8.0 + "@commitlint/types": 19.8.0 + chalk: 5.4.1 + cosmiconfig: 9.0.0(typescript@5.7.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -9976,18 +10554,18 @@ snapshots: - "@types/node" - typescript - "@commitlint/message@19.5.0": {} + "@commitlint/message@19.8.0": {} - "@commitlint/parse@19.5.0": + "@commitlint/parse@19.8.0": dependencies: - "@commitlint/types": 19.5.0 + "@commitlint/types": 19.8.0 conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 - "@commitlint/read@19.5.0": + "@commitlint/read@19.8.0": dependencies: - "@commitlint/top-level": 19.5.0 - "@commitlint/types": 19.5.0 + "@commitlint/top-level": 19.8.0 + "@commitlint/types": 19.8.0 git-raw-commits: 4.0.0 minimist: 1.2.8 tinyexec: 0.3.1 @@ -10000,41 +10578,57 @@ snapshots: import-meta-resolve: 4.1.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 + optional: true - "@commitlint/rules@19.6.0": + "@commitlint/resolve-extends@19.8.0": dependencies: - "@commitlint/ensure": 19.5.0 - "@commitlint/message": 19.5.0 - "@commitlint/to-lines": 19.5.0 - "@commitlint/types": 19.5.0 + "@commitlint/config-validator": 19.8.0 + "@commitlint/types": 19.8.0 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 - "@commitlint/to-lines@19.5.0": {} + "@commitlint/rules@19.8.0": + dependencies: + "@commitlint/ensure": 19.8.0 + "@commitlint/message": 19.8.0 + "@commitlint/to-lines": 19.8.0 + "@commitlint/types": 19.8.0 - "@commitlint/top-level@19.5.0": + "@commitlint/to-lines@19.8.0": {} + + "@commitlint/top-level@19.8.0": dependencies: find-up: 7.0.0 "@commitlint/types@19.5.0": dependencies: "@types/conventional-commits-parser": 5.0.0 - chalk: 5.3.0 + chalk: 5.4.1 + optional: true + + "@commitlint/types@19.8.0": + dependencies: + "@types/conventional-commits-parser": 5.0.0 + chalk: 5.4.1 "@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/color-helpers@5.0.1": {} + "@csstools/color-helpers@5.0.2": {} - "@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": dependencies: - "@csstools/color-helpers": 5.0.1 - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/color-helpers": 5.0.2 + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 @@ -10049,215 +10643,215 @@ snapshots: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-cascade-layers@5.0.1(postcss@8.4.49)": + "@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.3)": dependencies: "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - "@csstools/postcss-color-function@4.0.7(postcss@8.4.49)": + "@csstools/postcss-color-function@4.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-color-mix-function@3.0.7(postcss@8.4.49)": + "@csstools/postcss-color-mix-function@3.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-content-alt-text@2.0.4(postcss@8.4.49)": + "@csstools/postcss-content-alt-text@2.0.4(postcss@8.5.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-exponential-functions@2.0.6(postcss@8.4.49)": + "@csstools/postcss-exponential-functions@2.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-font-format-keywords@4.0.0(postcss@8.4.49)": + "@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.3)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-gamut-mapping@2.0.7(postcss@8.4.49)": + "@csstools/postcss-gamut-mapping@2.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-gradients-interpolation-method@5.0.7(postcss@8.4.49)": + "@csstools/postcss-gradients-interpolation-method@5.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-hwb-function@4.0.7(postcss@8.4.49)": + "@csstools/postcss-hwb-function@4.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-ic-unit@4.0.0(postcss@8.4.49)": + "@csstools/postcss-ic-unit@4.0.0(postcss@8.5.3)": dependencies: - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-initial@2.0.0(postcss@8.4.49)": + "@csstools/postcss-initial@2.0.1(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.4.49)": + "@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.3)": dependencies: "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - "@csstools/postcss-light-dark-function@2.0.7(postcss@8.4.49)": + "@csstools/postcss-light-dark-function@2.0.7(postcss@8.5.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-logical-overflow@2.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-logical-resize@3.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-resize@3.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.4.49)": + "@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.3)": dependencies: "@csstools/css-tokenizer": 3.0.3 - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-media-minmax@2.0.6(postcss@8.4.49)": + "@csstools/postcss-media-minmax@2.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.4.49)": + "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-nested-calc@4.0.0(postcss@8.4.49)": + "@csstools/postcss-nested-calc@4.0.0(postcss@8.5.3)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-normalize-display-values@4.0.0(postcss@8.4.49)": + "@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-oklab-function@4.0.7(postcss@8.4.49)": + "@csstools/postcss-oklab-function@4.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.4.49)": + "@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-random-function@1.0.2(postcss@8.4.49)": + "@csstools/postcss-random-function@1.0.3(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-relative-color-syntax@3.0.7(postcss@8.4.49)": + "@csstools/postcss-relative-color-syntax@3.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.4.49)": + "@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - "@csstools/postcss-sign-functions@1.1.1(postcss@8.4.49)": + "@csstools/postcss-sign-functions@1.1.2(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-stepped-value-functions@4.0.6(postcss@8.4.49)": + "@csstools/postcss-stepped-value-functions@4.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-text-decoration-shorthand@4.0.1(postcss@8.4.49)": + "@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.3)": dependencies: - "@csstools/color-helpers": 5.0.1 - postcss: 8.4.49 + "@csstools/color-helpers": 5.0.2 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-trigonometric-functions@4.0.6(postcss@8.4.49)": + "@csstools/postcss-trigonometric-functions@4.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-unset-value@4.0.0(postcss@8.4.49)": + "@csstools/postcss-unset-value@4.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 "@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.0.0)": dependencies: @@ -10267,110 +10861,121 @@ snapshots: dependencies: postcss-selector-parser: 7.0.0 - "@csstools/utilities@2.0.0(postcss@8.4.49)": + "@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)": dependencies: - postcss: 8.4.49 + postcss-selector-parser: 7.1.0 + + "@csstools/utilities@2.0.0(postcss@8.5.3)": + dependencies: + postcss: 8.5.3 "@dual-bundle/import-meta-resolve@4.1.0": {} - "@esbuild/aix-ppc64@0.24.2": - optional: true - - "@esbuild/android-arm64@0.24.2": - optional: true - - "@esbuild/android-arm@0.24.2": - optional: true - - "@esbuild/android-x64@0.24.2": - optional: true - - "@esbuild/darwin-arm64@0.24.2": - optional: true - - "@esbuild/darwin-x64@0.24.2": - optional: true - - "@esbuild/freebsd-arm64@0.24.2": - optional: true - - "@esbuild/freebsd-x64@0.24.2": - optional: true - - "@esbuild/linux-arm64@0.24.2": - optional: true - - "@esbuild/linux-arm@0.24.2": - optional: true - - "@esbuild/linux-ia32@0.24.2": - optional: true - - "@esbuild/linux-loong64@0.24.2": - optional: true - - "@esbuild/linux-mips64el@0.24.2": - optional: true - - "@esbuild/linux-ppc64@0.24.2": - optional: true - - "@esbuild/linux-riscv64@0.24.2": - optional: true - - "@esbuild/linux-s390x@0.24.2": - optional: true - - "@esbuild/linux-x64@0.24.2": - optional: true - - "@esbuild/netbsd-arm64@0.24.2": - optional: true - - "@esbuild/netbsd-x64@0.24.2": - optional: true - - "@esbuild/openbsd-arm64@0.24.2": - optional: true - - "@esbuild/openbsd-x64@0.24.2": - optional: true - - "@esbuild/sunos-x64@0.24.2": - optional: true - - "@esbuild/win32-arm64@0.24.2": - optional: true - - "@esbuild/win32-ia32@0.24.2": - optional: true - - "@esbuild/win32-x64@0.24.2": - optional: true - - "@eslint-community/eslint-utils@4.4.1(eslint@9.17.0(jiti@2.4.1))": + "@emnapi/runtime@1.3.1": dependencies: - eslint: 9.17.0(jiti@2.4.1) + tslib: 2.8.1 + optional: true + + "@esbuild/aix-ppc64@0.25.0": + optional: true + + "@esbuild/android-arm64@0.25.0": + optional: true + + "@esbuild/android-arm@0.25.0": + optional: true + + "@esbuild/android-x64@0.25.0": + optional: true + + "@esbuild/darwin-arm64@0.25.0": + optional: true + + "@esbuild/darwin-x64@0.25.0": + optional: true + + "@esbuild/freebsd-arm64@0.25.0": + optional: true + + "@esbuild/freebsd-x64@0.25.0": + optional: true + + "@esbuild/linux-arm64@0.25.0": + optional: true + + "@esbuild/linux-arm@0.25.0": + optional: true + + "@esbuild/linux-ia32@0.25.0": + optional: true + + "@esbuild/linux-loong64@0.25.0": + optional: true + + "@esbuild/linux-mips64el@0.25.0": + optional: true + + "@esbuild/linux-ppc64@0.25.0": + optional: true + + "@esbuild/linux-riscv64@0.25.0": + optional: true + + "@esbuild/linux-s390x@0.25.0": + optional: true + + "@esbuild/linux-x64@0.25.0": + optional: true + + "@esbuild/netbsd-arm64@0.25.0": + optional: true + + "@esbuild/netbsd-x64@0.25.0": + optional: true + + "@esbuild/openbsd-arm64@0.25.0": + optional: true + + "@esbuild/openbsd-x64@0.25.0": + optional: true + + "@esbuild/sunos-x64@0.25.0": + optional: true + + "@esbuild/win32-arm64@0.25.0": + optional: true + + "@esbuild/win32-ia32@0.25.0": + optional: true + + "@esbuild/win32-x64@0.25.0": + optional: true + + "@eslint-community/eslint-utils@4.4.1(eslint@9.22.0(jiti@2.4.1))": + dependencies: + eslint: 9.22.0(jiti@2.4.1) eslint-visitor-keys: 3.4.3 "@eslint-community/regexpp@4.12.1": {} - "@eslint/config-array@0.19.1": + "@eslint/config-array@0.19.2": dependencies: - "@eslint/object-schema": 2.1.5 - debug: 4.3.7 + "@eslint/object-schema": 2.1.6 + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - "@eslint/core@0.9.1": + "@eslint/config-helpers@0.1.0": {} + + "@eslint/core@0.12.0": dependencies: "@types/json-schema": 7.0.15 - "@eslint/eslintrc@3.2.0": + "@eslint/eslintrc@3.3.0": dependencies: ajv: 6.12.6 - debug: 4.3.7 + debug: 4.4.0 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -10381,24 +10986,25 @@ snapshots: transitivePeerDependencies: - supports-color - "@eslint/js@9.17.0": {} + "@eslint/js@9.22.0": {} - "@eslint/object-schema@2.1.5": {} + "@eslint/object-schema@2.1.6": {} - "@eslint/plugin-kit@0.2.4": + "@eslint/plugin-kit@0.2.7": dependencies: + "@eslint/core": 0.12.0 levn: 0.4.1 "@floating-ui/core@1.6.8": dependencies: - "@floating-ui/utils": 0.2.8 + "@floating-ui/utils": 0.2.9 - "@floating-ui/dom@1.6.12": + "@floating-ui/dom@1.6.13": dependencies: "@floating-ui/core": 1.6.8 - "@floating-ui/utils": 0.2.8 + "@floating-ui/utils": 0.2.9 - "@floating-ui/utils@0.2.8": {} + "@floating-ui/utils@0.2.9": {} "@foliojs-fork/fontkit@1.9.2": dependencies: @@ -10432,7 +11038,7 @@ snapshots: "@github/markdown-toolbar-element@2.2.3": {} - "@github/relative-time-element@4.4.4": {} + "@github/relative-time-element@4.4.5": {} "@humanfs/core@0.19.1": {} @@ -10445,7 +11051,82 @@ snapshots: "@humanwhocodes/retry@0.3.1": {} - "@humanwhocodes/retry@0.4.1": {} + "@humanwhocodes/retry@0.4.2": {} + + "@img/sharp-darwin-arm64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-darwin-arm64": 1.0.4 + optional: true + + "@img/sharp-darwin-x64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-darwin-x64": 1.0.4 + optional: true + + "@img/sharp-libvips-darwin-arm64@1.0.4": + optional: true + + "@img/sharp-libvips-darwin-x64@1.0.4": + optional: true + + "@img/sharp-libvips-linux-arm64@1.0.4": + optional: true + + "@img/sharp-libvips-linux-arm@1.0.5": + optional: true + + "@img/sharp-libvips-linux-s390x@1.0.4": + optional: true + + "@img/sharp-libvips-linux-x64@1.0.4": + optional: true + + "@img/sharp-libvips-linuxmusl-arm64@1.0.4": + optional: true + + "@img/sharp-libvips-linuxmusl-x64@1.0.4": + optional: true + + "@img/sharp-linux-arm64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linux-arm64": 1.0.4 + optional: true + + "@img/sharp-linux-arm@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linux-arm": 1.0.5 + optional: true + + "@img/sharp-linux-s390x@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linux-s390x": 1.0.4 + optional: true + + "@img/sharp-linux-x64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linux-x64": 1.0.4 + optional: true + + "@img/sharp-linuxmusl-arm64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + optional: true + + "@img/sharp-linuxmusl-x64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + optional: true + + "@img/sharp-wasm32@0.33.5": + dependencies: + "@emnapi/runtime": 1.3.1 + optional: true + + "@img/sharp-win32-ia32@0.33.5": + optional: true + + "@img/sharp-win32-x64@0.33.5": + optional: true "@isaacs/cliui@8.0.2": dependencies: @@ -10478,6 +11159,10 @@ snapshots: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.0 + "@keyv/serialize@1.0.2": + dependencies: + buffer: 6.0.3 + "@lezer/common@1.2.3": {} "@lezer/css@1.1.9": @@ -10606,7 +11291,7 @@ snapshots: "@patternfly/pfe-core@4.0.4": dependencies: - "@floating-ui/dom": 1.6.12 + "@floating-ui/dom": 1.6.13 "@lit/context": 1.1.3 lit: 3.2.1 @@ -10627,6 +11312,8 @@ snapshots: "@pnpm/network.ca-file": 1.0.2 config-chain: 1.1.13 + "@polka/url@1.0.0-next.28": {} + "@rollup/plugin-babel@5.3.1(@babel/core@7.26.0)(rollup@2.79.2)": dependencies: "@babel/core": 7.26.0 @@ -10675,81 +11362,84 @@ snapshots: optionalDependencies: rollup: 2.79.2 - "@rollup/rollup-android-arm-eabi@4.24.4": + "@rollup/rollup-android-arm-eabi@4.34.8": optional: true - "@rollup/rollup-android-arm64@4.24.4": + "@rollup/rollup-android-arm64@4.34.8": optional: true - "@rollup/rollup-darwin-arm64@4.24.4": + "@rollup/rollup-darwin-arm64@4.34.8": optional: true - "@rollup/rollup-darwin-x64@4.24.4": + "@rollup/rollup-darwin-x64@4.34.8": optional: true - "@rollup/rollup-freebsd-arm64@4.24.4": + "@rollup/rollup-freebsd-arm64@4.34.8": optional: true - "@rollup/rollup-freebsd-x64@4.24.4": + "@rollup/rollup-freebsd-x64@4.34.8": optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.24.4": + "@rollup/rollup-linux-arm-gnueabihf@4.34.8": optional: true - "@rollup/rollup-linux-arm-musleabihf@4.24.4": + "@rollup/rollup-linux-arm-musleabihf@4.34.8": optional: true - "@rollup/rollup-linux-arm64-gnu@4.24.4": + "@rollup/rollup-linux-arm64-gnu@4.34.8": optional: true - "@rollup/rollup-linux-arm64-musl@4.24.4": + "@rollup/rollup-linux-arm64-musl@4.34.8": optional: true - "@rollup/rollup-linux-powerpc64le-gnu@4.24.4": + "@rollup/rollup-linux-loongarch64-gnu@4.34.8": optional: true - "@rollup/rollup-linux-riscv64-gnu@4.24.4": + "@rollup/rollup-linux-powerpc64le-gnu@4.34.8": optional: true - "@rollup/rollup-linux-s390x-gnu@4.24.4": + "@rollup/rollup-linux-riscv64-gnu@4.34.8": optional: true - "@rollup/rollup-linux-x64-gnu@4.24.4": + "@rollup/rollup-linux-s390x-gnu@4.34.8": optional: true - "@rollup/rollup-linux-x64-musl@4.24.4": + "@rollup/rollup-linux-x64-gnu@4.34.8": optional: true - "@rollup/rollup-win32-arm64-msvc@4.24.4": + "@rollup/rollup-linux-x64-musl@4.34.8": optional: true - "@rollup/rollup-win32-ia32-msvc@4.24.4": + "@rollup/rollup-win32-arm64-msvc@4.34.8": optional: true - "@rollup/rollup-win32-x64-msvc@4.24.4": + "@rollup/rollup-win32-ia32-msvc@4.34.8": + optional: true + + "@rollup/rollup-win32-x64-msvc@4.34.8": optional: true "@sec-ant/readable-stream@0.4.1": {} - "@semantic-release/changelog@6.0.3(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/changelog@6.0.3(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 fs-extra: 11.2.0 lodash: 4.17.21 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) - "@semantic-release/commit-analyzer@13.0.0(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/commit-analyzer@13.0.0(semantic-release@24.2.3(typescript@5.7.3))": dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.3.7 + debug: 4.4.0 import-from-esm: 1.3.4 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color @@ -10757,19 +11447,19 @@ snapshots: "@semantic-release/error@4.0.0": {} - "@semantic-release/exec@6.0.3(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/exec@7.0.3(semantic-release@24.2.3(typescript@5.7.3))": dependencies: - "@semantic-release/error": 3.0.0 + "@semantic-release/error": 4.0.0 aggregate-error: 3.1.0 - debug: 4.3.7 - execa: 5.1.1 - lodash: 4.17.21 - parse-json: 5.2.0 - semantic-release: 24.2.0(typescript@5.7.2) + debug: 4.4.0 + execa: 9.5.1 + lodash-es: 4.17.21 + parse-json: 8.1.0 + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color - "@semantic-release/git@10.0.1(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/git@10.0.1(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 @@ -10779,11 +11469,11 @@ snapshots: lodash: 4.17.21 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color - "@semantic-release/github@11.0.0(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/github@11.0.0(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@octokit/core": 6.1.2 "@octokit/plugin-paginate-rest": 11.3.5(@octokit/core@6.1.2) @@ -10791,7 +11481,7 @@ snapshots: "@octokit/plugin-throttling": 9.3.2(@octokit/core@6.1.2) "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 - debug: 4.3.7 + debug: 4.4.0 dir-glob: 3.0.1 globby: 14.0.2 http-proxy-agent: 7.0.2 @@ -10800,16 +11490,16 @@ snapshots: lodash-es: 4.17.21 mime: 4.0.4 p-filter: 4.1.0 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) url-join: 5.0.0 transitivePeerDependencies: - supports-color - "@semantic-release/gitlab@13.2.3(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/gitlab@13.2.4(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 - debug: 4.3.7 + debug: 4.4.0 dir-glob: 3.0.1 escape-string-regexp: 5.0.0 formdata-node: 6.0.3 @@ -10819,12 +11509,12 @@ snapshots: hpagent: 1.2.0 lodash-es: 4.17.21 parse-url: 9.2.0 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) url-join: 4.0.1 transitivePeerDependencies: - supports-color - "@semantic-release/npm@12.0.1(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/npm@12.0.1(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 @@ -10837,23 +11527,23 @@ snapshots: rc: 1.2.8 read-pkg: 9.0.1 registry-auth-token: 5.0.2 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) semver: 7.6.3 tempy: 3.1.0 - "@semantic-release/release-notes-generator@14.0.1(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/release-notes-generator@14.0.1(semantic-release@24.2.3(typescript@5.7.3))": dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.3.7 + debug: 4.4.0 get-stream: 7.0.1 import-from-esm: 1.3.4 into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color @@ -10878,12 +11568,12 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - "@tailwindcss/forms@0.5.9(tailwindcss@3.4.17)": + "@tailwindcss/forms@0.5.10(tailwindcss@3.4.17)": dependencies: mini-svg-data-uri: 1.4.4 tailwindcss: 3.4.17 - "@tailwindcss/typography@0.5.15(tailwindcss@3.4.17)": + "@tailwindcss/typography@0.5.16(tailwindcss@3.4.17)": dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 @@ -10901,10 +11591,7 @@ snapshots: dependencies: "@types/estree": 1.0.6 "@types/json-schema": 7.0.15 - - "@types/eslint__js@8.42.3": - dependencies: - "@types/eslint": 9.6.1 + optional: true "@types/estree@0.0.39": {} @@ -10918,7 +11605,7 @@ snapshots: "@types/json-schema@7.0.15": {} - "@types/leaflet@1.9.15": + "@types/leaflet@1.9.16": dependencies: "@types/geojson": 7946.0.14 @@ -10936,81 +11623,81 @@ snapshots: "@types/trusted-types@2.0.7": {} - "@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2)": + "@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3))(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3)": dependencies: "@eslint-community/regexpp": 4.12.1 - "@typescript-eslint/parser": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/scope-manager": 8.18.2 - "@typescript-eslint/type-utils": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/utils": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/visitor-keys": 8.18.2 - eslint: 9.17.0(jiti@2.4.1) + "@typescript-eslint/parser": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/scope-manager": 8.26.1 + "@typescript-eslint/type-utils": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/utils": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/visitor-keys": 8.26.1 + eslint: 9.22.0(jiti@2.4.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2)": + "@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3)": dependencies: - "@typescript-eslint/scope-manager": 8.18.2 - "@typescript-eslint/types": 8.18.2 - "@typescript-eslint/typescript-estree": 8.18.2(typescript@5.7.2) - "@typescript-eslint/visitor-keys": 8.18.2 + "@typescript-eslint/scope-manager": 8.26.1 + "@typescript-eslint/types": 8.26.1 + "@typescript-eslint/typescript-estree": 8.26.1(typescript@5.7.3) + "@typescript-eslint/visitor-keys": 8.26.1 debug: 4.4.0 - eslint: 9.17.0(jiti@2.4.1) - typescript: 5.7.2 + eslint: 9.22.0(jiti@2.4.1) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.18.2": + "@typescript-eslint/scope-manager@8.26.1": dependencies: - "@typescript-eslint/types": 8.18.2 - "@typescript-eslint/visitor-keys": 8.18.2 + "@typescript-eslint/types": 8.26.1 + "@typescript-eslint/visitor-keys": 8.26.1 - "@typescript-eslint/type-utils@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2)": + "@typescript-eslint/type-utils@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3)": dependencies: - "@typescript-eslint/typescript-estree": 8.18.2(typescript@5.7.2) - "@typescript-eslint/utils": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) + "@typescript-eslint/typescript-estree": 8.26.1(typescript@5.7.3) + "@typescript-eslint/utils": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.17.0(jiti@2.4.1) - ts-api-utils: 1.4.0(typescript@5.7.2) - typescript: 5.7.2 + eslint: 9.22.0(jiti@2.4.1) + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.18.2": {} + "@typescript-eslint/types@8.26.1": {} - "@typescript-eslint/typescript-estree@8.18.2(typescript@5.7.2)": + "@typescript-eslint/typescript-estree@8.26.1(typescript@5.7.3)": dependencies: - "@typescript-eslint/types": 8.18.2 - "@typescript-eslint/visitor-keys": 8.18.2 + "@typescript-eslint/types": 8.26.1 + "@typescript-eslint/visitor-keys": 8.26.1 debug: 4.4.0 - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.4.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2)": + "@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3)": dependencies: - "@eslint-community/eslint-utils": 4.4.1(eslint@9.17.0(jiti@2.4.1)) - "@typescript-eslint/scope-manager": 8.18.2 - "@typescript-eslint/types": 8.18.2 - "@typescript-eslint/typescript-estree": 8.18.2(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.1) - typescript: 5.7.2 + "@eslint-community/eslint-utils": 4.4.1(eslint@9.22.0(jiti@2.4.1)) + "@typescript-eslint/scope-manager": 8.26.1 + "@typescript-eslint/types": 8.26.1 + "@typescript-eslint/typescript-estree": 8.26.1(typescript@5.7.3) + eslint: 9.22.0(jiti@2.4.1) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.18.2": + "@typescript-eslint/visitor-keys@8.26.1": dependencies: - "@typescript-eslint/types": 8.18.2 + "@typescript-eslint/types": 8.26.1 eslint-visitor-keys: 4.2.0 "@vime/core@5.4.1": @@ -11034,7 +11721,7 @@ snapshots: agent-base@7.1.1: dependencies: - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -11101,6 +11788,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@3.16.0: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -11140,14 +11829,14 @@ snapshots: at-least-node@1.0.0: {} - autoprefixer@10.4.20(postcss@8.4.49): + autoprefixer@10.4.20(postcss@8.5.3): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.4 caniuse-lite: 1.0.30001677 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -11190,6 +11879,8 @@ snapshots: binary-extensions@2.3.0: {} + birpc@2.2.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -11224,6 +11915,13 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001700 + electron-to-chromium: 1.5.104 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.4) + buffer-from@1.1.2: {} buffer@5.7.1: @@ -11231,6 +11929,15 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + cacheable-lookup@7.0.0: {} cacheable-request@12.0.1: @@ -11243,6 +11950,11 @@ snapshots: normalize-url: 8.0.1 responselike: 3.0.0 + cacheable@1.8.8: + dependencies: + hookified: 1.7.0 + keyv: 5.2.3 + cachedir@2.3.0: {} call-bind@1.0.7: @@ -11268,6 +11980,8 @@ snapshots: caniuse-lite@1.0.30001677: {} + caniuse-lite@1.0.30001700: {} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -11279,7 +11993,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + chalk@5.3.0: + optional: true chalk@5.4.1: {} @@ -11287,7 +12002,7 @@ snapshots: chardet@0.7.0: {} - choices.js@11.0.3: + choices.js@11.1.0: dependencies: fuse.js: 7.0.0 @@ -11365,13 +12080,13 @@ snapshots: codemirror@6.0.1(@lezer/common@1.2.3): dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) - "@codemirror/commands": 6.7.1 - "@codemirror/language": 6.10.8 + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) + "@codemirror/commands": 6.8.0 + "@codemirror/language": 6.11.0 "@codemirror/lint": 6.8.2 "@codemirror/search": 6.5.7 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.4 transitivePeerDependencies: - "@lezer/common" @@ -11387,11 +12102,21 @@ snapshots: color-name@1.1.4: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + colord@2.9.3: {} colorette@2.0.20: {} - commander@12.1.0: {} + commander@13.1.0: {} commander@2.20.3: {} @@ -11399,10 +12124,10 @@ snapshots: commander@7.2.0: {} - commitizen@4.3.1(@types/node@22.9.0)(typescript@5.7.2): + commitizen@4.3.1(@types/node@22.9.0)(typescript@5.7.3): dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@22.9.0)(typescript@5.7.2) + cz-conventional-changelog: 3.3.0(@types/node@22.9.0)(typescript@5.7.3) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -11484,29 +12209,29 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2): + cosmiconfig-typescript-loader@5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): dependencies: "@types/node": 22.9.0 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) jiti: 1.21.6 - typescript: 5.7.2 + typescript: 5.7.3 optional: true - cosmiconfig-typescript-loader@6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): dependencies: "@types/node": 22.9.0 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) jiti: 2.4.1 - typescript: 5.7.2 + typescript: 5.7.3 - cosmiconfig@9.0.0(typescript@5.7.2): + cosmiconfig@9.0.0(typescript@5.7.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 crelt@1.0.6: {} @@ -11534,27 +12259,27 @@ snapshots: dependencies: type-fest: 1.4.0 - css-blank-pseudo@7.0.1(postcss@8.4.49): + css-blank-pseudo@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - css-declaration-sorter@7.2.0(postcss@8.4.49): + css-declaration-sorter@7.2.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 css-functions-list@3.2.3: {} - css-has-pseudo@7.0.2(postcss@8.4.49): + css-has-pseudo@7.0.2(postcss@8.5.3): dependencies: "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - css-prefers-color-scheme@10.0.0(postcss@8.4.49): + css-prefers-color-scheme@10.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 css-select@5.1.0: dependencies: @@ -11574,9 +12299,9 @@ snapshots: mdn-data: 2.0.30 source-map-js: 1.2.1 - css-tree@3.0.1: + css-tree@3.1.0: dependencies: - mdn-data: 2.12.1 + mdn-data: 2.12.2 source-map-js: 1.2.1 css-what@6.1.0: {} @@ -11585,64 +12310,64 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.6(postcss@8.4.49): + cssnano-preset-default@7.0.6(postcss@8.5.3): dependencies: browserslist: 4.24.2 - css-declaration-sorter: 7.2.0(postcss@8.4.49) - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 - postcss-calc: 10.0.2(postcss@8.4.49) - postcss-colormin: 7.0.2(postcss@8.4.49) - postcss-convert-values: 7.0.4(postcss@8.4.49) - postcss-discard-comments: 7.0.3(postcss@8.4.49) - postcss-discard-duplicates: 7.0.1(postcss@8.4.49) - postcss-discard-empty: 7.0.0(postcss@8.4.49) - postcss-discard-overridden: 7.0.0(postcss@8.4.49) - postcss-merge-longhand: 7.0.4(postcss@8.4.49) - postcss-merge-rules: 7.0.4(postcss@8.4.49) - postcss-minify-font-values: 7.0.0(postcss@8.4.49) - postcss-minify-gradients: 7.0.0(postcss@8.4.49) - postcss-minify-params: 7.0.2(postcss@8.4.49) - postcss-minify-selectors: 7.0.4(postcss@8.4.49) - postcss-normalize-charset: 7.0.0(postcss@8.4.49) - postcss-normalize-display-values: 7.0.0(postcss@8.4.49) - postcss-normalize-positions: 7.0.0(postcss@8.4.49) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.49) - postcss-normalize-string: 7.0.0(postcss@8.4.49) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.49) - postcss-normalize-unicode: 7.0.2(postcss@8.4.49) - postcss-normalize-url: 7.0.0(postcss@8.4.49) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.49) - postcss-ordered-values: 7.0.1(postcss@8.4.49) - postcss-reduce-initial: 7.0.2(postcss@8.4.49) - postcss-reduce-transforms: 7.0.0(postcss@8.4.49) - postcss-svgo: 7.0.1(postcss@8.4.49) - postcss-unique-selectors: 7.0.3(postcss@8.4.49) + css-declaration-sorter: 7.2.0(postcss@8.5.3) + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-calc: 10.0.2(postcss@8.5.3) + postcss-colormin: 7.0.2(postcss@8.5.3) + postcss-convert-values: 7.0.4(postcss@8.5.3) + postcss-discard-comments: 7.0.3(postcss@8.5.3) + postcss-discard-duplicates: 7.0.1(postcss@8.5.3) + postcss-discard-empty: 7.0.0(postcss@8.5.3) + postcss-discard-overridden: 7.0.0(postcss@8.5.3) + postcss-merge-longhand: 7.0.4(postcss@8.5.3) + postcss-merge-rules: 7.0.4(postcss@8.5.3) + postcss-minify-font-values: 7.0.0(postcss@8.5.3) + postcss-minify-gradients: 7.0.0(postcss@8.5.3) + postcss-minify-params: 7.0.2(postcss@8.5.3) + postcss-minify-selectors: 7.0.4(postcss@8.5.3) + postcss-normalize-charset: 7.0.0(postcss@8.5.3) + postcss-normalize-display-values: 7.0.0(postcss@8.5.3) + postcss-normalize-positions: 7.0.0(postcss@8.5.3) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.3) + postcss-normalize-string: 7.0.0(postcss@8.5.3) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.3) + postcss-normalize-unicode: 7.0.2(postcss@8.5.3) + postcss-normalize-url: 7.0.0(postcss@8.5.3) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.3) + postcss-ordered-values: 7.0.1(postcss@8.5.3) + postcss-reduce-initial: 7.0.2(postcss@8.5.3) + postcss-reduce-transforms: 7.0.0(postcss@8.5.3) + postcss-svgo: 7.0.1(postcss@8.5.3) + postcss-unique-selectors: 7.0.3(postcss@8.5.3) - cssnano-utils@5.0.0(postcss@8.4.49): + cssnano-utils@5.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - cssnano@7.0.6(postcss@8.4.49): + cssnano@7.0.6(postcss@8.5.3): dependencies: - cssnano-preset-default: 7.0.6(postcss@8.4.49) + cssnano-preset-default: 7.0.6(postcss@8.5.3) lilconfig: 3.1.2 - postcss: 8.4.49 + postcss: 8.5.3 csso@5.0.5: dependencies: css-tree: 2.2.1 - cz-conventional-changelog@3.3.0(@types/node@22.9.0)(typescript@5.7.2): + cz-conventional-changelog@3.3.0(@types/node@22.9.0)(typescript@5.7.3): dependencies: chalk: 2.4.2 - commitizen: 4.3.1(@types/node@22.9.0)(typescript@5.7.2) + commitizen: 4.3.1(@types/node@22.9.0)(typescript@5.7.3) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - "@commitlint/load": 19.5.0(@types/node@22.9.0)(typescript@5.7.2) + "@commitlint/load": 19.5.0(@types/node@22.9.0)(typescript@5.7.3) transitivePeerDependencies: - "@types/node" - typescript @@ -11743,6 +12468,13 @@ snapshots: deepmerge@4.3.1: {} + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + defaults@1.0.4: dependencies: clone: 1.0.4 @@ -11755,6 +12487,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.0.1 + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -11765,6 +12499,8 @@ snapshots: detect-indent@6.1.0: {} + detect-libc@2.0.3: {} + dfa@1.2.0: {} didyoumean@1.2.2: {} @@ -11807,6 +12543,8 @@ snapshots: dependencies: jake: 10.9.2 + electron-to-chromium@1.5.104: {} + electron-to-chromium@1.5.52: {} emoji-regex@10.4.0: {} @@ -11832,6 +12570,8 @@ snapshots: dependencies: is-arrayish: 0.2.1 + error-stack-parser-es@1.0.5: {} + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -11903,33 +12643,33 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - esbuild@0.24.2: + esbuild@0.25.0: optionalDependencies: - "@esbuild/aix-ppc64": 0.24.2 - "@esbuild/android-arm": 0.24.2 - "@esbuild/android-arm64": 0.24.2 - "@esbuild/android-x64": 0.24.2 - "@esbuild/darwin-arm64": 0.24.2 - "@esbuild/darwin-x64": 0.24.2 - "@esbuild/freebsd-arm64": 0.24.2 - "@esbuild/freebsd-x64": 0.24.2 - "@esbuild/linux-arm": 0.24.2 - "@esbuild/linux-arm64": 0.24.2 - "@esbuild/linux-ia32": 0.24.2 - "@esbuild/linux-loong64": 0.24.2 - "@esbuild/linux-mips64el": 0.24.2 - "@esbuild/linux-ppc64": 0.24.2 - "@esbuild/linux-riscv64": 0.24.2 - "@esbuild/linux-s390x": 0.24.2 - "@esbuild/linux-x64": 0.24.2 - "@esbuild/netbsd-arm64": 0.24.2 - "@esbuild/netbsd-x64": 0.24.2 - "@esbuild/openbsd-arm64": 0.24.2 - "@esbuild/openbsd-x64": 0.24.2 - "@esbuild/sunos-x64": 0.24.2 - "@esbuild/win32-arm64": 0.24.2 - "@esbuild/win32-ia32": 0.24.2 - "@esbuild/win32-x64": 0.24.2 + "@esbuild/aix-ppc64": 0.25.0 + "@esbuild/android-arm": 0.25.0 + "@esbuild/android-arm64": 0.25.0 + "@esbuild/android-x64": 0.25.0 + "@esbuild/darwin-arm64": 0.25.0 + "@esbuild/darwin-x64": 0.25.0 + "@esbuild/freebsd-arm64": 0.25.0 + "@esbuild/freebsd-x64": 0.25.0 + "@esbuild/linux-arm": 0.25.0 + "@esbuild/linux-arm64": 0.25.0 + "@esbuild/linux-ia32": 0.25.0 + "@esbuild/linux-loong64": 0.25.0 + "@esbuild/linux-mips64el": 0.25.0 + "@esbuild/linux-ppc64": 0.25.0 + "@esbuild/linux-riscv64": 0.25.0 + "@esbuild/linux-s390x": 0.25.0 + "@esbuild/linux-x64": 0.25.0 + "@esbuild/netbsd-arm64": 0.25.0 + "@esbuild/netbsd-x64": 0.25.0 + "@esbuild/openbsd-arm64": 0.25.0 + "@esbuild/openbsd-x64": 0.25.0 + "@esbuild/sunos-x64": 0.25.0 + "@esbuild/win32-arm64": 0.25.0 + "@esbuild/win32-ia32": 0.25.0 + "@esbuild/win32-x64": 0.25.0 escalade@3.2.0: {} @@ -11939,21 +12679,21 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@9.1.0(eslint@9.17.0(jiti@2.4.1)): + eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.1)): dependencies: - eslint: 9.17.0(jiti@2.4.1) + eslint: 9.22.0(jiti@2.4.1) - eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.17.0(jiti@2.4.1)))(eslint@9.17.0(jiti@2.4.1))(prettier@3.4.2): + eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.1)))(eslint@9.22.0(jiti@2.4.1))(prettier@3.5.3): dependencies: - eslint: 9.17.0(jiti@2.4.1) - prettier: 3.4.2 + eslint: 9.22.0(jiti@2.4.1) + prettier: 3.5.3 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 optionalDependencies: "@types/eslint": 9.6.1 - eslint-config-prettier: 9.1.0(eslint@9.17.0(jiti@2.4.1)) + eslint-config-prettier: 10.1.1(eslint@9.22.0(jiti@2.4.1)) - eslint-scope@8.2.0: + eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -11962,26 +12702,27 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.17.0(jiti@2.4.1): + eslint@9.22.0(jiti@2.4.1): dependencies: - "@eslint-community/eslint-utils": 4.4.1(eslint@9.17.0(jiti@2.4.1)) + "@eslint-community/eslint-utils": 4.4.1(eslint@9.22.0(jiti@2.4.1)) "@eslint-community/regexpp": 4.12.1 - "@eslint/config-array": 0.19.1 - "@eslint/core": 0.9.1 - "@eslint/eslintrc": 3.2.0 - "@eslint/js": 9.17.0 - "@eslint/plugin-kit": 0.2.4 + "@eslint/config-array": 0.19.2 + "@eslint/config-helpers": 0.1.0 + "@eslint/core": 0.12.0 + "@eslint/eslintrc": 3.3.0 + "@eslint/js": 9.22.0 + "@eslint/plugin-kit": 0.2.7 "@humanfs/node": 0.16.6 "@humanwhocodes/module-importer": 1.0.1 - "@humanwhocodes/retry": 0.4.1 + "@humanwhocodes/retry": 0.4.2 "@types/estree": 1.0.6 "@types/json-schema": 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7 + debug: 4.4.0 escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 + eslint-scope: 8.3.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 esquery: 1.6.0 @@ -12054,7 +12795,7 @@ snapshots: execa@9.5.1: dependencies: "@sindresorhus/merge-streams": 4.0.0 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 figures: 6.1.0 get-stream: 9.0.1 human-signals: 8.0.0 @@ -12088,6 +12829,14 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-glob@3.3.3: + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -12116,14 +12865,14 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 + file-entry-cache@10.0.6: + dependencies: + flat-cache: 6.1.6 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - file-entry-cache@9.1.0: - dependencies: - flat-cache: 5.0.0 - filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -12175,17 +12924,18 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.1 + flatted: 3.3.2 keyv: 4.5.4 - flat-cache@5.0.0: + flat-cache@6.1.6: dependencies: - flatted: 3.3.1 - keyv: 4.5.4 + cacheable: 1.8.8 + flatted: 3.3.2 + hookified: 1.7.0 flatpickr@4.6.13: {} - flatted@3.3.1: {} + flatted@3.3.2: {} for-each@0.3.3: dependencies: @@ -12307,6 +13057,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.0.1: + dependencies: + foreground-child: 3.3.0 + jackspeak: 4.0.2 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -12348,7 +13107,7 @@ snapshots: globals@14.0.0: {} - globals@15.14.0: {} + globals@16.0.0: {} globalthis@1.0.4: dependencies: @@ -12359,7 +13118,7 @@ snapshots: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 @@ -12438,6 +13197,8 @@ snapshots: hook-std@3.0.0: {} + hookified@1.7.0: {} + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -12450,14 +13211,14 @@ snapshots: html-tags@3.3.1: {} - htmlfy@0.5.0: {} + htmlfy@0.6.2: {} http-cache-semantics@4.1.1: {} http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -12469,7 +13230,7 @@ snapshots: https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -12495,7 +13256,7 @@ snapshots: ignore@5.3.2: {} - ignore@6.0.2: {} + ignore@7.0.3: {} import-fresh@3.3.0: dependencies: @@ -12504,7 +13265,14 @@ snapshots: import-from-esm@1.3.4: dependencies: - debug: 4.3.7 + debug: 4.4.0 + import-meta-resolve: 4.1.0 + transitivePeerDependencies: + - supports-color + + import-from-esm@2.0.0: + dependencies: + debug: 4.4.0 import-meta-resolve: 4.1.0 transitivePeerDependencies: - supports-color @@ -12589,6 +13357,8 @@ snapshots: is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 @@ -12620,6 +13390,8 @@ snapshots: dependencies: has-tostringtag: 1.0.2 + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -12634,6 +13406,10 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-interactive@1.0.0: {} is-module@1.0.0: {} @@ -12699,6 +13475,10 @@ snapshots: is-windows@1.0.2: {} + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + isarray@1.0.0: {} isarray@2.0.5: {} @@ -12719,6 +13499,10 @@ snapshots: optionalDependencies: "@pkgjs/parseargs": 0.11.0 + jackspeak@4.0.2: + dependencies: + "@isaacs/cliui": 8.0.2 + jake@10.9.2: dependencies: async: 3.2.6 @@ -12778,6 +13562,10 @@ snapshots: dependencies: json-buffer: 3.0.1 + keyv@5.2.3: + dependencies: + "@keyv/serialize": 1.0.2 + kind-of@6.0.3: {} known-css-properties@0.35.0: {} @@ -12801,10 +13589,10 @@ snapshots: lines-and-columns@1.2.4: {} - lint-staged@15.3.0: + lint-staged@15.5.0: dependencies: chalk: 5.4.1 - commander: 12.1.0 + commander: 13.1.0 debug: 4.4.0 execa: 8.0.1 lilconfig: 3.1.3 @@ -12812,7 +13600,7 @@ snapshots: micromatch: 4.0.8 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.6.1 + yaml: 2.7.0 transitivePeerDependencies: - supports-color @@ -12926,6 +13714,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.0.2: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -12938,7 +13728,7 @@ snapshots: dependencies: ansi-escapes: 7.0.0 ansi-regex: 6.1.0 - chalk: 5.3.0 + chalk: 5.4.1 cli-highlight: 2.1.11 cli-table3: 0.6.5 marked: 12.0.2 @@ -12947,7 +13737,7 @@ snapshots: marked@12.0.2: {} - marked@15.0.4: {} + marked@15.0.7: {} mathml-tag-names@2.1.3: {} @@ -12955,7 +13745,7 @@ snapshots: mdn-data@2.0.30: {} - mdn-data@2.12.1: {} + mdn-data@2.12.2: {} meow@12.1.1: {} @@ -12986,6 +13776,10 @@ snapshots: mini-svg-data-uri@1.4.4: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -13006,6 +13800,8 @@ snapshots: mitt@3.0.1: {} + mrmime@2.0.0: {} + ms@2.1.3: {} mute-stream@0.0.8: {} @@ -13016,7 +13812,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.7: {} + nanoid@3.3.8: {} natural-compare@1.4.0: {} @@ -13037,6 +13833,8 @@ snapshots: node-releases@2.0.18: {} + node-releases@2.0.19: {} + normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 @@ -13088,6 +13886,8 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 + ohash@2.0.4: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -13104,6 +13904,13 @@ snapshots: dependencies: mimic-function: 5.0.1 + open@10.1.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -13171,6 +13978,8 @@ snapshots: p-map@7.0.2: {} + p-map@7.0.3: {} + p-reduce@2.1.0: {} p-reduce@3.0.0: {} @@ -13245,10 +14054,17 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + path-type@4.0.0: {} path-type@5.0.0: {} + pathe@2.0.3: {} + pdfmake@0.2.15: dependencies: "@foliojs-fork/linebreak": 1.1.2 @@ -13258,6 +14074,8 @@ snapshots: pegjs@0.10.0: {} + perfect-debounce@1.0.0: {} + performance-now@2.1.0: {} picocolors@1.1.1: {} @@ -13289,397 +14107,397 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-attribute-case-insensitive@7.0.1(postcss@8.4.49): + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-calc@10.0.2(postcss@8.4.49): + postcss-calc@10.0.2(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-clamp@4.1.0(postcss@8.4.49): + postcss-clamp@4.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.7(postcss@8.4.49): + postcss-color-functional-notation@7.0.8(postcss@8.5.3): dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - postcss-color-hex-alpha@10.0.0(postcss@8.4.49): + postcss-color-hex-alpha@10.0.0(postcss@8.5.3): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@10.0.0(postcss@8.4.49): + postcss-color-rebeccapurple@10.0.0(postcss@8.5.3): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.4.49): + postcss-colormin@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.2 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.4.49): + postcss-convert-values@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.2 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.5(postcss@8.4.49): + postcss-custom-media@11.0.5(postcss@8.5.3): dependencies: "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.4.49 + postcss: 8.5.3 - postcss-custom-properties@14.0.4(postcss@8.4.49): + postcss-custom-properties@14.0.4(postcss@8.5.3): dependencies: "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.4(postcss@8.4.49): + postcss-custom-selectors@8.0.4(postcss@8.5.3): dependencies: "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-dir-pseudo-class@9.0.1(postcss@8.4.49): + postcss-dir-pseudo-class@9.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-discard-comments@7.0.3(postcss@8.4.49): + postcss-discard-comments@7.0.3(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.4.49): + postcss-discard-duplicates@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-discard-empty@7.0.0(postcss@8.4.49): + postcss-discard-empty@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-discard-overridden@7.0.0(postcss@8.4.49): + postcss-discard-overridden@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-double-position-gradients@6.0.0(postcss@8.4.49): + postcss-double-position-gradients@6.0.0(postcss@8.5.3): dependencies: - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-focus-visible@10.0.1(postcss@8.4.49): + postcss-focus-visible@10.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-focus-within@9.0.1(postcss@8.4.49): + postcss-focus-within@9.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-font-variant@5.0.0(postcss@8.4.49): + postcss-font-variant@5.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-gap-properties@6.0.0(postcss@8.4.49): + postcss-gap-properties@6.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-image-set-function@7.0.0(postcss@8.4.49): + postcss-image-set-function@7.0.0(postcss@8.5.3): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-import@15.1.0(postcss@8.4.49): + postcss-import@15.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-import@16.1.0(postcss@8.4.49): + postcss-import@16.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.49): + postcss-js@4.0.1(postcss@8.5.3): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.49 + postcss: 8.5.3 - postcss-lab-function@7.0.7(postcss@8.4.49): + postcss-lab-function@7.0.8(postcss@8.5.3): dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - postcss-load-config@4.0.2(postcss@8.4.49): + postcss-load-config@4.0.2(postcss@8.5.3): dependencies: lilconfig: 3.1.3 - yaml: 2.6.1 + yaml: 2.7.0 optionalDependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-logical@8.0.0(postcss@8.4.49): + postcss-logical@8.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-merge-longhand@7.0.4(postcss@8.4.49): + postcss-merge-longhand@7.0.4(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.4.49) + stylehacks: 7.0.4(postcss@8.5.3) - postcss-merge-rules@7.0.4(postcss@8.4.49): + postcss-merge-rules@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.2 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.4.49): + postcss-minify-font-values@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.49): + postcss-minify-gradients@7.0.0(postcss@8.5.3): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.4.49): + postcss-minify-params@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.2 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.4.49): + postcss-minify-selectors@7.0.4(postcss@8.5.3): dependencies: cssesc: 3.0.0 - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-nested@6.2.0(postcss@8.4.49): + postcss-nested@6.2.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-nesting@13.0.1(postcss@8.4.49): + postcss-nesting@13.0.1(postcss@8.5.3): dependencies: "@csstools/selector-resolve-nested": 3.0.0(postcss-selector-parser@7.0.0) "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-normalize-charset@7.0.0(postcss@8.4.49): + postcss-normalize-charset@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-normalize-display-values@7.0.0(postcss@8.4.49): + postcss-normalize-display-values@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.49): + postcss-normalize-positions@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.49): + postcss-normalize-repeat-style@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.49): + postcss-normalize-string@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.49): + postcss-normalize-timing-functions@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.4.49): + postcss-normalize-unicode@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.2 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.49): + postcss-normalize-url@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.49): + postcss-normalize-whitespace@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-opacity-percentage@3.0.0(postcss@8.4.49): + postcss-opacity-percentage@3.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-ordered-values@7.0.1(postcss@8.4.49): + postcss-ordered-values@7.0.1(postcss@8.5.3): dependencies: - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-overflow-shorthand@6.0.0(postcss@8.4.49): + postcss-overflow-shorthand@6.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.4.49): + postcss-page-break@3.0.4(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-place@10.0.0(postcss@8.4.49): + postcss-place@10.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-preset-env@10.1.3(postcss@8.4.49): + postcss-preset-env@10.1.5(postcss@8.5.3): dependencies: - "@csstools/postcss-cascade-layers": 5.0.1(postcss@8.4.49) - "@csstools/postcss-color-function": 4.0.7(postcss@8.4.49) - "@csstools/postcss-color-mix-function": 3.0.7(postcss@8.4.49) - "@csstools/postcss-content-alt-text": 2.0.4(postcss@8.4.49) - "@csstools/postcss-exponential-functions": 2.0.6(postcss@8.4.49) - "@csstools/postcss-font-format-keywords": 4.0.0(postcss@8.4.49) - "@csstools/postcss-gamut-mapping": 2.0.7(postcss@8.4.49) - "@csstools/postcss-gradients-interpolation-method": 5.0.7(postcss@8.4.49) - "@csstools/postcss-hwb-function": 4.0.7(postcss@8.4.49) - "@csstools/postcss-ic-unit": 4.0.0(postcss@8.4.49) - "@csstools/postcss-initial": 2.0.0(postcss@8.4.49) - "@csstools/postcss-is-pseudo-class": 5.0.1(postcss@8.4.49) - "@csstools/postcss-light-dark-function": 2.0.7(postcss@8.4.49) - "@csstools/postcss-logical-float-and-clear": 3.0.0(postcss@8.4.49) - "@csstools/postcss-logical-overflow": 2.0.0(postcss@8.4.49) - "@csstools/postcss-logical-overscroll-behavior": 2.0.0(postcss@8.4.49) - "@csstools/postcss-logical-resize": 3.0.0(postcss@8.4.49) - "@csstools/postcss-logical-viewport-units": 3.0.3(postcss@8.4.49) - "@csstools/postcss-media-minmax": 2.0.6(postcss@8.4.49) - "@csstools/postcss-media-queries-aspect-ratio-number-values": 3.0.4(postcss@8.4.49) - "@csstools/postcss-nested-calc": 4.0.0(postcss@8.4.49) - "@csstools/postcss-normalize-display-values": 4.0.0(postcss@8.4.49) - "@csstools/postcss-oklab-function": 4.0.7(postcss@8.4.49) - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/postcss-random-function": 1.0.2(postcss@8.4.49) - "@csstools/postcss-relative-color-syntax": 3.0.7(postcss@8.4.49) - "@csstools/postcss-scope-pseudo-class": 4.0.1(postcss@8.4.49) - "@csstools/postcss-sign-functions": 1.1.1(postcss@8.4.49) - "@csstools/postcss-stepped-value-functions": 4.0.6(postcss@8.4.49) - "@csstools/postcss-text-decoration-shorthand": 4.0.1(postcss@8.4.49) - "@csstools/postcss-trigonometric-functions": 4.0.6(postcss@8.4.49) - "@csstools/postcss-unset-value": 4.0.0(postcss@8.4.49) - autoprefixer: 10.4.20(postcss@8.4.49) - browserslist: 4.24.2 - css-blank-pseudo: 7.0.1(postcss@8.4.49) - css-has-pseudo: 7.0.2(postcss@8.4.49) - css-prefers-color-scheme: 10.0.0(postcss@8.4.49) + "@csstools/postcss-cascade-layers": 5.0.1(postcss@8.5.3) + "@csstools/postcss-color-function": 4.0.8(postcss@8.5.3) + "@csstools/postcss-color-mix-function": 3.0.8(postcss@8.5.3) + "@csstools/postcss-content-alt-text": 2.0.4(postcss@8.5.3) + "@csstools/postcss-exponential-functions": 2.0.7(postcss@8.5.3) + "@csstools/postcss-font-format-keywords": 4.0.0(postcss@8.5.3) + "@csstools/postcss-gamut-mapping": 2.0.8(postcss@8.5.3) + "@csstools/postcss-gradients-interpolation-method": 5.0.8(postcss@8.5.3) + "@csstools/postcss-hwb-function": 4.0.8(postcss@8.5.3) + "@csstools/postcss-ic-unit": 4.0.0(postcss@8.5.3) + "@csstools/postcss-initial": 2.0.1(postcss@8.5.3) + "@csstools/postcss-is-pseudo-class": 5.0.1(postcss@8.5.3) + "@csstools/postcss-light-dark-function": 2.0.7(postcss@8.5.3) + "@csstools/postcss-logical-float-and-clear": 3.0.0(postcss@8.5.3) + "@csstools/postcss-logical-overflow": 2.0.0(postcss@8.5.3) + "@csstools/postcss-logical-overscroll-behavior": 2.0.0(postcss@8.5.3) + "@csstools/postcss-logical-resize": 3.0.0(postcss@8.5.3) + "@csstools/postcss-logical-viewport-units": 3.0.3(postcss@8.5.3) + "@csstools/postcss-media-minmax": 2.0.7(postcss@8.5.3) + "@csstools/postcss-media-queries-aspect-ratio-number-values": 3.0.4(postcss@8.5.3) + "@csstools/postcss-nested-calc": 4.0.0(postcss@8.5.3) + "@csstools/postcss-normalize-display-values": 4.0.0(postcss@8.5.3) + "@csstools/postcss-oklab-function": 4.0.8(postcss@8.5.3) + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/postcss-random-function": 1.0.3(postcss@8.5.3) + "@csstools/postcss-relative-color-syntax": 3.0.8(postcss@8.5.3) + "@csstools/postcss-scope-pseudo-class": 4.0.1(postcss@8.5.3) + "@csstools/postcss-sign-functions": 1.1.2(postcss@8.5.3) + "@csstools/postcss-stepped-value-functions": 4.0.7(postcss@8.5.3) + "@csstools/postcss-text-decoration-shorthand": 4.0.2(postcss@8.5.3) + "@csstools/postcss-trigonometric-functions": 4.0.7(postcss@8.5.3) + "@csstools/postcss-unset-value": 4.0.0(postcss@8.5.3) + autoprefixer: 10.4.20(postcss@8.5.3) + browserslist: 4.24.4 + css-blank-pseudo: 7.0.1(postcss@8.5.3) + css-has-pseudo: 7.0.2(postcss@8.5.3) + css-prefers-color-scheme: 10.0.0(postcss@8.5.3) cssdb: 8.2.3 - postcss: 8.4.49 - postcss-attribute-case-insensitive: 7.0.1(postcss@8.4.49) - postcss-clamp: 4.1.0(postcss@8.4.49) - postcss-color-functional-notation: 7.0.7(postcss@8.4.49) - postcss-color-hex-alpha: 10.0.0(postcss@8.4.49) - postcss-color-rebeccapurple: 10.0.0(postcss@8.4.49) - postcss-custom-media: 11.0.5(postcss@8.4.49) - postcss-custom-properties: 14.0.4(postcss@8.4.49) - postcss-custom-selectors: 8.0.4(postcss@8.4.49) - postcss-dir-pseudo-class: 9.0.1(postcss@8.4.49) - postcss-double-position-gradients: 6.0.0(postcss@8.4.49) - postcss-focus-visible: 10.0.1(postcss@8.4.49) - postcss-focus-within: 9.0.1(postcss@8.4.49) - postcss-font-variant: 5.0.0(postcss@8.4.49) - postcss-gap-properties: 6.0.0(postcss@8.4.49) - postcss-image-set-function: 7.0.0(postcss@8.4.49) - postcss-lab-function: 7.0.7(postcss@8.4.49) - postcss-logical: 8.0.0(postcss@8.4.49) - postcss-nesting: 13.0.1(postcss@8.4.49) - postcss-opacity-percentage: 3.0.0(postcss@8.4.49) - postcss-overflow-shorthand: 6.0.0(postcss@8.4.49) - postcss-page-break: 3.0.4(postcss@8.4.49) - postcss-place: 10.0.0(postcss@8.4.49) - postcss-pseudo-class-any-link: 10.0.1(postcss@8.4.49) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.49) - postcss-selector-not: 8.0.1(postcss@8.4.49) + postcss: 8.5.3 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.3) + postcss-clamp: 4.1.0(postcss@8.5.3) + postcss-color-functional-notation: 7.0.8(postcss@8.5.3) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.3) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.3) + postcss-custom-media: 11.0.5(postcss@8.5.3) + postcss-custom-properties: 14.0.4(postcss@8.5.3) + postcss-custom-selectors: 8.0.4(postcss@8.5.3) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.3) + postcss-double-position-gradients: 6.0.0(postcss@8.5.3) + postcss-focus-visible: 10.0.1(postcss@8.5.3) + postcss-focus-within: 9.0.1(postcss@8.5.3) + postcss-font-variant: 5.0.0(postcss@8.5.3) + postcss-gap-properties: 6.0.0(postcss@8.5.3) + postcss-image-set-function: 7.0.0(postcss@8.5.3) + postcss-lab-function: 7.0.8(postcss@8.5.3) + postcss-logical: 8.1.0(postcss@8.5.3) + postcss-nesting: 13.0.1(postcss@8.5.3) + postcss-opacity-percentage: 3.0.0(postcss@8.5.3) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.3) + postcss-page-break: 3.0.4(postcss@8.5.3) + postcss-place: 10.0.0(postcss@8.5.3) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.3) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.3) + postcss-selector-not: 8.0.1(postcss@8.5.3) - postcss-pseudo-class-any-link@10.0.1(postcss@8.4.49): + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-reduce-initial@7.0.2(postcss@8.4.49): + postcss-reduce-initial@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.2 caniuse-api: 3.0.0 - postcss: 8.4.49 + postcss: 8.5.3 - postcss-reduce-transforms@7.0.0(postcss@8.4.49): + postcss-reduce-transforms@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-replace-overflow-wrap@4.0.0(postcss@8.4.49): + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-reporter@7.1.0(postcss@8.4.49): + postcss-reporter@7.1.0(postcss@8.5.3): dependencies: picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.3 thenby: 1.3.4 postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.0.1(postcss@8.4.49): + postcss-safe-parser@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-selector-not@8.0.1(postcss@8.4.49): + postcss-selector-not@8.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 postcss-selector-parser@6.0.10: @@ -13697,22 +14515,27 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.4.49): + postcss-selector-parser@7.1.0: dependencies: - postcss: 8.4.49 + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.4.49): + postcss-unique-selectors@7.0.3(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss@8.4.49: + postcss@8.5.3: dependencies: - nanoid: 3.3.7 + nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -13722,15 +14545,15 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-organize-imports@4.1.0(prettier@3.4.2)(typescript@5.7.2): + prettier-plugin-organize-imports@4.1.0(prettier@3.5.3)(typescript@5.7.3): dependencies: - prettier: 3.4.2 - typescript: 5.7.2 + prettier: 3.5.3 + typescript: 5.7.3 prettier@2.8.8: optional: true - prettier@3.4.2: {} + prettier@3.5.3: {} pretty-bytes@5.6.0: {} @@ -13892,30 +14715,33 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.24.4: + rollup@4.34.8: dependencies: "@types/estree": 1.0.6 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.24.4 - "@rollup/rollup-android-arm64": 4.24.4 - "@rollup/rollup-darwin-arm64": 4.24.4 - "@rollup/rollup-darwin-x64": 4.24.4 - "@rollup/rollup-freebsd-arm64": 4.24.4 - "@rollup/rollup-freebsd-x64": 4.24.4 - "@rollup/rollup-linux-arm-gnueabihf": 4.24.4 - "@rollup/rollup-linux-arm-musleabihf": 4.24.4 - "@rollup/rollup-linux-arm64-gnu": 4.24.4 - "@rollup/rollup-linux-arm64-musl": 4.24.4 - "@rollup/rollup-linux-powerpc64le-gnu": 4.24.4 - "@rollup/rollup-linux-riscv64-gnu": 4.24.4 - "@rollup/rollup-linux-s390x-gnu": 4.24.4 - "@rollup/rollup-linux-x64-gnu": 4.24.4 - "@rollup/rollup-linux-x64-musl": 4.24.4 - "@rollup/rollup-win32-arm64-msvc": 4.24.4 - "@rollup/rollup-win32-ia32-msvc": 4.24.4 - "@rollup/rollup-win32-x64-msvc": 4.24.4 + "@rollup/rollup-android-arm-eabi": 4.34.8 + "@rollup/rollup-android-arm64": 4.34.8 + "@rollup/rollup-darwin-arm64": 4.34.8 + "@rollup/rollup-darwin-x64": 4.34.8 + "@rollup/rollup-freebsd-arm64": 4.34.8 + "@rollup/rollup-freebsd-x64": 4.34.8 + "@rollup/rollup-linux-arm-gnueabihf": 4.34.8 + "@rollup/rollup-linux-arm-musleabihf": 4.34.8 + "@rollup/rollup-linux-arm64-gnu": 4.34.8 + "@rollup/rollup-linux-arm64-musl": 4.34.8 + "@rollup/rollup-linux-loongarch64-gnu": 4.34.8 + "@rollup/rollup-linux-powerpc64le-gnu": 4.34.8 + "@rollup/rollup-linux-riscv64-gnu": 4.34.8 + "@rollup/rollup-linux-s390x-gnu": 4.34.8 + "@rollup/rollup-linux-x64-gnu": 4.34.8 + "@rollup/rollup-linux-x64-musl": 4.34.8 + "@rollup/rollup-win32-arm64-msvc": 4.34.8 + "@rollup/rollup-win32-ia32-msvc": 4.34.8 + "@rollup/rollup-win32-x64-msvc": 4.34.8 fsevents: 2.3.3 + run-applescript@7.0.0: {} + run-async@2.4.1: {} run-parallel@1.2.0: @@ -13951,16 +14777,16 @@ snapshots: sax@1.4.1: {} - semantic-release@24.2.0(typescript@5.7.2): + semantic-release@24.2.3(typescript@5.7.3): dependencies: - "@semantic-release/commit-analyzer": 13.0.0(semantic-release@24.2.0(typescript@5.7.2)) + "@semantic-release/commit-analyzer": 13.0.0(semantic-release@24.2.3(typescript@5.7.3)) "@semantic-release/error": 4.0.0 - "@semantic-release/github": 11.0.0(semantic-release@24.2.0(typescript@5.7.2)) - "@semantic-release/npm": 12.0.1(semantic-release@24.2.0(typescript@5.7.2)) - "@semantic-release/release-notes-generator": 14.0.1(semantic-release@24.2.0(typescript@5.7.2)) + "@semantic-release/github": 11.0.0(semantic-release@24.2.3(typescript@5.7.3)) + "@semantic-release/npm": 12.0.1(semantic-release@24.2.3(typescript@5.7.3)) + "@semantic-release/release-notes-generator": 14.0.1(semantic-release@24.2.3(typescript@5.7.3)) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.7.2) - debug: 4.3.7 + cosmiconfig: 9.0.0(typescript@5.7.3) + debug: 4.4.0 env-ci: 11.1.0 execa: 9.5.1 figures: 6.1.0 @@ -13969,7 +14795,7 @@ snapshots: git-log-parser: 1.2.1 hook-std: 3.0.0 hosted-git-info: 8.0.0 - import-from-esm: 1.3.4 + import-from-esm: 2.0.0 lodash-es: 4.17.21 marked: 12.0.2 marked-terminal: 7.2.1(marked@12.0.2) @@ -14018,6 +14844,32 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + "@img/sharp-darwin-arm64": 0.33.5 + "@img/sharp-darwin-x64": 0.33.5 + "@img/sharp-libvips-darwin-arm64": 1.0.4 + "@img/sharp-libvips-darwin-x64": 1.0.4 + "@img/sharp-libvips-linux-arm": 1.0.5 + "@img/sharp-libvips-linux-arm64": 1.0.4 + "@img/sharp-libvips-linux-s390x": 1.0.4 + "@img/sharp-libvips-linux-x64": 1.0.4 + "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + "@img/sharp-linux-arm": 0.33.5 + "@img/sharp-linux-arm64": 0.33.5 + "@img/sharp-linux-s390x": 0.33.5 + "@img/sharp-linux-x64": 0.33.5 + "@img/sharp-linuxmusl-arm64": 0.33.5 + "@img/sharp-linuxmusl-x64": 0.33.5 + "@img/sharp-wasm32": 0.33.5 + "@img/sharp-win32-ia32": 0.33.5 + "@img/sharp-win32-x64": 0.33.5 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -14041,6 +14893,16 @@ snapshots: figures: 2.0.0 pkg-conf: 2.1.0 + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + sirv@3.0.1: + dependencies: + "@polka/url": 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + skin-tone@2.0.0: dependencies: unicode-emoji-modifier-base: 1.0.0 @@ -14207,42 +15069,42 @@ snapshots: style-mod@4.1.2: {} - stylehacks@7.0.4(postcss@8.4.49): + stylehacks@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.2 - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - stylelint-config-recommended@14.0.1(stylelint@16.12.0(typescript@5.7.2)): + stylelint-config-recommended@15.0.0(stylelint@16.15.0(typescript@5.7.3)): dependencies: - stylelint: 16.12.0(typescript@5.7.2) + stylelint: 16.15.0(typescript@5.7.3) - stylelint-config-standard@36.0.1(stylelint@16.12.0(typescript@5.7.2)): + stylelint-config-standard@37.0.0(stylelint@16.15.0(typescript@5.7.3)): dependencies: - stylelint: 16.12.0(typescript@5.7.2) - stylelint-config-recommended: 14.0.1(stylelint@16.12.0(typescript@5.7.2)) + stylelint: 16.15.0(typescript@5.7.3) + stylelint-config-recommended: 15.0.0(stylelint@16.15.0(typescript@5.7.3)) - stylelint@16.12.0(typescript@5.7.2): + stylelint@16.15.0(typescript@5.7.3): dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) + "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) "@dual-bundle/import-meta-resolve": 4.1.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) css-functions-list: 3.2.3 - css-tree: 3.0.1 - debug: 4.3.7 - fast-glob: 3.3.2 + css-tree: 3.1.0 + debug: 4.4.0 + fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 9.1.0 + file-entry-cache: 10.0.6 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 6.0.2 + ignore: 7.0.3 imurmurhash: 0.1.4 is-plain-object: 5.0.0 known-css-properties: 0.35.0 @@ -14251,14 +15113,14 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.3 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 7.0.1(postcss@8.4.49) - postcss-selector-parser: 7.0.0 + postcss-safe-parser: 7.0.1(postcss@8.5.3) + postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 - supports-hyperlinks: 3.1.0 + supports-hyperlinks: 3.2.0 svg-tags: 1.0.0 table: 6.9.0 write-file-atomic: 5.0.1 @@ -14294,6 +15156,11 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} svg-tags@1.0.0: {} @@ -14328,7 +15195,7 @@ snapshots: chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.2 + fast-glob: 3.3.3 glob-parent: 6.0.2 is-glob: 4.0.3 jiti: 1.21.6 @@ -14337,11 +15204,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.49 - postcss-import: 15.1.0(postcss@8.4.49) - postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49) - postcss-nested: 6.2.0(postcss@8.4.49) + postcss: 8.5.3 + postcss-import: 15.1.0(postcss@8.5.3) + postcss-js: 4.0.1(postcss@8.5.3) + postcss-load-config: 4.0.2(postcss@8.5.3) + postcss-nested: 6.2.0(postcss@8.5.3) postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 @@ -14415,6 +15282,8 @@ snapshots: dependencies: is-number: 7.0.0 + totalist@3.0.1: {} + tr46@0.0.3: {} tr46@1.0.1: @@ -14423,9 +15292,9 @@ snapshots: traverse@0.6.8: {} - ts-api-utils@1.4.0(typescript@5.7.2): + ts-api-utils@2.0.1(typescript@5.7.3): dependencies: - typescript: 5.7.2 + typescript: 5.7.3 ts-interface-checker@0.1.13: {} @@ -14479,17 +15348,17 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript-eslint@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2): + typescript-eslint@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3): dependencies: - "@typescript-eslint/eslint-plugin": 8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/parser": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/utils": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.1) - typescript: 5.7.2 + "@typescript-eslint/eslint-plugin": 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3))(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/parser": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/utils": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) + eslint: 9.22.0(jiti@2.4.1) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - typescript@5.7.2: {} + typescript@5.7.3: {} uglify-js@3.19.3: optional: true @@ -14542,6 +15411,11 @@ snapshots: universalify@2.0.1: {} + unplugin-utils@0.2.4: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.2 + upath@1.2.0: {} update-browserslist-db@1.1.1(browserslist@4.24.2): @@ -14550,6 +15424,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.1(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -14565,32 +15445,75 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-pwa@0.21.1(vite@6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1))(workbox-build@7.3.0)(workbox-window@7.3.0): + vite-dev-rpc@1.0.7(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + dependencies: + birpc: 2.2.0 + vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + vite-hot-client: 2.0.4(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + + vite-hot-client@2.0.4(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + dependencies: + vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + + vite-plugin-codeigniter@1.0.1(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + dependencies: + glob: 11.0.1 + picocolors: 1.1.1 + sharp: 0.33.5 + vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + vite-plugin-static-copy: 2.3.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + zod: 3.24.2 + + vite-plugin-inspect@11.0.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + dependencies: + ansis: 3.16.0 + debug: 4.4.0 + error-stack-parser-es: 1.0.5 + ohash: 2.0.4 + open: 10.1.0 + perfect-debounce: 1.0.0 + sirv: 3.0.1 + unplugin-utils: 0.2.4 + vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + vite-dev-rpc: 1.0.7(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + transitivePeerDependencies: + - supports-color + + vite-plugin-pwa@0.21.1(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0): dependencies: debug: 4.3.7 pretty-bytes: 6.1.1 tinyglobby: 0.2.10 - vite: 6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1) + vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) workbox-build: 7.3.0 workbox-window: 7.3.0 transitivePeerDependencies: - supports-color - vite@6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1): + vite-plugin-static-copy@2.3.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): dependencies: - esbuild: 0.24.2 - postcss: 8.4.49 - rollup: 4.24.4 + chokidar: 3.6.0 + fast-glob: 3.3.3 + fs-extra: 11.2.0 + p-map: 7.0.3 + picocolors: 1.1.1 + vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + + vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0): + dependencies: + esbuild: 0.25.0 + postcss: 8.5.3 + rollup: 4.34.8 optionalDependencies: "@types/node": 22.9.0 fsevents: 2.3.3 jiti: 2.4.1 terser: 5.36.0 - yaml: 2.6.1 + yaml: 2.7.0 w3c-keyname@2.2.8: {} - wavesurfer.js@7.8.14: {} + wavesurfer.js@7.9.1: {} wcwidth@1.0.1: dependencies: @@ -14785,7 +15708,7 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - xml-formatter@3.6.3: + xml-formatter@3.6.4: dependencies: xml-parser-xo: 4.1.2 @@ -14803,7 +15726,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.6.1: {} + yaml@2.7.0: {} yargs-parser@18.1.3: dependencies: @@ -14853,3 +15776,5 @@ snapshots: yocto-queue@1.1.1: {} yoctocolors@2.1.1: {} + + zod@3.24.2: {} diff --git a/public/castopod-avatar_medium.webp b/public/castopod-avatar_medium.webp deleted file mode 100644 index 910a2b35897be74bd0033302f526ee8ed077802e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10163 zcmeHs2Uru`*6tupKm~*ds1Otoq${9;NK^y_M5IVil!%BlktRjjC|wjIBBG!~DIy?7 zl-{CL73o!q^xhImNWx@t$L~MqJAR(?pIe^$+~>c~y_4+8?8)pkd+ojU+V8s-tA{lN z2pH)b>H}_fQ=JT^{2LfJJ>cLedOZa$ivHrJWwD2 zY+z$&-@w8Cv)9Pe!N~srhal(HUHgu437Oe(@Aeele>?8wMyca@pHSwlWNEd_UZFg^ z+eAdgw#)31mD?+?u5sYtAx$ma6MFgvCk>4(EYDhDtym8>#XeeAMy(di;7E1tEy{i>*_y$`P$ar(b?7A z^SyU?WOQtNVsdJFhO)H0vPxZ}(HTGWVguO!L#;nG`%N!FM6V4T9PAw2KlNhU;D;1; zK@QGc`?$6qGvl`N6xzN2_D133aWC^e@kptelTnwwT6wogs}IXieya9|X8&V~h5j#T z_NQY1(5n~N#Lk9H9=jlb0hmWqW8|BVlN|8>%l`{wFjBdnHeb0T=s>pyEwrGq{IFYR zshG|91tw3^k*r!x^|)A)i|&Id~fvHJhT&}#$bNArcq;bvJB|pHuUUO9~OXN0ZZ24lI*`5Hne3L zM7qnr`az2Y5Lf_R5knW6Q=$1AFi%Rc0B$rh75{6c@<=K^+YH9lMlrrW2b);{^cW4@ zp^8A-QgAvl)M0qI)!^3(PNLPI6B!AWk?Q{)GZT&(ddV)O!}gKdg_uA9Sk>G+TZP`L zA$p@^G`X6QUZZ&ChpN+^v{yf%w8LAODpfByM58Z-%U&W8q3S7O=9N_ajB>J|?m`^I7q1n_Jh3V!Afqy0LKe@*~&jNZ7`*s&Xeho1zXNXxjO%&e|SYFwJ|TU=_Pj^Ye-q#Cf4XXs3qw;81Cy8BJkb#)Sn4d+Ff+&lH>UvPAfv*Ro%tmXe3IxK3*h1#d|QRUCSHXx*HQWIfHLLJ z%vq&ji0dLp8s}c0cr2(qD5dI;(?0{WDIOIE3QfrwEFj$8fCaoT!NcsbG^^(_p36Fu zE$i~&*UHg@uwX12zI^~g+e8>PfTXr#m>aHvWHC%t{_C`-Yy1wTbZq}s7ErY>4H<go|=TN#f=3bL|iOtM88Q@?0$OaGfCBCFS}2xa+2z zIh6C%M^0c{@cvPz7oNITX5|9C5SI{)HJ?cOQtwx2C+e*L-w{Z79SI54l}}1`XO)J z#VF!VJ&i+z(1{X<3prcKt3ERXpMJU2m}zbA|1!2~-J0QZg7axKuqC~F#4y4r1KAo5aKtQySBmpBaQ4vXW?# zZP~!N5I6X?we2Cwt7I|@s21s6$k}zjt@9uXS3dt8+n=J~TWP_p&}g_DELC;>)HSQ# z8JoLzj>1x+_f+6}?rr7QG*sNJ)CVnAb`I`bn%jKA@@&6VN^Ux7n}22vvDdwhAmBc( zIwRzyb=5S{A@i#Rd*P(0BDib*!u1G>aqW*Cee9cK*Zu(iwre<7-wPZ!o)ESGQE!s8-iS=zaNsxi);E?X5%j z!?%lv4&zD#ao>9hl5(@EMV z>fA?Jz(p^xJd=iP-`S0rd45Wf=L={XMUnc(+*wk<-6E9zodshnW;@hN3{H%C%MJ@hLq(@Eq-SK)cg*x zP$>vAYIFOht5*Z6@^uftPzn&AXEECm*!|TKTVlh1I{)Ssd?Q(`P(|fUc3bkY$rRJH zTVCNlO*6N7L?t3cq~rRNikhx{^m_q$?AJ}Z#opFcN|=qu-<<+awr1zF#ahox69%)m zUfOZx*m*nnY;Sb)+@Y)J)|wEx5sD4L`nOl(hxxb7Zdbf_q35C@VBZ;<2f$KXBrAnw zZ|c*N?W6dZ@^WvF^wI9i6BXsJOir6k+b^eRrinzR*<{D#_7E8oc6!3tc62Pk9sUR| zN%<4tDnk~K8WC)QQ~akp2k*e@_-P3-1e55aTj6WSoJ{CEL(ahOMWLE>jYQw2MPvr` zA#Ub!MP2z}Y6F62gtA#ccOwaoRB%Dp;0~R!Fff-KCC_T&M^x-t>g{xa1ALiHAaE~78MAzByp!}>;=Z{THhlHiP$pXl&gd&38W7rfwk zhHuQQKcwq7p)Kc8XR*;Ma0k6`acyu(XCKXNUB*AT8ZEMN$H$X{Arnq;TlXn*kd`~9 z_i1e3Aey$5m!kv)KrqL1{ zUHM#gJ8b*j>(94d@Jfdzv7a&gEZ{P@l@_7XI&zo>X#$ryc4^c5xLX8-1IL&O3+IjI z((dLQS5^&7;j)VxTGk>H@7%pE-&GO6T38yes^f}&ml>|p_-;1o69GNzy-f{XXr8ro zA3BT03cUS&YYB_abp*icGe~+Mj?vmLx{c-BZ-e_@9Z|z=#$*tvVA;cflsGv}wrE1WK6l`Xk2ai$NUsu(%q z4X9-uq_QK{y`u(M;9E_Z!U{7kbjN?bRc=a22Tzilp%_&dzx;Cv?OPev6F$TCd-*4n zwxBUQScroj{E6gj&cKSnrXq)tw_cTkwnF%(QUv@wgY9^4c&YDKNE7zimGEdNR7=1) z|BTwKN+{C0C-+4wI@#DfwZkGKx)+}2Fhgt5m6&VhFAd};zw{`Od7lm9YdPB+JzzO;9zKH{ehZ2|A1Z<5igMY|Qd7a~8sP$}21t{U(-X9U{*H zUM5>3=!g!|vN7)+5L$E#BwB)#)$84KbhagS-2FGXmqu zLrH=??pqSQY?OOG`IYm5cIQeSv#h~)@;-aHc0~;w8*d)dDWE(bXEvp&B>Q+OeIpG% zZ77;>;hjlKXb-C}XrxO>VD3?@pJ@3z1*$WCERLrdFDT9Q7EF}A?#IoD?6E~%AF z7U1v$v6yrgur^Jq3N5)p)pL<=re0ix7^W;BBpH%}8!8Y|jBK-u?O=omTDlDNItTOJ zkF-3EVKUswY3s^saIh>3Aeq3z7c^yha`n#rr3v~U&!!H4QLg>B;jBw`p3{zeJ^6$P9i^yumpzoR+i;7(;+uIw<@ zjay3)v?Mf3k%<{O6BOmubkLC8f5GdXRxrs**i6qGZG@bG-wSH+2t!O2o~EmP3}H-4#t03QM(ET!SU*^} z7_P12t@P@SgZGGQ^cM^1)4Rf?nD2Qop-D^6b*XfUWm~-CaO3V?nRp0rS_YGz^f>p)s zEMT&tegacfVkOvT8H}=3G*7-UF)9($rySLSBd?&NaVrY`jxe(yr1WBjr!WGfDJya_ zbG;bZoC}s0A%$2B9M~UX|C8xPcp?j>IS~I1jKE~y6a#aS$siCHbV8Bf)(hx3;=gUG zF>4D5lE04tc>ZHFBzAVZC=y&8K*+K+mS!O zyhj2@F`~{enlc!v?i$Q*@#uVmkJA;tZ7`cp+>`xd%kB4F#|CNG?I5&P4As-j5L+EY zd`ik1`U!H0vkZ>GZ!=UM(C@xlq=RR^)ZunP^TX0O8z;uu&ZbyDIKj#7g)<6;-}``n zKoflmn*>&gjqo$rTyQiVSp@9T9I4+aq)6yUrn7#-sg97^4K{ak@*gzFncZsAy>*&f z7KKdO=E+fa2D=ksZ2<=>m!`>63=d^4Ywy(C8B=lYY~=1U=6*#o^C8J82#(t57>$|Y z%mRm`e?~!erAQ(cybTGQ+Bhq9}e)HAHg&(bklUpth@-1G|esijv9#?G%1wyT7eAD=_r z5I+^)!l$XpROo<(;ja?=X<@IAGZG%bJ6k_-+2r)Zd^Skc_b_A(VW&<h;@( zwo$ivMyDR@W-mGNWyZwCOz&pwpjAksXq}*0%==>q2s~q^Ck*^rEd4|T&mWU+KN+XH zJ@KY^X!dI{>G&4Q1PT(IEuf?XUXA(~aB4zzYEQ?QZUcL4T(DL=;*HjFoh^K>rsAbE zzGaPD8(wyCbxZVX1ut%1j3yMFzVpImYY)x-q+3v(QNdjMP1P~*hMPb-~U^~d=H~OYK3`b zg{FSU6_?yS(RJn6rkR6!u5zE1M>TnMfs-o}m7}y|%0WZgxuJEuz)bj;>rbp-hR3#- ztY?#OI3vh|mNcmRtn!sEVxHaog9Y;|EkS!|2ASm%;f1z0ZXv@WEuf5$;}DcGBgLc*0Yze`6xn?X6Pl_Soi=Cl9Kl`4-&b_p;!0u0$*emZICB3)OF^}3d(c!YUDRci! zk`?G>5`^zL>ZN9k+Yi^W0I^q;sHg>PnVi#CI`W@%&dd1HGm55*W}?`q3^IZ>Y*9wn zA3Zy_{^}w=VGE(1G5SI92!`}*T@BNot37G@7{l&(CPD#!?sb@Lj z>Fl`p6g7%ob8HYcd$#BbeQk|jlVj3JHUi?}9>%31L6rONdu2bNQB6@>k7V6KuYI;) z2;rWr&Rvp9PY=Wm)WgX}+)YOafHk;DTUY`=!6* znSYm6WDli1`JVDA7}Y$3sj8e~7E7+HM24WMS%CJua{Q998SW6I!%Pk`rp(rrVtVGD zYpZaKC>dBNZaDEG^2W}wJoA0^o;bt-e>!G%*%a6E_?>Wx`m=Q?i=0vUShxKDl?j!tRI!Yhz7&lNw5{`;t_Mqu|iF=s0 zNn=lE5vDBS&J;ogt0_9Go9>L3ILLX<`iek681As`g@XPvHHMm0YMvNMUd8zsv2qFu zPOZF68(f$5kN=c3KCl+KLN6fkf15b@xYfAvI{#rYZdvi@X4DYY>VtLv7dLOAzJ7fV z^4E-urp4MZYcI_;P$SKs_LYRls$@@JmTbp)uLPf*N{wk*4*kW%H~iBzw_>*D)kEwh z8nfUg%vICvK?WUm{I8l*ov(x`F(G|bk&?5A6hYH~JEv8#@p<1Pt1j=0w2IU zt{Tkgy{t?mI}M!7IQXvBzSIC=TY$ zG_VFqw#gCwp`8k=3PV^ZZjc)ZvK&wu$2~4!B#;&0lZ#<2U~Y%V5>X9JKEXVUxThbp zVASeigqM_CQ2#q-@GPV)fCHAI?H##mP}AsS!VUN%lJPsW$^zE;ir_mjmCulDj-9xUt7(K*M$O&A!?|WZ)MhxG zGFL5dhSK3@(rIGnbL{ z&7YE2Z~F1im*PIN0QUMR;-z1kV}`f4App4!y*`1@X($HW+F%2k1m-{QnL5(3>hb?BswJurl-v;Eui~ukm6u&e5>uJUlmgat27WO)qD@L)`-R?dcb`d z5T2|Z5<^9{n7=pwMO8+5Srm0ZWemJMiQs8)EQH+644)^hxO6X6gd99K)uk0YCSui< zr|ZdaSJ6v;=}o32{w0c`w!SCmdIzlR?`~PpeV`%7d9y%Zg6Q(-g9B{_CLhz-@h&4Z zEsyM*ThX3X-+xFH+_Y2d$jF|XL!w0NKU_zfX>tb8XAJdcTDq{4DjtL&5l)WwSBa;{ zCX6iAV;cQie%zZC#I+rGqe`g5ueLBwE0~ORw!w>Vg3zcI5($fjy?L2NG!&9Y^g{-K zy7?|0JN}yE0r2HWLNQ*j9Q?(*`$wafSp|1C-* zt_`U%5DsF`L^7gv7{@=E`_Ej$Bdvr>VkbXwza%!}dk<0_J43`>u>o}vjxuWzliqTw zSy%I$Wp?rpizl~{j?2}$>*v4zIz?7{mK5o&XP!MT^Wh?ChOLaL<*dS z+U9LHA5s;X@!lm+b9fmtfj=`9R#M#A{I5>*_SZH&*$8`<#EKdxm3X{ z_wvcIgC&|8WqPRb!oD)h*>EW%UI8oP6Xp067I0lu!Zd8}?t5YL1BhO!gVl^ z{E5IbT2Y2?DC^2tx8v}V`X~rL#gOHP>kQ>h{B#Dx-Yw@QA5ZrUb%WY*S&OK82upLb zqu6}H{y4~rW0A@?UXSR485y?2=j*|PU#cPyRTfg3Z#60#UM}@=R z+oZ(i?h$t5f?|t=$9#uc>sulk1M=#p7Y!_yvLUVvvr^Q&MB_!`^G?LPN8P`BQyn@A zo(DA7hV0D?RNCG6*wx1Pk%G*(uml;?6WrV><=Fm5X12jD?{k%%(cq(T_5DGZcWF5R Vg=_AN??}4bI;960J2uw${|01N^XC8n diff --git a/public/castopod-avatar_thumbnail.webp b/public/castopod-avatar_thumbnail.webp deleted file mode 100644 index b0625dc01a1ecf4bb7cfc5668943ae4edee9cf61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4879 zcmb_fdpuNMyWj2^mkA?8Mv)YyNH>>>LYf%&A(wGUg&&bSG3Am{nh>HgMQ({9ba`bM z6H>|j-VcM^W!z`R%s0wTo5a8z*fC&i+ZWD!xii*HQ zM8w1;w~L8Oh>M79-?3dn3Lz~mEee;B-GPvmL`WmH2I1j@bod2?1q6fQKEM;N{`tqvMcdX!XqN%;uCHs-npBU zn)WC?BlB@qc5dFw{DQ)w;#Y4ftE%6=d;j5Y4b)GKP0gQMzI1kV_w@Gl4-C@A#wUJG zPEF6uE-kODuB~q{n5->aJOJN+!1@=mKjD&qaPji<^YII9;o{*9gM?3lUtsqUK}ka^ zA@@M3JzBT6A&gR9R8WMKwXNyW9@jfyJ5-L+_AYHf`v2S| zkPKHO95o$I2LZ0=3lJE4#oXIJ9{%G%Xo%+qX+<|u{SF8u(C91NL;@THM!z7r2MB-G zDVoT1kB$-n0hA{Q+|vB(T5ha$8E#B72=L-2Lszj9ARt1eO>y9gND!brLb2_T^p6IL z`1U0l2(abOfIy>F%OT3zye6AN;PTgfTbM3W=E@{e+gOTvC=iHK!!ur?XyG^XK;XqV z6$BVsi6D@am+BHX*NoLfw+OedNAY)H@P8^_e`EdISWfvr6*B(@Nxts83SqdLrFZ$6%Bdr@AcY=2f5R9#UVXvqh{7X4;LJ-T;}D8{oj{`15$X5|sN5e!2F`$&+3|6->y@%q=Vfl{ECKU*>*F% z*h2LjgX0Gqe=e9xn>THSZuZ7ow(k8{tYOjd<-VMYI4q?-uD@>J6PLI+iN3%khOx$=uaLQ;!Lc&*FQO44wpx*cN)WhH$~LD5HDn(9 zRXWk%?7fFTOWpmm9JTR1CLZhRz5jsO!6)79npkh^oKx3{jj}TvFGtpXd}GiyPftT8 z@GJGm={2`;sIjIye4+uT18awbe5RBF%#>JC&etd)FbD!@#=S9gw2*zLMM8Awu*>UW z)Dr}0Kv+q7-}71F@dxVa>#>~dkLV@eu>^8yfve+?ce1;JmU-CjZ~m_b>@0;(@+(r) zoK2o>$}noEidyuw1#+Q#kpmSk`cBHIRpH^D_Z~w|B)k`tC!<>NuBKh% zN1hrgP`)InPB)od{AxE+*Lsyu^^d*nxNuFDQFDR5?>1@ecUMn=gr`vxZd%`hZobk@ zJqJW)GjrfWogLNXY2oKDb&8CCN0)acaMxR31TEAok=!^hV-$Txq+;YSdDFL$mNJ&# zE6kLP9|}@=F?>Al@b$h^rkr@T!_hXKkcGXZ3SwmpT{Zgn0ylk*wmTufzov&MoHM5V zdCX4lEj&eK=uKGU3~8d84X@Ngk@^{hXW#U!w)D<6Ebl(5MOxawJ|88~-}iOo9h~Z9 zSTHlJQ<>mVBPF8V8K>y;@PdCd#rngl`?UHGG9N?Pk`YEHoo%nSw<&VEyVK6(N0F;Z z^z)5+ch|s8|L~+CbB3L7zBXxaO?_f{eDTd;$0u}MAvWwy!{+0v;+m47iO?xCkLxGf zWE35*7y5U0Vd^mT42wE*5V(Aexm!^j1W4Ktl~u=F!p_vqw}OC*GG%0K62E$kgh$df zZDGd_^~8y9;6+oUG|;><5@jSqHzTLKz_7JTMa?MGqtMNxQ@sq79i>EcyZKpAf&Lk2m%)gjH{?b(SfjP?&Vt>>xI=^Awaz;==O7|;CN>P7@-%k1Jif6@LwE84sm35oXH4O; zpR`43ouWK2qnM4^x>1hROt+PB zc;W)Z7-7k?B{-d!;Ur8$vck=CJHJI35IxXs2t*k|0~Q@-OTMQsyB4UUvt;OA*6=CZnVqXY={4*u_6AP5ndVYL zG3~X&JtgeRtqlbM8+svy!0Qthv#X|^s}kPJ8dE#CW6?a~;A@m}uu>HX0o^b3*deb<69d^gU&>tdVeVO}y|-1Q#u zyyrUiCv~IpzkK#s?k-9$mla*AL2#5u2?;u1^WVN@RMQ&MA0V8mM*-r-OBm{6hh1{n zFY<-43_IN53F}9f{-$$cZrL9M4z?jlU4(%b=h?#a0HwHfy%p{z_9o-Xx?r}s(XgLq zW5$YimiX7gdh{1^(zk#QYZMl?k7bbJ{oLC=(l1`b&&ykqBD%jr!USL^M1=p1UMwxE zODv>6FiZYAXZy(`?@RU@ta+^sIdk4QH%a{)$`YoQdviQ`hL2h6-n6n5%E* zyk|xAL-td6wrR62R{2(o3f$TNM;BU1UJ{&Y&eprwxK_HJ9ulD-HF)pb_}~MInZ2dF z@=3XUg*t@ItKr!$LF3VD_f8)6KGuG*srJq1y`F2|9X_Qg8r8bBZ`GqRR!8eJu8mrIW#MQ5!C z2c1rD)6&v5x%6;qa-YBH1wrL*;{LM5^_vW*F&sZTVrjUtc;@&HmTE;&ZEHrZ&4v^+ zzNOl!fR>ih?bavkL@S+7C*+LnvziQXaT?}CL-D#SZ!-3uksJELU)DhZe-PtBZ>EkQ zr#mTP6N)ljW3^pgk1D((@|W4~rXGpT){BPiYSO-OWb?NhMxAT#{dJ=5x%gU)Yz`f( zejte@_nqEmko9@J%!!7(8B(e{+SjDHW7yHmFVE*#c1V80r#Rk;{7zT9f~E$^mCo zdA2#0XZB^N(uBmUm~Y=VeEF5TUfpEHxyYlhU4p;TR2;d8^q?wyeM%b}Mt(}#@ml}s zk0@mIPlu5OQE3gEVKmN#I0hkqO|Vtdhx`C_6z@Y~YH|;OKv_8m%;<&Ghih|9#YDJu zqae_6&y~1|yP6qk+MFEed*{oUm~!VK@`>Q(6k()^2{Iv~kNWJ`xC6wgi5d%gyvtO( z-E57Ks~r(6o;DiJ+??b=%$&w+O>R$ZebqF$X$k`Q$mhgrp@t|BxQ7!sby4BHYH~?nDiZv=x-fO4xKXY>j_S_AG-F;J9IWx^|Y6YRD0|;eF~|s zMZr{FH@b&En@!+6*E|@b!*=Y`b8b15t$Fb%I>c?r`b4je%6RcM;SHTBw^`fD`*xkE zv*Q}#0v58bDg%oTYE+vas#AX%R5vtug~RWMT4aGhGV+g&pb>iMZy+%B3*UloATaFT z;#W3M6LmCKf{sP=WX@MUD09L62uA%;=PwOls$)T!FGsDcahlI?Y76k~CS6d}Au&4s z*yz)T=&ZMm8#BeuWUE2hlrIzlP(fTY7ZGGTulPUC9)g4G$&|3My~qpn{PJG^Jj>-f zD%R!2Cqx&Xsd|0z&Th7f@ry2|_ywEm76^;H{h=MUv>+G97{&UuL^IC!0-NHb3^!KpZUV)z`cLyvN}yf#DN zAzrd%JN##o8p#yk%qXvr_3yjDq-LM6v24B^h=K=Da{r`Y*g9%pAC>RZh(eWCCqKag zUUXRB$&Gm$N`|$#K!>rXsC-oYPW{J-+n>B02_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6Cz%gF%CtQHg;`kdaxC@&6G9c?JeXR-jiwzJ&rtCZHSH*f}`4 zxPc0`3NSD+GBY!=FoRqTR9y>{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^8U8vfTD)_Iw|8dxWF?CUyA#To)%HbC{`T*~ zi-}DY(ZMM!Z*@%)CVqJ?dXX!5io;K(`SBl75%jSkNJOw z_WukoLayxppkx*DcmE!nh`bN$mWkU;v`K0FvbJt@^iO~Nzv(CcGd%zGd;U-Pkc$Bk z_uN-RM&EUvuT^m^kXVP*TdqNi%DGFLC+E&t~*tN(8`Q2BycKhnQteB_(Byn_FT zn3@SchC;8#-(`P$ZIxczn zlt;I?;6|wKrv_VpTh_Yxisgr_(pyV=oeu8tOhc|DryVTIe`vrxcgFqgWo7T4%T4{9|JL+TEPwEi{D-Hx-wR~i)A@Ks+$Z&_Ny6;9 z^PfLFwU9hhufIZtr}XFQ+UbAo{xjU4@t@(x(-Jw+5A)_f+8gh`AztuiCV!>U5x&(j z6I+T37&X@InUnB*$2sjR3yZ)>^NlaZ?qAD4>3I5$Imad+{%!I5^z_I6tFB$&`sMz@ zUsE6Y{}kO)|LZd_N*qK&@iUpf=KR~JuBYR-JT@x+Ua^_uVM z9=fg!>h9jP$tL^T)erObJ_1IjmF>3HWpP=TTvsibbo-{ur5$oHT@tH4H$+Rmo%PfH z+p-Tb^}PR7j%F{3(h&bX^tJtF{U-k-{++t1E2CD;w&r~Q zHmS*3eQu$IT+l|vvW6pOl}{axTe6D2xV9(rO;^4D=luHmr1M;_ z_X++;UKRCvSMIaPI=i+^I+|ZC?DE@Y#guK=o-l>{Ep!zLKOZ*T)a~Y9&M6oA*s@2nM7`0)hyU-c%F;1tk=b;?kQS9Rz_@YD7Q?MdXPf(nP6BkfH6&Z{73G*>mR3{LaidbMNoo?{7Z$ckc|Xi}owP zsdqy61OS0R03G@P(5QflriqrinW2d?%FSi3hxZvb)P)24mTa2qa?5351c}h6%b23f+d-&bl4(KNs3l zfQtpP1npyl2m=gU5JoNt?FAqN01zl$>XzC+3WR|^MrIhxHaIK2LIo$l0AXZgU}D@F zHNAES{W-wI1>LddfI2g`u_H{_2XQbw;Vz4aMrl3Lq;*bI-pMy&8=QxCCm+9K)$Odiho3*@LcqnqpvcQnSEB!MH6}4B zIpt>Rt=nlixZHbr`2~gd%gPBAm5-_(S3i6Hg7~uG)$7JK61lyjv#YyjXn16F?6>iW z$*K8;#iivBE2|&Zwsb)N#!s@oDEl{ETy$LwOiYYSuq|B>h5))Taxp>o9AMs|ZVYqu z;TAp^&VtZLxLaDkO+?;g4(a6E3g;0$G$b~^CGB@*-zO~MPbvE%?5nOGfQ=DCe|d~t z02-Lnlgz1OLgO`JB=0bQ2F3tn0Av7U0Av7U0Av7U0Av7U0Av7U0Av7U0A%2A!GLc> z1K>i=X^;1oWPnR!%N`Zr-s7kK-}l<#BjbF6IXDoSzX%%EoAXg>!D)%-6zS|4`_&0T^Y)1B5A@4u0eY~HOGGmRaxC9-VuE9!mjjUCHs3EVg()b{w? zX+vrwS-fHqm)&%DQRE0Lw!Jaq*Ah`@_|lY$R`Ntn%$q*RoEYFgtz_TTf@9V1DwVdg zvPE<4U|C)>)vdieimQ=q)jJ_2#U`CGIrhq@WzkZ)qI1yx9-yv;FoJ;g!!dwP(17-m z7SqB~8t}mWPQDSuHsa!SlE&N<#cG?&Q@o7+3)85(v&|)rA3KG#Y+Q$e`ONa}Tb;Z! zej(x70ofO$iN3nI0vYUvj<%^+jzYw9uVD&!Bl;E+_Op+W*El+A*0&2bom8u=Y<(Uc z*I0L8Ei12DYUrLqz+Ix{E`y}8>qYa%j=oR1ybcJya>tg>)Qxv|t$*aGNn6JJ>J8^<*7M)uVq`|cI{MT*kqx`IF@NljkVa3>9L*C`3iJ;Tm|;tYz^CU-6} zys=-PN`zZ#=B-jJNKP?gDdJb;kS1oZ@LrMZj+(b__5A0HVok&dRma3GJA}%#&;aE{ zeLs!rmh*3vr0T~+g)j{TGyp!Hshqr-cJxQ-JkcbNo z?^Lbz%hnruV0v;M+L7cI=*j*vW)gnbC&R^AWRSUxBK6v!xx_R`E=7en-STPXSl#cm z4+%|4XaQ%?Uz0)p%M7v%d!k%TT({{%1)mPRkac}Cnp8JtgAay`F+c*vP3&l)!NQf%haywkXM{Z8(8>FvU#`h zwRGdt?8I*VdeO})xqo3DEg1zBs@GZoiGI;wy#uFGw} zgq69u#3(cG_Sv8T{O!fl(%P@H3~Tj5(vI>B!z!|LTx`ou5cv$9l*t&<#_=+qERg^^ zrum{O!CH=mP0w2;aG%kntILG^X;gmSzYxxR`K!v$YQgKDiHTkOru8ON`SZpAIc>-5 zBN6RCtQ-hOa~{}~A$pQRcX?3!@{V209_USMJZ6+ZjYi)p?vqW-tjTh9gh{&>$G-O@ zUefiFwG$?bIGnuQ9o8Vqov_Ab*KTx8hi9yqNm9a*&_p;dLQ?3rPOZ?jYe>5CBE@u|D{s!Iq(&%K#qSZ5 zS!A27A5q*ZGLG>c{ zu!=Wou;c4}{-}T@;X993(@MpgdbjPs3_U5YM{Bk{4tXS+;o;sjvsP1xl(t@3R*|7} z5hzEBT@S~I$#zkUCf16SJF<6=!YKl`pZY||d1F(&({9!luJ+;MqHvlXFT9+5Io98{ zaCpof3Q;%|r#SFV{;`t{&r2o2T&jeEQDO7`fFbdFVtTCU!_%WS#VW)8`_}f>6f}xH z52#eHr>}h#U1Up(hXYUN4EdY5=UzRJv^I-BYV*_C=5Dg-`->QS)Z0nnfdQ*mQ^Fd9 zjhUFd{;sg|=Ul@CVd;D}RLqRr^W9HQ3h0!+#6dV6IG&}nx|kH-O^!u6-tfFO6*I__ zU$~hwJ2&A&1K1ocE?v95lQU6&Vf+{1HNESUZZnGyt=1Z)n*2omrQT1(l-4C;8uEQqe ztx|@~5|ewi$wrY;lEf&B>UGM}0|jf!Y)Mylzfa!u*M5 zfo=ni^1b^v_U_vMaWQ+*da#!?;~Qd9w~&cP60y%(%jkQwBQ!t(N9Bo2-T2u25s&sV ztol?zVOUpnLB^TvTGhO2t!TeEj{c4CO_O`mlPf~)GBiM{2S7Nm(bt?#Bn@Ca(L}v8 zzR?l?rAcs5$n&Wb8jw7Fwpiv%H$roSpX+h9tMHr<5fN7wr*D5rmbOXgH@oceZMN`^oY#%iGbcno-PG{B-x z-5{@liVuy*{Qj7Jn{>j!ob%V@+|M~DL8!l^#iZrCzs=2ye_7j>J###sf zv>%QE#A(0*=P3}xU!L|ZpIN3gen^eC;J!-ldcz_v7<-ZG4+*;B5TiRGefzC(Ze0bx_Yt{8&nCq=spo!MWMn-N zu+J%&^_mrW7dO2*^05Uv^+&%0g9GSHz&3y@HfhydO5oLK*3#wCwjchd@!jl!|Bt{} pgA9NSfDC{PfDC{PfDC{PfDC{PfDC{PfDC{PfDHU?8GzBc{|S@m4xa!3 diff --git a/public/castopod-banner-amber_medium.webp b/public/castopod-banner-amber_medium.webp deleted file mode 100644 index 234ec5321256f258ddb767995b21db1e8ede1dde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6764 zcmeH|SyWR=8h|SsOIReBghhp5KoLP@RY8nM2O5x_7)1f2Ae%ym)u1^+6a_ps0@4Vr zB4HgCfhH`1h#-r0qcn;va@f@d1leRsAi0xt&vA}@=3!>~%}(9=UvB;NpZe;4w+iZo zhJk{um5mjE!C>Ho@Bxqjm|41zE!-SkObNc;dI8`0_!1)YckCi)hllzH`4VhwtqHbH zWNSi%iNQ8q0zI5|#y^ZfFemKYg@*cpB|yO8qAqMmVMj@!P)H;SEh#A>C5x7ol|jqM z$jK`z$jM{mWn>ia3Yhg+91bVDPDvS$RaV5}u%aR`gm4ZLC5=K!W94Mzu>W&|9s`UN z>;U310=5~zF)#!M1~mh90AMH~s)+Vq4F(skQ9@Em8Z9GCs8j%O7yj=G=n_BrkA=N}Ln79J6KjuCa~a_p6>aq$VsDK}GpNV}Du z!OqUf&C4(NN8wKuoXV=|ng_K_Pnug=+nzrA`Q@vw*WEq6eQ!oa$KJks|J(S)o*%*l)@fN z$|`S^CK|fT;!cKiqVbwWBU*DJwBO18JFuAli|jMlzq#H3Sp-b@@emk50<*T->;@#M z*e#2a=W7+8W1AUuUUayq-OO4{b!@U*mUjoy%FZBpr}N z_UdgIP*2^Uv??0J{)NFY)yxs~R7wU(uV&m2ZmP|WMt?=Im9zT%Q<1UztC`&|i+`24 zdzD>PzVF8z{8HI{ZhlZ)!`R`{%qJht>PD1%8V%F7L@1w{w9Y-H)m+}9X+tayITeM7 z?wv>)tXn6)W|l0_tm)cRGD=I0-_KRcSt=P(B1LR>O)k#1U+79r`-UDyz27!$jyFb3 z<<|H0X8z^?fy*1n5XjVr0JD0fd&n&_ER^NvGSxv~*Ruo)XO#pO+W1RDW7cbgH#^t3 ziL28Mt%-$>wdF?Z`9BP_BwnsW}LwIT9U{`P-c1lVuhv!{8WmJ_MtA4bAjxF=&3?}9Gbhdk zv^+@}$l%`5FPdiZ90XQA)Vj&alSKoI?vFog?<8Y^^VbtF^Zdc!+@povnT$uNr=v}S z!T7VnKu_o=s2uG*o;lu%B;B48%YoeX#5*n3u9&BT8AOShQD!j}b%MiSORCY%KH#AzIQAhu zo}7j0TeIIi9b!1vGmh_<>-N3cZYOO50nWk9r?-2YXNMdfmOt!5HSa{nQgp`DO&mWJ zbQn|F}IwdMOfUiU?+rvrG4m5pU6?-~p$C20f4CtUln3r>~E!@AwcWDM!T zu9N%O*()iu$nz$*^+p*tKYA1xF3^t`Ka%Uty4D^jjpl7b3J$!l(Rp2%*M*N;EL(|E z%*%D2T(5+ZZMRAPoN7pW!_6BsPlmot(& z+q^v-L2n5i!fASBgs||(1sf?n%i{}%x_T3%jPl39n|EY?<>nc$?JT(?N&SBK zZPSouG%E}OSKXJ)&c}VsvZ2v6gA9uE2??|A-JKU4Sy>y8+1-kNmf+wd*wlcY%JS-4 zEj{(3g=St|zp2BI{cxU?5E85A6N6toDy9B&CIn>c8^+a0GcyoyuX|Ks_uwtxwqagi zeUEC+9MS8U_ncUMInkrIu%+?A5#DGSX~e&pk7(obA@ITZi^+MEf?p!JX|g-E$j^Bt z)%%ZZ4rbSN1;6X^iFPb>Gc5I8Ug0Tzqb#cFyL%#%!9U4=k5+qj_3 zmwS1(H+{`+-W;Cr=iHu^d=1wMN2kFO4I-DqJe?M@Ki7-PB0jo%ZkopMp>OmvXm11P zxfy(5X8)VI_H+e8p8{!M69iO)sz>iwdYA=i^~;B7B*qGtE-+3yZv0`@F~Ur(N=bUk zYhN|GH1c&oi^!?gD6Ock=q421>R;Z5Ff!KZKL+I^ujEMKGV^fsSNA{ZDoPFAy_!%Z zMI>f);i9I#%^_YP@&h_`dDQ#k6!?RFiMm*yzNcmGFd%B{7!4p z8!9_mmnq6|W!DV$5>*O0P7<*=%dK6VDU*J1?w$`VZg(w+^k3Z=TkEv|)|o60@g9gB R5IZ1tK_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6C!?fzg4PQHg;`kdaxC@&6G9c?JeXR-jiwzJ&rtCZHSH*f}`4 zxPc0`3NSD+GBY!=FoRqTR9y>{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^89sPvEZWavzt*WsV*%4BhJ?ZLtqjvtLPV1; zudWkeT(+xxt`v9ecXJ+dlYnCp8sC-oZ?l&w|0cKaKZC>X`M*Eie;9jhZqYr753N(K znbl|Q+NH2fWS)omoZ(={SaeX&GyIAQbuT}rVU2R|1{YZSQD}CitR-?|ryZ!g4`wz|90l>WND`IS|}rpxcv3D$gT^wd~B z$>HUn)l>KFt{48{_AmOi{iZv&CY_$D%)(G{-lk7unw;T9Tc>$O#aEA=`ew811w%+< zKxp^A)jzIQJ+Mt!)TO~d30^HWH~Pb>uSpj^9p1}O_D}5N^KYsXHt%X(-pXmXNpNTJ z?Rkr~>Dj4dmKRDq-L#{`!a}j0`P!blGc-Qo! E02IkvfdBvi diff --git a/public/castopod-banner-crimson_federation.jpg b/public/castopod-banner-crimson_federation.jpg deleted file mode 100644 index a016c399eb9457e524450d431a2aa2e77e89705d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14859 zcmeI1do+~$8pq#ZkQs*2jIhPH6e+pnQtr{XRi<%mldPKLGL=gq#3W)jyPAq2iU~1E zNV&@;5y}0|CQ`X=5k?rsoKfer&%XT8Id#@qd#(5PzR&OdW1ip4^L^gWZ#~a%4ZDXu z1PEK2T9^V52m~tNiDDSLXmx?%j)wyRH0ynqe#t zV9hZ8TIyT2VSN0KobWgkh|$OFQiZX90ZagHF0QqkGoYNCXB`g@6v_kRrrSlT0m%nm?%n21cgSeeF=n{vj)n;&%?uy5`+t){^P-} z1d!_>44!^&h%CT`gm5Dv>}o(703bXZscUNgIUrn|7H?cJr>sAK{brL8*sbPhKZyock1Q-TFa($5G!4{4miCV&W2;HY+G@ zQPR-V(%!jC$7B!I)Xdz%(#F=#-r?Ynj)Y^b$KBjLJWrqT^A9*17!)3HF*53>OXM5T zG1S<&oAC)Lsdv-T>Gv}3KYE;(Ur<<7TvGL{y5@Op-HZCR_Kwc3?w;Ph*TZk#z8e`G z8=sh&ony>@Tv%LUuIYjR+@EEAQT7L2NRBQpD3lw@x26li6~HlWB$P)+jaOthp6`gy zdRg_bbtvQO$+=JY<#t$qKp*vOg^9{*yxugkChe25uM>9Rzf$%^*l)V}00C|Y=jCxD z0YhMEf~=TBGt4n2E8gJ(4a@<^0LTEy0LTEy0LTEy0LTEy0LTEy0LTEy0LZ}Kf&uj2 z0^o)I#eKYJaqu{MJtofRZXOYIpq7j5g>>8)1mFk)!a(WzMAV_(~TcZraxXLQh6 zwXWbM#l2DGqhI&R@_sfD+88{54sCe5+D>}0n8eRY^kV}C?WDoSX8-Pi3ReApIN)EN z)Bwa~&(5Fp??MKPz_|1{3XaW^7kg<@LUdS_F<{3|0v2iAed0w~bFIR_pls~Ls^DCRN4iD*_U?haQ; zMbxUKGvNU7R>UCDtEs(p@F5dXLG`6hhC&~S9u~{1TuS4$Hz?K%y_rca-Km!EtaNy4 z+T>0OdCp6EvB3XH^uD}nHK=p@#=M;?N@=^Dv6f*GH z9zEHctrEqEKUE(U9dQL`TuWbEMcvBv`T2GXp;W^)VdsW3kG2t6qZpWMl5WHR>XIxo z^_WA%gaoxI)3<$KU%UChi=kjh51u}ut>awZOx$6DnWE?9Zme-_3YPAr#0_^W+;5mc zM2S|Uzc`73Fl%KbQ~eF!?ECP%s2tNKS5j#K>6N`27Ul9Rd4=ehKOluGGYv^FASLnT zCz-oi-!QEa#~noos+UlH>N0Mx&YnhO#P|DQkx57Rge?Nl4v=r2Hstm+msgaM`py2m4(XQGMBBMdBnN* zo23&iwiD{Ah7EEyzYk85V})ld9d`TZ*VQ~7s7!f>A1|0~yzf{=uCk}v3iu+h!8H!i zxPsUzU3!?rh+afYPQ#8`$EzmA$M>hFiPWI*PEs;4dRR}txx2!{W1Byi|9}&(9Nkr` znR&?J$`kz{uc59pm5rx`A*}`r8^sW-5q7~|$ysR_+C6%$Q& z<&<<5=5?Kxd-8tWm3>?uD-wHDr$a|83sFq33FInyzQpDQcJM45zhJ`SJspS~n96;=J6%`*XL$2|rM*Nh16C`^kBB5=7dtmzV5&9~vq- zpjG+pVZ6c*WseX-OY_-H$t8J_%z>dK%~*xk*Q0oEIoPYE+VtAmOrG7JP4hcvUQiJ0 ztMk*f!dberN1Q(plHNu14iYD9r8SlHiOCgSB9Jx7nquq1fl$=w6<6b{$(@m~hjp4X znF%)FQM#fNbla<{M}EK5h$&P)`dsn!d392Anm-j?mS^w%;J}`T)n!OtU}ekXQ`^VF zD1jS65XVi&0{!j>J6;WGR#{BLoD3Q;vnv#51LX-t6YVov_cRkvO^sU-j#rUNc1pk0 zj6d{#fM#cmK&5Wz`ThQ^2P@9^skndIpV=M~518AN(F4UxEwl7g#89V>;(ANVhJ}qn zE_pLNcM^J6k5JU*7OpX+XR?$&Y}FlSEMH9ObGu+SHs(#tZ7<()*eKacnNVE0Jm#svk?n&8~Qgmd-zFD%@O6ak&%8Ig+%F=AnN>^sQB*`Xch3 zMzMj5nXa7X&Oth%l?}k{U#_0ZHq=awhfi=?zL+V+Z0S|ethkk>L!m^oFQHsLCjI9~ z$Ru*hMFXp($w5Y&5#N}gWF3*unHBv+0XOJPAGtCHL*|)w_4JU1?r|gZ zy)RYuU)2?S{?=)HeJqu|2q5B&t_7smZx*t&Tr+MCIQgC zIR}t5A?95+aK>i*8f`$K#b)fQ57wWWF{*Ed3+aJN8sGq)$G`bJzLt8f&a6s&?p1w3 zrzWCOjIN5YSxXCV8ajT&aN*WmY6EFnd(=qcO!pCqSbZM1KniPQWgMO>w#|G&10r{* zt~#+g7>3KUV9nuMjYL9HaMK9}tqKc`W>~=D<0Zp#_vJmbLCuXQh(e$I>Qd@^5z@Ji zGY6nF_vqyj%I}ut61@*m3DG^BIuOk0P7O#V_V}k?8=I3}Zd_{NP5eVhLQ2nz2^7!f z8zx(0HQG*hCw!M|d^L<9ePF&p20#Wt20#Wt20#Wt20#Wt20#Wt20#Wt20#Wt2L6@| IaI<^=0TdoX0{{R3 diff --git a/public/castopod-banner-crimson_medium.webp b/public/castopod-banner-crimson_medium.webp deleted file mode 100644 index 4858928320164ed12fc6146d0043008e6d98b3d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6759 zcmeH{c~nzZ9>;G;LV&OZ6GWvXf?_~W*^w$?3kWD{lqRB%MMOYQ5Cjy6D2qfXA_OWf zVNs9$hH)BFDpX85yPO9{sDy3Mq9QKh>@oPLjwrTE=~j& z53&>Cw7IdK0U<2%@bSQi7{X4%_H7DKAFu~-8JXo)x$K~WK{ zfJQ4RtEnm}W0cWoRdrR&Dl86%Q&d^4p^nv1!{V^Z4}rlYdk{!@BvKx$gjT}-=>dHY zFmf;(`1f#_Hju%<;20S69N+C7&V9=?E$kS2LF=s9$CMBm_Ol4fn%wlHe ze0wdops?uno#K+xvVT-n*W7>b@X_P?hUbk<&779jmtEbjc&~fj^bWos`Y_BFjEs&6 zr+%9LJTp5tzp%^&1Mq)g{Yv&bE{udr27!PhP|I8}nJ7u%7zA>?k*u1nC+cw6DsAHg zIjmhq{=H}NIwoF|xUa*x3hEn72R90r(S9cTV_@h1FS1|3{>{}36yY$*$Ae=43Cxc% zh?Oi-r5%HqCnJsY45SW79gsR8b>J`Iz}2@~&39{E$n;4h7Q#@&HfyT)v9ekHhg#DO zNsrk~aMY6)PoqcD^>3`Mig$KdyMVc-CjCu+9BbrDS{7 z|J<%|jcbmISq@BIY(oxZwBLrd&y?4G{-mXcje(z<-P1=ewX3PvF!yX{Y685@CHh6uSuC%T$!Ng z)8j(pvO|&XO%<WijrtJb#dC3my5$wA8xM5$ zscgH@c|RKeda{z5O*wC#(W6alGkOO*NT1B_wk}{b*(Ls+z0gj#2w{BnK33k{Li^Vtk&7hjH|Z$FwArkM zwNn>kS6BGj^L1Ie12c@$rPLRZBqh`FHgvy@ul)uE9Hsnn>>CKE2waS#y8AFG4NaL$ zi?W}-Tp)fY!c#BM7y*gK-`+lU6JMfTy(3b+D>y%&958OxZuLc3hviYl@wH`<8(s-* zEUPm|Ja{#=A+nqw`i;;x^eYXTJADj8gl;_7b5+z9tiw>dqDFd2iCA}ZHmWPI{_Un~ zZl8NEkSy>oA2~}(Y*5MVjlCYm$|}cmGt8dub_6d+o#KvLkE{q`>! z2Y0gBUvz{NJmHfVFOx+4TS-s%*`cP2AyEJN!~#lXaS;N%itXGFagOXMF>%^Tu=UCM zT952mx4N7?4|A@WE42!`83IWw3VtAhr-(!l825w#`T%=GlQb~_0a|7j^<@3~z}m)m zM^SO2#z13C>7lk#S4?}*P>|l|#t5c>HCfXqPG}H|A@I2b0!eoVrj_xtvk<7T%kpqX zriISJyCiMg&wHg0U~d|%j>o--Hy2I&hBNb}=`GpC&@6YI~a#Gg%~)Qz#y z_Lt@Kdkeqo*tNp_!FrOxe+%w6f6+O8E*T3vS59Dt)dhOnN21FI6V@Ow)QBVBOvB1^ zO{i4sJC|ABHmh}Orv`$~g>`pX|1i*xqcK3$3|~A_`0<5^ySF3{O$t5niSZv(#SKw> z%Y7Oh_LPx4C0}lCYs+WTBMZ5p+W_TF3B9e>(rnulq?!4a0f+_CNY6m(fYbr015yY6 JIu1Z@{t3TtO2z;H diff --git a/public/castopod-banner-crimson_small.webp b/public/castopod-banner-crimson_small.webp deleted file mode 100644 index 1291f73b30bf3ca227cb8665a89064dee801c99f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1675 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6C!?fzg4PQHg;`kdaxC@&6G9c?JeXR-jiwzJ&rtCZHSH*f}`4 zxPc0`3NSD+GBY!=FoRqTR9y>{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^8GgR%(pW#=e!Wwd#sa2M3<-lZH#KyQ^gLP} zx>|1ij{vq!FXxqH=pMdv$KcLIXUT-ccl!R__>)<`p_Km@d(3}^`)&UjxZZDhz5K)W z<~8XXHvf*jdYkD+P^H4W!t)GCyUv;iiQg(+d#3w|$t(M^yEDG66$!TKnsM{;?!aAp z`$hj9ykh@Cw)j6oo%A0~VUO8o4ZY^4&CUz5oH%9whR5r#?Oh*q#dX^J@?xo|^7?%(`d_3A>Mok0c;>^+}PJeu9)=r3*g>TzndTyWI_BLM^7 zu+`yrgFmj?I`MU@NT35NB{*v1tN#qGp{vbQ*b47FYOub~Rq^{b--*b(PM;68%(%&M zXXo4VfzjgjLSI(z=n0Ovw42PjwO>D1OG15f8VuKZHvY7=Eau9TUWlk zc3)`AYLAwH8+Y6qCO2+h`Ks!geb=7)zuS{?-X>Hi)>QT?O3$b&ytHHfmZN_^25GYg zIG$KMb3-3rkLtN;OQYYd{BbpEbB$w)v`wA^JX$%=AOBC?%e(ksNpSIVxGUWLYBFcMO$w%y&N@ks&sn9BWS7GI2=&w#EW{RkomDXV#TE|uO5BZ-F6_Z^pC%;B* zy}E{`mcgdYTMUhi%`NbjRy(b22z&Pt9ru6ZL^|wt#NES_91s{39CDlz8h-X%L}XNS zOj7cNi7LimQ17DTPn6Ou8t z7j`|iO8KkPB51S3%+fkh6@7v2uN^af#FKU> zqX@X$JK?&XLV${M!j)$8*kKijAMhR!AlY)KxgNZSmpMc1CqhC0)sBeo4Tg$313(il znw$;L_ITJngAaU$f?t2(cG4{)iQI$tf`H-;2vp-P+U`K1_Z3JQ_YF!-2>zp1e`iQZa1o7AeA`iQ!@z z^izMd0+Q`54+}bzBrh+aqAERXT~Q^FjlLFOy$hv$BS`z0ufJKWisU`w=wUCH;eH5& zETV?C=Z^@szv}}9g_4EP23{X;pU&^29T;8o?T{1NZ@UJ2jEr;k_cN#7^@(v^z}Vx5V-TT(xD9Aacc;iOq(HVu$xC# zZ_61WK%hkwH>ov8Cvi9+fFgt%Q&dt+^VBYli$>`=f zPO-5rt0>Em*c$tyBQxBk^>LoBT+D0z=!B3N2&`p0YCDc>qD*tVQdGJ~)eePn?rTXZ zQ~8){%Kbr41j;s*%uGPwN3Pew<)Ue7`)7Eh;nau+fx&kthNU>+^Lr~XOT+`rljByF z2W&>Kr-qnHji<-#F&Og8MMZ_1@tx5&;#5d2xh z_oO((#0!0;(`-jU?7&F0@e~D6BRm=)5Lo@l`k?IrsdKl?b&A@9lWUS*nqflLUN9*g z{kD0<>*606q#AmRc7iD$y$A8ZFjh_-LWwzzewKrr+?-5O+X9DRU3D1Mt-8}Opq9=q zy+=24aIH~r4$XT+Iq-I5b}H39F*||HVu#v$QcPm&_p5rm2ssD=7pGx%`AznDMt+Bh zi*3AP+3~fY$DUI_2sGJ4W{29vmCQPa>K1e~7rG6cr5Lmt$lUVTTq{#(B9c3N;vuoV z*Xal{+TJC;nN5@oow#g3*r2WA#P3##bC+2;yj0AU_~nyn{8OnNKKIAh-Lg-Nx4O*D zL~`pE@||Kjc_yw9@S|y6IwdyE6>WIOw4k-9DJ49hoD115(r&?$@?Z>}eIv!<=QyQ7 z=jy1JTUHs{OzHTn{+c`?Co@3Al5*8m=3}OxeODE=`-rr9n&s2E`6za$nsNH0Dpy4k zH~B<4t!wc4@Y||6!iG%Bmwj=jGV*A|dDBOs*%r(MlltAQ>r(Y^?(*06Eu1y4(Lvig zAHEP#F3c)z;~m@H)6Hl){urnAqjPU`#rMe}ve}13)3*8S8)lf9P_^Vv`sZHpDN=A- zs}LE>m9lx>J*C>Gf4#QGb}L0a;gyO51EY9_rkHo+vYyah@9}=&@R&DaL0)6%(aMS{ zz30hOrA967EX59{CsR9Te}i|VU)-?_LVL#J3z>}yAp#Eq(v739>^jHLDqHA{+SJ;% z5qtg@*_gdDmOcAw*QD4cSw~G)>!{ZnM#!tFaH8xcbL`xXdElsmHwJG-S<;MWc4qA) ziLTMY_G!f;YTi5ES+mg8Uh%vkE zzVJZtL)}vYGGkzmU3IZLZ&kC)JnPC7npRKY&!o4v zg&n$Fn%A`XXmWtk#tfiJG*8FgWVfX1e?#118q#Sz9(qIT`6C*pq z-nVu^;AS7q#w3nkpI>bC;GmkLV_60D-o%Ei91gv72Dhr0Ot!yjF3JoXKhLB3uTcH7SztLNaCAOTM1Grqe;=I{M_m~o z6UkqSjypG0ibY%eRDwqX*#5Q;5P8>K3d!pd`e>rKrpgnJI(FYEY#%P;N`k-&$1SXA z+F%w0dM)ECY$0Hx#A6#Eo)X*=U8Ar0oH|m|yL2{A|3<@B-RbqG)Tx#s{ubvNXW+(0_bvJck+IW?7r)RWCHYgo-u#Jg zC(Dz`e>c&D>tH{@48RP)48RP)48RP)48RP)48RP)48RP)48RP)4E+BvfP=dK0XGl& Ao&W#< diff --git a/public/castopod-banner-jacaranda_medium.webp b/public/castopod-banner-jacaranda_medium.webp deleted file mode 100644 index ffca50ee8a1371bbddd3d89799c5f2c568c7bd24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6716 zcmeI0c~nzZ9>;Gs2!t(=uqh?7NDvVSTZ=-V7+G9cWQ`Tsw+NI?kVOQlwP7la2uKbE zBq|IL5g}}~g6!^s>?n#j5Eem(eao9L_H=sY%$(ECKXVSvefRs%d%yR4zt4N$d+$3J z>WAI}DceIfhX4!)1D^Z?Ks>PD(vf1}Wanr?2=LVo{@O2qa7J&RE`b;w859~ou(7ow z*xFO92xp8)ntKW1(O##6qRtXb318@nLPNk3AmH$=&TmM5N1;(DBoZYmEG&c;6BQG~ zh+;6}64FxQ5?BcgMoLx+D}%%1@nVv4^0GL2X&fH6l>~<1--ASnpim+>af~?b4>zb0 zV9_vhL?Z&G0^nE}0tlu5RvBA74NJfWV;O$f)QuF|lXkQop%y@!Lz^(XV7&&CJTa zmcuM$-MD$HsQ9lXcPpzn)it$s^-aw!t!?cc4mL{#c{lq0Z)4-!iOIRY z&o3-4Ew8MuZE?W>;uF@dWdFv6<#WN2NCZ-Niwg#i;R}I9qIT&CNn1DwdxguWkdo23 zFB#V>9*C&wJATA_M|6tHsu_%^&uyXolkE3_rTkB1zk>aXYY>PbVEm7VzydN@@t_mS zxv6EuLOKvg@D2nX5O_e~0f7hp6douwk}aG}yfFeEvTt%O$idaxYYQYIao+WIm8}ps zkilEUCFbd@zRzFoD3A#Iznyor4)OA|_)c#DpH@u8xZk_Y;NbbER^2tV<^ehck%Ed;fAsWcjnqYZ=yz zd%@G#xjKutqrLSdtV^zQA@F^`;-w`_UKm}^g8>0_bq)l~nt5yFQLEnuDZ8b6){U*O@Ds`((}MEn zr^&M{ovo>%pg;T0Qfxro!7cLwS z8f$g*#HL+Bs$P@v5Ak_DT!|@Z{W{SSk_{IXVFvSi`VInekCG&4@huKEMrlzD_*cbm zqg7SOw`kAUvrd)jIr=M;=rJw)Plx5n3Aq6u*-!PIQeA513qo^Ac_oQc$!X1TxfQb~ ztcG}n`kOF<7XC8oj$U_LKNqt7EtKOM<&EDpl9Kv^&G4xW<0ZBsEvjxq^A7k&BD=;cAIWDh=Ihvg)hOtFUt4y&D3lK0h}^{}Cu`2Q4hBiC}bkEzc&m%5U!@t)A#=|>7{-_Ok_ z&kt&nr|*+*?&ryj@@EAf9xrLJG^5{XT1zR>_hf8R^w6t;*QQs?AAeAAA=|b?;F}c) zJii8khWyQ7@`xFEejEY}@>-8=rrUJtagR66Ew9@n<73pP8My^s7miQS`)^x*%AK?- z!>`wBL!+IS(7w3=fhqe5=Pa(F$r_da=&e*^3(5XIhHt>v#@w;lDRp?Zs`h1uL^2{z~Yoi{ew?$o|FY1}}>b{i9z zxR8$O+?f$K&wSfgVr8T<^dkO=<3-i$D(6iSIvG=6wJq`HHn_vXMe_yXX+IzDxK>C^ zh*s-X9_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6C!?fzg4PQHg;`kdaxC@&6G9c?JeXR-jiwzJ&rtCZHSH*f}`4 zxPc0`3NSD+GBY!=FoRqTR9y>{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^8GgidX{>+IyhdYD7sDuqgn_oZTW{o36($FX zv*}^;Ig)V1zDcb8t$naGo#ouVU@!I)cl(zXd2Q}H?HKdf{!R7%pPy#``z!xp zNvz?Y!!i>)QjUeH260#OXLU&e6NiyW8eQ}&8gQCfvzG9lwhcjucc;YtYJR2 zq`0yFR=&sxNtk=+Slae$^2dLLrDkUPa33)~!LGD9JF!(H(1Ddg%$5O4=VwI% M7+r@xX8(T^0D_Mv*skVF^1V2vi9ON`Rs)qJm&55JI9DmS_MMWD`NeLRbXEP;j9si-3sY zlT{!fgr!i*CSnm#i^vi{#ImmfBC9}1UeMR-d-c52zWV;?Ide0=GdVN&-nrl3?{j~1 z?{K@geSiefj9>;pAP~Tu_XD^bV2_D4ZXcOsZJ_ApqUrIqtDB;~_BJg=j33qA%T19$ z#48dlad<`lojPh?Dth}ldb;}tDjF&3YazHV026=@3SB>V1;#tzf^awt21f`8@C%9{ zL_~xU!os3rQWBzKl48Qb5;78!(nu5vB_h5-Rt706g+w9OJAv@=+Q8sKaJUdsR9F=G zrwjK!ASno$hxhP7HUm&e2%jW`TL+*400QSpU03_B0)g_z$S)u$gb?OcD3t)95I#OA zjBkC^yxJkW`v6Q5E~TWsk6+r#QDCz-QsQ0!>xnmRCZ%WG$;`@Tv?zoz~IpE z$mrPk#GBc<`Gv)$x63Q*x*!1Gds)9J`wv}`JY7&2j1MNTt_uPU;2EDJ46dZjFSXA~ zz|mWJv(7hyNaNVFqFNzkUF#W?lTQmmMrB9;mN)Ct-YNTI!ovP1WxomgpsO1Y;e+sk z$0rG3fn_2cQ_$L6`+$x~g@Ok90Av7U0Av7U0Av7U0Av7U0Av7U0Av7U0Av7U;BUcz zkCG2GjFf37?|adQ9Bc_Es`oBZxj-Pz9{YXD>XVgce~T-DXH+6wqJCm|AOK7{9kkEj zgSO%byx`dZFG9}vRT?8^t%aR44_M*s3)`4_`gMojBzlb&$5^{VDP4DQzJs+z_0Z;= zpOC#h_c?dat%ZKV*uvw4vm+{%;=Lxd195S|GJS*P_H<0H;->?Y&rCemB81DU-zg^| zaTTAh)ICg8^A0B**k_k`HR7bAuOYoHS3Ys2ZiUAvCOs4Z+F$m8ULO~*La$~l+k6ya zidhotUVIuJ9zHVdSV3t}59R`)OdtAnCfQ}MaNyyMID%>%Dd=DoV%!%iSUr)qbSeGf zEMxac^fSsa_v|CK7+Xd2H$7rB>5jA}W!qLCRT`k7iz!QwGA4P6r&$R5I{tV8PNA*QC~P_q-!;kwlBH<9TVslvxqzVx z7r18;RE-QKDJ}|^52Kw^IOhml;C#~F4?SB=8HRUl8@(11O3~km&}U)+f%a)rEp7wF3n4cs8{6Hw9A69fTs0_U%5HtSL8a7Z~RC(%EeB3Uubms z;H!>`m-`=d*oPI_KCEiE6B{XB=c`xekwjjxsHMC1t#zXPu9VteJL!rcCNp|iY2n9P z#d2Uydm^50-Pha6rj8%YcPL_wwoNfl#5hL#b=O|@uGhgDq>&R!Hd_#z8HYsouQ`RN zuUWR&bf~s6!ZMLoU%^59%RZ2w`89(zV%zbYF%EeJ&`6z0j;x3pw9uI@yYiM~=JlX_ zWu7K{MEICgZ?p@)@r9Z-&%;!Iv-XT8O^YB5bNj<2c2@u7nVtrDZ)LSw=ka;wxolPE zVjoM2o4r?`l&7v4dbP6NBWPBBjIB8!bjB;A)ESYUKEhvn0wQ4zvljH7Ud2JW{xs=e*4(>yADvMu+pL`gzSHb!uU@ zN$2r~xD`Q`IdyZWcB6j5A%?D331>J$Nt71PV(=mAmGYn5lY_c7H zOT&8gnJ<&%8iwsrKfk?YUcSr9W9L^lGwO$rSNSS;wxN)F^(C1v?&9qz;e`uWlh%^q ziVB_4;WOsrUQFw!-F8E}O|2VHGPh_7*{2dE`N`*J29w1!u2r+nR@r=aWWPVXC${|C zMyyR&FvTwG`L^56qQx689(8M9!rtDRSK8y9sN3emq8`_eN;z<;LA^MVV^(2LANXa@ zjU+Wo!WVuv&sq;Y9VSq58Bb1>B#%Zo#yR&oNwXP07XMhv1&+aD-73@M*st0Lqm&|5 zJR~=S=4!z;7_r1ck?b(R#{7`%*yc&Yr_}pJ2IFn|jgik%(ZeLth>QhT^-6y{1P^DeC6^RX+Wtw%7b@&1kwuhaEZ!E@$L4@5U;5Zh!VQ zHo=m~xT~RX{^d{?n9~10udq+0boGvukZrdDHr3%rY}$%8)#jF1%lo%4h;Bbz#>%g| zTBiJ3X(IcV0!sXgqfPFZ>vHmH0%kV!F;6ztTSC|yO5(KM&Sq-}Sj_KHw!=nDjWKP{ z&2~kf$wWtFa)FDpot%&?_Cvf%rF^h?fB{`2@xw**OtL+1?NZWvBO~ruc(+M;yN$da zttxd5M|JpcizEHSVR`Y^9MWfh;d&P*w6u03Cx*E|zafv+6!#i!JX`g8&D_+k5zJ8H ziN&kaen`r8E+8~qz+Sajreihdvxk6>6m($*oG-;#VXMZO9yq#67sVq5(ow|pu zk0$twpB5WEv~)W54dvUzrokF!J>pW0)qBHNI?S>MPQSDu>P9#jIe!chz^+y5g-Ess21(zY8hv82#`{~`#@3*k(moqsw zqwT~mPeXUAZK^wER{^n8IL!q@ zY7FGf9K-5jj88!+l?l-Sl9OsR9*L_X>FJ?cR>?KJJ3?|DUMJD%K;jfHYUf)Pb7=QG z)G<(p(*0|5`0h;3GJ}ySbb+;fsR{jYJ3X(*+Tugaj~wAVFtHWQ-X+?j0&iLFq6e&L}ems zP(({P2g4Nsf#J}|gi~-8gMfg_smS3BH<2rE1J2I6TQya)Tl>crn|}SRU)Ag1`&EBl zf4i%pE~p>iTxl*e0E59mkn{nN1lTw*ob0?k7}n&leNi`bfS}^x0x9jlOv;o4>FI%lD{BtH^D$JfCE6l;j3NRkkXDqqfkgB3L`HshgQTW zDq=BMtdg<{PDvTBjK$(M;_#{jH8nNG4eG>=1fmK-jj&n-hLC=PL@A(93Irvr65-!& z&`$u5hV4ZBgn(%QI39+;!=QRV0sw}RqOQ{Z+F)?$9OdNE3K*<3p&SR`Fa!dQM6AwQ zn$4Du10)`$vc=R+PSq<|UMrGdcJgv2THC%vsKyXY>X`36a!LWSQJtu}x zDMf9q!rDYi23#iDKahDq<^h=pWFGi`@BqiVvv^@TX!esEB3xrOOno{-k>i!vH60=u zlz7LQLLf5U5HvLq`4{zUf7$wmo=g(2=6w5K%Ly1pKNLDG7g&#N(E9U+YMK*pa3XlZ z){#&Gn~9pXq7J3C@D#OTt1H?0iX<~T%mlsfaMT1jC7Vv(bV!sxjSc6!Xc z?K}w78r_a>Er!5@3m#>(v|9Sjy&S*nk6)7}6Gzi$-q}uM)64AM>BKft8sco1wW`CG zmo_Yoh#-Kza~%RZ>LiO6-#BWn7T^lBCHSw*CG4{+v&^CachiI&trag#vwO(%Dppu4 z?aE63*Vls_I%yhkK5LV4if7@dam=>AM(Cbzks9Kzh@XBVs`{@ByZ@s;uh1DosT3LTw`{Kppa(jseYvYWtDQ^Z zsF_yLe8c1k&h*nMm0mF>q)&%FJ0MVw2$*?#lp3kv})5yKsupXD`Ycg>C& zUGUI+(3d81fk5cgib3CGI%#2sB%Xl)fAxW}D$e&T6To44rO z5eb2h%F~zinhtt>-e+;d1zmvN)}))_scOaEMsJ~e*T<`97t(>j~etR*P4xplBq z2VcfDarEN4^kZf&;#f63J*S;(#;(2D$^L>_eOnMy@QJ%#7X;qkh^SeKd%_P^{%ZGQ z25-mrLHPmK{3Qu@KAa^1sf66DL_k?bs^GE3i$05)AHwgV8GgJso}vsXStl^-NcyFz z4qG3KorQc8VS*j<8(%6I5`aVdIh~(*&ph946jPas(;Vvo^n|9VR-RbXTv-R7b y%8AH|Tu}I;yS`1SChB-A->=zXU0qk!)74AHvc9g;vh|d$r_2NYJ06gSy8i~n?;`a8 diff --git a/public/castopod-banner-lake_small.webp b/public/castopod-banner-lake_small.webp deleted file mode 100644 index b3e5c539456d6d178f69bea99c27b3b9a6c8ed3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6C!?fzg4PQHg;`kdaxC@&6G9c?JeXR-jiwzJ&rtCZHSH*f}`4 zxPc0`3NSD+GBY!=FoRqTR9y>{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^8Gd?oX{^6={@|f5jRj1j7!n3+U!LN&R90aO z)p|Djn*X5&(`m=gx(c+-OEOCCHP4lgkBWaYd;iZ*^Z)&o|FCY;xv~p;EVFf&Zoj3z z!!n1d*5Bd_v*?A$IPTRJYNelM1=zX0snr%Y>zi@Of913Ko96YOpW6TZW&hA)SINA@ zK9^4^$3j(umhNpAeYt&l)2(xlQsPY)u|J8A_d2k9M{fDy?M1QCwezZryq*YNNbmU< zqPdN4Qmnt#l@M)3W|rrsLF-<{CjZHrnp4aw66in?j=5ZQ@<*uE&SeuMk5wuJuqQA0 zvH7>&jc9*iZ=v}Ur+l(q?UgTeBgQSrJ94gna{tG5s&|y8B{x`KiO*^O{rHpV?53(& zt2TKZFX!*g(S6J*yXM5=IXv~f>Dl*m|6Sf{cI~4{;P(6JHuJNd*4^a)e*8&RNWm*f zKgajJj_L)aDObCyrbql|kXjmUs>H2uUfI-d%?XV~T?~|BV^@&?Mz@Sb4O|*SAKU-G F2>{6DJ7@p^ diff --git a/public/castopod-banner-onyx_federation.jpg b/public/castopod-banner-onyx_federation.jpg deleted file mode 100644 index 73e4423a2518e41bd71912fd63cf5d8f86c06efa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14734 zcmeI0dpy)xAIHz!41*YEgeS(eL`pUl#UxF_ZbNceDI2wvRWa_;$SuaYcA?9Ywu47JpB~(6?C<5P$w_~C?s;>=3i+3jS<9P&}a+}ixm(Q!HI|n z;y;7N2w^Zn1W{p8!hd~1 zw*g)dF@br4LMQ00P68x}f&=3xVXXQ2;9_gcIg>C=>@s1PX;jqZU@p z?;Xf*2WUJ-LUFaBfTYDlYFiU7{%2B5{4Goz3!4q z+Q$V6o8!~+tAv!l*)d9V^k~9KsjTT%9b1t0o3hUn7W_XcdoS$Yx;lUe3c=qz6dsTP zr$ogxdA;{Hy065C$BZb~%hj+0z?sD;-AD zd3e{@*`dWlJOU!>Z$6RL`~!(sb!G)83?Ii05H|P@@J9L4+^WMkG{0&7N# zoJFd?<|RzNw!7|dzsgOqE~7Z#R9uS%1rR=J*5Qf14%=K{SQ?LHh zW_w0m?HsfdIby53jwae%p=;U2!O%R-k=LbE@>OG1&Vfc`*>3C|G5;w2ZkM!;IZki1 zCZ~w(jsrzSIH_moD7o8xT&f)yM;y@YGg6eVcbQ)Tf$=-k`RDBHrcLq|Q@Ris2u+!; zN`Fm*K%)@(O~{@+3h*;-8{o$-33``6YBzdnz!7KHI&FJNn5PE^n0BV&L0OekPq~mv&04s!zTqXd|O&MY&C;Eo+IZ zQk?`qZc7~-OfF;}JVwlKv0&6__Up^9j&1PNxqGne+c`=V!|OShEhimdE--RcM3xul zW#-Gtj)+-m*v0112JNrzxz@Vu(Qxh$v3p~@)T_eXYqZIF>6PC5=)u;g%j#Ye$@- z*TNmHqdUi~2q zsmBy%MJrPio<}!MTTs3A$*j>-;e>7RD+jzNlTOFCcwD?+DrfJXRhy?#ek++rTk%$A z$+Z5h6PKhCuiG{hR4H%mEt{U3dx*`p(sVM5wJGpj0-jnxpseMo*iPAsY1g%Hqli!o2^cy5$d0goz5(7eHwK8G!X*wDb3e1L9S~xd2CW_KBcwH4vwCG z*ru=Z_V~-_>3=M^=R2v|m|#^>T(w`AkAYwddTNymYap~w%!ELH_s~bT(i(h3GYaex@m_c3~+|85=ZV7m$Mz5*=z8$omKDqD_Q-PJv(wD>ZFg< zB}buiTI;lAV@TikfkMiV>{$0AE*J_)#>1kiE zF?Q~~8PTHIAY`!qNyY(wZ3Bi~a)0oB+qIJt#~q}$cDaHxS*P(YPn!7qtm`%)js z)qI$?=rJxP<8e#KpEY5TyZ+=Z+Q7NgyYz9lngCH<#8{Mztt6E{Bq0%WnBFH?n6Iu}=tk52sF@>ov|Iq9>Z-?F{}m zf_L4G|6`!mUqiC%JcrT4rDLZK4Yb(kY`1Y~)6Tb+6I{<<|Eo`|KQnjna4~88nZx|+ zrm4=@**B}WQ!c0*H_OB8wcnOlwE2(??cKPY4!bu#sPPvw95lav{X+f`y`w?aUW&maYW&maYW&maYW&maYW&maYW&maYX5jD4fEd*NPgTJuZU6uP diff --git a/public/castopod-banner-onyx_medium.webp b/public/castopod-banner-onyx_medium.webp deleted file mode 100644 index 189f77f596862221062fe22a305577fe11bfa6a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6742 zcmeH~c~nzZ9>?#?Lf9dYAPABaP$Ekq3W6I;X-L7bEENP%*;F=_eFwv$LSume1h)zp z%m~OLRt!)}1VjW>3bG4C76pozTC<(s=RsfAct#+hgkd76{Vlf!3Bn~GgE-fi7 zEhQ->B_pdKFC&YWm6DQIlE*6&h(w~a+y-SOg0cdENLYOdghs|-uo76T1VKhhhVWlE z_#wcHLl)?VXh;K~@DLgg!H)n500@hquG0RaK`3O7VmNULNh!pkN*EUqAoQu<(e;sOXsFv**sIq<+oJ%D$MB zd+G9(tE|GC?7!S9DlWPE-My;&oa&m|hQ>!tkDH&gw06Ge>h9_7>mL{y9UFiBW@2*c zr|H6ewxKJ1j8iQNqf>4o&q45~(CsZ*7O9z~1u%gDc zL~+7rnKvryB{a7?@`+v{9g<2~MkAYNR?+@W_Md?z{UNen!9H>g0BJOYBoB=T=0M0{ zF?AkNSWK{P>ua#Cfprb6YhYai{}&p#Jz$+@ELHYR@W!-f8Ly8x`t?*6IdL-3-IfKi z>dbd_O@T1jqXC0DEXj)lgFHNghe|L#q+7d83wA|m^kY`|FA$-=?_F0nO$}z+;(eD zo-8=1Upm!jS37WpTHQLqsRH&aCIze^Lx(nSXJ*Wo3m1EB4)e}2#zqaR;YZxJ4o5R!AYOh624;<-CG#=*zaO49vRD5S$>-%e;Yia1ER_@2u6Ch;tI%KTtWyeq)xgvoO)geZS)rh}j5P<*sV-#$F7?Z=EAtD=o*6hLJ97jc+UY88 zCHXP0y!k!1^kRED=3sEo!aURXhgY|CukE{5Z*)o_q2Rpon}l7hl#<#Awh~({OzQj!ibSxZRcQT!boT7uU1hRBoM=O{6=UCEf9u8I&`0)gLx( zS+4&sqv6U}?7j=dCm&JoT@c8WY;PwfYM-w%EgbI2;PfRi$e|YMnQ9mG0yGSddH$Im ze3CTs`MJlGHfh5zHC%8?y<|zcIxp((y z#fMxNSgq)?$|IZHr}afCOZH+i1P2T38Zy;9A`CLVhQSc&d9Cdmp)L$aiZG}(zaDlG zDlGUZ#iq;AJ6mP(u$f$$ z6VC+DwEJgPwlYS{0v83Oc>xT{EH<6<9*T+$e>vnjWOH2a+q#Y%@7Yqug55PyT=R+$ z2Gb5OkPtB1FT;SFzv2&iIs7S;;KAXcmRKzxin8Z{rP2EVNZB~M$enn~;I)gYNc?;g z;bO+}A`E&8WE+@cF!)WtFNV!RZk=K!zgrYtgnHX_ELCkZF*FrDJJbW-qm31Fb*#?v zIJT-i$?nkU;)-Ga!TnqMki+F_5O*c!c>$`1M`V<8mPk`ah#yNuf}!sk`_UWZR|w|5&-CoP`^ z8QtiQp^~gDHqFtC3N?GG4X7}9z`L&Q4TEUzE-)2tAit76-bC=)&yC9Fb(Sz1oD76~ zyQe)WJB{qcCWM_a||6a~g9G;sQ#ULD8|IKUOun{Rgs`>nUzi#V&f zwoK{D)VBB@+z+7yboxbzHy*>>wwD%k^q1Isnni*$VbHJ_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6C!?fzg4PQHg;`kdaxC@&6G9c?JeXR-jiwzJ&rtCZHSH*f}`4 zxPc0`3NSD+GBY!=FoRqTR9y>{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^8UAcv)TMPmV^J5wD29ZAcJZMPOD3H=v#_gy z&E4nOhS&9n=GQ%cvHx0wRq5qPA%R?#p9Lq&6u!G;9%a;$a0oub-MMsOi1&D}a4webSx(4Ch<+e}D3y zp;hT+?lXxe9nNY-E44&*-&m~o-?K+-Te+~(&t(dJN53BTdj9U6bnJ(>ccz!!PoH<^ zT}+cT^Rap@hEMsxRCO}%)WXPSCWqHO^}UJL{xfv_y7iyo!2YEP0gSF9l;P-qBEP@e zyZ+nS7`;z)Vpw#m3R?n)+>WyhRc6hP&cE56m}}#!<5lP8eB#?$$vxSLg_54SX{ELu z@{eO|E+5aA_EctdedQba@6N{m4D%cRGt|uguz=sG{n$3Kk1c)IQUcGh*&o}y^}X1C zhRj>Dvnyt4+$uQt>6 uJt40yMXylUz~k}doc*B<84QcMG$_U=zk*CztbUCOW>LdE6q>>O|0V#&qFK8D diff --git a/public/castopod-banner-pine_federation.jpg b/public/castopod-banner-pine_federation.jpg deleted file mode 100644 index 9e9df5cb0a81f62b6b0e45e487f671bd07c1adf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14521 zcmeI0eLU3J9>>p^8PCON$jVbF(ylxvkF(NXv|*NhzsStL0=@t;VdDl9E-B#jL@~%gam4tW{LND#~HyvCD%Xkiy@f&=P301a_6w zD(s&w&|`oRN6esmkq8YSfI**g#%Np9|BkKKDb{q|E1_y;9od@pN7*}v$*2z7~|P)L;6vMz*3q|lHU6nedZsGJQ^ z%qMt_hGD!oc6(}W@e>J6BiBiJ-;h>G1uf%&4R4pFy;JtbgeCk}%2tH^s;dV`BN4(s z4~YRdFt5tcxwUW6QYViAV1s=CGXOIHGXOIHGXOIHGXOIHGXOIHGXOIHGXOL2f58BI z2USrwIj!5B-A>Uw$LfjGC3@gWv;_RtrA+O)uDDID|07>XP5xS%TB2VNU0e`&ENp*) z4@B9=HMZH(*MyR(7a%aE34t)WZY;nO$ze<8L!@u;hd+v#h(U}wA<8`&Tu!22@*yVa z#HN(VeRNkD?rx5e(UL9eX{ii1Ul>m zuLN#~oQJZA71WEZ>D;?||!R?N(o;l-4}hua&r4at3+ngcWo zETjEzgl936iteI(i%%b|Bq(x5%#{XsPP#)5_YHPEP^%bX$po6NuXE|>>&z{CR+?Do zRi{y&Jh)$FiO#W3|IU3}#W&WvXGHwo#nHV*ivG%en$v~Gt%i{un=MEX@MJo+7QJ>} z3XI)!j+DpH0kD0r50HWVOFQTjDZ|cJy&zDKvedeGZ3d7baJ-b#5!6G?2$O|?#H*%m zGCJBc=?4Dhsl#92L9VwhhrqaRnsGvTJ!GB zrG1ape6sX~>qO7U_1QTO`~Y3{J6gEPmFE3rXOs4FHpm=|A^MrPPBcygxw?;MH8Q;}8{Sjkx9cm)^jf-^VveRk38Novl53CQ?Ni~- zg6q>>q-SrWIgN#dk3{$CWi<`zZ%8h(R|yHhWk*x=y=t_L#M_%R(QoTjGq2Eerd26R z=`khr?$PJt!{5+#Dd+X(zPHOcCCvacX17QMSvDPl)lkR9{ zF4so6E5d(gc&JKtY1&fZ?J=1ZN0TY&W(hp zI8t|vhsV|Ko0t4n-BCX7?cc%Ep3VvMh(5UcW+=y?gnRq`Fqv36WzyQN_sLLsQeHYL zwah)}#KoS9;^Et#&SAmQhK}}gSmrRkHof+$<*N;+`@T;Z{rno1D($1`a`FM17`JJ! ze8+Xr5T%}+h;MwDk=Y!jVCrNZX(rkBWmViq!jXLvETU?HHR=-c3LfVhpulrV|_=R?l#^_ zlkiE+I~zvXc9YS> z3FSk*+=83_f;E+g=Vvpf|Dh>vG$r)vmHlL#;R!xtq-wz89t4n$TX ztE1-3k0m1G3EnL$b;4*e@mvtgUaUp5sE#_}LvfSY&*?3tRTo(+&k(bW$u^O1guu!) zSQ(t+q@_NV0R#@c6&Npf_+pn+h^p>e-KQy(fG6>Td)DSJu=rhe>_OUVf}_z%Un^HV zBc9dx#^cGu7OxT*I)w(3%^eWv%5N*B{hUF7{FNvJpL#yzk^+BL1_7el0&AZ1 z>JR5+?-RMrb|rUlylXQ#l3_%=@T3IWhx*{qN*c#gDR0C;paPdp_~SwP{SNMFl6`Hc z$wtrw;5_@UIcJFQ&UCv^^}dMMc#Bu0dn7f3g_$u%l;M5n+vu@X=9XOCqyB7gh_pXg zPQeQ8_rBIvQ~!yteXcQL^WPd9cTGL2zBF52HOg{xb3s+nE(xMd)ZX3kc(C(b1M$x_ zdly$w3HD}IHbr9y^_OxoH$YJ9?nhzF{=>~F=FV@*Mn7HWM&6RGJ@JY0A>JY0A>JY0A>JY0A>JY0A>JY R0A>JY0A}DnG9U*1@OOtcNL>H` diff --git a/public/castopod-banner-pine_medium.webp b/public/castopod-banner-pine_medium.webp deleted file mode 100644 index 6371a5e52294304955eb43ac60fc06829b461702..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6594 zcmeH|X;f3!7RS%c03?7Um_Wp534RbKL_de2`d;aTwIA`y5e*6CK zKJX*>8Nj(Zxi|p`g1}+f17IoG;mD-hd+lXzCkF+XhJG3tM2Kb*N>KgnSWo4WO4!@Q_BobBBG)Wo+k~)D%SV;mQWico;293rLRFzc;|MP%v z1H2MshrEr1bO8bnA@LA=7ia?jp=GEmw7(4qAv>djq7nwHEZb0r0|*F-M4*r>r3z~`OxrBFGfaRj*U;h zmdwn)nR`3Gu)+laP)L;G3KxXn%7nzD&^l%c>h=spf6iK6^F$?r zLsn6B3r5d^IYm4Y*^SlEr#{~}y@K{D*roR{o|^-rNE!DQK*aC(SLg)2yx7 zJkGpzz!Bvbo!vm!9`<}4+Gm)=>lz--r865FHsd82B-bpU{L4}1D^JD$sd!X)C65* z97=sJ%<;IVTa37G`e#!2r*Fcag+JS!nv~&^_e9Ny6o9Q01z-2RQ*)*I@qpRwJiW7O zMKcvVc1!xP_3i&xvtOtI!(;TFqXT zw$)N9g|zIJ{rTtX+ikjzNhS|Y+-OVt z-r-tWc06>TFd?6NXwx*VY-*(81f7r*+~9)ScrQbdX>PILRa2_vG~zDKIGk~$+OM|y z)Lci~NkRQgCsWmTuruM()<7Gt#a>123lF``6_&kp?&?0ZnRmHH){ zI+^$bWnBCN>mMKNNE|`z=4P0moC+VF5-ml9aAG!|7g}ZQd7iXxRM?W!>U)9lOPKS( zD|_16ZKZ5O7aKJvAwADBi)6mJU9YiHvrQ|sFI3mNO`X$(tl?Icw3@lBITM~OsOV@J zSJ-2$Ev{@b>3w@$JT)XJ`|4;U(b024dwBnNa@j*#n`mUUyMr2S>M^!m;1=Yp%63e z;GQHHOgxOCrj^-7;P$ER{feLd@o!z?6S@|qI03tg^wGPk!Dk_8kbgDU1ELfDT)(zQ z%afu|9(ySmkxpRPp;wVKOv-S(CA^-N3cHqMd(>yF4HW%oD)dc(h4*Kfc0U{s{w4Xf6TbF1o{@vG)CC=D^_mbyT48rPHhk z0@U<}jP>4>4zgPOcQ-G%Z~E?D)w)>`#-RMlWrUC-m%IjY56C?r_ki33e;W^|!F~S* DT!#QO diff --git a/public/castopod-banner-pine_small.webp b/public/castopod-banner-pine_small.webp deleted file mode 100644 index ac43b616ebd2acfa7b1572316e5e7165396bc863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1627 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6C!?fzg4PQHg;`kdaxC@&6G9c?JeXR-jiwzJ&rtCZHSH*f}`4 zxPc0`3NSD+GBY!=FoRqTR9y>{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^8Gg!jX{=B9W23RCi(wQ)!a(cYtj4(~878n9 zhphTG{hI%w2GeWD&$tS*%}X*$?ls<0Tbo(GDephS^K<#XztkVvwcGNx^M|)5X5O7KgI@nwR@`a`}G-yW;x$i~osqFZX;V z@x))vCp9QkEBZ!Z-1N!{-L>j7#m^dQT8m$o)n|wSzufh|+p1R=2 z`rk%3qR&fv3;jLjeB#?$$vv5gg_54SX{ELu@{ePpcO6?g;{o4S@!N_28Rj*AGFcNf z+v|8Sf3J@2V@}yMrxwp)us^o>>wB^K%v-ZFlrt9R?>kp%clC7bHu;|~?3IHSuj!KX ybA0dGcy?=2AJiYaS8mXiIInEED&z#0#-avFG0#O;5r)878Vi`ZhCb&1e-i*gL_7ch diff --git a/public/index.php b/public/index.php index e4a895b5..e225cbff 100644 --- a/public/index.php +++ b/public/index.php @@ -11,12 +11,12 @@ use Config\Paths; *--------------------------------------------------------------- */ -$minPhpVersion = '8.3'; // If you update this, don't forget to update `spark`. +$minPhpVersion = '8.4'; // If you update this, don't forget to update `spark`. if (version_compare(PHP_VERSION, $minPhpVersion, '<')) { $message = sprintf( 'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s', $minPhpVersion, - PHP_VERSION + PHP_VERSION, ); header('HTTP/1.1 503 Service Unavailable.', true, 503); diff --git a/rector.php b/rector.php index 9e968f48..8e981c17 100644 --- a/rector.php +++ b/rector.php @@ -17,8 +17,8 @@ use Rector\ValueObject\PhpVersion; return RectorConfig::configure() ->withPaths([__DIR__ . '/app', __DIR__ . '/modules', __DIR__ . '/tests', __DIR__ . '/public']) ->withBootstrapFiles([__DIR__ . '/vendor/codeigniter4/framework/system/Test/bootstrap.php']) - ->withPhpVersion(PhpVersion::PHP_83) - ->withPhpSets(php83: true) + ->withPhpVersion(PhpVersion::PHP_84) + ->withPhpSets(php84: true) ->withPreparedSets( typeDeclarations: true, codeQuality: true, diff --git a/app/Resources/icons/funding/_index.php b/resources/icons/funding/_index.php similarity index 100% rename from app/Resources/icons/funding/_index.php rename to resources/icons/funding/_index.php diff --git a/app/Resources/icons/funding/buymeacoffee.svg b/resources/icons/funding/buymeacoffee.svg similarity index 100% rename from app/Resources/icons/funding/buymeacoffee.svg rename to resources/icons/funding/buymeacoffee.svg diff --git a/app/Resources/icons/funding/default.svg b/resources/icons/funding/default.svg similarity index 100% rename from app/Resources/icons/funding/default.svg rename to resources/icons/funding/default.svg diff --git a/app/Resources/icons/funding/donorbox.svg b/resources/icons/funding/donorbox.svg similarity index 100% rename from app/Resources/icons/funding/donorbox.svg rename to resources/icons/funding/donorbox.svg diff --git a/app/Resources/icons/funding/gofundme.svg b/resources/icons/funding/gofundme.svg similarity index 100% rename from app/Resources/icons/funding/gofundme.svg rename to resources/icons/funding/gofundme.svg diff --git a/app/Resources/icons/funding/helloasso.svg b/resources/icons/funding/helloasso.svg similarity index 100% rename from app/Resources/icons/funding/helloasso.svg rename to resources/icons/funding/helloasso.svg diff --git a/app/Resources/icons/funding/indiegogo.svg b/resources/icons/funding/indiegogo.svg similarity index 100% rename from app/Resources/icons/funding/indiegogo.svg rename to resources/icons/funding/indiegogo.svg diff --git a/app/Resources/icons/funding/kickstarter.svg b/resources/icons/funding/kickstarter.svg similarity index 100% rename from app/Resources/icons/funding/kickstarter.svg rename to resources/icons/funding/kickstarter.svg diff --git a/app/Resources/icons/funding/kisskissbankbank.svg b/resources/icons/funding/kisskissbankbank.svg similarity index 100% rename from app/Resources/icons/funding/kisskissbankbank.svg rename to resources/icons/funding/kisskissbankbank.svg diff --git a/app/Resources/icons/funding/kofi.svg b/resources/icons/funding/kofi.svg similarity index 100% rename from app/Resources/icons/funding/kofi.svg rename to resources/icons/funding/kofi.svg diff --git a/app/Resources/icons/funding/liberapay.svg b/resources/icons/funding/liberapay.svg similarity index 100% rename from app/Resources/icons/funding/liberapay.svg rename to resources/icons/funding/liberapay.svg diff --git a/app/Resources/icons/funding/patreon.svg b/resources/icons/funding/patreon.svg similarity index 100% rename from app/Resources/icons/funding/patreon.svg rename to resources/icons/funding/patreon.svg diff --git a/app/Resources/icons/funding/paypal.svg b/resources/icons/funding/paypal.svg similarity index 100% rename from app/Resources/icons/funding/paypal.svg rename to resources/icons/funding/paypal.svg diff --git a/app/Resources/icons/funding/tipeee.svg b/resources/icons/funding/tipeee.svg similarity index 100% rename from app/Resources/icons/funding/tipeee.svg rename to resources/icons/funding/tipeee.svg diff --git a/app/Resources/icons/funding/ulule.svg b/resources/icons/funding/ulule.svg similarity index 100% rename from app/Resources/icons/funding/ulule.svg rename to resources/icons/funding/ulule.svg diff --git a/app/Resources/icons/podcasting/_index.php b/resources/icons/podcasting/_index.php similarity index 100% rename from app/Resources/icons/podcasting/_index.php rename to resources/icons/podcasting/_index.php diff --git a/app/Resources/icons/podcasting/amazon.svg b/resources/icons/podcasting/amazon.svg similarity index 100% rename from app/Resources/icons/podcasting/amazon.svg rename to resources/icons/podcasting/amazon.svg diff --git a/app/Resources/icons/podcasting/antennapod.svg b/resources/icons/podcasting/antennapod.svg similarity index 100% rename from app/Resources/icons/podcasting/antennapod.svg rename to resources/icons/podcasting/antennapod.svg diff --git a/app/Resources/icons/podcasting/anytime.svg b/resources/icons/podcasting/anytime.svg similarity index 100% rename from app/Resources/icons/podcasting/anytime.svg rename to resources/icons/podcasting/anytime.svg diff --git a/app/Resources/icons/podcasting/apple.svg b/resources/icons/podcasting/apple.svg similarity index 100% rename from app/Resources/icons/podcasting/apple.svg rename to resources/icons/podcasting/apple.svg diff --git a/app/Resources/icons/podcasting/blubrry.svg b/resources/icons/podcasting/blubrry.svg similarity index 100% rename from app/Resources/icons/podcasting/blubrry.svg rename to resources/icons/podcasting/blubrry.svg diff --git a/app/Resources/icons/podcasting/breaker.svg b/resources/icons/podcasting/breaker.svg similarity index 100% rename from app/Resources/icons/podcasting/breaker.svg rename to resources/icons/podcasting/breaker.svg diff --git a/app/Resources/icons/podcasting/breez.svg b/resources/icons/podcasting/breez.svg similarity index 100% rename from app/Resources/icons/podcasting/breez.svg rename to resources/icons/podcasting/breez.svg diff --git a/app/Resources/icons/podcasting/castamatic.svg b/resources/icons/podcasting/castamatic.svg similarity index 100% rename from app/Resources/icons/podcasting/castamatic.svg rename to resources/icons/podcasting/castamatic.svg diff --git a/app/Resources/icons/podcasting/castbox.svg b/resources/icons/podcasting/castbox.svg similarity index 100% rename from app/Resources/icons/podcasting/castbox.svg rename to resources/icons/podcasting/castbox.svg diff --git a/app/Resources/icons/podcasting/castopod.svg b/resources/icons/podcasting/castopod.svg similarity index 100% rename from app/Resources/icons/podcasting/castopod.svg rename to resources/icons/podcasting/castopod.svg diff --git a/app/Resources/icons/podcasting/castro.svg b/resources/icons/podcasting/castro.svg similarity index 100% rename from app/Resources/icons/podcasting/castro.svg rename to resources/icons/podcasting/castro.svg diff --git a/app/Resources/icons/podcasting/deezer.svg b/resources/icons/podcasting/deezer.svg similarity index 100% rename from app/Resources/icons/podcasting/deezer.svg rename to resources/icons/podcasting/deezer.svg diff --git a/app/Resources/icons/podcasting/default.svg b/resources/icons/podcasting/default.svg similarity index 100% rename from app/Resources/icons/podcasting/default.svg rename to resources/icons/podcasting/default.svg diff --git a/app/Resources/icons/podcasting/episodes-fm.svg b/resources/icons/podcasting/episodes-fm.svg similarity index 100% rename from app/Resources/icons/podcasting/episodes-fm.svg rename to resources/icons/podcasting/episodes-fm.svg diff --git a/app/Resources/icons/podcasting/fountain.svg b/resources/icons/podcasting/fountain.svg similarity index 100% rename from app/Resources/icons/podcasting/fountain.svg rename to resources/icons/podcasting/fountain.svg diff --git a/app/Resources/icons/podcasting/fyyd.svg b/resources/icons/podcasting/fyyd.svg similarity index 100% rename from app/Resources/icons/podcasting/fyyd.svg rename to resources/icons/podcasting/fyyd.svg diff --git a/app/Resources/icons/podcasting/google.svg b/resources/icons/podcasting/google.svg similarity index 100% rename from app/Resources/icons/podcasting/google.svg rename to resources/icons/podcasting/google.svg diff --git a/app/Resources/icons/podcasting/gpodder.svg b/resources/icons/podcasting/gpodder.svg similarity index 100% rename from app/Resources/icons/podcasting/gpodder.svg rename to resources/icons/podcasting/gpodder.svg diff --git a/app/Resources/icons/podcasting/ivoox.svg b/resources/icons/podcasting/ivoox.svg similarity index 100% rename from app/Resources/icons/podcasting/ivoox.svg rename to resources/icons/podcasting/ivoox.svg diff --git a/app/Resources/icons/podcasting/listennotes.svg b/resources/icons/podcasting/listennotes.svg similarity index 100% rename from app/Resources/icons/podcasting/listennotes.svg rename to resources/icons/podcasting/listennotes.svg diff --git a/app/Resources/icons/podcasting/overcast.svg b/resources/icons/podcasting/overcast.svg similarity index 100% rename from app/Resources/icons/podcasting/overcast.svg rename to resources/icons/podcasting/overcast.svg diff --git a/app/Resources/icons/podcasting/playerfm.svg b/resources/icons/podcasting/playerfm.svg similarity index 100% rename from app/Resources/icons/podcasting/playerfm.svg rename to resources/icons/podcasting/playerfm.svg diff --git a/app/Resources/icons/podcasting/plink.svg b/resources/icons/podcasting/plink.svg similarity index 100% rename from app/Resources/icons/podcasting/plink.svg rename to resources/icons/podcasting/plink.svg diff --git a/app/Resources/icons/podcasting/pocketcasts.svg b/resources/icons/podcasting/pocketcasts.svg similarity index 100% rename from app/Resources/icons/podcasting/pocketcasts.svg rename to resources/icons/podcasting/pocketcasts.svg diff --git a/app/Resources/icons/podcasting/podbean.svg b/resources/icons/podcasting/podbean.svg similarity index 100% rename from app/Resources/icons/podcasting/podbean.svg rename to resources/icons/podcasting/podbean.svg diff --git a/app/Resources/icons/podcasting/podcastaddict.svg b/resources/icons/podcasting/podcastaddict.svg similarity index 100% rename from app/Resources/icons/podcasting/podcastaddict.svg rename to resources/icons/podcasting/podcastaddict.svg diff --git a/app/Resources/icons/podcasting/podcastguru.svg b/resources/icons/podcasting/podcastguru.svg similarity index 100% rename from app/Resources/icons/podcasting/podcastguru.svg rename to resources/icons/podcasting/podcastguru.svg diff --git a/app/Resources/icons/podcasting/podcastindex.svg b/resources/icons/podcasting/podcastindex.svg similarity index 100% rename from app/Resources/icons/podcasting/podcastindex.svg rename to resources/icons/podcasting/podcastindex.svg diff --git a/app/Resources/icons/podcasting/podchaser.svg b/resources/icons/podcasting/podchaser.svg similarity index 100% rename from app/Resources/icons/podcasting/podchaser.svg rename to resources/icons/podcasting/podchaser.svg diff --git a/app/Resources/icons/podcasting/podcloud.svg b/resources/icons/podcasting/podcloud.svg similarity index 100% rename from app/Resources/icons/podcasting/podcloud.svg rename to resources/icons/podcasting/podcloud.svg diff --git a/app/Resources/icons/podcasting/podfriend.svg b/resources/icons/podcasting/podfriend.svg similarity index 100% rename from app/Resources/icons/podcasting/podfriend.svg rename to resources/icons/podcasting/podfriend.svg diff --git a/app/Resources/icons/podcasting/podinstall.svg b/resources/icons/podcasting/podinstall.svg similarity index 100% rename from app/Resources/icons/podcasting/podinstall.svg rename to resources/icons/podcasting/podinstall.svg diff --git a/app/Resources/icons/podcasting/podlink.svg b/resources/icons/podcasting/podlink.svg similarity index 100% rename from app/Resources/icons/podcasting/podlink.svg rename to resources/icons/podcasting/podlink.svg diff --git a/app/Resources/icons/podcasting/podlp.svg b/resources/icons/podcasting/podlp.svg similarity index 100% rename from app/Resources/icons/podcasting/podlp.svg rename to resources/icons/podcasting/podlp.svg diff --git a/app/Resources/icons/podcasting/podnews.svg b/resources/icons/podcasting/podnews.svg similarity index 100% rename from app/Resources/icons/podcasting/podnews.svg rename to resources/icons/podcasting/podnews.svg diff --git a/app/Resources/icons/podcasting/podtail.svg b/resources/icons/podcasting/podtail.svg similarity index 100% rename from app/Resources/icons/podcasting/podtail.svg rename to resources/icons/podcasting/podtail.svg diff --git a/app/Resources/icons/podcasting/podverse.svg b/resources/icons/podcasting/podverse.svg similarity index 100% rename from app/Resources/icons/podcasting/podverse.svg rename to resources/icons/podcasting/podverse.svg diff --git a/app/Resources/icons/podcasting/radiopublic.svg b/resources/icons/podcasting/radiopublic.svg similarity index 100% rename from app/Resources/icons/podcasting/radiopublic.svg rename to resources/icons/podcasting/radiopublic.svg diff --git a/app/Resources/icons/podcasting/sphinxchat.svg b/resources/icons/podcasting/sphinxchat.svg similarity index 100% rename from app/Resources/icons/podcasting/sphinxchat.svg rename to resources/icons/podcasting/sphinxchat.svg diff --git a/app/Resources/icons/podcasting/spotify.svg b/resources/icons/podcasting/spotify.svg similarity index 100% rename from app/Resources/icons/podcasting/spotify.svg rename to resources/icons/podcasting/spotify.svg diff --git a/app/Resources/icons/podcasting/spreaker.svg b/resources/icons/podcasting/spreaker.svg similarity index 100% rename from app/Resources/icons/podcasting/spreaker.svg rename to resources/icons/podcasting/spreaker.svg diff --git a/app/Resources/icons/podcasting/stitcher.svg b/resources/icons/podcasting/stitcher.svg similarity index 100% rename from app/Resources/icons/podcasting/stitcher.svg rename to resources/icons/podcasting/stitcher.svg diff --git a/app/Resources/icons/podcasting/truefans.svg b/resources/icons/podcasting/truefans.svg similarity index 100% rename from app/Resources/icons/podcasting/truefans.svg rename to resources/icons/podcasting/truefans.svg diff --git a/app/Resources/icons/podcasting/tsacdop.svg b/resources/icons/podcasting/tsacdop.svg similarity index 100% rename from app/Resources/icons/podcasting/tsacdop.svg rename to resources/icons/podcasting/tsacdop.svg diff --git a/app/Resources/icons/podcasting/tunein.svg b/resources/icons/podcasting/tunein.svg similarity index 100% rename from app/Resources/icons/podcasting/tunein.svg rename to resources/icons/podcasting/tunein.svg diff --git a/app/Resources/icons/podcasting/youtube-music.svg b/resources/icons/podcasting/youtube-music.svg similarity index 100% rename from app/Resources/icons/podcasting/youtube-music.svg rename to resources/icons/podcasting/youtube-music.svg diff --git a/app/Resources/icons/social/_index.php b/resources/icons/social/_index.php similarity index 100% rename from app/Resources/icons/social/_index.php rename to resources/icons/social/_index.php diff --git a/app/Resources/icons/social/bluesky.svg b/resources/icons/social/bluesky.svg similarity index 100% rename from app/Resources/icons/social/bluesky.svg rename to resources/icons/social/bluesky.svg diff --git a/app/Resources/icons/social/castopod.svg b/resources/icons/social/castopod.svg similarity index 100% rename from app/Resources/icons/social/castopod.svg rename to resources/icons/social/castopod.svg diff --git a/app/Resources/icons/social/default.svg b/resources/icons/social/default.svg similarity index 100% rename from app/Resources/icons/social/default.svg rename to resources/icons/social/default.svg diff --git a/app/Resources/icons/social/discord.svg b/resources/icons/social/discord.svg similarity index 100% rename from app/Resources/icons/social/discord.svg rename to resources/icons/social/discord.svg diff --git a/app/Resources/icons/social/facebook.svg b/resources/icons/social/facebook.svg similarity index 100% rename from app/Resources/icons/social/facebook.svg rename to resources/icons/social/facebook.svg diff --git a/app/Resources/icons/social/funkwhale.svg b/resources/icons/social/funkwhale.svg similarity index 100% rename from app/Resources/icons/social/funkwhale.svg rename to resources/icons/social/funkwhale.svg diff --git a/app/Resources/icons/social/instagram.svg b/resources/icons/social/instagram.svg similarity index 100% rename from app/Resources/icons/social/instagram.svg rename to resources/icons/social/instagram.svg diff --git a/app/Resources/icons/social/linkedin.svg b/resources/icons/social/linkedin.svg similarity index 100% rename from app/Resources/icons/social/linkedin.svg rename to resources/icons/social/linkedin.svg diff --git a/app/Resources/icons/social/mastodon.svg b/resources/icons/social/mastodon.svg similarity index 100% rename from app/Resources/icons/social/mastodon.svg rename to resources/icons/social/mastodon.svg diff --git a/app/Resources/icons/social/matrix.svg b/resources/icons/social/matrix.svg similarity index 100% rename from app/Resources/icons/social/matrix.svg rename to resources/icons/social/matrix.svg diff --git a/app/Resources/icons/social/misskey.svg b/resources/icons/social/misskey.svg similarity index 100% rename from app/Resources/icons/social/misskey.svg rename to resources/icons/social/misskey.svg diff --git a/app/Resources/icons/social/mobilizon.svg b/resources/icons/social/mobilizon.svg similarity index 100% rename from app/Resources/icons/social/mobilizon.svg rename to resources/icons/social/mobilizon.svg diff --git a/app/Resources/icons/social/peertube.svg b/resources/icons/social/peertube.svg similarity index 100% rename from app/Resources/icons/social/peertube.svg rename to resources/icons/social/peertube.svg diff --git a/app/Resources/icons/social/pixelfed.svg b/resources/icons/social/pixelfed.svg similarity index 100% rename from app/Resources/icons/social/pixelfed.svg rename to resources/icons/social/pixelfed.svg diff --git a/app/Resources/icons/social/pleroma.svg b/resources/icons/social/pleroma.svg similarity index 100% rename from app/Resources/icons/social/pleroma.svg rename to resources/icons/social/pleroma.svg diff --git a/app/Resources/icons/social/plume.svg b/resources/icons/social/plume.svg similarity index 100% rename from app/Resources/icons/social/plume.svg rename to resources/icons/social/plume.svg diff --git a/app/Resources/icons/social/reddit.svg b/resources/icons/social/reddit.svg similarity index 100% rename from app/Resources/icons/social/reddit.svg rename to resources/icons/social/reddit.svg diff --git a/app/Resources/icons/social/slack.svg b/resources/icons/social/slack.svg similarity index 100% rename from app/Resources/icons/social/slack.svg rename to resources/icons/social/slack.svg diff --git a/app/Resources/icons/social/telegram.svg b/resources/icons/social/telegram.svg similarity index 100% rename from app/Resources/icons/social/telegram.svg rename to resources/icons/social/telegram.svg diff --git a/app/Resources/icons/social/threads.svg b/resources/icons/social/threads.svg similarity index 100% rename from app/Resources/icons/social/threads.svg rename to resources/icons/social/threads.svg diff --git a/app/Resources/icons/social/tiktok.svg b/resources/icons/social/tiktok.svg similarity index 100% rename from app/Resources/icons/social/tiktok.svg rename to resources/icons/social/tiktok.svg diff --git a/app/Resources/icons/social/twitch.svg b/resources/icons/social/twitch.svg similarity index 100% rename from app/Resources/icons/social/twitch.svg rename to resources/icons/social/twitch.svg diff --git a/app/Resources/icons/social/twitter.svg b/resources/icons/social/twitter.svg similarity index 100% rename from app/Resources/icons/social/twitter.svg rename to resources/icons/social/twitter.svg diff --git a/app/Resources/icons/social/writefreely.svg b/resources/icons/social/writefreely.svg similarity index 100% rename from app/Resources/icons/social/writefreely.svg rename to resources/icons/social/writefreely.svg diff --git a/app/Resources/icons/social/x.svg b/resources/icons/social/x.svg similarity index 100% rename from app/Resources/icons/social/x.svg rename to resources/icons/social/x.svg diff --git a/app/Resources/icons/social/youtube.svg b/resources/icons/social/youtube.svg similarity index 100% rename from app/Resources/icons/social/youtube.svg rename to resources/icons/social/youtube.svg diff --git a/app/Resources/js/modules/Charts.ts b/resources/js/_modules/Charts.ts similarity index 100% rename from app/Resources/js/modules/Charts.ts rename to resources/js/_modules/Charts.ts diff --git a/app/Resources/js/modules/ClientTimezone.ts b/resources/js/_modules/ClientTimezone.ts similarity index 100% rename from app/Resources/js/modules/ClientTimezone.ts rename to resources/js/_modules/ClientTimezone.ts diff --git a/app/Resources/js/modules/Clipboard.ts b/resources/js/_modules/Clipboard.ts similarity index 100% rename from app/Resources/js/modules/Clipboard.ts rename to resources/js/_modules/Clipboard.ts diff --git a/app/Resources/js/modules/DateTimePicker.ts b/resources/js/_modules/DateTimePicker.ts similarity index 100% rename from app/Resources/js/modules/DateTimePicker.ts rename to resources/js/_modules/DateTimePicker.ts diff --git a/app/Resources/js/modules/Dropdown.ts b/resources/js/_modules/Dropdown.ts similarity index 100% rename from app/Resources/js/modules/Dropdown.ts rename to resources/js/_modules/Dropdown.ts diff --git a/app/Resources/js/modules/EpisodesMap.ts b/resources/js/_modules/EpisodesMap.ts similarity index 91% rename from app/Resources/js/modules/EpisodesMap.ts rename to resources/js/_modules/EpisodesMap.ts index 390564f9..bc0b2ed5 100644 --- a/app/Resources/js/modules/EpisodesMap.ts +++ b/resources/js/_modules/EpisodesMap.ts @@ -11,14 +11,11 @@ import { MarkerClusterGroup } from "leaflet.markercluster"; import "leaflet.markercluster/dist/MarkerCluster.css"; import "leaflet.markercluster/dist/MarkerCluster.Default.css"; import "leaflet/dist/leaflet.css"; -import markerIconRetina from "../../images/marker/marker-icon-2x.png"; -import markerIcon from "../../images/marker/marker-icon.png"; -import markerShadow from "../../images/marker/marker-shadow.png"; Marker.prototype.options.icon = icon({ - iconRetinaUrl: markerIconRetina, - iconUrl: markerIcon, - shadowUrl: markerShadow, + iconRetinaUrl: "/assets/images/marker/marker-icon-2x.png", + iconUrl: "/assets/images/marker/marker-icon.png", + shadowUrl: "/assets/images/marker/marker-shadow.png", iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], diff --git a/app/Resources/js/modules/FieldArray.ts b/resources/js/_modules/FieldArray.ts similarity index 100% rename from app/Resources/js/modules/FieldArray.ts rename to resources/js/_modules/FieldArray.ts diff --git a/app/Resources/js/modules/HotKeys.ts b/resources/js/_modules/HotKeys.ts similarity index 100% rename from app/Resources/js/modules/HotKeys.ts rename to resources/js/_modules/HotKeys.ts diff --git a/app/Resources/js/modules/Modal.ts b/resources/js/_modules/Modal.ts similarity index 100% rename from app/Resources/js/modules/Modal.ts rename to resources/js/_modules/Modal.ts diff --git a/app/Resources/js/modules/PublishMessageWarning.ts b/resources/js/_modules/PublishMessageWarning.ts similarity index 100% rename from app/Resources/js/modules/PublishMessageWarning.ts rename to resources/js/_modules/PublishMessageWarning.ts diff --git a/app/Resources/js/modules/Select.ts b/resources/js/_modules/Select.ts similarity index 100% rename from app/Resources/js/modules/Select.ts rename to resources/js/_modules/Select.ts diff --git a/app/Resources/js/modules/SelectMulti.ts b/resources/js/_modules/SelectMulti.ts similarity index 100% rename from app/Resources/js/modules/SelectMulti.ts rename to resources/js/_modules/SelectMulti.ts diff --git a/app/Resources/js/modules/SidebarToggler.ts b/resources/js/_modules/SidebarToggler.ts similarity index 100% rename from app/Resources/js/modules/SidebarToggler.ts rename to resources/js/_modules/SidebarToggler.ts diff --git a/app/Resources/js/modules/Slugify.ts b/resources/js/_modules/Slugify.ts similarity index 100% rename from app/Resources/js/modules/Slugify.ts rename to resources/js/_modules/Slugify.ts diff --git a/app/Resources/js/modules/ThemePicker.ts b/resources/js/_modules/ThemePicker.ts similarity index 100% rename from app/Resources/js/modules/ThemePicker.ts rename to resources/js/_modules/ThemePicker.ts diff --git a/app/Resources/js/modules/Time.ts b/resources/js/_modules/Time.ts similarity index 100% rename from app/Resources/js/modules/Time.ts rename to resources/js/_modules/Time.ts diff --git a/app/Resources/js/modules/Toggler.ts b/resources/js/_modules/Toggler.ts similarity index 100% rename from app/Resources/js/modules/Toggler.ts rename to resources/js/_modules/Toggler.ts diff --git a/app/Resources/js/modules/Tooltip.ts b/resources/js/_modules/Tooltip.ts similarity index 100% rename from app/Resources/js/modules/Tooltip.ts rename to resources/js/_modules/Tooltip.ts diff --git a/app/Resources/js/modules/ValidateFileSize.ts b/resources/js/_modules/ValidateFileSize.ts similarity index 100% rename from app/Resources/js/modules/ValidateFileSize.ts rename to resources/js/_modules/ValidateFileSize.ts diff --git a/app/Resources/js/modules/VideoClipBuilder.ts b/resources/js/_modules/VideoClipBuilder.ts similarity index 100% rename from app/Resources/js/modules/VideoClipBuilder.ts rename to resources/js/_modules/VideoClipBuilder.ts diff --git a/app/Resources/js/modules/audio-clipper.ts b/resources/js/_modules/audio-clipper.ts similarity index 99% rename from app/Resources/js/modules/audio-clipper.ts rename to resources/js/_modules/audio-clipper.ts index 0244575d..a5521273 100644 --- a/app/Resources/js/modules/audio-clipper.ts +++ b/resources/js/_modules/audio-clipper.ts @@ -744,7 +744,8 @@ export class AudioClipper extends LitElement { var(--tw-ring-offset-shadow), var(--tw-ring-shadow), 0 0 rgba(0, 0, 0, 0); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), + box-shadow: + var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0)); --tw-ring-offset-width: 2px; --tw-ring-opacity: 1; diff --git a/app/Resources/js/modules/code-editor.ts b/resources/js/_modules/code-editor.ts similarity index 100% rename from app/Resources/js/modules/code-editor.ts rename to resources/js/_modules/code-editor.ts diff --git a/app/Resources/js/modules/markdown-preview.ts b/resources/js/_modules/markdown-preview.ts similarity index 100% rename from app/Resources/js/modules/markdown-preview.ts rename to resources/js/_modules/markdown-preview.ts diff --git a/app/Resources/js/modules/markdown-write-preview.ts b/resources/js/_modules/markdown-write-preview.ts similarity index 100% rename from app/Resources/js/modules/markdown-write-preview.ts rename to resources/js/_modules/markdown-write-preview.ts diff --git a/app/Resources/js/modules/permalink-edit.ts b/resources/js/_modules/permalink-edit.ts similarity index 100% rename from app/Resources/js/modules/permalink-edit.ts rename to resources/js/_modules/permalink-edit.ts diff --git a/app/Resources/js/modules/play-episode-button.ts b/resources/js/_modules/play-episode-button.ts similarity index 100% rename from app/Resources/js/modules/play-episode-button.ts rename to resources/js/_modules/play-episode-button.ts diff --git a/app/Resources/js/modules/play-soundbite.ts b/resources/js/_modules/play-soundbite.ts similarity index 100% rename from app/Resources/js/modules/play-soundbite.ts rename to resources/js/_modules/play-soundbite.ts diff --git a/app/Resources/js/modules/video-clip-previewer.ts b/resources/js/_modules/video-clip-previewer.ts similarity index 100% rename from app/Resources/js/modules/video-clip-previewer.ts rename to resources/js/_modules/video-clip-previewer.ts diff --git a/app/Resources/js/admin-audio-player.ts b/resources/js/admin-audio-player.ts similarity index 98% rename from app/Resources/js/admin-audio-player.ts rename to resources/js/admin-audio-player.ts index 994803a7..1cd26d58 100644 --- a/app/Resources/js/admin-audio-player.ts +++ b/resources/js/admin-audio-player.ts @@ -34,7 +34,7 @@ import { } from "@vime/core"; import "@vime/core/themes/default.css"; import "@vime/core/themes/light.css"; -import "./modules/play-episode-button"; +import "./_modules/play-episode-button"; // Vime elements for audio player customElements.define("vm-player", VmPlayer); diff --git a/resources/js/admin.ts b/resources/js/admin.ts new file mode 100644 index 00000000..bc87479d --- /dev/null +++ b/resources/js/admin.ts @@ -0,0 +1,43 @@ +import "@github/markdown-toolbar-element"; +import "@github/relative-time-element"; +import "./_modules/audio-clipper"; +import ClientTimezone from "./_modules/ClientTimezone"; +import Clipboard from "./_modules/Clipboard"; +import DateTimePicker from "./_modules/DateTimePicker"; +import Dropdown from "./_modules/Dropdown"; +import HotKeys from "./_modules/HotKeys"; +import "./_modules/markdown-preview"; +import "./_modules/markdown-write-preview"; +import SelectMulti from "./_modules/SelectMulti"; +import "./_modules/permalink-edit"; +import "./_modules/play-soundbite"; +import PublishMessageWarning from "./_modules/PublishMessageWarning"; +import Select from "./_modules/Select"; +import SidebarToggler from "./_modules/SidebarToggler"; +import Slugify from "./_modules/Slugify"; +import ThemePicker from "./_modules/ThemePicker"; +import Time from "./_modules/Time"; +import Tooltip from "./_modules/Tooltip"; +import ValidateFileSize from "./_modules/ValidateFileSize"; +import "./_modules/video-clip-previewer"; +import VideoClipBuilder from "./_modules/VideoClipBuilder"; +import "./_modules/code-editor"; +import "@patternfly/elements/pf-tabs/pf-tabs.js"; +import FieldArray from "./_modules/FieldArray"; + +Dropdown(); +Tooltip(); +Select(); +SelectMulti(); +Slugify(); +SidebarToggler(); +ClientTimezone(); +DateTimePicker(); +Time(); +Clipboard(); +ThemePicker(); +PublishMessageWarning(); +HotKeys(); +ValidateFileSize(); +VideoClipBuilder(); +FieldArray(); diff --git a/resources/js/app.ts b/resources/js/app.ts new file mode 100644 index 00000000..65bf64d4 --- /dev/null +++ b/resources/js/app.ts @@ -0,0 +1,5 @@ +import Dropdown from "./_modules/Dropdown"; +import Tooltip from "./_modules/Tooltip"; + +Dropdown(); +Tooltip(); diff --git a/app/Resources/js/audio-player.ts b/resources/js/audio-player.ts similarity index 98% rename from app/Resources/js/audio-player.ts rename to resources/js/audio-player.ts index 01e27470..76380c08 100644 --- a/app/Resources/js/audio-player.ts +++ b/resources/js/audio-player.ts @@ -35,7 +35,7 @@ import { import "@vime/core/themes/default.css"; import "@vime/core/themes/light.css"; import { html, render } from "lit"; -import "./modules/play-episode-button"; +import "./_modules/play-episode-button"; const player = html`
\ No newline at end of file diff --git a/resources/static/images/castopod-logo.svg b/resources/static/images/castopod-logo.svg new file mode 100644 index 00000000..55f4b22b --- /dev/null +++ b/resources/static/images/castopod-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/images/castopod-mascot_confused.svg b/resources/static/images/castopod-mascot_confused.svg new file mode 100644 index 00000000..89d51627 --- /dev/null +++ b/resources/static/images/castopod-mascot_confused.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/Resources/images/marker/marker-icon-2x.png b/resources/static/images/marker/marker-icon-2x.png similarity index 100% rename from app/Resources/images/marker/marker-icon-2x.png rename to resources/static/images/marker/marker-icon-2x.png diff --git a/app/Resources/images/marker/marker-icon.png b/resources/static/images/marker/marker-icon.png similarity index 100% rename from app/Resources/images/marker/marker-icon.png rename to resources/static/images/marker/marker-icon.png diff --git a/app/Resources/images/marker/marker-shadow.png b/resources/static/images/marker/marker-shadow.png similarity index 100% rename from app/Resources/images/marker/marker-shadow.png rename to resources/static/images/marker/marker-shadow.png diff --git a/app/Resources/styles/breadcrumb.css b/resources/styles/_modules/breadcrumb.css similarity index 100% rename from app/Resources/styles/breadcrumb.css rename to resources/styles/_modules/breadcrumb.css diff --git a/app/Resources/styles/choices.css b/resources/styles/_modules/choices.css similarity index 100% rename from app/Resources/styles/choices.css rename to resources/styles/_modules/choices.css diff --git a/app/Resources/styles/colorRadioBtn.css b/resources/styles/_modules/colorRadioBtn.css similarity index 100% rename from app/Resources/styles/colorRadioBtn.css rename to resources/styles/_modules/colorRadioBtn.css diff --git a/app/Resources/styles/colors.css b/resources/styles/_modules/colors.css similarity index 100% rename from app/Resources/styles/colors.css rename to resources/styles/_modules/colors.css diff --git a/app/Resources/styles/custom.css b/resources/styles/_modules/custom.css similarity index 97% rename from app/Resources/styles/custom.css rename to resources/styles/_modules/custom.css index 14888b22..55f09725 100644 --- a/app/Resources/styles/custom.css +++ b/resources/styles/_modules/custom.css @@ -63,6 +63,7 @@ } .backdrop-gradient-accent { + /* stylelint-disable-next-line declaration-property-value-no-unknown */ background-image: linear-gradient( 180deg, theme(colors.background.base / 0.4) 0%, diff --git a/app/Resources/styles/dropdown.css b/resources/styles/_modules/dropdown.css similarity index 100% rename from app/Resources/styles/dropdown.css rename to resources/styles/_modules/dropdown.css diff --git a/app/Resources/styles/fonts.css b/resources/styles/_modules/fonts.css similarity index 67% rename from app/Resources/styles/fonts.css rename to resources/styles/_modules/fonts.css index 68695229..f2d9aa00 100644 --- a/app/Resources/styles/fonts.css +++ b/resources/styles/_modules/fonts.css @@ -5,7 +5,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url("/fonts/kumbh-sans-regular.woff2") format("woff2"); + src: url("/assets/fonts/kumbh-sans-regular.woff2") format("woff2"); } /* kumbh-sans-700 */ @@ -14,7 +14,7 @@ font-style: normal; font-weight: 700; font-display: swap; - src: url("/fonts/kumbh-sans-700.woff2") format("woff2"); + src: url("/assets/fonts/kumbh-sans-700.woff2") format("woff2"); } /* inter-regular */ @@ -23,7 +23,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url("/fonts/inter-regular.woff2") format("woff2"); + src: url("/assets/fonts/inter-regular.woff2") format("woff2"); } /* inter-600 */ @@ -32,7 +32,7 @@ font-style: normal; font-weight: 600; font-display: swap; - src: url("/fonts/inter-600.woff2") format("woff2"); + src: url("/assets/fonts/inter-600.woff2") format("woff2"); } /* noto-sans-mono-regular */ @@ -41,6 +41,6 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url("/fonts/noto-sans-mono-regular.woff2") format("woff2"); + src: url("/assets/fonts/noto-sans-mono-regular.woff2") format("woff2"); } } diff --git a/app/Resources/styles/formInputTabs.css b/resources/styles/_modules/formInputTabs.css similarity index 100% rename from app/Resources/styles/formInputTabs.css rename to resources/styles/_modules/formInputTabs.css diff --git a/app/Resources/styles/inputRange.css b/resources/styles/_modules/inputRange.css similarity index 100% rename from app/Resources/styles/inputRange.css rename to resources/styles/_modules/inputRange.css diff --git a/app/Resources/styles/radioBtn.css b/resources/styles/_modules/radioBtn.css similarity index 100% rename from app/Resources/styles/radioBtn.css rename to resources/styles/_modules/radioBtn.css diff --git a/app/Resources/styles/radioToggler.css b/resources/styles/_modules/radioToggler.css similarity index 100% rename from app/Resources/styles/radioToggler.css rename to resources/styles/_modules/radioToggler.css diff --git a/app/Resources/styles/readMore.css b/resources/styles/_modules/readMore.css similarity index 100% rename from app/Resources/styles/readMore.css rename to resources/styles/_modules/readMore.css diff --git a/app/Resources/styles/seeMore.css b/resources/styles/_modules/seeMore.css similarity index 100% rename from app/Resources/styles/seeMore.css rename to resources/styles/_modules/seeMore.css diff --git a/app/Resources/styles/stickyHeader.css b/resources/styles/_modules/stickyHeader.css similarity index 100% rename from app/Resources/styles/stickyHeader.css rename to resources/styles/_modules/stickyHeader.css diff --git a/app/Resources/styles/switch.css b/resources/styles/_modules/switch.css similarity index 100% rename from app/Resources/styles/switch.css rename to resources/styles/_modules/switch.css diff --git a/app/Resources/styles/tailwind.css b/resources/styles/_modules/tailwind.css similarity index 100% rename from app/Resources/styles/tailwind.css rename to resources/styles/_modules/tailwind.css diff --git a/resources/styles/admin.css b/resources/styles/admin.css new file mode 100644 index 00000000..bb90fa4b --- /dev/null +++ b/resources/styles/admin.css @@ -0,0 +1,17 @@ +@import url("./_modules/tailwind.css"); +@import url("./_modules/custom.css"); +@import url("./_modules/fonts.css"); +@import url("./_modules/colors.css"); +@import url("./_modules/breadcrumb.css"); +@import url("./_modules/dropdown.css"); +@import url("./_modules/choices.css"); +@import url("./_modules/radioBtn.css"); +@import url("./_modules/colorRadioBtn.css"); +@import url("./_modules/switch.css"); +@import url("./_modules/radioToggler.css"); +@import url("./_modules/formInputTabs.css"); +@import url("./_modules/stickyHeader.css"); +@import url("./_modules/readMore.css"); +@import url("./_modules/seeMore.css"); + +@config '../../tailwind.admin.config.js'; diff --git a/resources/styles/install.css b/resources/styles/install.css new file mode 100644 index 00000000..e14d0dc0 --- /dev/null +++ b/resources/styles/install.css @@ -0,0 +1,17 @@ +@import url("./_modules/tailwind.css"); +@import url("./_modules/custom.css"); +@import url("./_modules/fonts.css"); +@import url("./_modules/colors.css"); +@import url("./_modules/breadcrumb.css"); +@import url("./_modules/dropdown.css"); +@import url("./_modules/choices.css"); +@import url("./_modules/radioBtn.css"); +@import url("./_modules/colorRadioBtn.css"); +@import url("./_modules/switch.css"); +@import url("./_modules/radioToggler.css"); +@import url("./_modules/formInputTabs.css"); +@import url("./_modules/stickyHeader.css"); +@import url("./_modules/readMore.css"); +@import url("./_modules/seeMore.css"); + +@config '../../tailwind.install.config.js'; diff --git a/resources/styles/site.css b/resources/styles/site.css new file mode 100644 index 00000000..c5e54f99 --- /dev/null +++ b/resources/styles/site.css @@ -0,0 +1,17 @@ +@import url("./_modules/tailwind.css"); +@import url("./_modules/custom.css"); +@import url("./_modules/fonts.css"); +@import url("./_modules/colors.css"); +@import url("./_modules/breadcrumb.css"); +@import url("./_modules/dropdown.css"); +@import url("./_modules/choices.css"); +@import url("./_modules/radioBtn.css"); +@import url("./_modules/colorRadioBtn.css"); +@import url("./_modules/switch.css"); +@import url("./_modules/radioToggler.css"); +@import url("./_modules/formInputTabs.css"); +@import url("./_modules/stickyHeader.css"); +@import url("./_modules/readMore.css"); +@import url("./_modules/seeMore.css"); + +@config '../../tailwind.config.js'; diff --git a/spark b/spark index 6987fac0..bd996920 100644 --- a/spark +++ b/spark @@ -37,12 +37,12 @@ if (str_starts_with(PHP_SAPI, 'cgi')) { *--------------------------------------------------------------- */ -$minPhpVersion = '8.3'; // If you update this, don't forget to update `public/index.php`. +$minPhpVersion = '8.4'; // If you update this, don't forget to update `public/index.php`. if (version_compare(PHP_VERSION, $minPhpVersion, '<')) { $message = sprintf( 'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s', $minPhpVersion, - PHP_VERSION + PHP_VERSION, ); exit($message); diff --git a/tailwind.config.cjs b/tailwind.admin.config.js similarity index 91% rename from tailwind.config.cjs rename to tailwind.admin.config.js index 6b4e1a8c..f6d4fea4 100644 --- a/tailwind.config.cjs +++ b/tailwind.admin.config.js @@ -1,15 +1,15 @@ -/* eslint-disable */ -const defaultTheme = require("tailwindcss/defaultTheme"); -const { transform } = require("typescript"); +import defaultTheme from "tailwindcss/defaultTheme"; +import tailwindForms from "@tailwindcss/forms"; +import tailwindTypography from "@tailwindcss/typography"; /** @type {import('tailwindcss').Config} */ -module.exports = { +export default { content: [ "./app/Views/**/*.php", - "./modules/**/Views/**/*.php", - "./themes/**/*.php", + "./themes/cp_admin/**/*.php", + "./themes/cp_auth/**/*.php", "./app/Helpers/*.php", - "./app/Resources/**/*.ts", + "./resources/**/*.ts", ], theme: { extend: { @@ -101,18 +101,6 @@ module.exports = { 800: "#00564A", 900: "#003D0B", }, - rose: { - 50: "#fcf9f8", - 100: "#fdeef2", - 200: "#fbcfe4", - 300: "#faa7cd", - 400: "#fb6ea5", - 500: "#fc437c", - 600: "#f24664", - 700: "#dd1f47", - 800: "#b21a39", - 900: "#8e162e", - }, }, gridTemplateColumns: { admin: "300px calc(100% - 300px)", @@ -179,5 +167,5 @@ module.exports = { }, }, variants: {}, - plugins: [require("@tailwindcss/forms"), require("@tailwindcss/typography")], + plugins: [tailwindForms, tailwindTypography], }; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000..42ba73eb --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,159 @@ +import defaultTheme from "tailwindcss/defaultTheme"; +import tailwindForms from "@tailwindcss/forms"; +import tailwindTypography from "@tailwindcss/typography"; + +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./app/Views/**/*.php", + "./modules/**/Views/**/*.php", + "./themes/cp_app/**/*.php", + "./app/Helpers/*.php", + "./resources/**/*.ts", + ], + theme: { + extend: { + content: { + chevronRightIcon: + "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 24 24'%3E%3Cpath d='M13.17 12 8.22 7.05l1.42-1.41L16 12l-6.36 6.36-1.42-1.41L13.17 12Z'/%3E%3C/svg%3E%0A\")", + prohibitedIcon: + "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 24 24'%3E%3Cpath d='M7.0943 5.68009L18.3199 16.9057C19.3736 15.5506 20 13.8491 20 12C20 7.58172 16.4183 4 12 4C10.1509 4 8.44939 4.62644 7.0943 5.68009ZM16.9057 18.3199L5.68009 7.0943C4.62644 8.44939 4 10.1509 4 12C4 16.4183 7.58172 20 12 20C13.8491 20 15.5506 19.3736 16.9057 18.3199ZM4.92893 4.92893C6.73748 3.12038 9.23885 2 12 2C17.5228 2 22 6.47715 22 12C22 14.7611 20.8796 17.2625 19.0711 19.0711C17.2625 20.8796 14.7611 22 12 22C6.47715 22 2 17.5228 2 12C2 9.23885 3.12038 6.73748 4.92893 4.92893Z'/%3E%3C/svg%3E%0A\")", + }, + fontFamily: { + sans: ["Inter", ...defaultTheme.fontFamily.sans], + display: ["Kumbh Sans", ...defaultTheme.fontFamily.sans], + mono: ["Noto Sans Mono", ...defaultTheme.fontFamily.mono], + }, + textDecorationThickness: { + 3: "3px", + }, + textColor: { + skin: { + base: "hsl(var(--color-text-base) / )", + muted: "hsl(var(--color-text-muted) / )", + }, + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + muted: "hsl(var(--color-accent-muted) / )", + contrast: "hsl(var(--color-accent-contrast) / )", + }, + }, + backgroundColor: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + subtle: "hsl(var(--color-border-subtle) / )", + navigation: "hsl(var(--color-background-navigation) / )", + "navigation-active": + "hsl(var(--color-background-navigation-active) / )", + backdrop: "hsl(var(--color-background-backdrop) / )", + header: "hsl(var(--color-background-header) / )", + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + highlight: "hsl(var(--color-background-highlight) / )", + }, + borderColor: { + subtle: "hsl(var(--color-border-subtle) / )", + contrast: "hsl(var(--color-border-contrast) / )", + navigation: "hsl(var(--color-border-navigation) / )", + "navigation-bg": + "hsl(var(--color-background-navigation) / )", + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + background: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + }, + }, + ringColor: { + contrast: "hsl(var(--color-border-contrast) / )", + background: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + }, + }, + colors: { + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + background: { + header: "hsl(var(--color-background-header) / )", + base: "hsl(var(--color-background-base) / )", + }, + heading: { + foreground: "hsl(var(--color-heading-foreground) / )", + background: "hsl(var(--color-heading-background) / )", + }, + pine: { + 50: "#F2FAF9", + 100: "#E7F9E4", + 200: "#bfe4e1", + 300: "#99d4cf", + 400: "#4db4aa", + 500: "#009486", + 600: "#008579", + 700: "#006D60", + 800: "#00564A", + 900: "#003D0B", + }, + }, + gridTemplateColumns: { + admin: "300px calc(100% - 300px)", + podcast: "1fr minmax(auto, 960px) 1fr", + podcastMain: "1fr minmax(200px, 300px)", + cards: "repeat(auto-fill, minmax(14rem, 1fr))", + latestEpisodes: "repeat(5, 1fr)", + colorButtons: "repeat(auto-fill, minmax(4rem, 1fr))", + platforms: "repeat(auto-fill, minmax(18rem, 1fr))", + plugins: "repeat(auto-fill, minmax(20rem, 1fr))", + radioGroup: "repeat(auto-fit, minmax(14rem, 1fr))", + }, + gridTemplateRows: { + admin: "40px 1fr", + }, + borderWidth: { + 3: "3px", + }, + ringWidth: { + 3: "3px", + }, + typography: { + DEFAULT: { + css: { + a: { + textDecoration: "underline", + fontWeight: 600, + "&:hover": { + textDecoration: "none", + }, + }, + input: { + margin: 0, + }, + }, + }, + sm: { + css: { + a: { + textDecoration: "underline", + fontWeight: 600, + "&:hover": { + textDecoration: "none", + }, + }, + }, + }, + }, + zIndex: { + 60: 60, + }, + }, + }, + variants: {}, + plugins: [tailwindForms, tailwindTypography], +}; diff --git a/tailwind.install.config.js b/tailwind.install.config.js new file mode 100644 index 00000000..3313dcee --- /dev/null +++ b/tailwind.install.config.js @@ -0,0 +1,106 @@ +import defaultTheme from "tailwindcss/defaultTheme"; +import tailwindForms from "@tailwindcss/forms"; + +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./app/Views/**/*.php", + "./themes/cp_install/**/*.php", + "./resources/**/*.ts", + ], + theme: { + extend: { + fontFamily: { + sans: ["Inter", ...defaultTheme.fontFamily.sans], + display: ["Kumbh Sans", ...defaultTheme.fontFamily.sans], + mono: ["Noto Sans Mono", ...defaultTheme.fontFamily.mono], + }, + textDecorationThickness: { + 3: "3px", + }, + textColor: { + skin: { + base: "hsl(var(--color-text-base) / )", + muted: "hsl(var(--color-text-muted) / )", + }, + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + muted: "hsl(var(--color-accent-muted) / )", + contrast: "hsl(var(--color-accent-contrast) / )", + }, + }, + backgroundColor: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + subtle: "hsl(var(--color-border-subtle) / )", + navigation: "hsl(var(--color-background-navigation) / )", + "navigation-active": + "hsl(var(--color-background-navigation-active) / )", + backdrop: "hsl(var(--color-background-backdrop) / )", + header: "hsl(var(--color-background-header) / )", + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + highlight: "hsl(var(--color-background-highlight) / )", + }, + borderColor: { + subtle: "hsl(var(--color-border-subtle) / )", + contrast: "hsl(var(--color-border-contrast) / )", + navigation: "hsl(var(--color-border-navigation) / )", + "navigation-bg": + "hsl(var(--color-background-navigation) / )", + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + background: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + }, + }, + ringColor: { + contrast: "hsl(var(--color-border-contrast) / )", + background: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + }, + }, + colors: { + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + background: { + header: "hsl(var(--color-background-header) / )", + base: "hsl(var(--color-background-base) / )", + }, + heading: { + foreground: "hsl(var(--color-heading-foreground) / )", + background: "hsl(var(--color-heading-background) / )", + }, + pine: { + 50: "#F2FAF9", + 100: "#E7F9E4", + 200: "#bfe4e1", + 300: "#99d4cf", + 400: "#4db4aa", + 500: "#009486", + 600: "#008579", + 700: "#006D60", + 800: "#00564A", + 900: "#003D0B", + }, + }, + borderWidth: { + 3: "3px", + }, + ringWidth: { + 3: "3px", + }, + }, + }, + variants: {}, + plugins: [tailwindForms], +}; diff --git a/tests/modules/Api/Rest/V1/EpisodeTest.php b/tests/modules/Api/Rest/V1/EpisodeTest.php index 5dfd9c52..990652f7 100644 --- a/tests/modules/Api/Rest/V1/EpisodeTest.php +++ b/tests/modules/Api/Rest/V1/EpisodeTest.php @@ -99,7 +99,7 @@ class EpisodeTest extends CIUnitTestCase 'messages' => [ 'error' => 'Episode not found', ], - ] + ], ); $result->assertHeader('Content-Type', 'application/json; charset=UTF-8'); } diff --git a/tests/modules/Api/Rest/V1/PodcastTest.php b/tests/modules/Api/Rest/V1/PodcastTest.php index 5c17bba8..cdf5a446 100644 --- a/tests/modules/Api/Rest/V1/PodcastTest.php +++ b/tests/modules/Api/Rest/V1/PodcastTest.php @@ -98,7 +98,7 @@ class PodcastTest extends CIUnitTestCase 'messages' => [ 'error' => 'Podcast not found', ], - ] + ], ); $result->assertHeader('Content-Type', 'application/json; charset=UTF-8'); } diff --git a/tests/modules/Plugins/PluginsTest.php b/tests/modules/Plugins/PluginsTest.php index 3e087131..4594bbbe 100644 --- a/tests/modules/Plugins/PluginsTest.php +++ b/tests/modules/Plugins/PluginsTest.php @@ -118,18 +118,18 @@ final class PluginsTest extends CIUnitTestCase $this->assertEquals( (string) $head, ' foo foo ' + ', ); } diff --git a/tests/unit/HealthTest.php b/tests/unit/HealthTest.php index 86da3268..0c2dd382 100644 --- a/tests/unit/HealthTest.php +++ b/tests/unit/HealthTest.php @@ -34,7 +34,7 @@ final class HealthTest extends CIUnitTestCase $config = new App(); $this->assertTrue( $validation->check($config->baseURL, 'valid_url_strict'), - 'baseURL "' . $config->baseURL . '" in .env is not valid URL' + 'baseURL "' . $config->baseURL . '" in .env is not valid URL', ); } @@ -45,7 +45,7 @@ final class HealthTest extends CIUnitTestCase // BaseURL in app/Config/App.php is a valid URL? $this->assertTrue( $validation->check($reader->baseURL, 'valid_url_strict'), - 'baseURL "' . $reader->baseURL . '" in app/Config/App.php is not valid URL' + 'baseURL "' . $reader->baseURL . '" in app/Config/App.php is not valid URL', ); } } diff --git a/themes/cp_admin/_layout.php b/themes/cp_admin/_layout.php index 84e08b61..6f78c843 100644 --- a/themes/cp_admin/_layout.php +++ b/themes/cp_admin/_layout.php @@ -8,12 +8,7 @@ $isEpisodeArea = isset($podcast) && isset($episode); -appendRawContent(service('vite')->asset('styles/index.css', 'css')) - ->appendRawContent(service('vite')->asset('js/admin.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/admin-audio-player.ts', 'js')) -?> + include('_partials/_nav_header') ?> diff --git a/themes/cp_admin/episode/list.php b/themes/cp_admin/episode/list.php index 0662e8e7..a9055b29 100644 --- a/themes/cp_admin/episode/list.php +++ b/themes/cp_admin/episode/list.php @@ -85,7 +85,7 @@ data_table( return publication_pill( $episode->published_at, $episode->publication_status, - 'text-sm' + 'text-sm', ); }, ], @@ -166,7 +166,7 @@ data_table( ], $episodes, 'mb-6 mt-4', - $podcast + $podcast, ) ?> links() ?> diff --git a/themes/cp_admin/episode/persons.php b/themes/cp_admin/episode/persons.php index d08b8b35..0a182c70 100644 --- a/themes/cp_admin/episode/persons.php +++ b/themes/cp_admin/episode/persons.php @@ -88,7 +88,7 @@ ], ], $episode->persons, - 'max-w-xl mt-6' + 'max-w-xl mt-6', ) ?> endSection() ?> diff --git a/themes/cp_admin/episode/video_clips_list.php b/themes/cp_admin/episode/video_clips_list.php index f837630c..b6fa6958 100644 --- a/themes/cp_admin/episode/video_clips_list.php +++ b/themes/cp_admin/episode/video_clips_list.php @@ -127,7 +127,7 @@ use CodeIgniter\I18n\Time; ], ], $videoClips, - 'mb-6' + 'mb-6', ) ?> links() ?> diff --git a/themes/cp_admin/fediverse/blocked_actors.php b/themes/cp_admin/fediverse/blocked_actors.php index 48c9d4ee..7232de3d 100644 --- a/themes/cp_admin/fediverse/blocked_actors.php +++ b/themes/cp_admin/fediverse/blocked_actors.php @@ -42,7 +42,7 @@ ], ], $blockedActors, - 'mt-8' + 'mt-8', ) ?> diff --git a/themes/cp_admin/fediverse/blocked_domains.php b/themes/cp_admin/fediverse/blocked_domains.php index 8eb037cf..51a2049b 100644 --- a/themes/cp_admin/fediverse/blocked_domains.php +++ b/themes/cp_admin/fediverse/blocked_domains.php @@ -41,7 +41,7 @@ ], ], $blockedDomains, - 'mt-8' + 'mt-8', ) ?> endSection() ?> diff --git a/themes/cp_admin/import/_queue_table.php b/themes/cp_admin/import/_queue_table.php index f187af3e..742fd10b 100644 --- a/themes/cp_admin/import/_queue_table.php +++ b/themes/cp_admin/import/_queue_table.php @@ -142,5 +142,5 @@ use Modules\PodcastImport\Entities\TaskStatus; }, ], ], - $podcastImportsQueue + $podcastImportsQueue, ) ?> diff --git a/themes/cp_admin/podcast/persons.php b/themes/cp_admin/podcast/persons.php index b3f8c8a0..a14745b8 100644 --- a/themes/cp_admin/podcast/persons.php +++ b/themes/cp_admin/podcast/persons.php @@ -86,7 +86,7 @@ ], ], $podcast->persons, - 'max-w-xl mt-6' + 'max-w-xl mt-6', ) ?> endSection() ?> \ No newline at end of file diff --git a/themes/cp_app/episode/_layout-preview.php b/themes/cp_app/episode/_layout-preview.php index f39178fa..b9a043b8 100644 --- a/themes/cp_app/episode/_layout-preview.php +++ b/themes/cp_app/episode/_layout-preview.php @@ -4,41 +4,10 @@ - - - - - - - - - - - - [<?= lang('Episode.preview.title') ?>] <?= $episode->title ?> - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/app.ts', 'js') ?> - asset('js/podcast.ts', 'js') ?> - asset('js/audio-player.ts', 'js') ?> - + + ->get('App.theme') ?>">
include('_admin_navbar') ?> diff --git a/themes/cp_app/episode/_layout.php b/themes/cp_app/episode/_layout.php index 27dbc413..849ae8f0 100644 --- a/themes/cp_app/episode/_layout.php +++ b/themes/cp_app/episode/_layout.php @@ -4,12 +4,7 @@ -appendRawContent(service('vite')->asset('styles/index.css', 'css')) - ->appendRawContent(service('vite')->asset('js/app.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/podcast.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/audio-player.ts', 'js')) -?> + diff --git a/themes/cp_app/episode/_partials/comment_actions.php b/themes/cp_app/episode/_partials/comment_actions.php index aac00248..baafac99 100644 --- a/themes/cp_app/episode/_partials/comment_actions.php +++ b/themes/cp_app/episode/_partials/comment_actions.php @@ -22,7 +22,7 @@ ]), [ 'class' => 'inline-flex items-center text-xs hover:underline', - ] + ], ) ?> @@ -44,7 +44,7 @@ ]), [ 'class' => 'inline-flex items-center text-xs hover:underline', - ] + ], ) ?> diff --git a/themes/cp_app/episode/_partials/comment_actions_from_post.php b/themes/cp_app/episode/_partials/comment_actions_from_post.php index a1f7f5ab..7ab2f4d7 100644 --- a/themes/cp_app/episode/_partials/comment_actions_from_post.php +++ b/themes/cp_app/episode/_partials/comment_actions_from_post.php @@ -22,7 +22,7 @@ ]), [ 'class' => 'inline-flex items-center text-xs hover:underline', - ] + ], ) ?> @@ -50,7 +50,7 @@ ]), [ 'class' => 'inline-flex items-center text-xs hover:underline', - ] + ], ) ?> diff --git a/themes/cp_app/home.php b/themes/cp_app/home.php index ac08f0d2..bd47be02 100644 --- a/themes/cp_app/home.php +++ b/themes/cp_app/home.php @@ -50,7 +50,7 @@ 'uri' => route_to('home') . '?sort=created_asc', 'class' => $sortBy === 'created_asc' ? 'font-semibold' : '', ], - ]) + ]), ) ?>" />
diff --git a/themes/cp_app/pages/credits.php b/themes/cp_app/pages/credits.php index a7eae511..35bfda9d 100644 --- a/themes/cp_app/pages/credits.php +++ b/themes/cp_app/pages/credits.php @@ -9,7 +9,6 @@ 'siteName' => esc(service('settings') ->get('App.siteName')), ])) - ->appendRawContent(service('vite')->asset('styles/index.css', 'css')) ?> -appendRawContent(service('vite')->asset('styles/index.css', 'css')) - ->appendRawContent(service('vite')->asset('js/app.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/podcast.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/audio-player.ts', 'js')) -?> + diff --git a/themes/cp_app/podcast/activity.php b/themes/cp_app/podcast/activity.php index db1dbe2f..8d6c21f8 100644 --- a/themes/cp_app/podcast/activity.php +++ b/themes/cp_app/podcast/activity.php @@ -6,7 +6,6 @@
- <?= esc(interact_as_actor()
         ->display_name) ?> diff --git a/themes/cp_app/podcast/unlock.php b/themes/cp_app/podcast/unlock.php index dd50ec5e..492c6d6e 100644 --- a/themes/cp_app/podcast/unlock.php +++ b/themes/cp_app/podcast/unlock.php @@ -4,32 +4,10 @@ - - - - - - - - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/app.ts', 'js') ?> - + + ->get('App.theme') ?>">
include('_admin_navbar') ?> diff --git a/themes/cp_auth/_layout.php b/themes/cp_auth/_layout.php index 42876ad2..b542c01c 100644 --- a/themes/cp_auth/_layout.php +++ b/themes/cp_auth/_layout.php @@ -5,8 +5,7 @@ title('Castopod Auth') - ->description('Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.') - ->appendRawContent(service('vite')->asset('styles/index.css', 'css')); + ->description('Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.'); ?> diff --git a/themes/cp_install/_layout.php b/themes/cp_install/_layout.php index 5b2f22d7..dd58580d 100644 --- a/themes/cp_install/_layout.php +++ b/themes/cp_install/_layout.php @@ -2,20 +2,7 @@ - - - - - <?= lang('Install.title') ?> - - - - - asset('styles/index.css', 'css') ?> - asset('js/install.ts', 'js') ?> - +title(lang('Install.title')) ?>
diff --git a/tsconfig.json b/tsconfig.json index b56093e0..1929331b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,8 +19,8 @@ /* Module Resolution Options */ "moduleResolution": "node", - "baseUrl": "app/Resources/js" /* Base directory to resolve non-absolute module names. */ + "baseUrl": "resources/js" /* Base directory to resolve non-absolute module names. */ }, - "include": ["app/Resources/js/**/*.ts"], + "include": ["resources/js/**/*.ts"], "exclude": [] } diff --git a/vite.config.ts b/vite.config.ts index d4ef6993..099408ed 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,35 +1,41 @@ +import path from "path"; import { defineConfig } from "vite"; import { VitePWA } from "vite-plugin-pwa"; +import codeigniter from "vite-plugin-codeigniter"; -// https://vitejs.dev/config/ -export default defineConfig({ - root: "./app/Resources", - base: "/assets/", - build: { - outDir: "../../public/assets", - assetsDir: "", - manifest: true, - sourcemap: true, - rollupOptions: { - input: { - "admin-audio-player.ts": "app/Resources/js/admin-audio-player.ts", - "admin.ts": "app/Resources/js/admin.ts", - "app.ts": "app/Resources/js/app.ts", - "audio-player.ts": "app/Resources/js/audio-player.ts", - "charts.ts": "app/Resources/js/charts.ts", - "embed.ts": "app/Resources/js/embed.ts", - "error.ts": "app/Resources/js/error.ts", - "install.ts": "app/Resources/js/install.ts", - "map.ts": "app/Resources/js/map.ts", - "podcast.ts": "app/Resources/js/podcast.ts", - "styles/index.css": "app/Resources/styles/index.css", - }, +export default defineConfig(() => { + return { + server: { + host: true, + port: 5173, + strictPort: true, }, - }, - plugins: [ - VitePWA({ - manifest: false, - outDir: "../../public", - }), - ], + plugins: [ + codeigniter({ + imageVariants: [ + { + src: "images/castopod-banner-*.jpg", + sizes: { + "%NAME%_small.webp": 320, + "%NAME%_medium.webp": 960, + "%NAME%_federation.jpg": 1500, + }, + }, + { + src: "images/castopod-avatar.jpg", + sizes: { + "%NAME%_tiny.webp": 40, + "%NAME%_thumbnail.webp": 150, + "%NAME%_medium.webp": 320, + "%NAME%_federation.jpg": 400, + }, + }, + ], + }), + VitePWA({ + manifest: false, + outDir: path.resolve(__dirname, "public/assets"), + }), + ], + }; }); From 567d5e01a343dc50057f8f1d9d378a13f3adeefc Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Fri, 14 Mar 2025 13:02:55 +0000 Subject: [PATCH 094/128] feat(plugins): add `submodule` boolean property to manifest schema --- docs/src/content/docs/en/plugins/manifest.mdx | 14 ++++++++++++++ modules/Plugins/Manifest/Manifest.php | 4 ++++ modules/Plugins/Manifest/manifest.schema.json | 8 +++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/docs/src/content/docs/en/plugins/manifest.mdx b/docs/src/content/docs/en/plugins/manifest.mdx index ecf315c1..192a824f 100644 --- a/docs/src/content/docs/en/plugins/manifest.mdx +++ b/docs/src/content/docs/en/plugins/manifest.mdx @@ -50,14 +50,28 @@ The URL to the project homepage. ### license +**Default:** `"UNLICENSED"` + Specify a license for your plugin so that people know how they are permitted to use it, and any restrictions you're placing on it. ### private +**Default:** `false` + Whether or not to publish the plugin in public directories. If set to `true`, directories should refuse to publish the plugin. +### submodule + +**Default:** `false` + +Indicates whether the plugin is part of a monorepo (a single Git repository +containing multiple plugins). If `true`, the plugin shares its repository with +other plugins. In this case, releases should be tagged using the format +`@` (eg. `acme/hello-world@1.0.0`) to ensure proper +version indexing by plugin repositories. + ### keywords Array of strings to help your plugin get discovered when listed in repositories. diff --git a/modules/Plugins/Manifest/Manifest.php b/modules/Plugins/Manifest/Manifest.php index 59c65ab3..6c098d6c 100644 --- a/modules/Plugins/Manifest/Manifest.php +++ b/modules/Plugins/Manifest/Manifest.php @@ -15,6 +15,7 @@ use CodeIgniter\HTTP\URI; * @property ?URI $homepage * @property ?string $license * @property bool $private + * @property bool $submodule * @property list $keywords * @property ?string $minCastopodVersion * @property list $hooks @@ -31,6 +32,7 @@ class Manifest extends ManifestObject 'homepage' => 'permit_empty|valid_url_strict', 'license' => 'permit_empty|string', 'private' => 'permit_empty|is_boolean', + 'submodule' => 'permit_empty|is_boolean', 'keywords.*' => 'permit_empty', 'minCastopodVersion' => 'permit_empty|regex_match[/^(0|[1-9]\d*)\.(0|[1-9]\d*)(\.(0|[1-9]\d*))?(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/]', 'hooks.*' => 'permit_empty|in_list[rssBeforeChannel,rssAfterChannel,rssBeforeItem,rssAfterItem,siteHead]', @@ -62,6 +64,8 @@ class Manifest extends ManifestObject protected bool $private = false; + protected bool $submodule = false; + /** * @var list */ diff --git a/modules/Plugins/Manifest/manifest.schema.json b/modules/Plugins/Manifest/manifest.schema.json index 71c71980..9ace64aa 100644 --- a/modules/Plugins/Manifest/manifest.schema.json +++ b/modules/Plugins/Manifest/manifest.schema.json @@ -59,7 +59,13 @@ }, "private": { "type": "boolean", - "description": "If set to true, then repositories should refuse to publish it." + "description": "If set to true, then repositories should refuse to publish it.", + "default": false + }, + "submodule": { + "type": "boolean", + "description": "Set to `true` if the plugin is part of a monorepo (i.e., in the same Git repository as other plugins). Releases should be tagged as `@` to ensure proper version indexing by plugin repositories.", + "default": false }, "keywords": { "description": "This helps people discover your plugin as it's listed in repositories", From 31fee522086a293e25b52242be3641e4c2482883 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Fri, 14 Mar 2025 13:44:55 +0000 Subject: [PATCH 095/128] docs: update database and php requirements to LTS versions --- docs/src/content/docs/ar/getting-started/install.mdx | 8 ++++---- docs/src/content/docs/br/getting-started/install.mdx | 4 ++-- docs/src/content/docs/ca/getting-started/install.mdx | 8 ++++---- docs/src/content/docs/da/getting-started/install.mdx | 4 ++-- docs/src/content/docs/de/getting-started/install.mdx | 4 ++-- docs/src/content/docs/el/getting-started/install.mdx | 4 ++-- docs/src/content/docs/en/getting-started/install.mdx | 4 ++-- docs/src/content/docs/es/getting-started/install.mdx | 4 ++-- docs/src/content/docs/eu/getting-started/install.mdx | 4 ++-- docs/src/content/docs/fa/getting-started/install.mdx | 4 ++-- docs/src/content/docs/fr-ca/getting-started/install.mdx | 8 ++++---- docs/src/content/docs/fr/getting-started/install.mdx | 4 ++-- docs/src/content/docs/fr2/getting-started/install.mdx | 4 ++-- docs/src/content/docs/gd/getting-started/install.mdx | 4 ++-- docs/src/content/docs/gl/getting-started/install.mdx | 4 ++-- docs/src/content/docs/id/getting-started/install.mdx | 4 ++-- docs/src/content/docs/it/getting-started/install.mdx | 4 ++-- docs/src/content/docs/ja/getting-started/install.mdx | 4 ++-- docs/src/content/docs/kk/getting-started/install.mdx | 4 ++-- docs/src/content/docs/ko/getting-started/install.mdx | 4 ++-- docs/src/content/docs/nl/getting-started/install.mdx | 4 ++-- docs/src/content/docs/nn-no/getting-started/install.mdx | 8 ++++---- docs/src/content/docs/oc/getting-started/install.mdx | 4 ++-- docs/src/content/docs/pl/getting-started/install.mdx | 4 ++-- docs/src/content/docs/pt-br/getting-started/install.mdx | 4 ++-- docs/src/content/docs/pt/getting-started/install.mdx | 4 ++-- docs/src/content/docs/ro/getting-started/install.mdx | 4 ++-- docs/src/content/docs/ru/getting-started/install.mdx | 4 ++-- docs/src/content/docs/sk/getting-started/install.mdx | 4 ++-- docs/src/content/docs/sr-latn/getting-started/install.mdx | 8 ++++---- docs/src/content/docs/sv/getting-started/install.mdx | 8 ++++---- docs/src/content/docs/uk/getting-started/install.mdx | 8 ++++---- docs/src/content/docs/zh-hans/getting-started/install.mdx | 4 ++-- docs/src/content/docs/zh-hant/getting-started/install.mdx | 4 ++-- 34 files changed, 82 insertions(+), 82 deletions(-) diff --git a/docs/src/content/docs/ar/getting-started/install.mdx b/docs/src/content/docs/ar/getting-started/install.mdx index c9cc1c0d..aed0d67c 100644 --- a/docs/src/content/docs/ar/getting-started/install.mdx +++ b/docs/src/content/docs/ar/getting-started/install.mdx @@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.1 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- PHP v8.4 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.1 or higher +### PHP v8.4 or higher -PHP version 8.1 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/br/getting-started/install.mdx b/docs/src/content/docs/br/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/br/getting-started/install.mdx +++ b/docs/src/content/docs/br/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/ca/getting-started/install.mdx b/docs/src/content/docs/ca/getting-started/install.mdx index a9234d04..8d18212e 100644 --- a/docs/src/content/docs/ca/getting-started/install.mdx +++ b/docs/src/content/docs/ca/getting-started/install.mdx @@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.1 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- PHP v8.4 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.1 or higher +### PHP v8.4 or higher -PHP version 8.1 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/da/getting-started/install.mdx b/docs/src/content/docs/da/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/da/getting-started/install.mdx +++ b/docs/src/content/docs/da/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/de/getting-started/install.mdx b/docs/src/content/docs/de/getting-started/install.mdx index 6ae19ce8..2fe5fd94 100644 --- a/docs/src/content/docs/de/getting-started/install.mdx +++ b/docs/src/content/docs/de/getting-started/install.mdx @@ -11,14 +11,14 @@ installieren. ## Voraussetzungen - PHP v8.4 oder höher -- MySQL Version 5.7 oder höher oder MariaDB Version 10.2 oder höher +- MySQL Version 8.4 oder höher oder MariaDB Version 11.4 oder höher - HTTPS-Unterstützung - Eine [ntp-synchronisierte Uhr](https://wiki.debian.org/NTP) um die eingehenden Anfragen zu überprüfen ### PHP v8.4 oder höher -PHP Version 8.3 oder höher ist erforderlich, mit folgenden Erweiterungen +PHP version 8.4 oder höher ist erforderlich, mit folgenden Erweiterungen installiert: - [intl](https://php.net/manual/en/intl.requirements.php) diff --git a/docs/src/content/docs/el/getting-started/install.mdx b/docs/src/content/docs/el/getting-started/install.mdx index bae5070e..fbbd5f58 100644 --- a/docs/src/content/docs/el/getting-started/install.mdx +++ b/docs/src/content/docs/el/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/en/getting-started/install.mdx b/docs/src/content/docs/en/getting-started/install.mdx index f0cf758c..1d8c6ae9 100644 --- a/docs/src/content/docs/en/getting-started/install.mdx +++ b/docs/src/content/docs/en/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/es/getting-started/install.mdx b/docs/src/content/docs/es/getting-started/install.mdx index 44e87d00..b305aac2 100644 --- a/docs/src/content/docs/es/getting-started/install.mdx +++ b/docs/src/content/docs/es/getting-started/install.mdx @@ -11,14 +11,14 @@ compatibles con PHP-MySQL. ## Requisitos - PHP v8.4 or higher -- MySQL versión 5.7 o superior o MariaDB versión 10.2 o superior +- MySQL versión 8.4 o superior o MariaDB versión 11.4 o superior - Soporte HTTPS - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/eu/getting-started/install.mdx b/docs/src/content/docs/eu/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/eu/getting-started/install.mdx +++ b/docs/src/content/docs/eu/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/fa/getting-started/install.mdx b/docs/src/content/docs/fa/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/fa/getting-started/install.mdx +++ b/docs/src/content/docs/fa/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/fr-ca/getting-started/install.mdx b/docs/src/content/docs/fr-ca/getting-started/install.mdx index 4ffea31a..408fae6f 100644 --- a/docs/src/content/docs/fr-ca/getting-started/install.mdx +++ b/docs/src/content/docs/fr-ca/getting-started/install.mdx @@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.1 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- PHP v8.4 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.1 or higher +### PHP v8.4 or higher -PHP version 8.1 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/fr/getting-started/install.mdx b/docs/src/content/docs/fr/getting-started/install.mdx index 8e2d9223..774c6ca8 100644 --- a/docs/src/content/docs/fr/getting-started/install.mdx +++ b/docs/src/content/docs/fr/getting-started/install.mdx @@ -11,14 +11,14 @@ serveurs web compatibles avec PHP-MySQL. ## Prérequis - PHP v8.4 ou supérieure -- MySQL version 5.7 ou supérieure ou MariaDB version 10.2 ou supérieure +- MySQL version 8.4 ou supérieure ou MariaDB version 11.4 ou supérieure - Prise en charge HTTPS - Une horloge [synchronisée ntp](https://wiki.debian.org/NTP) pour valider les requêtes fédérés entrantes ### PHP v8.4 ou supérieure -PHP version 8.3 ou supérieure est requise, avec les extensions suivantes +PHP version 8.4 ou supérieure est requise, avec les extensions suivantes installées : - [intl](https://www.php.net/manual/fr/intl.requirements.php) diff --git a/docs/src/content/docs/fr2/getting-started/install.mdx b/docs/src/content/docs/fr2/getting-started/install.mdx index 74b1a612..6edc9b83 100644 --- a/docs/src/content/docs/fr2/getting-started/install.mdx +++ b/docs/src/content/docs/fr2/getting-started/install.mdx @@ -11,14 +11,14 @@ serveurs web compatibles avec PHP-MySQL. ## Prérequis - PHP v8.4 or higher -- MySQL version 5.7 ou supérieure ou MariaDB version 10.2 ou supérieure +- MySQL version 8.4 ou supérieure ou MariaDB version 11.4 ou supérieure - Prise en charge HTTPS - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://www.php.net/manual/fr/intl.requirements.php) - [libcurl](https://www.php.net/manual/fr/curl.requirements.php) diff --git a/docs/src/content/docs/gd/getting-started/install.mdx b/docs/src/content/docs/gd/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/gd/getting-started/install.mdx +++ b/docs/src/content/docs/gd/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/gl/getting-started/install.mdx b/docs/src/content/docs/gl/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/gl/getting-started/install.mdx +++ b/docs/src/content/docs/gl/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/id/getting-started/install.mdx b/docs/src/content/docs/id/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/id/getting-started/install.mdx +++ b/docs/src/content/docs/id/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/it/getting-started/install.mdx b/docs/src/content/docs/it/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/it/getting-started/install.mdx +++ b/docs/src/content/docs/it/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/ja/getting-started/install.mdx b/docs/src/content/docs/ja/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/ja/getting-started/install.mdx +++ b/docs/src/content/docs/ja/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/kk/getting-started/install.mdx b/docs/src/content/docs/kk/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/kk/getting-started/install.mdx +++ b/docs/src/content/docs/kk/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/ko/getting-started/install.mdx b/docs/src/content/docs/ko/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/ko/getting-started/install.mdx +++ b/docs/src/content/docs/ko/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/nl/getting-started/install.mdx b/docs/src/content/docs/nl/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/nl/getting-started/install.mdx +++ b/docs/src/content/docs/nl/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/nn-no/getting-started/install.mdx b/docs/src/content/docs/nn-no/getting-started/install.mdx index 8e7a6244..0579db88 100644 --- a/docs/src/content/docs/nn-no/getting-started/install.mdx +++ b/docs/src/content/docs/nn-no/getting-started/install.mdx @@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.1 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- PHP v8.4 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.1 or higher +### PHP v8.4 or higher -PHP version 8.1 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/oc/getting-started/install.mdx b/docs/src/content/docs/oc/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/oc/getting-started/install.mdx +++ b/docs/src/content/docs/oc/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/pl/getting-started/install.mdx b/docs/src/content/docs/pl/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/pl/getting-started/install.mdx +++ b/docs/src/content/docs/pl/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/pt-br/getting-started/install.mdx b/docs/src/content/docs/pt-br/getting-started/install.mdx index 3e1455aa..1a6cb450 100644 --- a/docs/src/content/docs/pt-br/getting-started/install.mdx +++ b/docs/src/content/docs/pt-br/getting-started/install.mdx @@ -11,14 +11,14 @@ com PHP-MySQL. ## Requisitos - PHP v8.4 or higher -- MySQL versão 5.7 ou superior ou MariaDB versão 10.2 ou superior +- MySQL versão 8.4 ou superior ou MariaDB versão 11.4 ou superior - Suporte a HTTPS - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/pt/getting-started/install.mdx b/docs/src/content/docs/pt/getting-started/install.mdx index 456131b8..2248ec8d 100644 --- a/docs/src/content/docs/pt/getting-started/install.mdx +++ b/docs/src/content/docs/pt/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/ro/getting-started/install.mdx b/docs/src/content/docs/ro/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/ro/getting-started/install.mdx +++ b/docs/src/content/docs/ro/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/ru/getting-started/install.mdx b/docs/src/content/docs/ru/getting-started/install.mdx index 456131b8..2248ec8d 100644 --- a/docs/src/content/docs/ru/getting-started/install.mdx +++ b/docs/src/content/docs/ru/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/sk/getting-started/install.mdx b/docs/src/content/docs/sk/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/sk/getting-started/install.mdx +++ b/docs/src/content/docs/sk/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/sr-latn/getting-started/install.mdx b/docs/src/content/docs/sr-latn/getting-started/install.mdx index ec6aea20..873b3fee 100644 --- a/docs/src/content/docs/sr-latn/getting-started/install.mdx +++ b/docs/src/content/docs/sr-latn/getting-started/install.mdx @@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.1 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- PHP v8.4 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.1 or higher +### PHP v8.4 or higher -PHP version 8.1 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/sv/getting-started/install.mdx b/docs/src/content/docs/sv/getting-started/install.mdx index f2a660bd..dc8b9015 100644 --- a/docs/src/content/docs/sv/getting-started/install.mdx +++ b/docs/src/content/docs/sv/getting-started/install.mdx @@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.1 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- PHP v8.4 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.1 or higher +### PHP v8.4 or higher -PHP version 8.1 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/uk/getting-started/install.mdx b/docs/src/content/docs/uk/getting-started/install.mdx index ec6aea20..873b3fee 100644 --- a/docs/src/content/docs/uk/getting-started/install.mdx +++ b/docs/src/content/docs/uk/getting-started/install.mdx @@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements -- PHP v8.1 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- PHP v8.4 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.1 or higher +### PHP v8.4 or higher -PHP version 8.1 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/zh-hans/getting-started/install.mdx b/docs/src/content/docs/zh-hans/getting-started/install.mdx index beb41b92..3ebe63fd 100644 --- a/docs/src/content/docs/zh-hans/getting-started/install.mdx +++ b/docs/src/content/docs/zh-hans/getting-started/install.mdx @@ -10,13 +10,13 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## 要求 - PHP v8.4 or higher -- MySQL 5.7 或更高版本与 MariaDB 10.2 或更高版本 +- MySQL 8.4 或更高版本与 MariaDB 11.4 或更高版本 - HTTPS 支持 - 用于验证的 [NTP 同步时钟](https://wiki.debian.org/NTP) 传入请求 ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) diff --git a/docs/src/content/docs/zh-hant/getting-started/install.mdx b/docs/src/content/docs/zh-hant/getting-started/install.mdx index 20f1a978..408fae6f 100644 --- a/docs/src/content/docs/zh-hant/getting-started/install.mdx +++ b/docs/src/content/docs/zh-hant/getting-started/install.mdx @@ -10,14 +10,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers. ## Requirements - PHP v8.4 or higher -- MySQL version 5.7 or higher or MariaDB version 10.2 or higher +- MySQL version 8.4 or higher or MariaDB version 11.4 or higher - HTTPS support - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests ### PHP v8.4 or higher -PHP version 8.3 or higher is required, with the following extensions installed: +PHP version 8.4 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) From 00870ceff2d5813c69fc2478d5e886da2aa9d357 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Fri, 14 Mar 2025 13:45:36 +0000 Subject: [PATCH 096/128] ci: skip ssl when connecting to mariadb test database --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 69ebc71d..e8ff6dd5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -80,14 +80,14 @@ lint-js: tests: stage: quality services: - - mariadb:10.2 + - mariadb:10.11 variables: MYSQL_ROOT_PASSWORD: "R00Tp4ssW0RD" MYSQL_DATABASE: "test" MYSQL_USER: "castopod" MYSQL_PASSWORD: "castopod" script: - - echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mariadb "$MYSQL_DATABASE" + - echo "SHOW DATABASES;" | mariadb --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mariadb "$MYSQL_DATABASE" --skip_ssl # run phpunit without code coverage # TODO: add code coverage From 61d6a6b60f911457bdf51f9cfd18866b4c9a4711 Mon Sep 17 00:00:00 2001 From: Paul Cutler Date: Tue, 20 May 2025 06:32:24 -0500 Subject: [PATCH 097/128] docs: fix broken note using Aside tag --- .../content/docs/en/user-guide/podcast/episodes.mdx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/src/content/docs/en/user-guide/podcast/episodes.mdx b/docs/src/content/docs/en/user-guide/podcast/episodes.mdx index 87426020..75dde451 100644 --- a/docs/src/content/docs/en/user-guide/podcast/episodes.mdx +++ b/docs/src/content/docs/en/user-guide/podcast/episodes.mdx @@ -126,10 +126,14 @@ You can optionally upload a chapters file in JSON format. To learn more about chapters and for an example of the correct format, visit the [Podcast Namespace](https://github.com/Podcastindex-org/podcast-namespace/blob/main/chapters/jsonChapters.md). -:::note Not all podcast players natively support chapters in JSON format. More -modern players, such as Fountain and Apple Podcasts, do support chapters in JSON + ### Publish your episode From 96b2df15b000a530fd0952aa3efec9263abf7cba Mon Sep 17 00:00:00 2001 From: kloo kloo Date: Tue, 20 May 2025 12:23:01 +0000 Subject: [PATCH 098/128] chore: add discourse social network --- modules/Platforms/Platforms.php | 5 +++++ resources/icons/social/_index.php | 1 + resources/icons/social/discourse.svg | 1 + 3 files changed, 7 insertions(+) create mode 100644 resources/icons/social/discourse.svg diff --git a/modules/Platforms/Platforms.php b/modules/Platforms/Platforms.php index 019f6847..72743d0c 100644 --- a/modules/Platforms/Platforms.php +++ b/modules/Platforms/Platforms.php @@ -274,6 +274,11 @@ class Platforms 'home_url' => 'https://discord.com/', 'submit_url' => 'https://discord.com/register', ], + 'discourse' => [ + 'label' => 'Discourse', + 'home_url' => 'https://www.discourse.org/', + 'submit_url' => null, + ], 'facebook' => [ 'label' => 'Facebook', 'home_url' => 'https://www.facebook.com/', diff --git a/resources/icons/social/_index.php b/resources/icons/social/_index.php index 571d8ab0..72ef25ca 100644 --- a/resources/icons/social/_index.php +++ b/resources/icons/social/_index.php @@ -5,6 +5,7 @@ declare(strict_types=1); /** * @icon("social:bluesky") * @icon("social:discord") + * @icon("social:discourse") * @icon("social:facebook") * @icon("social:funkwhale") * @icon("social:instagram") diff --git a/resources/icons/social/discourse.svg b/resources/icons/social/discourse.svg new file mode 100644 index 00000000..b8f621c7 --- /dev/null +++ b/resources/icons/social/discourse.svg @@ -0,0 +1 @@ + \ No newline at end of file From 346c00e7b5899bcddaf166bcfc4ee21cdee78cae Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 25 Aug 2025 18:09:41 +0000 Subject: [PATCH 099/128] chore: update CI to v4.6.3 + all php and js dependencies --- .gitignore | 20 +- CONTRIBUTING-DEV.md | 3 - app/Config/Autoload.php | 2 - app/Config/Cache.php | 6 +- app/Config/Cookie.php | 2 +- app/Config/DocTypes.php | 3 - app/Config/Events.php | 3 +- app/Config/Filters.php | 5 +- app/Config/Logger.php | 3 +- app/Config/Mimes.php | 5 +- app/Config/Modules.php | 2 - app/Config/Optimize.php | 2 - app/Config/Routes.php | 2 +- app/Config/Services.php | 10 +- app/Controllers/CreditsController.php | 6 +- app/Controllers/EpisodeAudioController.php | 6 +- app/Controllers/EpisodeCommentController.php | 6 +- app/Controllers/EpisodeController.php | 31 +- app/Controllers/EpisodePreviewController.php | 3 +- app/Controllers/FeedController.php | 11 +- app/Controllers/HomeController.php | 3 +- app/Controllers/MapController.php | 2 +- app/Controllers/PageController.php | 3 +- app/Controllers/PodcastController.php | 36 +- app/Controllers/PostController.php | 9 +- app/Controllers/WebmanifestController.php | 2 +- app/Database/Seeds/DevSuperadminSeeder.php | 2 +- .../Seeds/FakePodcastsAnalyticsSeeder.php | 7 +- .../Seeds/FakeWebsiteAnalyticsSeeder.php | 7 +- app/Entities/Actor.php | 3 +- app/Entities/Category.php | 3 +- app/Entities/Clip/BaseClip.php | 17 +- app/Entities/Clip/VideoClip.php | 2 +- app/Entities/Credit.php | 9 +- app/Entities/Episode.php | 52 +- app/Entities/EpisodeComment.php | 6 +- app/Entities/Person.php | 19 +- app/Entities/Podcast.php | 49 +- app/Entities/Post.php | 3 +- app/Helpers/page_helper.php | 3 +- app/Helpers/rss_helper.php | 5 +- .../ViewComponents/Config/Services.php | 1 + app/Models/ClipModel.php | 14 +- app/Models/EpisodeCommentModel.php | 9 +- app/Models/EpisodeModel.php | 15 +- app/Models/LikeModel.php | 6 +- app/Models/PersonModel.php | 28 +- app/Models/PodcastModel.php | 49 +- app/Views/Components/Forms/Checkbox.php | 8 +- app/Views/Components/Forms/Field.php | 4 +- app/Views/Components/Forms/Label.php | 4 +- app/Views/Components/Forms/RadioGroup.php | 10 +- app/Views/Components/Forms/Toggler.php | 8 +- app/Views/errors/html/debug.css | 4 +- app/Views/errors/html/error_exception.php | 2 +- composer.json | 30 +- composer.lock | 2756 ++++--- .../docs/ar/getting-started/install.mdx | 1 - .../docs/ar/getting-started/update.mdx | 4 - .../docs/br/getting-started/install.mdx | 1 - .../docs/br/getting-started/update.mdx | 4 - .../docs/ca/getting-started/install.mdx | 1 - .../docs/ca/getting-started/update.mdx | 4 - .../docs/da/getting-started/install.mdx | 1 - .../docs/da/getting-started/update.mdx | 4 - .../docs/de/getting-started/install.mdx | 1 - .../docs/de/getting-started/update.mdx | 4 - .../docs/el/getting-started/install.mdx | 1 - .../docs/el/getting-started/update.mdx | 4 - .../docs/en/getting-started/install.mdx | 1 - .../docs/en/getting-started/update.mdx | 4 - docs/src/content/docs/en/plugins/create.mdx | 2 - .../docs/es/getting-started/install.mdx | 1 - .../docs/es/getting-started/update.mdx | 4 - .../docs/eu/getting-started/install.mdx | 1 - .../docs/eu/getting-started/update.mdx | 4 - .../docs/fa/getting-started/install.mdx | 1 - .../docs/fa/getting-started/update.mdx | 4 - .../docs/fr-ca/getting-started/install.mdx | 1 - .../docs/fr-ca/getting-started/update.mdx | 4 - .../docs/fr/getting-started/install.mdx | 1 - .../docs/fr/getting-started/update.mdx | 4 - .../docs/fr2/getting-started/install.mdx | 1 - .../docs/fr2/getting-started/update.mdx | 4 - .../docs/gd/getting-started/install.mdx | 1 - .../docs/gd/getting-started/update.mdx | 4 - .../docs/gl/getting-started/install.mdx | 1 - .../docs/gl/getting-started/update.mdx | 4 - .../docs/id/getting-started/install.mdx | 1 - .../docs/id/getting-started/update.mdx | 4 - .../docs/it/getting-started/install.mdx | 1 - .../docs/it/getting-started/update.mdx | 4 - .../docs/ja/getting-started/install.mdx | 1 - .../docs/ja/getting-started/update.mdx | 4 - .../docs/kk/getting-started/install.mdx | 1 - .../docs/kk/getting-started/update.mdx | 4 - .../docs/ko/getting-started/install.mdx | 1 - .../docs/ko/getting-started/update.mdx | 4 - .../docs/nl/getting-started/install.mdx | 1 - .../docs/nl/getting-started/update.mdx | 4 - .../docs/nn-no/getting-started/install.mdx | 1 - .../docs/nn-no/getting-started/update.mdx | 4 - .../docs/oc/getting-started/install.mdx | 1 - .../docs/oc/getting-started/update.mdx | 4 - .../docs/pl/getting-started/install.mdx | 1 - .../docs/pl/getting-started/update.mdx | 4 - .../docs/pt-br/getting-started/install.mdx | 1 - .../docs/pt-br/getting-started/update.mdx | 4 - .../docs/pt/getting-started/install.mdx | 1 - .../docs/pt/getting-started/update.mdx | 4 - .../docs/ro/getting-started/install.mdx | 1 - .../docs/ro/getting-started/update.mdx | 4 - .../docs/ru/getting-started/install.mdx | 1 - .../docs/ru/getting-started/update.mdx | 4 - .../docs/sk/getting-started/install.mdx | 1 - .../docs/sk/getting-started/update.mdx | 4 - .../docs/sr-latn/getting-started/install.mdx | 1 - .../docs/sr-latn/getting-started/update.mdx | 4 - .../docs/sv/getting-started/install.mdx | 1 - .../docs/sv/getting-started/update.mdx | 4 - .../docs/uk/getting-started/install.mdx | 1 - .../docs/uk/getting-started/update.mdx | 4 - .../docs/zh-hans/getting-started/install.mdx | 1 - .../docs/zh-hans/getting-started/update.mdx | 4 - .../docs/zh-hant/getting-started/install.mdx | 1 - .../docs/zh-hant/getting-started/update.mdx | 4 - .../Admin/Controllers/DashboardController.php | 18 +- .../Admin/Controllers/EpisodeController.php | 40 +- .../Controllers/EpisodePersonController.php | 30 +- .../Controllers/NotificationController.php | 16 +- modules/Admin/Controllers/PageController.php | 8 +- .../Admin/Controllers/PersonController.php | 11 +- .../Admin/Controllers/PodcastController.php | 66 +- .../Controllers/PodcastPersonController.php | 23 +- .../Admin/Controllers/SettingsController.php | 39 +- .../Admin/Controllers/SoundbiteController.php | 15 +- .../Controllers/VideoClipsController.php | 37 +- .../EpisodeAnalyticsController.php | 8 +- .../Models/AnalyticsPodcastModel.php | 5 +- .../Rest/V1/Controllers/BaseApiController.php | 22 + .../Rest/V1/Controllers/EpisodeController.php | 21 +- .../V1/Controllers/ExceptionController.php | 6 +- .../Rest/V1/Controllers/PodcastController.php | 13 +- modules/Auth/Config/AuthGroups.php | 3 +- modules/Auth/Config/Routes.php | 2 +- .../Controllers/ContributorController.php | 13 +- modules/Auth/Controllers/UserController.php | 8 +- modules/Auth/Filters/PermissionFilter.php | 3 +- modules/Auth/Helpers/auth_helper.php | 12 +- modules/Fediverse/Entities/Notification.php | 9 +- modules/Fediverse/Filters/FediverseFilter.php | 6 +- modules/Fediverse/Models/ActivityModel.php | 49 +- .../Install/Controllers/InstallController.php | 2 +- modules/Media/Entities/BaseMedia.php | 4 +- modules/MediaClipper/Commands/Generate.php | 22 +- .../Controllers/PlatformController.php | 8 +- .../Plugins/Controllers/PluginController.php | 6 +- modules/Plugins/Core/BasePlugin.php | 9 +- modules/Plugins/ExternalImageProcessor.php | 3 +- modules/Plugins/ExternalLinkProcessor.php | 3 +- .../PodcastImport/Commands/PodcastImport.php | 23 +- .../Controllers/PodcastImportController.php | 12 +- .../Helpers/podcast_import_helper.php | 2 +- .../Controllers/LockController.php | 2 +- .../Controllers/SubscriptionController.php | 7 +- .../PremiumPodcasts/Entities/Subscription.php | 9 +- .../Filters/PodcastUnlockFilter.php | 3 +- .../Models/SubscriptionModel.php | 3 +- modules/WebSub/Commands/Publish.php | 10 +- package.json | 96 +- phpstan.neon | 2 +- pnpm-lock.yaml | 7193 +++++++++-------- preload.php | 8 +- resources/styles/_modules/custom.css | 18 +- resources/styles/_modules/readMore.css | 3 +- resources/styles/_modules/seeMore.css | 3 +- spark | 7 +- tests/unit/HealthTest.php | 1 + themes/cp_admin/_partials/_nav_header.php | 6 +- themes/cp_admin/_partials/_nav_menu.php | 2 +- themes/cp_admin/episode/list.php | 3 +- themes/cp_admin/episode/publish.php | 12 +- themes/cp_admin/episode/view.php | 2 +- themes/cp_admin/plugins/_plugin.php | 12 +- themes/cp_admin/plugins/view.php | 14 +- .../podcast/analytics/listening_time.php | 2 +- .../podcast/analytics/time_periods.php | 2 +- .../podcast/analytics/unique_listeners.php | 2 +- themes/cp_admin/podcast/latest_episodes.php | 8 +- themes/cp_admin/subscription/list.php | 10 +- themes/cp_app/episode/_layout-preview.php | 4 +- themes/cp_app/episode/_layout.php | 4 +- themes/cp_app/home.php | 8 +- themes/cp_app/pages/credits.php | 4 +- themes/cp_app/pages/map.php | 8 +- themes/cp_app/pages/page.php | 4 +- themes/cp_app/podcast/_partials/sidebar.php | 8 +- themes/cp_app/podcast/episodes.php | 4 +- themes/cp_app/podcast/follow.php | 8 +- themes/cp_app/podcast/links.php | 2 +- themes/cp_app/post/_partials/reblog.php | 10 +- themes/cp_app/post/post.php | 12 +- themes/cp_app/post/remote_action.php | 16 +- themes/cp_auth/_layout.php | 8 +- themes/cp_install/cache_config.php | 8 +- writable/debugbar/index.html | 9 + 206 files changed, 6265 insertions(+), 5362 deletions(-) create mode 100644 modules/Api/Rest/V1/Controllers/BaseApiController.php create mode 100644 writable/debugbar/index.html diff --git a/.gitignore b/.gitignore index 5048fc8e..f72a0cbf 100644 --- a/.gitignore +++ b/.gitignore @@ -67,7 +67,7 @@ writable/uploads/* !writable/uploads/index.html writable/debugbar/* -!writable/debugbar/.gitkeep +!writable/debugbar/index.html php_errors.log @@ -107,15 +107,15 @@ _modules/* .idea/ *.iml -# Netbeans -nbproject/ -build/ -nbbuild/ -dist/ -nbdist/ -nbactions.xml -nb-configuration.xml -.nb-gradle/ +# NetBeans +/nbproject/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/nbactions.xml +/nb-configuration.xml +/.nb-gradle/ # Sublime Text *.tmlanguage.cache diff --git a/CONTRIBUTING-DEV.md b/CONTRIBUTING-DEV.md index 23350647..907d3ce1 100644 --- a/CONTRIBUTING-DEV.md +++ b/CONTRIBUTING-DEV.md @@ -146,12 +146,10 @@ To see your changes, go to: - `http://localhost:8080/` for the Castopod website - `http://localhost:8080/cp-admin` for the Castopod admin: - - email: **admin@castopod.local** - password: **castopod** - `http://localhost:8888/` for the phpmyadmin interface: - - username: **castopod** - password: **castopod** @@ -294,7 +292,6 @@ You do not wish to use the VSCode devcontainer? No problem! ``` 3. (optional) Populate the database with test data: - - Populate with fake podcast analytics: ```bash diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index 23b183e0..3fd8e175 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -16,8 +16,6 @@ use CodeIgniter\Config\AutoloadConfig; * * NOTE: If you use an identical key in $psr4 or $classmap, then * the values in this file will overwrite the framework's values. - * - * @immutable */ class Autoload extends AutoloadConfig { diff --git a/app/Config/Cache.php b/app/Config/Cache.php index e7517039..e0b9009e 100644 --- a/app/Config/Cache.php +++ b/app/Config/Cache.php @@ -80,7 +80,7 @@ class Cache extends BaseConfig * Your file storage preferences can be specified below, if you are using * the File driver. * - * @var array + * @var array{storePath?: string, mode?: int} */ public array $file = [ 'storePath' => WRITEPATH . 'cache/', @@ -97,7 +97,7 @@ class Cache extends BaseConfig * * @see https://codeigniter.com/user_guide/libraries/caching.html#memcached * - * @var array + * @var array{host?: string, port?: int, weight?: int, raw?: bool} */ public array $memcached = [ 'host' => '127.0.0.1', @@ -113,7 +113,7 @@ class Cache extends BaseConfig * Your Redis server can be specified below, if you are using * the Redis or Predis drivers. * - * @var array + * @var array{host?: string, password?: string|null, port?: int, timeout?: int, database?: int} */ public array $redis = [ 'host' => '127.0.0.1', diff --git a/app/Config/Cookie.php b/app/Config/Cookie.php index 26e5da56..bcbe5d7e 100644 --- a/app/Config/Cookie.php +++ b/app/Config/Cookie.php @@ -85,7 +85,7 @@ class Cookie extends BaseConfig * (empty string) means default SameSite attribute set by browsers (`Lax`) * will be set on cookies. If set to `None`, `$secure` must also be set. * - * @phpstan-var 'None'|'Lax'|'Strict'|'' + * @var ''|'Lax'|'None'|'Strict' */ public string $samesite = 'Lax'; diff --git a/app/Config/DocTypes.php b/app/Config/DocTypes.php index 3d04aaa5..62ad9e07 100644 --- a/app/Config/DocTypes.php +++ b/app/Config/DocTypes.php @@ -4,9 +4,6 @@ declare(strict_types=1); namespace Config; -/** - * @immutable - */ class DocTypes { /** diff --git a/app/Config/Events.php b/app/Config/Events.php index ac4ed255..b216c3c9 100644 --- a/app/Config/Events.php +++ b/app/Config/Events.php @@ -56,7 +56,8 @@ Events::on('pre_system', static function (): void { // Hot Reload route - for framework use on the hot reloader. if (ENVIRONMENT === 'development') { service('routes')->get('__hot-reload', static function (): void { - (new HotReloader())->run(); + new HotReloader() + ->run(); }); } } diff --git a/app/Config/Filters.php b/app/Config/Filters.php index 1cf07e27..2d64bc02 100644 --- a/app/Config/Filters.php +++ b/app/Config/Filters.php @@ -67,7 +67,10 @@ class Filters extends BaseConfig /** * List of filter aliases that are always applied before and after every request. * - * @var array>>>|array> + * @var array{ + * before: array|string}>|list, + * after: array|string}>|list + * } */ public array $globals = [ 'before' => [ diff --git a/app/Config/Logger.php b/app/Config/Logger.php index 2770468f..ab949f98 100644 --- a/app/Config/Logger.php +++ b/app/Config/Logger.php @@ -6,6 +6,7 @@ namespace Config; use CodeIgniter\Config\BaseConfig; use CodeIgniter\Log\Handlers\FileHandler; +use CodeIgniter\Log\Handlers\HandlerInterface; class Logger extends BaseConfig { @@ -75,7 +76,7 @@ class Logger extends BaseConfig * Handlers are executed in the order defined in this array, starting with * the handler on top and continuing down. * - * @var array|string>> + * @var array, array|string>> */ public array $handlers = [ /* diff --git a/app/Config/Mimes.php b/app/Config/Mimes.php index 982b2152..c4dab16a 100644 --- a/app/Config/Mimes.php +++ b/app/Config/Mimes.php @@ -12,8 +12,6 @@ namespace Config; * * When working with mime types, please make sure you have the ´fileinfo´ extension enabled to reliably detect the * media types. - * - * @immutable */ class Mimes { @@ -281,7 +279,8 @@ class Mimes 'srt' => ['application/x-subrip', 'text/srt', 'text/plain', 'application/octet-stream'], 'vtt' => ['text/vtt', 'text/plain'], 'ico' => ['image/x-icon', 'image/x-ico', 'image/vnd.microsoft.icon'], - 'stl' => ['application/sla', 'application/vnd.ms-pki.stl', 'application/x-navistyle'], + 'stl' => ['application/sla', 'application/vnd.ms-pki.stl', 'application/x-navistyle', 'model/stl', + 'application/octet-stream', ], ]; /** diff --git a/app/Config/Modules.php b/app/Config/Modules.php index bfceb1f3..0c5bfb04 100644 --- a/app/Config/Modules.php +++ b/app/Config/Modules.php @@ -11,8 +11,6 @@ use CodeIgniter\Modules\Modules as BaseModules; * * NOTE: This class is required prior to Autoloader instantiation, * and does not extend BaseConfig. - * - * @immutable */ class Modules extends BaseModules { diff --git a/app/Config/Optimize.php b/app/Config/Optimize.php index 3aa3411c..93bbaf39 100644 --- a/app/Config/Optimize.php +++ b/app/Config/Optimize.php @@ -9,8 +9,6 @@ namespace Config; * * NOTE: This class does not extend BaseConfig for performance reasons. * So you cannot replace the property values with Environment Variables. - * - * @immutable */ class Optimize { diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 9e8a6cd6..a21a8f52 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -5,7 +5,7 @@ declare(strict_types=1); use CodeIgniter\Router\RouteCollection; /** - * @var RouteCollection $routes + * @var RouteCollection * * -------------------------------------------------------------------- * Placeholder definitions diff --git a/app/Config/Services.php b/app/Config/Services.php index 39513ce4..536e040e 100644 --- a/app/Config/Services.php +++ b/app/Config/Services.php @@ -9,9 +9,11 @@ use App\Libraries\HtmlHead; use App\Libraries\Negotiate; use App\Libraries\Router; use CodeIgniter\Config\BaseService; +use CodeIgniter\HTTP\Negotiate as CodeIgniterHTTPNegotiate; use CodeIgniter\HTTP\Request; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\Router\RouteCollectionInterface; +use CodeIgniter\Router\Router as CodeIgniterRouter; /** * Services Configuration file. @@ -33,7 +35,7 @@ class Services extends BaseService ?RouteCollectionInterface $routes = null, ?Request $request = null, bool $getShared = true, - ): Router { + ): CodeIgniterRouter { if ($getShared) { return static::getSharedInstance('router', $routes, $request); } @@ -48,8 +50,10 @@ class Services extends BaseService * The Negotiate class provides the content negotiation features for working the request to determine correct * language, encoding, charset, and more. */ - public static function negotiator(?RequestInterface $request = null, bool $getShared = true): Negotiate - { + public static function negotiator( + ?RequestInterface $request = null, + bool $getShared = true, + ): CodeIgniterHTTPNegotiate { if ($getShared) { return static::getSharedInstance('negotiator', $request); } diff --git a/app/Controllers/CreditsController.php b/app/Controllers/CreditsController.php index e4e7fe8b..3453df12 100644 --- a/app/Controllers/CreditsController.php +++ b/app/Controllers/CreditsController.php @@ -33,8 +33,10 @@ class CreditsController extends BaseController 'content_markdown' => '', ]); - $allPodcasts = (new PodcastModel())->findAll(); - $allCredits = (new CreditModel())->findAll(); + $allPodcasts = new PodcastModel() + ->findAll(); + $allCredits = new CreditModel() + ->findAll(); // Unlike the carpenter, we make a tree from a table: $personGroup = null; diff --git a/app/Controllers/EpisodeAudioController.php b/app/Controllers/EpisodeAudioController.php index f51d6fa8..3a5de74d 100644 --- a/app/Controllers/EpisodeAudioController.php +++ b/app/Controllers/EpisodeAudioController.php @@ -65,7 +65,7 @@ class EpisodeAudioController extends Controller } if ( - ! ($podcast = (new PodcastModel())->getPodcastByHandle($params[0])) instanceof Podcast + ! ($podcast = new PodcastModel()->getPodcastByHandle($params[0])) instanceof Podcast ) { throw PageNotFoundException::forPageNotFound(); } @@ -73,7 +73,7 @@ class EpisodeAudioController extends Controller $this->podcast = $podcast; if ( - ! ($episode = (new EpisodeModel())->getEpisodeBySlug($params[0], $params[1])) instanceof Episode + ! ($episode = new EpisodeModel()->getEpisodeBySlug($params[0], $params[1])) instanceof Episode ) { throw PageNotFoundException::forPageNotFound(); } @@ -108,7 +108,7 @@ class EpisodeAudioController extends Controller } // check if there's a valid subscription for the provided token - if (! ($subscription = (new SubscriptionModel())->validateSubscription( + if (! ($subscription = new SubscriptionModel()->validateSubscription( $this->episode->podcast->handle, $token, )) instanceof Subscription) { diff --git a/app/Controllers/EpisodeCommentController.php b/app/Controllers/EpisodeCommentController.php index 3da77458..948134c2 100644 --- a/app/Controllers/EpisodeCommentController.php +++ b/app/Controllers/EpisodeCommentController.php @@ -44,7 +44,7 @@ class EpisodeCommentController extends BaseController } if ( - ! ($podcast = (new PodcastModel())->getPodcastByHandle($params[0])) instanceof Podcast + ! ($podcast = new PodcastModel()->getPodcastByHandle($params[0])) instanceof Podcast ) { throw PageNotFoundException::forPageNotFound(); } @@ -53,7 +53,7 @@ class EpisodeCommentController extends BaseController $this->actor = $podcast->actor; if ( - ! ($episode = (new EpisodeModel())->getEpisodeBySlug($params[0], $params[1])) instanceof Episode + ! ($episode = new EpisodeModel()->getEpisodeBySlug($params[0], $params[1])) instanceof Episode ) { throw PageNotFoundException::forPageNotFound(); } @@ -61,7 +61,7 @@ class EpisodeCommentController extends BaseController $this->episode = $episode; if ( - ! ($comment = (new EpisodeCommentModel())->getCommentById($params[2])) instanceof EpisodeComment + ! ($comment = new EpisodeCommentModel()->getCommentById($params[2])) instanceof EpisodeComment ) { throw PageNotFoundException::forPageNotFound(); } diff --git a/app/Controllers/EpisodeController.php b/app/Controllers/EpisodeController.php index 459186e4..04c5ddb9 100644 --- a/app/Controllers/EpisodeController.php +++ b/app/Controllers/EpisodeController.php @@ -41,7 +41,7 @@ class EpisodeController extends BaseController } if ( - ! ($podcast = (new PodcastModel())->getPodcastByHandle($params[0])) instanceof Podcast + ! ($podcast = new PodcastModel()->getPodcastByHandle($params[0])) instanceof Podcast ) { throw PageNotFoundException::forPageNotFound(); } @@ -49,7 +49,7 @@ class EpisodeController extends BaseController $this->podcast = $podcast; if ( - ! ($episode = (new EpisodeModel())->getEpisodeBySlug($params[0], $params[1])) instanceof Episode + ! ($episode = new EpisodeModel()->getEpisodeBySlug($params[0], $params[1])) instanceof Episode ) { throw PageNotFoundException::forPageNotFound(); } @@ -87,9 +87,8 @@ class EpisodeController extends BaseController 'episode' => $this->episode, ]; - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode( - $this->podcast->id, - ); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($this->podcast->id); if (auth()->loggedIn()) { helper('form'); @@ -133,9 +132,8 @@ class EpisodeController extends BaseController 'episode' => $this->episode, ]; - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode( - $this->podcast->id, - ); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($this->podcast->id); if (auth()->loggedIn()) { helper('form'); @@ -189,9 +187,8 @@ class EpisodeController extends BaseController $data['chapters'] = $chapters; } - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode( - $this->podcast->id, - ); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($this->podcast->id); if (auth()->loggedIn()) { helper('form'); @@ -250,9 +247,8 @@ class EpisodeController extends BaseController } } - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode( - $this->podcast->id, - ); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($this->podcast->id); if (auth()->loggedIn()) { helper('form'); @@ -306,9 +302,8 @@ class EpisodeController extends BaseController 'themeData' => $themeData, ]; - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode( - $this->podcast->id, - ); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($this->podcast->id); // The page cache is set to a decade so it is deleted manually upon podcast update return view('embed', $data, [ @@ -410,7 +405,7 @@ class EpisodeController extends BaseController $orderedItems = []; if ($paginatedComments !== null) { foreach ($paginatedComments as $comment) { - $orderedItems[] = (new NoteObject($comment))->toArray(); + $orderedItems[] = new NoteObject($comment)->toArray(); } } diff --git a/app/Controllers/EpisodePreviewController.php b/app/Controllers/EpisodePreviewController.php index 4e2f7b78..9ddecb97 100644 --- a/app/Controllers/EpisodePreviewController.php +++ b/app/Controllers/EpisodePreviewController.php @@ -26,7 +26,8 @@ class EpisodePreviewController extends BaseController } // find episode by previewUUID - $episode = (new EpisodeModel())->getEpisodeByPreviewId($params[0]); + $episode = new EpisodeModel() + ->getEpisodeByPreviewId($params[0]); if (! $episode instanceof Episode) { throw PageNotFoundException::forPageNotFound(); diff --git a/app/Controllers/FeedController.php b/app/Controllers/FeedController.php index 371be8a2..e3c246a8 100644 --- a/app/Controllers/FeedController.php +++ b/app/Controllers/FeedController.php @@ -33,7 +33,8 @@ class FeedController extends Controller public function index(string $podcastHandle): ResponseInterface { - $podcast = (new PodcastModel())->where('handle', $podcastHandle) + $podcast = new PodcastModel() + ->where('handle', $podcastHandle) ->first(); if (! $podcast instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); @@ -68,7 +69,8 @@ class FeedController extends Controller $subscription = null; $token = $this->request->getGet('token'); if ($token) { - $subscription = (new SubscriptionModel())->validateSubscription($podcastHandle, $token); + $subscription = new SubscriptionModel() + ->validateSubscription($podcastHandle, $token); } $cacheName = implode( @@ -85,9 +87,8 @@ class FeedController extends Controller $found = get_rss_feed($podcast, $serviceSlug, $subscription, $token); // The page cache is set to expire after next episode publication or a decade by default so it is deleted manually upon podcast update - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode( - $podcast->id, - ); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($podcast->id); cache() ->save($cacheName, $found, $secondsToNextUnpublishedEpisode ?: DECADE); diff --git a/app/Controllers/HomeController.php b/app/Controllers/HomeController.php index caba1988..e1c28b29 100644 --- a/app/Controllers/HomeController.php +++ b/app/Controllers/HomeController.php @@ -25,7 +25,8 @@ class HomeController extends BaseController 'sort', ) : 'activity'; - $allPodcasts = (new PodcastModel())->getAllPodcasts($sortBy); + $allPodcasts = new PodcastModel() + ->getAllPodcasts($sortBy); // check if there's only one podcast to redirect user to it if (count($allPodcasts) === 1) { diff --git a/app/Controllers/MapController.php b/app/Controllers/MapController.php index 4dc51cc5..3eb74358 100644 --- a/app/Controllers/MapController.php +++ b/app/Controllers/MapController.php @@ -43,7 +43,7 @@ class MapController extends BaseController { $cacheName = 'episodes_markers'; if (! ($found = cache($cacheName))) { - $episodes = (new EpisodeModel()) + $episodes = new EpisodeModel() ->where('`published_at` <= UTC_TIMESTAMP()', null, false) ->where('location_geo is not', null) ->findAll(); diff --git a/app/Controllers/PageController.php b/app/Controllers/PageController.php index d41168f8..6e5a1da9 100644 --- a/app/Controllers/PageController.php +++ b/app/Controllers/PageController.php @@ -24,7 +24,8 @@ class PageController extends BaseController throw PageNotFoundException::forPageNotFound(); } - $page = (new PageModel())->where('slug', $params[0])->first(); + $page = new PageModel() + ->where('slug', $params[0])->first(); if (! $page instanceof Page) { throw PageNotFoundException::forPageNotFound(); } diff --git a/app/Controllers/PodcastController.php b/app/Controllers/PodcastController.php index 907724aa..aec7d07b 100644 --- a/app/Controllers/PodcastController.php +++ b/app/Controllers/PodcastController.php @@ -35,7 +35,7 @@ class PodcastController extends BaseController } if ( - ! ($podcast = (new PodcastModel())->getPodcastByHandle($params[0])) instanceof Podcast + ! ($podcast = new PodcastModel()->getPodcastByHandle($params[0])) instanceof Podcast ) { throw PageNotFoundException::forPageNotFound(); } @@ -78,7 +78,8 @@ class PodcastController extends BaseController set_podcast_metatags($this->podcast, 'activity'); $data = [ 'podcast' => $this->podcast, - 'posts' => (new PostModel())->getActorPublishedPosts($this->podcast->actor_id), + 'posts' => new PostModel() + ->getActorPublishedPosts($this->podcast->actor_id), ]; // if user is logged in then send to the authenticated activity view @@ -88,9 +89,8 @@ class PodcastController extends BaseController return view('podcast/activity', $data); } - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode( - $this->podcast->id, - ); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($this->podcast->id); return view('podcast/activity', $data, [ 'cache' => $secondsToNextUnpublishedEpisode ?: DECADE, @@ -120,7 +120,8 @@ class PodcastController extends BaseController ); if (! ($cachedView = cache($cacheName))) { - $stats = (new EpisodeModel())->getPodcastStats($this->podcast->id); + $stats = new EpisodeModel() + ->getPodcastStats($this->podcast->id); set_podcast_metatags($this->podcast, 'about'); $data = [ @@ -135,9 +136,8 @@ class PodcastController extends BaseController return view('podcast/about', $data); } - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode( - $this->podcast->id, - ); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($this->podcast->id); return view('podcast/about', $data, [ 'cache' => $secondsToNextUnpublishedEpisode ?: DECADE, @@ -156,7 +156,8 @@ class PodcastController extends BaseController $seasonQuery = $this->request->getGet('season'); if (! $yearQuery && ! $seasonQuery) { - $defaultQuery = (new PodcastModel())->getDefaultQuery($this->podcast->id); + $defaultQuery = new PodcastModel() + ->getDefaultQuery($this->podcast->id); if ($defaultQuery) { if ($defaultQuery['type'] === 'season') { $seasonQuery = $defaultQuery['data']['season_number']; @@ -241,21 +242,16 @@ class PodcastController extends BaseController 'podcast' => $this->podcast, 'episodesNav' => $episodesNavigation, 'activeQuery' => $activeQuery, - 'episodes' => (new EpisodeModel())->getPodcastEpisodes( - $this->podcast->id, - $this->podcast->type, - $yearQuery, - $seasonQuery, - ), + 'episodes' => new EpisodeModel() + ->getPodcastEpisodes($this->podcast->id, $this->podcast->type, $yearQuery, $seasonQuery), ]; if (auth()->loggedIn()) { return view('podcast/episodes', $data); } - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode( - $this->podcast->id, - ); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($this->podcast->id); return view('podcast/episodes', $data, [ 'cache' => $secondsToNextUnpublishedEpisode ?: DECADE, 'cache_name' => $cacheName, @@ -291,7 +287,7 @@ class PodcastController extends BaseController $orderedItems = []; if ($paginatedEpisodes !== null) { foreach ($paginatedEpisodes as $episode) { - $orderedItems[] = (new PodcastEpisode($episode))->toArray(); + $orderedItems[] = new PodcastEpisode($episode)->toArray(); } } diff --git a/app/Controllers/PostController.php b/app/Controllers/PostController.php index 9a96e7e0..84b831fd 100644 --- a/app/Controllers/PostController.php +++ b/app/Controllers/PostController.php @@ -47,7 +47,7 @@ class PostController extends FediversePostController { if ( - ! ($podcast = (new PodcastModel())->getPodcastByHandle($params[0])) instanceof Podcast + ! ($podcast = new PodcastModel()->getPodcastByHandle($params[0])) instanceof Podcast ) { throw PageNotFoundException::forPageNotFound(); } @@ -62,7 +62,7 @@ class PostController extends FediversePostController } if ( - ! ($post = (new PostModel())->getPostById($params[1])) instanceof CastopodPost + ! ($post = new PostModel()->getPostById($params[1])) instanceof CastopodPost ) { throw PageNotFoundException::forPageNotFound(); } @@ -143,7 +143,7 @@ class PostController extends FediversePostController if ( $episodeUri && ($params = extract_params_from_episode_uri(new URI($episodeUri))) && - ($episode = (new EpisodeModel())->getEpisodeBySlug($params['podcastHandle'], $params['episodeSlug'])) + ($episode = new EpisodeModel()->getEpisodeBySlug($params['podcastHandle'], $params['episodeSlug'])) ) { $newPost->episode_id = $episode->id; } @@ -216,7 +216,8 @@ class PostController extends FediversePostController #[Override] public function reblogAction(): RedirectResponse { - (new PostModel())->toggleReblog(interact_as_actor(), $this->post); + new PostModel() + ->toggleReblog(interact_as_actor(), $this->post); return redirect()->back(); } diff --git a/app/Controllers/WebmanifestController.php b/app/Controllers/WebmanifestController.php index 2b252b54..0480c432 100644 --- a/app/Controllers/WebmanifestController.php +++ b/app/Controllers/WebmanifestController.php @@ -82,7 +82,7 @@ class WebmanifestController extends Controller public function podcastManifest(string $podcastHandle): ResponseInterface { if ( - ! ($podcast = (new PodcastModel())->getPodcastByHandle($podcastHandle)) instanceof Podcast + ! ($podcast = new PodcastModel()->getPodcastByHandle($podcastHandle)) instanceof Podcast ) { throw PageNotFoundException::forPageNotFound(); } diff --git a/app/Database/Seeds/DevSuperadminSeeder.php b/app/Database/Seeds/DevSuperadminSeeder.php index c76b9821..dcecd66a 100644 --- a/app/Database/Seeds/DevSuperadminSeeder.php +++ b/app/Database/Seeds/DevSuperadminSeeder.php @@ -22,7 +22,7 @@ class DevSuperadminSeeder extends Seeder #[Override] public function run(): void { - if ((new UserModel())->where('is_owner', true)->first() instanceof User) { + if (new UserModel()->where('is_owner', true)->first() instanceof User) { return; } diff --git a/app/Database/Seeds/FakePodcastsAnalyticsSeeder.php b/app/Database/Seeds/FakePodcastsAnalyticsSeeder.php index 58bdfe3e..ee9d7a49 100644 --- a/app/Database/Seeds/FakePodcastsAnalyticsSeeder.php +++ b/app/Database/Seeds/FakePodcastsAnalyticsSeeder.php @@ -43,13 +43,14 @@ class FakePodcastsAnalyticsSeeder extends Seeder JSON_THROW_ON_ERROR, ); - $podcast = (new PodcastModel())->first(); + $podcast = new PodcastModel() + ->first(); if (! $podcast instanceof Podcast) { throw new Exception("COULD NOT POPULATE DATABASE:\n\tCreate a podcast with episodes first.\n"); } - $firstEpisode = (new EpisodeModel()) + $firstEpisode = new EpisodeModel() ->selectMin('published_at') ->first(); @@ -69,7 +70,7 @@ class FakePodcastsAnalyticsSeeder extends Seeder $analyticsPodcastsByPlayer = []; $analyticsPodcastsByRegion = []; - $episodes = (new EpisodeModel()) + $episodes = new EpisodeModel() ->where('podcast_id', $podcast->id) ->where('`published_at` <= UTC_TIMESTAMP()', null, false) ->findAll(); diff --git a/app/Database/Seeds/FakeWebsiteAnalyticsSeeder.php b/app/Database/Seeds/FakeWebsiteAnalyticsSeeder.php index 4dc69ef5..22677d03 100644 --- a/app/Database/Seeds/FakeWebsiteAnalyticsSeeder.php +++ b/app/Database/Seeds/FakeWebsiteAnalyticsSeeder.php @@ -185,13 +185,14 @@ class FakeWebsiteAnalyticsSeeder extends Seeder #[Override] public function run(): void { - $podcast = (new PodcastModel())->first(); + $podcast = new PodcastModel() + ->first(); if (! $podcast instanceof Podcast) { throw new Exception("COULD NOT POPULATE DATABASE:\n\tCreate a podcast with episodes first.\n"); } - $firstEpisode = (new EpisodeModel()) + $firstEpisode = new EpisodeModel() ->selectMin('published_at') ->first(); @@ -208,7 +209,7 @@ class FakeWebsiteAnalyticsSeeder extends Seeder $websiteByEntryPage = []; $websiteByReferer = []; - $episodes = (new EpisodeModel()) + $episodes = new EpisodeModel() ->where('podcast_id', $podcast->id) ->where('`published_at` <= UTC_TIMESTAMP()', null, false) ->findAll(); diff --git a/app/Entities/Actor.php b/app/Entities/Actor.php index 5461814f..9fdd1d28 100644 --- a/app/Entities/Actor.php +++ b/app/Entities/Actor.php @@ -37,7 +37,8 @@ class Actor extends FediverseActor } if (! $this->podcast instanceof Podcast) { - $this->podcast = (new PodcastModel())->getPodcastByActorId($this->id); + $this->podcast = new PodcastModel() + ->getPodcastByActorId($this->id); } return $this->podcast; diff --git a/app/Entities/Category.php b/app/Entities/Category.php index 847b0425..acfdf36c 100644 --- a/app/Entities/Category.php +++ b/app/Entities/Category.php @@ -42,6 +42,7 @@ class Category extends Entity return null; } - return (new CategoryModel())->getCategoryById($this->parent_id); + return new CategoryModel() + ->getCategoryById($this->parent_id); } } diff --git a/app/Entities/Clip/BaseClip.php b/app/Entities/Clip/BaseClip.php index d3d7c3ef..28a30278 100644 --- a/app/Entities/Clip/BaseClip.php +++ b/app/Entities/Clip/BaseClip.php @@ -110,18 +110,21 @@ class BaseClip extends Entity public function getPodcast(): ?Podcast { - return (new PodcastModel())->getPodcastById($this->podcast_id); + return new PodcastModel() + ->getPodcastById($this->podcast_id); } public function getEpisode(): ?Episode { - return (new EpisodeModel())->getEpisodeById($this->episode_id); + return new EpisodeModel() + ->getEpisodeById($this->episode_id); } public function getUser(): ?User { /** @var ?User */ - return (new UserModel())->find($this->created_by); + return new UserModel() + ->find($this->created_by); } public function setMedia(File $file, string $fileKey): static @@ -131,7 +134,8 @@ class BaseClip extends Entity ->setFile($file); $this->getMedia() ->updated_by = $this->attributes['updated_by']; - (new MediaModel('audio'))->updateMedia($this->getMedia()); + new MediaModel('audio') + ->updateMedia($this->getMedia()); } else { $media = new Audio([ 'file_key' => $fileKey, @@ -142,7 +146,7 @@ class BaseClip extends Entity ]); $media->setFile($file); - $this->attributes['media_id'] = (new MediaModel())->saveMedia($media); + $this->attributes['media_id'] = new MediaModel()->saveMedia($media); } return $this; @@ -151,7 +155,8 @@ class BaseClip extends Entity public function getMedia(): Audio | Video | null { if ($this->media_id !== null && $this->media === null) { - $this->media = (new MediaModel($this->type))->getMediaById($this->media_id); + $this->media = new MediaModel($this->type) + ->getMediaById($this->media_id); } return $this->media; diff --git a/app/Entities/Clip/VideoClip.php b/app/Entities/Clip/VideoClip.php index 48acf664..4b8e15b7 100644 --- a/app/Entities/Clip/VideoClip.php +++ b/app/Entities/Clip/VideoClip.php @@ -81,7 +81,7 @@ class VideoClip extends BaseClip ]); $video->setFile($file); - $this->attributes['media_id'] = (new MediaModel('video'))->saveMedia($video); + $this->attributes['media_id'] = new MediaModel('video')->saveMedia($video); return $this; } diff --git a/app/Entities/Credit.php b/app/Entities/Credit.php index 6c283e8c..672f9d75 100644 --- a/app/Entities/Credit.php +++ b/app/Entities/Credit.php @@ -60,7 +60,8 @@ class Credit extends Entity } if (! $this->person instanceof Person) { - $this->person = (new PersonModel())->getPersonById($this->person_id); + $this->person = new PersonModel() + ->getPersonById($this->person_id); } return $this->person; @@ -73,7 +74,8 @@ class Credit extends Entity } if (! $this->podcast instanceof Podcast) { - $this->podcast = (new PodcastModel())->getPodcastById($this->podcast_id); + $this->podcast = new PodcastModel() + ->getPodcastById($this->podcast_id); } return $this->podcast; @@ -86,7 +88,8 @@ class Credit extends Entity } if (! $this->episode instanceof Episode) { - $this->episode = (new EpisodeModel())->getPublishedEpisodeById($this->podcast_id, $this->episode_id); + $this->episode = new EpisodeModel() + ->getPublishedEpisodeById($this->podcast_id, $this->episode_id); } return $this->episode; diff --git a/app/Entities/Episode.php b/app/Entities/Episode.php index b4c65fd6..b09f3433 100644 --- a/app/Entities/Episode.php +++ b/app/Entities/Episode.php @@ -213,7 +213,8 @@ class Episode extends Entity ->setFile($file); $this->getCover() ->updated_by = $this->attributes['updated_by']; - (new MediaModel('image'))->updateMedia($this->getCover()); + new MediaModel('image') + ->updateMedia($this->getCover()); } else { $cover = new Image([ 'file_key' => 'podcasts/' . $this->getPodcast()->handle . '/' . $this->attributes['slug'] . '.' . $file->getExtension(), @@ -224,7 +225,7 @@ class Episode extends Entity ]); $cover->setFile($file); - $this->attributes['cover_id'] = (new MediaModel('image'))->saveMedia($cover); + $this->attributes['cover_id'] = new MediaModel('image')->saveMedia($cover); } return $this; @@ -243,7 +244,8 @@ class Episode extends Entity return $this->cover; } - $this->cover = (new MediaModel('image'))->getMediaById($this->cover_id); + $this->cover = new MediaModel('image') + ->getMediaById($this->cover_id); return $this->cover; } @@ -259,7 +261,8 @@ class Episode extends Entity ->setFile($file); $this->getAudio() ->updated_by = $this->attributes['updated_by']; - (new MediaModel('audio'))->updateMedia($this->getAudio()); + new MediaModel('audio') + ->updateMedia($this->getAudio()); } else { $audio = new Audio([ 'file_key' => 'podcasts/' . $this->getPodcast()->handle . '/' . $file->getRandomName(), @@ -270,7 +273,7 @@ class Episode extends Entity ]); $audio->setFile($file); - $this->attributes['audio_id'] = (new MediaModel())->saveMedia($audio); + $this->attributes['audio_id'] = new MediaModel()->saveMedia($audio); } return $this; @@ -279,7 +282,8 @@ class Episode extends Entity public function getAudio(): Audio { if (! $this->audio instanceof Audio) { - $this->audio = (new MediaModel('audio'))->getMediaById($this->audio_id); + $this->audio = new MediaModel('audio') + ->getMediaById($this->audio_id); } return $this->audio; @@ -296,7 +300,8 @@ class Episode extends Entity ->setFile($file); $this->getTranscript() ->updated_by = $this->attributes['updated_by']; - (new MediaModel('transcript'))->updateMedia($this->getTranscript()); + new MediaModel('transcript') + ->updateMedia($this->getTranscript()); } else { $transcript = new Transcript([ 'file_key' => 'podcasts/' . $this->getPodcast()->handle . '/' . $this->attributes['slug'] . '-transcript.' . $file->getExtension(), @@ -307,7 +312,7 @@ class Episode extends Entity ]); $transcript->setFile($file); - $this->attributes['transcript_id'] = (new MediaModel('transcript'))->saveMedia($transcript); + $this->attributes['transcript_id'] = new MediaModel('transcript')->saveMedia($transcript); } return $this; @@ -316,7 +321,8 @@ class Episode extends Entity public function getTranscript(): ?Transcript { if ($this->transcript_id !== null && ! $this->transcript instanceof Transcript) { - $this->transcript = (new MediaModel('transcript'))->getMediaById($this->transcript_id); + $this->transcript = new MediaModel('transcript') + ->getMediaById($this->transcript_id); } return $this->transcript; @@ -333,7 +339,8 @@ class Episode extends Entity ->setFile($file); $this->getChapters() ->updated_by = $this->attributes['updated_by']; - (new MediaModel('chapters'))->updateMedia($this->getChapters()); + new MediaModel('chapters') + ->updateMedia($this->getChapters()); } else { $chapters = new Chapters([ 'file_key' => 'podcasts/' . $this->getPodcast()->handle . '/' . $this->attributes['slug'] . '-chapters' . '.' . $file->getExtension(), @@ -344,7 +351,7 @@ class Episode extends Entity ]); $chapters->setFile($file); - $this->attributes['chapters_id'] = (new MediaModel('chapters'))->saveMedia($chapters); + $this->attributes['chapters_id'] = new MediaModel('chapters')->saveMedia($chapters); } return $this; @@ -353,7 +360,8 @@ class Episode extends Entity public function getChapters(): ?Chapters { if ($this->chapters_id !== null && ! $this->chapters instanceof Chapters) { - $this->chapters = (new MediaModel('chapters'))->getMediaById($this->chapters_id); + $this->chapters = new MediaModel('chapters') + ->getMediaById($this->chapters_id); } return $this->chapters; @@ -395,7 +403,8 @@ class Episode extends Entity } if ($this->persons === null) { - $this->persons = (new PersonModel())->getEpisodePersons($this->podcast_id, $this->id); + $this->persons = new PersonModel() + ->getEpisodePersons($this->podcast_id, $this->id); } return $this->persons; @@ -413,7 +422,8 @@ class Episode extends Entity } if ($this->soundbites === null) { - $this->soundbites = (new ClipModel())->getEpisodeSoundbites($this->getPodcast()->id, $this->id); + $this->soundbites = new ClipModel() + ->getEpisodeSoundbites($this->getPodcast()->id, $this->id); } return $this->soundbites; @@ -429,7 +439,8 @@ class Episode extends Entity } if ($this->posts === null) { - $this->posts = (new PostModel())->getEpisodePosts($this->id); + $this->posts = new PostModel() + ->getEpisodePosts($this->id); } return $this->posts; @@ -445,7 +456,8 @@ class Episode extends Entity } if ($this->comments === null) { - $this->comments = (new EpisodeCommentModel())->getEpisodeComments($this->id); + $this->comments = new EpisodeCommentModel() + ->getEpisodeComments($this->id); } return $this->comments; @@ -467,7 +479,8 @@ class Episode extends Entity public function getPodcast(): ?Podcast { - return (new PodcastModel())->getPodcastById($this->podcast_id); + return new PodcastModel() + ->getPodcastById($this->podcast_id); } public function setDescriptionMarkdown(string $descriptionMarkdown): static @@ -563,7 +576,7 @@ class Episode extends Entity { if ($this->preview_id === null) { // generate preview id - if (! $previewUUID = (new EpisodeModel())->setEpisodePreviewId($this->id)) { + if (! $previewUUID = new EpisodeModel()->setEpisodePreviewId($this->id)) { throw new Exception('Could not set episode preview id'); } @@ -582,6 +595,7 @@ class Episode extends Entity throw new RuntimeException('Episode must be created before getting number of video clips.'); } - return (new ClipModel())->getClipCount($this->podcast_id, $this->id); + return new ClipModel() + ->getClipCount($this->podcast_id, $this->id); } } diff --git a/app/Entities/EpisodeComment.php b/app/Entities/EpisodeComment.php index 5b10d133..132185e0 100644 --- a/app/Entities/EpisodeComment.php +++ b/app/Entities/EpisodeComment.php @@ -80,7 +80,8 @@ class EpisodeComment extends UuidEntity } if (! $this->episode instanceof Episode) { - $this->episode = (new EpisodeModel())->getEpisodeById($this->episode_id); + $this->episode = new EpisodeModel() + ->getEpisodeById($this->episode_id); } return $this->episode; @@ -113,7 +114,8 @@ class EpisodeComment extends UuidEntity } if ($this->replies === null) { - $this->replies = (new EpisodeCommentModel())->getCommentReplies($this->id); + $this->replies = new EpisodeCommentModel() + ->getCommentReplies($this->id); } return $this->replies; diff --git a/app/Entities/Person.php b/app/Entities/Person.php index 225efae4..631f4e22 100644 --- a/app/Entities/Person.php +++ b/app/Entities/Person.php @@ -67,7 +67,8 @@ class Person extends Entity ->setFile($file); $this->getAvatar() ->updated_by = $this->attributes['updated_by']; - (new MediaModel('image'))->updateMedia($this->getAvatar()); + new MediaModel('image') + ->updateMedia($this->getAvatar()); } else { $avatar = new Image([ 'file_key' => 'persons/' . $this->attributes['unique_name'] . '.' . $file->getExtension(), @@ -78,7 +79,7 @@ class Person extends Entity ]); $avatar->setFile($file); - $this->attributes['avatar_id'] = (new MediaModel('image'))->saveMedia($avatar); + $this->attributes['avatar_id'] = new MediaModel('image')->saveMedia($avatar); } return $this; @@ -91,7 +92,8 @@ class Person extends Entity } if (! $this->avatar instanceof Image) { - $this->avatar = (new MediaModel('image'))->getMediaById($this->avatar_id); + $this->avatar = new MediaModel('image') + ->getMediaById($this->avatar_id); } return $this->avatar; @@ -107,11 +109,12 @@ class Person extends Entity } if ($this->roles === null) { - $this->roles = (new PersonModel())->getPersonRoles( - $this->id, - (int) $this->attributes['podcast_id'], - array_key_exists('episode_id', $this->attributes) ? (int) $this->attributes['episode_id'] : null, - ); + $this->roles = new PersonModel() + ->getPersonRoles( + $this->id, + (int) $this->attributes['podcast_id'], + array_key_exists('episode_id', $this->attributes) ? (int) $this->attributes['episode_id'] : null, + ); } return $this->roles; diff --git a/app/Entities/Podcast.php b/app/Entities/Podcast.php index decb3954..de84e257 100644 --- a/app/Entities/Podcast.php +++ b/app/Entities/Podcast.php @@ -226,7 +226,8 @@ class Podcast extends Entity ->setFile($file); $this->getCover() ->updated_by = $this->attributes['updated_by']; - (new MediaModel('image'))->updateMedia($this->getCover()); + new MediaModel('image') + ->updateMedia($this->getCover()); } else { $cover = new Image([ 'file_key' => 'podcasts/' . $this->attributes['handle'] . '/cover.' . $file->getExtension(), @@ -237,7 +238,7 @@ class Podcast extends Entity ]); $cover->setFile($file); - $this->attributes['cover_id'] = (new MediaModel('image'))->saveMedia($cover); + $this->attributes['cover_id'] = new MediaModel('image')->saveMedia($cover); } return $this; @@ -246,7 +247,8 @@ class Podcast extends Entity public function getCover(): Image { if (! $this->cover instanceof Image) { - $cover = (new MediaModel('image'))->getMediaById($this->cover_id); + $cover = new MediaModel('image') + ->getMediaById($this->cover_id); if (! $cover instanceof Image) { throw new Exception('Could not retrieve podcast cover.'); @@ -269,7 +271,8 @@ class Podcast extends Entity ->setFile($file); $this->getBanner() ->updated_by = $this->attributes['updated_by']; - (new MediaModel('image'))->updateMedia($this->getBanner()); + new MediaModel('image') + ->updateMedia($this->getBanner()); } else { $banner = new Image([ 'file_key' => 'podcasts/' . $this->attributes['handle'] . '/banner.' . $file->getExtension(), @@ -280,7 +283,7 @@ class Podcast extends Entity ]); $banner->setFile($file); - $this->attributes['banner_id'] = (new MediaModel('image'))->saveMedia($banner); + $this->attributes['banner_id'] = new MediaModel('image')->saveMedia($banner); } return $this; @@ -293,7 +296,8 @@ class Podcast extends Entity } if (! $this->banner instanceof Image) { - $this->banner = (new MediaModel('image'))->getMediaById($this->banner_id); + $this->banner = new MediaModel('image') + ->getMediaById($this->banner_id); } return $this->banner; @@ -321,7 +325,8 @@ class Podcast extends Entity } if ($this->episodes === null) { - $this->episodes = (new EpisodeModel())->getPodcastEpisodes($this->id, $this->type); + $this->episodes = new EpisodeModel() + ->getPodcastEpisodes($this->id, $this->type); } return $this->episodes; @@ -336,7 +341,8 @@ class Podcast extends Entity throw new RuntimeException('Podcast must be created before getting number of episodes.'); } - return (new EpisodeModel())->getPodcastEpisodesCount($this->id); + return new EpisodeModel() + ->getPodcastEpisodesCount($this->id); } /** @@ -351,7 +357,8 @@ class Podcast extends Entity } if ($this->persons === null) { - $this->persons = (new PersonModel())->getPodcastPersons($this->id); + $this->persons = new PersonModel() + ->getPodcastPersons($this->id); } return $this->persons; @@ -367,7 +374,8 @@ class Podcast extends Entity } if (! $this->category instanceof Category) { - $this->category = (new CategoryModel())->getCategoryById($this->category_id); + $this->category = new CategoryModel() + ->getCategoryById($this->category_id); } return $this->category; @@ -385,7 +393,8 @@ class Podcast extends Entity } if ($this->subscriptions === null) { - $this->subscriptions = (new SubscriptionModel())->getPodcastSubscriptions($this->id); + $this->subscriptions = new SubscriptionModel() + ->getPodcastSubscriptions($this->id); } return $this->subscriptions; @@ -403,7 +412,8 @@ class Podcast extends Entity } if ($this->contributors === null) { - $this->contributors = (new UserModel())->getPodcastContributors($this->id); + $this->contributors = new UserModel() + ->getPodcastContributors($this->id); } return $this->contributors; @@ -468,7 +478,8 @@ class Podcast extends Entity } if ($this->podcasting_platforms === null) { - $this->podcasting_platforms = (new PlatformModel())->getPlatforms($this->id, 'podcasting'); + $this->podcasting_platforms = new PlatformModel() + ->getPlatforms($this->id, 'podcasting'); } return $this->podcasting_platforms; @@ -486,7 +497,8 @@ class Podcast extends Entity } if ($this->social_platforms === null) { - $this->social_platforms = (new PlatformModel())->getPlatforms($this->id, 'social'); + $this->social_platforms = new PlatformModel() + ->getPlatforms($this->id, 'social'); } return $this->social_platforms; @@ -504,7 +516,8 @@ class Podcast extends Entity } if ($this->funding_platforms === null) { - $this->funding_platforms = (new PlatformModel())->getPlatforms($this->id, 'funding'); + $this->funding_platforms = new PlatformModel() + ->getPlatforms($this->id, 'funding'); } return $this->funding_platforms; @@ -520,7 +533,8 @@ class Podcast extends Entity } if ($this->other_categories === null) { - $this->other_categories = (new CategoryModel())->getPodcastCategories($this->id); + $this->other_categories = new CategoryModel() + ->getPodcastCategories($this->id); } return $this->other_categories; @@ -581,6 +595,7 @@ class Podcast extends Entity public function getIsPremium(): bool { // podcast is premium if at least one of its episodes is set as premium - return (new EpisodeModel())->doesPodcastHavePremiumEpisodes($this->id); + return new EpisodeModel() + ->doesPodcastHavePremiumEpisodes($this->id); } } diff --git a/app/Entities/Post.php b/app/Entities/Post.php index 7cc46d1a..07793a51 100644 --- a/app/Entities/Post.php +++ b/app/Entities/Post.php @@ -50,7 +50,8 @@ class Post extends FediversePost } if (! $this->episode instanceof Episode) { - $this->episode = (new EpisodeModel())->getEpisodeById($this->episode_id); + $this->episode = new EpisodeModel() + ->getEpisodeById($this->episode_id); } return $this->episode; diff --git a/app/Helpers/page_helper.php b/app/Helpers/page_helper.php index 5b24db14..b1765df5 100644 --- a/app/Helpers/page_helper.php +++ b/app/Helpers/page_helper.php @@ -18,7 +18,8 @@ if (! function_exists('render_page_links')) { */ function render_page_links(?string $class = null, ?string $podcastHandle = null): string { - $pages = (new PageModel())->findAll(); + $pages = new PageModel() + ->findAll(); $links = anchor(route_to('home'), lang('Common.home'), [ 'class' => 'px-2 py-1 underline hover:no-underline', ]); diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index 354434b0..111caf1a 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -63,7 +63,7 @@ if (! function_exists('get_rss_feed')) { } // the last build date corresponds to the creation of the feed.xml cache - $channel->addChild('lastBuildDate', (new Time('now'))->format(DATE_RFC1123)); + $channel->addChild('lastBuildDate', new Time('now')->format(DATE_RFC1123)); $channel->addChild('generator', 'Castopod - https://castopod.org/'); $channel->addChild('docs', 'https://cyber.harvard.edu/rss/rss.html'); @@ -74,7 +74,8 @@ if (! function_exists('get_rss_feed')) { $podcast->guid = $uuid->uuid5('ead4c236-bf58-58c6-a2c6-a6b28d128cb6', $podcast->feed_url) ->toString(); - (new PodcastModel())->save($podcast); + new PodcastModel() + ->save($podcast); } $channel->addChild('guid', $podcast->guid, RssFeed::PODCAST_NAMESPACE); diff --git a/app/Libraries/ViewComponents/Config/Services.php b/app/Libraries/ViewComponents/Config/Services.php index bb9c1d21..b7a1c74d 100644 --- a/app/Libraries/ViewComponents/Config/Services.php +++ b/app/Libraries/ViewComponents/Config/Services.php @@ -22,6 +22,7 @@ class Services extends BaseService public static function components(bool $getShared = true): ComponentRenderer { if ($getShared) { + /** @phpstan-ignore return.type */ return self::getSharedInstance('components'); } diff --git a/app/Models/ClipModel.php b/app/Models/ClipModel.php index b65168d8..d8a0b3c7 100644 --- a/app/Models/ClipModel.php +++ b/app/Models/ClipModel.php @@ -162,15 +162,11 @@ class ClipModel extends Model return (int) $result[0]['id']; } - public function deleteVideoClip(int $podcastId, int $episodeId, int $clipId): BaseResult | bool + public function deleteVideoClip(int $clipId): BaseResult | bool { $this->clearVideoClipCache($clipId); - return $this->delete([ - 'podcast_id' => $podcastId, - 'episode_id' => $episodeId, - 'id' => $clipId, - ]); + return $this->delete($clipId); } public function getClipCount(int $podcastId, int $episodeId): int @@ -240,11 +236,7 @@ class ClipModel extends Model { $this->clearSoundbiteCache($podcastId, $episodeId, $clipId); - return $this->delete([ - 'podcast_id' => $podcastId, - 'episode_id' => $episodeId, - 'id' => $clipId, - ]); + return $this->delete($clipId); } public function clearSoundbiteCache(int $podcastId, int $episodeId, int $clipId): void diff --git a/app/Models/EpisodeCommentModel.php b/app/Models/EpisodeCommentModel.php index 95adb292..1929335c 100644 --- a/app/Models/EpisodeCommentModel.php +++ b/app/Models/EpisodeCommentModel.php @@ -86,11 +86,13 @@ class EpisodeCommentModel extends UuidModel } if ($comment->in_reply_to_id === null) { - (new EpisodeModel())->builder() + new EpisodeModel() + ->builder() ->where('id', $comment->episode_id) ->increment('comments_count'); } else { - (new self())->builder() + new self() + ->builder() ->where('id', service('uuid')->fromString($comment->in_reply_to_id)->getBytes()) ->increment('replies_count'); } @@ -180,7 +182,8 @@ class EpisodeCommentModel extends UuidModel ->where('id', $comment->episode_id) ->decrement('comments_count'); } else { - (new self())->builder() + new self() + ->builder() ->where('id', service('uuid')->fromString($comment->in_reply_to_id)->getBytes()) ->decrement('replies_count'); } diff --git a/app/Models/EpisodeModel.php b/app/Models/EpisodeModel.php index a771431c..1999582b 100644 --- a/app/Models/EpisodeModel.php +++ b/app/Models/EpisodeModel.php @@ -368,13 +368,15 @@ class EpisodeModel extends UuidModel public function resetCommentsCount(): int | false { - $episodeCommentsCount = (new EpisodeCommentModel())->builder() + $episodeCommentsCount = new EpisodeCommentModel() + ->builder() ->select('episode_id, COUNT(*) as `comments_count`') ->where('in_reply_to_id', null) ->groupBy('episode_id') ->getCompiledSelect(); - $episodePostsRepliesCount = (new PostModel())->builder() + $episodePostsRepliesCount = new PostModel() + ->builder() ->select('fediverse_posts.episode_id as episode_id, COUNT(*) as `comments_count`') ->join('fediverse_posts as fp', 'fediverse_posts.id = fp.in_reply_to_id') ->where('fediverse_posts.in_reply_to_id', null) @@ -390,7 +392,8 @@ class EpisodeModel extends UuidModel $countsPerEpisodeId = $query->getResultArray(); if ($countsPerEpisodeId !== []) { - return (new self())->updateBatch($countsPerEpisodeId, 'id'); + return new self() + ->updateBatch($countsPerEpisodeId, 'id'); } return 0; @@ -429,7 +432,8 @@ class EpisodeModel extends UuidModel } /** @var ?Episode $episode */ - $episode = (new self())->find($episodeId); + $episode = new self() + ->find($episodeId); if (! $episode instanceof Episode) { return $data; @@ -523,7 +527,8 @@ class EpisodeModel extends UuidModel } /** @var ?Episode $episode */ - $episode = (new self())->find($episodeId); + $episode = new self() + ->find($episodeId); if (! $episode instanceof Episode) { return $data; diff --git a/app/Models/LikeModel.php b/app/Models/LikeModel.php index 05a69881..891ba1d8 100644 --- a/app/Models/LikeModel.php +++ b/app/Models/LikeModel.php @@ -56,7 +56,8 @@ class LikeModel extends UuidModel 'comment_id' => $comment->id, ]); - (new EpisodeCommentModel())->builder() + new EpisodeCommentModel() + ->builder() ->where('id', service('uuid')->fromString($comment->id)->getBytes()) ->increment('likes_count'); @@ -91,7 +92,8 @@ class LikeModel extends UuidModel { $this->db->transStart(); - (new EpisodeCommentModel())->builder() + new EpisodeCommentModel() + ->builder() ->where('id', service('uuid') ->fromString($comment->id) ->getBytes()) ->decrement('likes_count'); diff --git a/app/Models/PersonModel.php b/app/Models/PersonModel.php index 15509870..dfe35b5b 100644 --- a/app/Models/PersonModel.php +++ b/app/Models/PersonModel.php @@ -297,9 +297,10 @@ class PersonModel extends Model cache() ->delete("podcast#{$podcastId}_persons"); - (new PodcastModel())->clearCache([ - 'id' => $podcastId, - ]); + new PodcastModel() + ->clearCache([ + 'id' => $podcastId, + ]); $data = []; foreach ($personIds as $personId) { @@ -339,9 +340,10 @@ class PersonModel extends Model cache()->deleteMatching("podcast#{$podcastId}_person#{$personId}*"); cache() ->delete("podcast#{$podcastId}_persons"); - (new PodcastModel())->clearCache([ - 'id' => $podcastId, - ]); + new PodcastModel() + ->clearCache([ + 'id' => $podcastId, + ]); return $this->db->table('podcasts_persons') ->delete([ @@ -363,9 +365,10 @@ class PersonModel extends Model if ($personIds !== []) { cache() ->delete("podcast#{$podcastId}_episode#{$episodeId}_persons"); - (new EpisodeModel())->clearCache([ - 'id' => $episodeId, - ]); + new EpisodeModel() + ->clearCache([ + 'id' => $episodeId, + ]); $data = []; foreach ($personIds as $personId) { @@ -404,9 +407,10 @@ class PersonModel extends Model cache()->deleteMatching("podcast#{$podcastId}_episode#{$episodeId}_person#{$personId}*"); cache() ->delete("podcast#{$podcastId}_episode#{$episodeId}_persons"); - (new EpisodeModel())->clearCache([ - 'id' => $episodeId, - ]); + new EpisodeModel() + ->clearCache([ + 'id' => $episodeId, + ]); return $this->db->table('episodes_persons') ->delete([ diff --git a/app/Models/PodcastModel.php b/app/Models/PodcastModel.php index 9b97f753..a6c2e493 100644 --- a/app/Models/PodcastModel.php +++ b/app/Models/PodcastModel.php @@ -309,7 +309,8 @@ class PodcastModel extends Model ]; } - $secondsToNextUnpublishedEpisode = (new EpisodeModel())->getSecondsToNextUnpublishedEpisode($podcastId); + $secondsToNextUnpublishedEpisode = new EpisodeModel() + ->getSecondsToNextUnpublishedEpisode($podcastId); cache() ->save($cacheName, $defaultQuery, $secondsToNextUnpublishedEpisode ?: DECADE); @@ -325,7 +326,8 @@ class PodcastModel extends Model */ public function clearCache(array $data): array { - $podcast = (new self())->find((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); + $podcast = new self() + ->find((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); // delete cache for users' podcasts cache() @@ -389,21 +391,22 @@ class PodcastModel extends Model $domain = $url->getHost() . ($url->getPort() ? ':' . $url->getPort() : ''); - $actorId = (new ActorModel())->insert( - [ - 'uri' => url_to('podcast-activity', $username), - 'username' => $username, - 'domain' => $domain, - 'private_key' => $privatekey, - 'public_key' => $publickey, - 'display_name' => $data['data']['title'], - 'summary' => $data['data']['description_html'], - 'inbox_url' => url_to('inbox', $username), - 'outbox_url' => url_to('outbox', $username), - 'followers_url' => url_to('followers', $username), - ], - true, - ); + $actorId = new ActorModel() + ->insert( + [ + 'uri' => url_to('podcast-activity', $username), + 'username' => $username, + 'domain' => $domain, + 'private_key' => $privatekey, + 'public_key' => $publickey, + 'display_name' => $data['data']['title'], + 'summary' => $data['data']['description_html'], + 'inbox_url' => url_to('inbox', $username), + 'outbox_url' => url_to('outbox', $username), + 'followers_url' => url_to('followers', $username), + ], + true, + ); $data['data']['actor_id'] = $actorId; @@ -417,10 +420,12 @@ class PodcastModel extends Model */ protected function setActorAvatar(array $data): array { - $podcast = (new self())->find((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); + $podcast = new self() + ->find((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); if ($podcast instanceof Podcast) { - $podcastActor = (new ActorModel())->find($podcast->actor_id); + $podcastActor = new ActorModel() + ->find($podcast->actor_id); if (! $podcastActor instanceof Actor) { return $data; @@ -429,7 +434,8 @@ class PodcastModel extends Model $podcastActor->avatar_image_url = $podcast->cover->federation_url; $podcastActor->avatar_image_mimetype = $podcast->cover->federation_mimetype; - (new ActorModel())->update($podcast->actor_id, $podcastActor); + new ActorModel() + ->update($podcast->actor_id, $podcastActor); } return $data; @@ -442,7 +448,8 @@ class PodcastModel extends Model */ protected function updatePodcastActor(array $data): array { - $podcast = (new self())->find((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); + $podcast = new self() + ->find((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); if ($podcast instanceof Podcast) { $actorModel = new ActorModel(); diff --git a/app/Views/Components/Forms/Checkbox.php b/app/Views/Components/Forms/Checkbox.php index f7d720f5..08c94bc5 100644 --- a/app/Views/Components/Forms/Checkbox.php +++ b/app/Views/Components/Forms/Checkbox.php @@ -32,21 +32,21 @@ class Checkbox extends FormComponent in_array($this->getValue(), ['yes', 'true', 'on', '1'], true), ); - $hint = $this->hint === '' ? '' : (new Hint([ + $hint = $this->hint === '' ? '' : new Hint([ 'class' => 'ml-1', 'slot' => $this->hint, - ]))->render(); + ])->render(); $this->mergeClass('inline-flex items-start gap-x-2'); $helperText = ''; if ($this->helper !== '') { $helperId = $this->name . 'Help'; - $helperText = (new Helper([ + $helperText = new Helper([ 'id' => $helperId, 'slot' => $this->helper, 'class' => '-mt-1', - ]))->render(); + ])->render(); $this->attributes['aria-describedby'] = $helperId; } diff --git a/app/Views/Components/Forms/Field.php b/app/Views/Components/Forms/Field.php index 62a39f2d..0efc0d09 100644 --- a/app/Views/Components/Forms/Field.php +++ b/app/Views/Components/Forms/Field.php @@ -44,10 +44,10 @@ class Field extends Component $helperText = ''; if ($this->helper !== '') { $helperId = $this->name . 'Help'; - $helperText = (new Helper([ + $helperText = new Helper([ 'id' => $helperId, 'slot' => $this->helper, - ]))->render(); + ])->render(); $this->attributes['aria-describedby'] = $helperId; } diff --git a/app/Views/Components/Forms/Label.php b/app/Views/Components/Forms/Label.php index 2aac8e8b..3f8af6f6 100644 --- a/app/Views/Components/Forms/Label.php +++ b/app/Views/Components/Forms/Label.php @@ -31,10 +31,10 @@ class Label extends Component lang('Common.optional') . ')' : ''; - $hint = $this->hint === '' ? '' : (new Hint([ + $hint = $this->hint === '' ? '' : new Hint([ 'class' => 'ml-1', 'slot' => $this->hint, - ]))->render(); + ])->render(); $this->attributes['for'] = $this->for; diff --git a/app/Views/Components/Forms/RadioGroup.php b/app/Views/Components/Forms/RadioGroup.php index 6f40ad88..776ff8f2 100644 --- a/app/Views/Components/Forms/RadioGroup.php +++ b/app/Views/Components/Forms/RadioGroup.php @@ -41,23 +41,23 @@ class RadioGroup extends FormComponent 'isRequired' => var_export($this->isRequired, true), ]; - $options .= (new RadioButton($radioButtonData))->render(); + $options .= new RadioButton($radioButtonData)->render(); } $helperText = ''; if ($this->helper !== '') { $helperId = $this->name . 'Help'; - $helperText = (new Helper([ + $helperText = new Helper([ 'id' => $helperId, 'slot' => $this->helper, - ]))->render(); + ])->render(); $this->attributes['aria-describedby'] = $helperId; } - $hint = $this->hint === '' ? '' : (new Hint([ + $hint = $this->hint === '' ? '' : new Hint([ 'class' => 'ml-1', 'slot' => $this->hint, - ]))->render(); + ])->render(); return <<getStringifiedAttributes()}> diff --git a/app/Views/Components/Forms/Toggler.php b/app/Views/Components/Forms/Toggler.php index 82114a78..7f0cd38f 100644 --- a/app/Views/Components/Forms/Toggler.php +++ b/app/Views/Components/Forms/Toggler.php @@ -36,19 +36,19 @@ class Toggler extends FormComponent in_array($this->getValue(), ['yes', 'true', 'on', '1'], true), ); - $hint = $this->hint === '' ? '' : (new Hint([ + $hint = $this->hint === '' ? '' : new Hint([ 'class' => 'ml-1', 'slot' => $this->hint, - ]))->render(); + ])->render(); $helperText = ''; if ($this->helper !== '') { $helperId = $this->name . 'Help'; - $helperText = (new Helper([ + $helperText = new Helper([ 'id' => $helperId, 'slot' => $this->helper, 'class' => '-mt-1', - ]))->render(); + ])->render(); $this->attributes['aria-describedby'] = $helperId; } diff --git a/app/Views/errors/html/debug.css b/app/Views/errors/html/debug.css index a022fcd0..3b6de5b6 100644 --- a/app/Views/errors/html/debug.css +++ b/app/Views/errors/html/debug.css @@ -3,7 +3,7 @@ --main-text-color: #555; --dark-text-color: #222; --light-text-color: #c7c7c7; - --brand-primary-color: #e06e3f; + --brand-primary-color: #dc4814; --light-bg-color: #ededee; --dark-bg-color: #404040; } @@ -84,7 +84,7 @@ p.lead { text-align: center; padding: calc(4px + 0.2083vw); width: 100%; - margin-top: -2.14rem; + top: 0; position: fixed; } diff --git a/app/Views/errors/html/error_exception.php b/app/Views/errors/html/error_exception.php index 9898ed5d..1931636f 100644 --- a/app/Views/errors/html/error_exception.php +++ b/app/Views/errors/html/error_exception.php @@ -27,7 +27,7 @@ $errorId = uniqid('error', true);
- Displayed at — + Displayed at — PHP: — CodeIgniter: -- Environment: diff --git a/composer.json b/composer.json index 6fe46ddb..1cf5197d 100644 --- a/composer.json +++ b/composer.json @@ -9,38 +9,38 @@ "php": "^8.4", "adaures/ipcat-php": "^v1.0.0", "adaures/podcast-persons-taxonomy": "^v1.0.1", - "aws/aws-sdk-php": "^3.342.5", + "aws/aws-sdk-php": "^3.356.3", "chrisjean/php-ico": "^1.0.4", "cocur/slugify": "^v4.6.0", - "codeigniter4/framework": "v4.6.0", + "codeigniter4/framework": "4.6.3", "codeigniter4/settings": "v2.2.0", - "codeigniter4/shield": "v1.1.0", + "codeigniter4/shield": "1.2.0", "codeigniter4/tasks": "dev-develop", - "geoip2/geoip2": "v3.1.0", + "geoip2/geoip2": "3.2.0", "james-heinrich/getid3": "^2.0.0-beta6", - "league/commonmark": "^2.6.1", + "league/commonmark": "^2.7.1", "league/html-to-markdown": "5.1.1", "melbahja/seo": "^v2.1.1", - "michalsn/codeigniter4-uuid": "v1.1.0", + "michalsn/codeigniter4-uuid": "1.3.0", "mpratt/embera": "^2.0.42", "opawg/user-agents-v2-php": "dev-main", "phpseclib/phpseclib": "~2.0.48", - "vlucas/phpdotenv": "v5.6.1", + "vlucas/phpdotenv": "5.6.2", "whichbrowser/parser": "^v2.1.8", "yassinedoghri/codeigniter-vite": "^v1.1.0", - "yassinedoghri/php-icons": "^v1.2.0", + "yassinedoghri/php-icons": "1.3.0", "yassinedoghri/podcast-feed": "dev-main" }, "require-dev": { - "captainhook/captainhook": "^5.25.0", - "codeigniter/phpstan-codeigniter": "v1.5.3", + "captainhook/captainhook": "^5.25.11", + "codeigniter/phpstan-codeigniter": "1.5.4", "mikey179/vfsstream": "^v1.6.12", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.1.8", - "phpunit/phpunit": "^11.5.12", - "rector/rector": "^2.0.10", - "symplify/coding-standard": "^12.2.3", - "symplify/easy-coding-standard": "^12.5.8" + "phpstan/phpstan": "^2.1.22", + "phpunit/phpunit": "^12.3.6", + "rector/rector": "^2.1.4", + "symplify/coding-standard": "^12.4.3", + "symplify/easy-coding-standard": "^12.5.24" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 230da8ef..60e80098 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b16de9c68628342bb1bbfda30d42f788", + "content-hash": "2334a3cefdc8cfd350e941b9577bf454", "packages": [ { "name": "adaures/ipcat-php", @@ -24,7 +24,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["GPL-3.0-only"], + "license": [ + "GPL-3.0-only" + ], "authors": [ { "name": "Benjamin Bellamy", @@ -56,7 +58,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Benjamin Bellamy", @@ -75,16 +79,16 @@ }, { "name": "adhocore/cli", - "version": "v1.9.3", + "version": "v1.9.4", "source": { "type": "git", "url": "https://github.com/adhocore/php-cli.git", - "reference": "86be16e3c3b42d76fcdb32529bcded0fedb925d3" + "reference": "474dc3d7ab139796be98b104d891476e3916b6f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/adhocore/php-cli/zipball/86be16e3c3b42d76fcdb32529bcded0fedb925d3", - "reference": "86be16e3c3b42d76fcdb32529bcded0fedb925d3", + "url": "https://api.github.com/repos/adhocore/php-cli/zipball/474dc3d7ab139796be98b104d891476e3916b6f4", + "reference": "474dc3d7ab139796be98b104d891476e3916b6f4", "shasum": "" }, "require": { @@ -95,13 +99,17 @@ }, "type": "library", "autoload": { - "files": ["src/functions.php"], + "files": [ + "src/functions.php" + ], "psr-4": { "Ahc\\Cli\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Jitendra Adhikari", @@ -128,7 +136,7 @@ ], "support": { "issues": "https://github.com/adhocore/php-cli/issues", - "source": "https://github.com/adhocore/php-cli/tree/v1.9.3" + "source": "https://github.com/adhocore/php-cli/tree/v1.9.4" }, "funding": [ { @@ -140,7 +148,7 @@ "type": "github" } ], - "time": "2024-12-04T03:40:29+00:00" + "time": "2025-05-11T13:23:54+00:00" }, { "name": "aws/aws-crt-php", @@ -168,10 +176,14 @@ }, "type": "library", "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "AWS SDK Common Runtime Team", @@ -180,7 +192,12 @@ ], "description": "AWS Common Runtime for PHP", "homepage": "https://github.com/awslabs/aws-crt-php", - "keywords": ["amazon", "aws", "crt", "sdk"], + "keywords": [ + "amazon", + "aws", + "crt", + "sdk" + ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.7" @@ -189,16 +206,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.342.5", + "version": "3.356.3", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "00523323c202121d2cc2e893a1bb7ff14928a5bb" + "reference": "9c61b26408664c76d51101381bb64feda9bcfe2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/00523323c202121d2cc2e893a1bb7ff14928a5bb", - "reference": "00523323c202121d2cc2e893a1bb7ff14928a5bb", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/9c61b26408664c76d51101381bb64feda9bcfe2e", + "reference": "9c61b26408664c76d51101381bb64feda9bcfe2e", "shasum": "" }, "require": { @@ -245,14 +262,20 @@ } }, "autoload": { - "files": ["src/functions.php"], + "files": [ + "src/functions.php" + ], "psr-4": { "Aws\\": "src/" }, - "exclude-from-classmap": ["src/data/"] + "exclude-from-classmap": [ + "src/data/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Amazon Web Services", @@ -274,22 +297,22 @@ "support": { "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.342.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.356.3" }, - "time": "2025-03-13T18:04:13+00:00" + "time": "2025-08-22T18:13:45+00:00" }, { "name": "brick/math", - "version": "0.12.3", + "version": "0.13.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", - "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", + "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04", "shasum": "" }, "require": { @@ -307,7 +330,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Arbitrary-precision arithmetic library", "keywords": [ "Arbitrary-precision", @@ -326,7 +351,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.3" + "source": "https://github.com/brick/math/tree/0.13.1" }, "funding": [ { @@ -334,7 +359,7 @@ "type": "github" } ], - "time": "2025-02-28T13:11:00+00:00" + "time": "2025-03-29T13:50:30+00:00" }, { "name": "chrisjean/php-ico", @@ -356,10 +381,14 @@ }, "type": "library", "autoload": { - "classmap": ["class-php-ico.php"] + "classmap": [ + "class-php-ico.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["GPL-2.0+"], + "license": [ + "GPL-2.0+" + ], "authors": [ { "name": "Chris Jean", @@ -369,7 +398,10 @@ ], "description": "An easy-to-use library to generate valid ICO files.", "homepage": "https://github.com/chrisbliss18/php-ico", - "keywords": ["favicon", "ico"], + "keywords": [ + "favicon", + "ico" + ], "support": { "issues": "https://github.com/chrisbliss18/php-ico/issues", "source": "https://github.com/chrisbliss18/php-ico" @@ -425,7 +457,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Florian Eckerstorfer", @@ -438,7 +472,10 @@ } ], "description": "Converts a string into a slug.", - "keywords": ["slug", "slugify"], + "keywords": [ + "slug", + "slugify" + ], "support": { "issues": "https://github.com/cocur/slugify/issues", "source": "https://github.com/cocur/slugify/tree/v4.6.0" @@ -447,22 +484,22 @@ }, { "name": "codeigniter4/framework", - "version": "v4.6.0", + "version": "v4.6.3", "source": { "type": "git", "url": "https://github.com/codeigniter4/framework.git", - "reference": "96a1e603b9a0f022b0febb2e249eab6971a7e0d5" + "reference": "68d1a5896106f869452dd369a690dd5bc75160fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/framework/zipball/96a1e603b9a0f022b0febb2e249eab6971a7e0d5", - "reference": "96a1e603b9a0f022b0febb2e249eab6971a7e0d5", + "url": "https://api.github.com/repos/codeigniter4/framework/zipball/68d1a5896106f869452dd369a690dd5bc75160fb", + "reference": "68d1a5896106f869452dd369a690dd5bc75160fb", "shasum": "" }, "require": { "ext-intl": "*", "ext-mbstring": "*", - "laminas/laminas-escaper": "^2.14", + "laminas/laminas-escaper": "^2.17", "php": "^8.1", "psr/log": "^3.0" }, @@ -474,7 +511,7 @@ "mikey179/vfsstream": "^1.6.12", "nexusphp/cs-config": "^3.6", "phpunit/phpunit": "^10.5.16 || ^11.2", - "predis/predis": "^1.1 || ^2.3" + "predis/predis": "^3.0" }, "suggest": { "ext-curl": "If you use CURLRequest class", @@ -502,10 +539,14 @@ "psr-4": { "CodeIgniter\\": "system/" }, - "exclude-from-classmap": ["**/Database/Migrations/**"] + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "The CodeIgniter framework v4", "homepage": "https://codeigniter.com", "support": { @@ -513,7 +554,71 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/CodeIgniter4" }, - "time": "2025-01-19T18:31:34+00:00" + "time": "2025-08-02T13:36:13+00:00" + }, + { + "name": "codeigniter4/queue", + "version": "dev-develop", + "source": { + "type": "git", + "url": "https://github.com/codeigniter4/queue.git", + "reference": "0f95012aa9671f4cfcc74af0f62c7e0c29dadd8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/codeigniter4/queue/zipball/0f95012aa9671f4cfcc74af0f62c7e0c29dadd8e", + "reference": "0f95012aa9671f4cfcc74af0f62c7e0c29dadd8e", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "codeigniter4/devkit": "^1.0", + "codeigniter4/framework": "^4.3", + "phpstan/phpstan-strict-rules": "^1.5", + "predis/predis": "^2.0" + }, + "suggest": { + "ext-redis": "If you want to use RedisHandler", + "predis/predis": "If you want to use PredisHandler" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-4": { + "CodeIgniter\\Queue\\": "src" + }, + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "michalsn", + "homepage": "https://github.com/michalsn", + "role": "Developer" + } + ], + "description": "Queues for CodeIgniter 4 framework", + "homepage": "https://github.com/codeigniter4/queue", + "keywords": [ + "codeigniter", + "codeigniter4", + "database", + "predis", + "queue", + "redis" + ], + "support": { + "issues": "https://github.com/codeigniter4/queue/issues", + "source": "https://github.com/codeigniter4/queue/tree/develop" + }, + "time": "2025-08-19T17:42:31+00:00" }, { "name": "codeigniter4/settings", @@ -542,10 +647,14 @@ "psr-4": { "CodeIgniter\\Settings\\": "src" }, - "exclude-from-classmap": ["**/Database/Migrations/**"] + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Lonnie Ezell", @@ -555,7 +664,11 @@ ], "description": "Settings library for CodeIgniter 4", "homepage": "https://github.com/codeigniter4/settings", - "keywords": ["Settings", "codeigniter", "codeigniter4"], + "keywords": [ + "Settings", + "codeigniter", + "codeigniter4" + ], "support": { "issues": "https://github.com/codeigniter4/settings/issues", "source": "https://github.com/codeigniter4/settings/tree/v2.2.0" @@ -564,36 +677,33 @@ }, { "name": "codeigniter4/shield", - "version": "v1.1.0", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/codeigniter4/shield.git", - "reference": "22a8b3b58dafa7a5c080bc61446653aeb9fffc06" + "reference": "2d1b2177a914dcd490f54a6706792eacabd9e3e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/shield/zipball/22a8b3b58dafa7a5c080bc61446653aeb9fffc06", - "reference": "22a8b3b58dafa7a5c080bc61446653aeb9fffc06", + "url": "https://api.github.com/repos/codeigniter4/shield/zipball/2d1b2177a914dcd490f54a6706792eacabd9e3e8", + "reference": "2d1b2177a914dcd490f54a6706792eacabd9e3e8", "shasum": "" }, "require": { "codeigniter4/settings": "^2.1", - "php": "^7.4.3 || ^8.0" + "php": "^8.1" }, "provide": { "codeigniter4/authentication-implementation": "1.0" }, "require-dev": { "codeigniter/phpstan-codeigniter": "^1.3", - "codeigniter4/devkit": "^1.0", + "codeigniter4/devkit": "^1.3", "codeigniter4/framework": ">=4.3.5 <4.5.0 || ^4.5.1", "firebase/php-jwt": "^6.4", "mikey179/vfsstream": "^1.6.7", "mockery/mockery": "^1.0", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "^9.6", - "rector/rector": "1.1.0" + "phpstan/phpstan-strict-rules": "^2.0" }, "suggest": { "ext-curl": "Required to use the password validation rule via PwnedValidator class.", @@ -604,10 +714,14 @@ "psr-4": { "CodeIgniter\\Shield\\": "src" }, - "exclude-from-classmap": ["**/Database/Migrations/**"] + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Lonnie Ezell", @@ -630,7 +744,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/shield" }, - "time": "2024-06-13T08:54:48+00:00" + "time": "2025-07-14T10:26:03+00:00" }, { "name": "codeigniter4/tasks", @@ -638,15 +752,16 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/tasks.git", - "reference": "2cb40662a6a312b07d1c64bfb1e9517a2673d939" + "reference": "04894af5f78b0c8652f87081ef75dd1a030e2972" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/2cb40662a6a312b07d1c64bfb1e9517a2673d939", - "reference": "2cb40662a6a312b07d1c64bfb1e9517a2673d939", + "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/04894af5f78b0c8652f87081ef75dd1a030e2972", + "reference": "04894af5f78b0c8652f87081ef75dd1a030e2972", "shasum": "" }, "require": { + "codeigniter4/queue": "dev-develop", "codeigniter4/settings": "^2.0", "ext-json": "*", "php": "^8.1" @@ -661,7 +776,9 @@ "psr-4": { "CodeIgniter\\Tasks\\": "src" }, - "exclude-from-classmap": ["**/Database/Migrations/**"] + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] }, "autoload-dev": { "psr-4": { @@ -669,14 +786,18 @@ } }, "scripts": { - "post-update-cmd": ["bash admin/setup.sh"], + "post-update-cmd": [ + "bash admin/setup.sh" + ], "analyze": [ "Composer\\Config::disableProcessTimeout", "phpstan analyze", "psalm", "rector process --dry-run" ], - "sa": ["@analyze"], + "sa": [ + "@analyze" + ], "ci": [ "Composer\\Config::disableProcessTimeout", "@cs", @@ -685,18 +806,34 @@ "@analyze", "@test" ], - "cs": ["php-cs-fixer fix --ansi --verbose --dry-run --diff"], - "cs-fix": ["php-cs-fixer fix --ansi --verbose --diff"], - "style": ["@cs-fix"], - "deduplicate": ["phpcpd src/ tests/"], - "inspect": ["deptrac analyze --cache-file=build/deptrac.cache"], + "cs": [ + "php-cs-fixer fix --ansi --verbose --dry-run --diff" + ], + "cs-fix": [ + "php-cs-fixer fix --ansi --verbose --diff" + ], + "style": [ + "@cs-fix" + ], + "deduplicate": [ + "phpcpd src/ tests/" + ], + "inspect": [ + "deptrac analyze --cache-file=build/deptrac.cache" + ], "mutate": [ "infection --threads=2 --skip-initial-tests --coverage=build/phpunit" ], - "retool": ["retool"], - "test": ["phpunit"] + "retool": [ + "retool" + ], + "test": [ + "phpunit" + ] }, - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Lonnie Ezell", @@ -706,25 +843,30 @@ ], "description": "Task Scheduler for CodeIgniter 4", "homepage": "https://github.com/codeigniter4/tasks", - "keywords": ["codeigniter", "codeigniter4", "cron", "task scheduling"], + "keywords": [ + "codeigniter", + "codeigniter4", + "cron", + "task scheduling" + ], "support": { "source": "https://github.com/codeigniter4/tasks/tree/develop", "issues": "https://github.com/codeigniter4/tasks/issues" }, - "time": "2025-02-06T06:54:55+00:00" + "time": "2025-08-13T12:00:00+00:00" }, { "name": "composer/ca-bundle", - "version": "1.5.6", + "version": "1.5.8", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "f65c239c970e7f072f067ab78646e9f0b2935175" + "reference": "719026bb30813accb68271fee7e39552a58e9f65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/f65c239c970e7f072f067ab78646e9f0b2935175", - "reference": "f65c239c970e7f072f067ab78646e9f0b2935175", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/719026bb30813accb68271fee7e39552a58e9f65", + "reference": "719026bb30813accb68271fee7e39552a58e9f65", "shasum": "" }, "require": { @@ -750,7 +892,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Jordi Boggiano", @@ -759,11 +903,17 @@ } ], "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": ["cabundle", "cacert", "certificate", "ssl", "tls"], + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.6" + "source": "https://github.com/composer/ca-bundle/tree/1.5.8" }, "funding": [ { @@ -773,13 +923,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2025-03-06T14:30:56+00:00" + "time": "2025-08-20T18:49:47+00:00" }, { "name": "dflydev/dot-access-data", @@ -817,7 +963,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Dragonfly Development Inc.", @@ -842,7 +990,12 @@ ], "description": "Given a deep data structure, access data by dot notation.", "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": ["access", "data", "dot", "notation"], + "keywords": [ + "access", + "data", + "dot", + "notation" + ], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" @@ -851,21 +1004,21 @@ }, { "name": "geoip2/geoip2", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/maxmind/GeoIP2-php.git", - "reference": "c86fbeaa7e42279dd9e7af0b015384e721832b88" + "reference": "b7aa58760a6bf89a608dd92ee2d9436b52557ce2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/c86fbeaa7e42279dd9e7af0b015384e721832b88", - "reference": "c86fbeaa7e42279dd9e7af0b015384e721832b88", + "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/b7aa58760a6bf89a608dd92ee2d9436b52557ce2", + "reference": "b7aa58760a6bf89a608dd92ee2d9436b52557ce2", "shasum": "" }, "require": { "ext-json": "*", - "maxmind-db/reader": "^1.12.0", + "maxmind-db/reader": "^1.12.1", "maxmind/web-service-common": "~0.10", "php": ">=8.1" }, @@ -882,7 +1035,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Gregory J. Oschwald", @@ -892,12 +1047,18 @@ ], "description": "MaxMind GeoIP2 PHP API", "homepage": "https://github.com/maxmind/GeoIP2-php", - "keywords": ["IP", "geoip", "geoip2", "geolocation", "maxmind"], + "keywords": [ + "IP", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ], "support": { "issues": "https://github.com/maxmind/GeoIP2-php/issues", - "source": "https://github.com/maxmind/GeoIP2-php/tree/v3.1.0" + "source": "https://github.com/maxmind/GeoIP2-php/tree/v3.2.0" }, - "time": "2024-11-15T16:33:31+00:00" + "time": "2025-05-05T21:18:27+00:00" }, { "name": "graham-campbell/result-type", @@ -927,7 +1088,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -961,22 +1124,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.9.2", + "version": "7.10.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.3", - "guzzlehttp/psr7": "^2.7.0", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1005,13 +1168,17 @@ } }, "autoload": { - "files": ["src/functions_include.php"], + "files": [ + "src/functions_include.php" + ], "psr-4": { "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -1063,7 +1230,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" }, "funding": [ { @@ -1079,20 +1246,20 @@ "type": "tidelift" } ], - "time": "2024-07-24T11:22:20+00:00" + "time": "2025-08-23T22:36:01+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.4", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" + "reference": "481557b130ef3790cf82b713667b43030dc9c957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", "shasum": "" }, "require": { @@ -1100,7 +1267,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "type": "library", "extra": { @@ -1115,7 +1282,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -1139,10 +1308,12 @@ } ], "description": "Guzzle promises library", - "keywords": ["promise"], + "keywords": [ + "promise" + ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.4" + "source": "https://github.com/guzzle/promises/tree/2.3.0" }, "funding": [ { @@ -1158,20 +1329,20 @@ "type": "tidelift" } ], - "time": "2024-10-17T10:06:22+00:00" + "time": "2025-08-22T14:34:08+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + "reference": "21dc724a0583619cd1652f673303492272778051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", "shasum": "" }, "require": { @@ -1187,7 +1358,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1205,7 +1376,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -1256,7 +1429,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" + "source": "https://github.com/guzzle/psr7/tree/2.8.0" }, "funding": [ { @@ -1272,7 +1445,7 @@ "type": "tidelift" } ], - "time": "2024-07-18T11:15:46+00:00" + "time": "2025-08-23T21:21:41+00:00" }, { "name": "james-heinrich/getid3", @@ -1324,7 +1497,11 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["GPL-1.0-or-later", "LGPL-3.0-only", "MPL-2.0"], + "license": [ + "GPL-1.0-or-later", + "LGPL-3.0-only", + "MPL-2.0" + ], "authors": [ { "name": "James Heinrich", @@ -1341,7 +1518,14 @@ ], "description": "Extract and write useful information to/from popular multimedia file formats", "homepage": "https://www.getid3.org/", - "keywords": ["audio", "codecs", "id3", "metadata", "tags", "video"], + "keywords": [ + "audio", + "codecs", + "id3", + "metadata", + "tags", + "video" + ], "support": { "issues": "https://github.com/JamesHeinrich/getID3/issues", "source": "https://github.com/JamesHeinrich/getID3/tree/v2.0.0-beta6" @@ -1350,16 +1534,16 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8" + "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", - "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/df1ef9503299a8e3920079a16263b578eaf7c3ba", + "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba", "shasum": "" }, "require": { @@ -1384,10 +1568,15 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", "homepage": "https://laminas.dev", - "keywords": ["escaper", "laminas"], + "keywords": [ + "escaper", + "laminas" + ], "support": { "chat": "https://laminas.dev/chat", "docs": "https://docs.laminas.dev/laminas-escaper/", @@ -1402,20 +1591,20 @@ "type": "community_bridge" } ], - "time": "2025-02-17T12:40:19+00:00" + "time": "2025-05-06T19:29:36+00:00" }, { "name": "league/commonmark", - "version": "2.6.1", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d990688c91cedfb69753ffc2512727ec646df2ad" + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d990688c91cedfb69753ffc2512727ec646df2ad", - "reference": "d990688c91cedfb69753ffc2512727ec646df2ad", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", "shasum": "" }, "require": { @@ -1444,7 +1633,7 @@ "symfony/process": "^5.4 | ^6.0 | ^7.0", "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" }, "suggest": { "symfony/yaml": "v2.3+ required if using the Front Matter extension" @@ -1452,7 +1641,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.7-dev" + "dev-main": "2.8-dev" } }, "autoload": { @@ -1461,7 +1650,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Colin O'Dell", @@ -1507,7 +1698,7 @@ "type": "tidelift" } ], - "time": "2024-12-29T14:10:59+00:00" + "time": "2025-07-20T12:47:49+00:00" }, { "name": "league/config", @@ -1547,7 +1738,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Colin O'Dell", @@ -1616,7 +1809,9 @@ "unleashedtech/php-coding-standard": "^2.7 || ^3.0", "vimeo/psalm": "^4.22 || ^5.0" }, - "bin": ["bin/html-to-markdown"], + "bin": [ + "bin/html-to-markdown" + ], "type": "library", "extra": { "branch-alias": { @@ -1629,7 +1824,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Colin O'Dell", @@ -1646,7 +1843,10 @@ ], "description": "An HTML-to-markdown conversion helper for PHP", "homepage": "https://github.com/thephpleague/html-to-markdown", - "keywords": ["html", "markdown"], + "keywords": [ + "html", + "markdown" + ], "support": { "issues": "https://github.com/thephpleague/html-to-markdown/issues", "source": "https://github.com/thephpleague/html-to-markdown/tree/5.1.1" @@ -1673,16 +1873,16 @@ }, { "name": "maxmind-db/reader", - "version": "v1.12.0", + "version": "v1.12.1", "source": { "type": "git", "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", - "reference": "5b2d7a721dedfaef9dc20822c5fe7d26f9f8eb90" + "reference": "815939e006b7e68062b540ec9e86aaa8be2b6ce4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/5b2d7a721dedfaef9dc20822c5fe7d26f9f8eb90", - "reference": "5b2d7a721dedfaef9dc20822c5fe7d26f9f8eb90", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/815939e006b7e68062b540ec9e86aaa8be2b6ce4", + "reference": "815939e006b7e68062b540ec9e86aaa8be2b6ce4", "shasum": "" }, "require": { @@ -1709,7 +1909,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Gregory J. Oschwald", @@ -1719,12 +1921,18 @@ ], "description": "MaxMind DB Reader API", "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php", - "keywords": ["database", "geoip", "geoip2", "geolocation", "maxmind"], + "keywords": [ + "database", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ], "support": { "issues": "https://github.com/maxmind/MaxMind-DB-Reader-php/issues", - "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.12.0" + "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.12.1" }, - "time": "2024-11-14T22:43:47+00:00" + "time": "2025-05-05T20:56:32+00:00" }, { "name": "maxmind/web-service-common", @@ -1760,7 +1968,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Gregory Oschwald", @@ -1805,7 +2015,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Mohamed ELbahja", @@ -1835,19 +2047,20 @@ }, { "name": "michalsn/codeigniter4-uuid", - "version": "v1.1.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/michalsn/codeigniter4-uuid.git", - "reference": "051cf47a36eece304f166a63e3ffcdae0ca186d4" + "reference": "16408c77bcaef920cb93a822018390f8a5674424" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/michalsn/codeigniter4-uuid/zipball/051cf47a36eece304f166a63e3ffcdae0ca186d4", - "reference": "051cf47a36eece304f166a63e3ffcdae0ca186d4", + "url": "https://api.github.com/repos/michalsn/codeigniter4-uuid/zipball/16408c77bcaef920cb93a822018390f8a5674424", + "reference": "16408c77bcaef920cb93a822018390f8a5674424", "shasum": "" }, "require": { + "ext-ctype": "*", "php": ">=8.1", "ramsey/uuid": "^4.7" }, @@ -1862,7 +2075,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "michalsn", @@ -1872,12 +2087,17 @@ ], "description": "UUID package for CodeIgniter 4 with support for Model and Entity.", "homepage": "https://github.com/michalsn/codeigniter4-uuid", - "keywords": ["codeigniter4", "entity", "model", "uuid"], + "keywords": [ + "codeigniter4", + "entity", + "model", + "uuid" + ], "support": { "issues": "https://github.com/michalsn/codeigniter4-uuid/issues", - "source": "https://github.com/michalsn/codeigniter4-uuid/tree/v1.1.0" + "source": "https://github.com/michalsn/codeigniter4-uuid/tree/v1.3.0" }, - "time": "2024-04-22T14:12:58+00:00" + "time": "2025-06-13T05:40:55+00:00" }, { "name": "mpratt/embera", @@ -1912,7 +2132,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Michael Pratt", @@ -1970,7 +2192,9 @@ "composer/xdebug-handler": "^3.0.3", "phpunit/phpunit": "^8.5.33" }, - "bin": ["bin/jp.php"], + "bin": [ + "bin/jp.php" + ], "type": "library", "extra": { "branch-alias": { @@ -1978,13 +2202,17 @@ } }, "autoload": { - "files": ["src/JmesPath.php"], + "files": [ + "src/JmesPath.php" + ], "psr-4": { "JmesPath\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -1998,7 +2226,10 @@ } ], "description": "Declaratively specify how to extract elements from a JSON document", - "keywords": ["json", "jsonpath"], + "keywords": [ + "json", + "jsonpath" + ], "support": { "issues": "https://github.com/jmespath/jmespath.php/issues", "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0" @@ -2035,10 +2266,16 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"], + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], "authors": [ { "name": "David Grudl", @@ -2051,7 +2288,10 @@ ], "description": "📐 Nette Schema: validating data structures against a given Schema.", "homepage": "https://nette.org", - "keywords": ["config", "nette"], + "keywords": [ + "config", + "nette" + ], "support": { "issues": "https://github.com/nette/schema/issues", "source": "https://github.com/nette/schema/tree/v1.3.2" @@ -2060,29 +2300,29 @@ }, { "name": "nette/utils", - "version": "v4.0.5", + "version": "v4.0.8", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", "shasum": "" }, "require": { - "php": "8.0 - 8.4" + "php": "8.0 - 8.5" }, "conflict": { "nette/finder": "<3", "nette/schema": "<1.2.2" }, "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", + "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -2100,10 +2340,19 @@ } }, "autoload": { - "classmap": ["src/"] + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"], + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], "authors": [ { "name": "David Grudl", @@ -2134,9 +2383,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.5" + "source": "https://github.com/nette/utils/tree/v4.0.8" }, - "time": "2024-08-07T15:39:19+00:00" + "time": "2025-08-06T21:43:34+00:00" }, { "name": "opawg/user-agents-v2-php", @@ -2160,7 +2409,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Benjamin Bellamy", @@ -2178,16 +2429,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.3", + "version": "1.9.4", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", + "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", "shasum": "" }, "require": { @@ -2195,7 +2446,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" }, "type": "library", "extra": { @@ -2213,7 +2464,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Johannes M. Schmitt", @@ -2227,10 +2480,15 @@ } ], "description": "Option Type for PHP", - "keywords": ["language", "option", "php", "type"], + "keywords": [ + "language", + "option", + "php", + "type" + ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.4" }, "funding": [ { @@ -2242,7 +2500,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:41:07+00:00" + "time": "2025-08-21T11:53:16+00:00" }, { "name": "phpseclib/phpseclib", @@ -2275,13 +2533,17 @@ }, "type": "library", "autoload": { - "files": ["phpseclib/bootstrap.php"], + "files": [ + "phpseclib/bootstrap.php" + ], "psr-4": { "phpseclib\\": "phpseclib/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Jim Wigginton", @@ -2379,7 +2641,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2387,7 +2651,11 @@ } ], "description": "Common interface for caching libraries", - "keywords": ["cache", "psr", "psr-6"], + "keywords": [ + "cache", + "psr", + "psr-6" + ], "support": { "source": "https://github.com/php-fig/cache/tree/3.0.0" }, @@ -2422,7 +2690,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2430,7 +2700,11 @@ } ], "description": "Standard interfaces for event handling.", - "keywords": ["events", "psr", "psr-14"], + "keywords": [ + "events", + "psr", + "psr-14" + ], "support": { "issues": "https://github.com/php-fig/event-dispatcher/issues", "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" @@ -2467,7 +2741,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2476,7 +2752,12 @@ ], "description": "Common interface for HTTP clients", "homepage": "https://github.com/php-fig/http-client", - "keywords": ["http", "http-client", "psr", "psr-18"], + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], "support": { "source": "https://github.com/php-fig/http-client" }, @@ -2512,7 +2793,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2564,7 +2847,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2615,7 +2900,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2624,7 +2911,11 @@ ], "description": "Common interface for logging libraries", "homepage": "https://github.com/php-fig/log", - "keywords": ["log", "psr", "psr-3"], + "keywords": [ + "log", + "psr", + "psr-3" + ], "support": { "source": "https://github.com/php-fig/log/tree/3.0.2" }, @@ -2653,10 +2944,14 @@ }, "type": "library", "autoload": { - "files": ["src/getallheaders.php"] + "files": [ + "src/getallheaders.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Ralph Khattar", @@ -2672,16 +2967,16 @@ }, { "name": "ramsey/collection", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109" + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", - "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", "shasum": "" }, "require": { @@ -2721,7 +3016,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Ben Ramsey", @@ -2730,30 +3027,36 @@ } ], "description": "A PHP library for representing and manipulating collections.", - "keywords": ["array", "collection", "hash", "map", "queue", "set"], + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.1.0" + "source": "https://github.com/ramsey/collection/tree/2.1.1" }, - "time": "2025-03-02T04:48:29+00:00" + "time": "2025-03-22T05:38:12+00:00" }, { "name": "ramsey/uuid", - "version": "4.7.6", + "version": "4.9.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", - "ext-json": "*", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -2761,26 +3064,23 @@ "rhumsaa/uuid": "self.version" }, "require-dev": { - "captainhook/captainhook": "^5.10", + "captainhook/captainhook": "^5.25", "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", @@ -2796,43 +3096,41 @@ } }, "autoload": { - "files": ["src/functions.php"], + "files": [ + "src/functions.php" + ], "psr-4": { "Ramsey\\Uuid\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": ["guid", "identifier", "uuid"], + "keywords": [ + "guid", + "identifier", + "uuid" + ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" + "source": "https://github.com/ramsey/uuid/tree/4.9.0" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2024-04-27T21:32:50+00:00" + "time": "2025-06-25T14:20:11+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -2845,14 +3143,18 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { - "files": ["function.php"] + "files": [ + "function.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -2866,7 +3168,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -2882,11 +3184,11 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -2915,13 +3217,17 @@ } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Gert de Pagter", @@ -2934,9 +3240,14 @@ ], "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", - "keywords": ["compatibility", "ctype", "polyfill", "portable"], + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -2947,6 +3258,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2956,19 +3271,20 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { + "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -2985,13 +3301,17 @@ } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -3004,9 +3324,15 @@ ], "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", - "keywords": ["compatibility", "mbstring", "polyfill", "portable", "shim"], + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -3017,25 +3343,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { @@ -3049,14 +3379,20 @@ } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Php80\\": "" }, - "classmap": ["Resources/stubs"] + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Ion Bazan", @@ -3073,9 +3409,14 @@ ], "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", - "keywords": ["compatibility", "polyfill", "portable", "shim"], + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" }, "funding": [ { @@ -3086,25 +3427,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.6.1", + "version": "v5.6.2", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", "shasum": "" }, "require": { @@ -3140,7 +3485,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Graham Campbell", @@ -3154,10 +3501,14 @@ } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": ["dotenv", "env", "environment"], + "keywords": [ + "dotenv", + "env", + "environment" + ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" }, "funding": [ { @@ -3169,7 +3520,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:52:34+00:00" + "time": "2025-04-30T23:37:27+00:00" }, { "name": "whichbrowser/parser", @@ -3204,11 +3555,15 @@ "type": "library", "autoload": { "psr-4": { - "WhichBrowser\\": ["src/"] + "WhichBrowser\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Niels Leenheer", @@ -3218,7 +3573,12 @@ ], "description": "Useragent sniffing library for PHP", "homepage": "http://whichbrowser.net", - "keywords": ["browser", "sniffing", "ua", "useragent"], + "keywords": [ + "browser", + "sniffing", + "ua", + "useragent" + ], "support": { "issues": "https://github.com/WhichBrowser/Parser-PHP/issues", "source": "https://github.com/WhichBrowser/Parser-PHP/tree/v2.1.8" @@ -3260,7 +3620,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Yassine Doghri", @@ -3283,42 +3645,49 @@ }, { "name": "yassinedoghri/php-icons", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/yassinedoghri/php-icons.git", - "reference": "87ff8cbb0145965d8dfa6d10f8d370650cf4e569" + "reference": "ae5d7727431f6891a0660d2b20818795fae40b41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yassinedoghri/php-icons/zipball/87ff8cbb0145965d8dfa6d10f8d370650cf4e569", - "reference": "87ff8cbb0145965d8dfa6d10f8d370650cf4e569", + "url": "https://api.github.com/repos/yassinedoghri/php-icons/zipball/ae5d7727431f6891a0660d2b20818795fae40b41", + "reference": "ae5d7727431f6891a0660d2b20818795fae40b41", "shasum": "" }, "require": { - "adhocore/cli": "^1.7.2", + "adhocore/cli": "^v1.9.3", "composer-runtime-api": "^2.2", "php": ">=8.1" }, "require-dev": { - "kint-php/kint": "^5.1.1", - "pestphp/pest": "v3.5.1", - "pestphp/pest-plugin-type-coverage": "^v3.1.0", - "phpstan/phpstan": "^1.12.7", - "rector/rector": "^1.2.8", + "kint-php/kint": "^6.0.1", + "pestphp/pest": "^3.7.4", + "pestphp/pest-plugin-type-coverage": "^3.4.0", + "phpstan/phpstan": "^2.1.10", + "rector/rector": "^2.0.10", "symplify/coding-standard": "^12.2.3", - "symplify/easy-coding-standard": "^12.3.6" + "symplify/easy-coding-standard": "^12.5.9" }, - "bin": ["bin/php-icons"], + "bin": [ + "bin/php-icons" + ], "type": "library", "autoload": { - "files": ["src/functions.php", "src/Console/helpers.php"], + "files": [ + "src/functions.php", + "src/Console/helpers.php" + ], "psr-4": { "PHPIcons\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Yassine Doghri", @@ -3330,9 +3699,9 @@ "description": "A PHP library based on iconify's API to download and render svg icons from popular open source icon sets.", "support": { "issues": "https://github.com/yassinedoghri/php-icons/issues", - "source": "https://github.com/yassinedoghri/php-icons/tree/v1.2.0" + "source": "https://github.com/yassinedoghri/php-icons/tree/v1.3.0" }, - "time": "2024-11-06T11:12:15+00:00" + "time": "2025-03-23T16:46:25+00:00" }, { "name": "yassinedoghri/podcast-feed", @@ -3367,7 +3736,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["AGPL-3.0-or-later"], + "license": [ + "AGPL-3.0-or-later" + ], "authors": [ { "name": "Yassine Doghri", @@ -3387,16 +3758,16 @@ "packages-dev": [ { "name": "captainhook/captainhook", - "version": "5.25.0", + "version": "5.25.11", "source": { "type": "git", - "url": "https://github.com/captainhookphp/captainhook.git", - "reference": "4c5bd310bf08f4d96f9bd4f680f894233f9836fc" + "url": "https://github.com/captainhook-git/captainhook.git", + "reference": "f2278edde4b45af353861aae413fc3840515bb80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/4c5bd310bf08f4d96f9bd4f680f894233f9836fc", - "reference": "4c5bd310bf08f4d96f9bd4f680f894233f9836fc", + "url": "https://api.github.com/repos/captainhook-git/captainhook/zipball/f2278edde4b45af353861aae413fc3840515bb80", + "reference": "f2278edde4b45af353861aae413fc3840515bb80", "shasum": "" }, "require": { @@ -3407,7 +3778,7 @@ "php": ">=8.0", "sebastianfeldmann/camino": "^0.9.2", "sebastianfeldmann/cli": "^3.3", - "sebastianfeldmann/git": "^3.13", + "sebastianfeldmann/git": "^3.14", "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" @@ -3419,7 +3790,9 @@ "composer/composer": "~1 || ^2.0", "mikey179/vfsstream": "~1" }, - "bin": ["bin/captainhook"], + "bin": [ + "bin/captainhook" + ], "type": "library", "extra": { "captainhook": { @@ -3435,7 +3808,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -3454,8 +3829,8 @@ "prepare-commit-msg" ], "support": { - "issues": "https://github.com/captainhookphp/captainhook/issues", - "source": "https://github.com/captainhookphp/captainhook/tree/5.25.0" + "issues": "https://github.com/captainhook-git/captainhook/issues", + "source": "https://github.com/captainhook-git/captainhook/tree/5.25.11" }, "funding": [ { @@ -3463,20 +3838,20 @@ "type": "github" } ], - "time": "2025-02-11T20:42:11+00:00" + "time": "2025-08-12T12:14:57+00:00" }, { "name": "captainhook/secrets", - "version": "0.9.6", + "version": "0.9.7", "source": { "type": "git", - "url": "https://github.com/captainhookphp/secrets.git", - "reference": "0232c67019e11c4bee4ee9bfec9575b67e0854e5" + "url": "https://github.com/captainhook-git/secrets.git", + "reference": "d62c97f75f81ac98e22f1c282482bd35fa82f631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhookphp/secrets/zipball/0232c67019e11c4bee4ee9bfec9575b67e0854e5", - "reference": "0232c67019e11c4bee4ee9bfec9575b67e0854e5", + "url": "https://api.github.com/repos/captainhook-git/secrets/zipball/d62c97f75f81ac98e22f1c282482bd35fa82f631", + "reference": "d62c97f75f81ac98e22f1c282482bd35fa82f631", "shasum": "" }, "require": { @@ -3490,7 +3865,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -3508,8 +3885,8 @@ "tokens" ], "support": { - "issues": "https://github.com/captainhookphp/secrets/issues", - "source": "https://github.com/captainhookphp/secrets/tree/0.9.6" + "issues": "https://github.com/captainhook-git/secrets/issues", + "source": "https://github.com/captainhook-git/secrets/tree/0.9.7" }, "funding": [ { @@ -3517,7 +3894,7 @@ "type": "github" } ], - "time": "2024-11-26T09:24:19+00:00" + "time": "2025-04-08T07:10:48+00:00" }, { "name": "clue/ndjson-react", @@ -3548,7 +3925,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Christian Lück", @@ -3583,16 +3962,16 @@ }, { "name": "codeigniter/phpstan-codeigniter", - "version": "v1.5.3", + "version": "v1.5.4", "source": { "type": "git", "url": "https://github.com/CodeIgniter/phpstan-codeigniter.git", - "reference": "430e0b44b1a59b34de3cd55678f43472327c0e12" + "reference": "e959fb0841c29a01870aa6570f3095f42e1057ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CodeIgniter/phpstan-codeigniter/zipball/430e0b44b1a59b34de3cd55678f43472327c0e12", - "reference": "430e0b44b1a59b34de3cd55678f43472327c0e12", + "url": "https://api.github.com/repos/CodeIgniter/phpstan-codeigniter/zipball/e959fb0841c29a01870aa6570f3095f42e1057ad", + "reference": "e959fb0841c29a01870aa6570f3095f42e1057ad", "shasum": "" }, "require": { @@ -3617,7 +3996,9 @@ "type": "phpstan-extension", "extra": { "phpstan": { - "includes": ["extension.neon"] + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -3626,7 +4007,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "John Paul E. Balandan, CPA", @@ -3647,7 +4030,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/CodeIgniter/phpstan-codeigniter" }, - "time": "2025-01-24T19:52:36+00:00" + "time": "2025-06-24T17:28:48+00:00" }, { "name": "composer/pcre", @@ -3677,7 +4060,9 @@ "type": "library", "extra": { "phpstan": { - "includes": ["extension.neon"] + "includes": [ + "extension.neon" + ] }, "branch-alias": { "dev-main": "3.x-dev" @@ -3689,7 +4074,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Jordi Boggiano", @@ -3698,7 +4085,12 @@ } ], "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": ["PCRE", "preg", "regex", "regular expression"], + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], "support": { "issues": "https://github.com/composer/pcre/issues", "source": "https://github.com/composer/pcre/tree/3.3.2" @@ -3721,16 +4113,16 @@ }, { "name": "composer/semver", - "version": "3.4.3", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", "shasum": "" }, "require": { @@ -3752,7 +4144,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nils Adermann", @@ -3771,11 +4165,16 @@ } ], "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": ["semantic", "semver", "validation", "versioning"], + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.3" + "source": "https://github.com/composer/semver/tree/3.4.4" }, "funding": [ { @@ -3785,13 +4184,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-09-19T14:15:21+00:00" + "time": "2025-08-20T19:15:30+00:00" }, { "name": "composer/xdebug-handler", @@ -3824,7 +4219,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "John Stevenson", @@ -3832,7 +4229,10 @@ } ], "description": "Restarts a process without Xdebug.", - "keywords": ["Xdebug", "performance"], + "keywords": [ + "Xdebug", + "performance" + ], "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", @@ -3881,7 +4281,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Igor Wiedler", @@ -3889,7 +4291,10 @@ } ], "description": "Événement is a very simple event dispatching library for PHP", - "keywords": ["event-dispatcher", "event-emitter"], + "keywords": [ + "event-dispatcher", + "event-emitter" + ], "support": { "issues": "https://github.com/igorw/evenement/issues", "source": "https://github.com/igorw/evenement/tree/v3.0.2" @@ -3898,16 +4303,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "8520451a140d3f46ac33042715115e290cf5785f" + "reference": "db9508f7b1474469d9d3c53b86f817e344732678" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", - "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678", "shasum": "" }, "require": { @@ -3917,10 +4322,10 @@ "fidry/makefile": "^0.2.0", "fidry/php-cs-fixer-config": "^1.1.2", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^8.5.31 || ^9.5.26", "webmozarts/strict-phpunit": "^7.5" }, @@ -3931,7 +4336,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Théo FIDRY", @@ -3939,10 +4346,13 @@ } ], "description": "Tiny utility to get the number of CPU cores.", - "keywords": ["CPU", "core"], + "keywords": [ + "CPU", + "core" + ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" }, "funding": [ { @@ -3950,76 +4360,84 @@ "type": "github" } ], - "time": "2024-08-06T10:04:20+00:00" + "time": "2025-08-14T07:29:31+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.72.0", + "version": "v3.86.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "900389362c43d116fee1ffc51f7878145fa61b57" + "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/900389362c43d116fee1ffc51f7878145fa61b57", - "reference": "900389362c43d116fee1ffc51f7878145fa61b57", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4a952bd19dc97879b0620f495552ef09b55f7d36", + "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36", "shasum": "" }, "require": { - "clue/ndjson-react": "^1.0", + "clue/ndjson-react": "^1.3", "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.3", + "composer/xdebug-handler": "^3.0.5", "ext-filter": "*", + "ext-hash": "*", "ext-json": "*", "ext-tokenizer": "*", "fidry/cpu-core-counter": "^1.2", "php": "^7.4 || ^8.0", - "react/child-process": "^0.6.5", - "react/event-loop": "^1.0", - "react/promise": "^2.0 || ^3.0", - "react/socket": "^1.0", - "react/stream": "^1.0", - "sebastian/diff": "^4.0 || ^5.1 || ^6.0 || ^7.0", - "symfony/console": "^5.4 || ^6.4 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.4 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.4 || ^7.0", - "symfony/finder": "^5.4 || ^6.4 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.4 || ^7.0", - "symfony/polyfill-mbstring": "^1.31", - "symfony/polyfill-php80": "^1.31", - "symfony/polyfill-php81": "^1.31", - "symfony/process": "^5.4 || ^6.4 || ^7.2", - "symfony/stopwatch": "^5.4 || ^6.4 || ^7.0" + "react/child-process": "^0.6.6", + "react/event-loop": "^1.5", + "react/promise": "^3.2", + "react/socket": "^1.16", + "react/stream": "^1.4", + "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", + "symfony/console": "^5.4.47 || ^6.4.13 || ^7.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/filesystem": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/finder": "^5.4.45 || ^6.4.17 || ^7.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.16 || ^7.0", + "symfony/polyfill-mbstring": "^1.32", + "symfony/polyfill-php80": "^1.32", + "symfony/polyfill-php81": "^1.32", + "symfony/process": "^5.4.47 || ^6.4.20 || ^7.2", + "symfony/stopwatch": "^5.4.45 || ^6.4.19 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3.1 || ^2.6", "infection/infection": "^0.29.14", - "justinrainbow/json-schema": "^5.3 || ^6.2", - "keradus/cli-executor": "^2.1", + "justinrainbow/json-schema": "^5.3 || ^6.4", + "keradus/cli-executor": "^2.2", "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.7", + "php-coveralls/php-coveralls": "^2.8", "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", - "phpunit/phpunit": "^9.6.22 || ^10.5.45 || ^11.5.12", - "symfony/var-dumper": "^5.4.48 || ^6.4.18 || ^7.2.3", - "symfony/yaml": "^5.4.45 || ^6.4.18 || ^7.2.3" + "phpunit/phpunit": "^9.6.23 || ^10.5.47 || ^11.5.25", + "symfony/polyfill-php84": "^1.32", + "symfony/var-dumper": "^5.4.48 || ^6.4.23 || ^7.3.1", + "symfony/yaml": "^5.4.45 || ^6.4.23 || ^7.3.1" }, "suggest": { "ext-dom": "For handling output formats in XML", "ext-mbstring": "For handling non-UTF8 characters." }, - "bin": ["php-cs-fixer"], + "bin": [ + "php-cs-fixer" + ], "type": "application", "autoload": { "psr-4": { "PhpCsFixer\\": "src/" }, - "exclude-from-classmap": ["src/Fixer/Internal/*"] + "exclude-from-classmap": [ + "src/Fixer/Internal/*" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -4039,7 +4457,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.72.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.86.0" }, "funding": [ { @@ -4047,7 +4465,7 @@ "type": "github" } ], - "time": "2025-03-13T11:25:37+00:00" + "time": "2025-08-13T22:36:21+00:00" }, { "name": "mikey179/vfsstream", @@ -4082,7 +4500,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Frank Kleine", @@ -4101,16 +4521,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.13.0", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -4128,18 +4548,28 @@ }, "type": "library", "autoload": { - "files": ["src/DeepCopy/deep_copy.php"], + "files": [ + "src/DeepCopy/deep_copy.php" + ], "psr-4": { "DeepCopy\\": "src/DeepCopy/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Create deep copies (clones) of your objects", - "keywords": ["clone", "copy", "duplicate", "object", "object graph"], + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -4147,20 +4577,20 @@ "type": "tidelift" } ], - "time": "2025-02-12T12:17:51+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "nikic/php-parser", - "version": "v5.4.0", + "version": "v5.6.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", "shasum": "" }, "require": { @@ -4173,11 +4603,13 @@ "ircmaxell/php-yacc": "^0.0.7", "phpunit/phpunit": "^9.0" }, - "bin": ["bin/php-parse"], + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -4186,19 +4618,24 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Nikita Popov" } ], "description": "A PHP parser written in PHP", - "keywords": ["parser", "php"], + "keywords": [ + "parser", + "php" + ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" }, - "time": "2024-12-30T11:07:19+00:00" + "time": "2025-08-13T20:13:15+00:00" }, { "name": "phar-io/manifest", @@ -4229,10 +4666,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Arne Blankerts", @@ -4282,10 +4723,14 @@ }, "type": "library", "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Arne Blankerts", @@ -4344,9 +4789,14 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Composer plugin for automatic installation of PHPStan extensions", - "keywords": ["dev", "static analysis"], + "keywords": [ + "dev", + "static analysis" + ], "support": { "issues": "https://github.com/phpstan/extension-installer/issues", "source": "https://github.com/phpstan/extension-installer/tree/1.4.3" @@ -4355,16 +4805,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.8", + "version": "2.1.22", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "f9adff3b87c03b12cc7e46a30a524648e497758f" + "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f9adff3b87c03b12cc7e46a30a524648e497758f", - "reference": "f9adff3b87c03b12cc7e46a30a524648e497758f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4", + "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4", "shasum": "" }, "require": { @@ -4373,15 +4823,25 @@ "conflict": { "phpstan/phpstan-shim": "*" }, - "bin": ["phpstan", "phpstan.phar"], + "bin": [ + "phpstan", + "phpstan.phar" + ], "type": "library", "autoload": { - "files": ["bootstrap.php"] + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "PHPStan - PHP Static Analysis Tool", - "keywords": ["dev", "static analysis"], + "keywords": [ + "dev", + "static analysis" + ], "support": { "docs": "https://phpstan.org/user-guide/getting-started", "forum": "https://github.com/phpstan/phpstan/discussions", @@ -4399,20 +4859,20 @@ "type": "github" } ], - "time": "2025-03-09T09:30:48+00:00" + "time": "2025-08-04T19:17:37+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "11.0.9", + "version": "12.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7" + "reference": "086553c5b2e0e1e20293d782d788ab768202b621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/14d63fbcca18457e49c6f8bebaa91a87e8e188d7", - "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/086553c5b2e0e1e20293d782d788ab768202b621", + "reference": "086553c5b2e0e1e20293d782d788ab768202b621", "shasum": "" }, "require": { @@ -4420,18 +4880,17 @@ "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^5.4.0", - "php": ">=8.2", - "phpunit/php-file-iterator": "^5.1.0", - "phpunit/php-text-template": "^4.0.1", - "sebastian/code-unit-reverse-lookup": "^4.0.1", - "sebastian/complexity": "^4.0.1", - "sebastian/environment": "^7.2.0", - "sebastian/lines-of-code": "^3.0.1", - "sebastian/version": "^5.0.2", + "php": ">=8.3", + "phpunit/php-file-iterator": "^6.0", + "phpunit/php-text-template": "^5.0", + "sebastian/complexity": "^5.0", + "sebastian/environment": "^8.0", + "sebastian/lines-of-code": "^4.0", + "sebastian/version": "^6.0", "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^11.5.2" + "phpunit/phpunit": "^12.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -4440,14 +4899,18 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "11.0.x-dev" + "dev-main": "12.3.x-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4457,51 +4920,71 @@ ], "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": ["coverage", "testing", "xunit"], + "keywords": [ + "coverage", + "testing", + "xunit" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.9" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.3.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" } ], - "time": "2025-02-25T13:26:39+00:00" + "time": "2025-07-29T06:19:24+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "5.1.0", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" + "reference": "961bc913d42fe24a257bfff826a5068079ac7782" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", - "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782", + "reference": "961bc913d42fe24a257bfff826a5068079ac7782", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4511,11 +4994,14 @@ ], "description": "FilterIterator implementation that filters files based on a list of suffixes.", "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": ["filesystem", "iterator"], + "keywords": [ + "filesystem", + "iterator" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.0" }, "funding": [ { @@ -4523,28 +5009,28 @@ "type": "github" } ], - "time": "2024-08-27T05:02:59+00:00" + "time": "2025-02-07T04:58:37+00:00" }, { "name": "phpunit/php-invoker", - "version": "5.0.1", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "suggest": { "ext-pcntl": "*" @@ -4552,14 +5038,18 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4569,11 +5059,13 @@ ], "description": "Invoke callables with a timeout", "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": ["process"], + "keywords": [ + "process" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" }, "funding": [ { @@ -4581,39 +5073,43 @@ "type": "github" } ], - "time": "2024-07-03T05:07:44+00:00" + "time": "2025-02-07T04:58:58+00:00" }, { "name": "phpunit/php-text-template", - "version": "4.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4623,11 +5119,13 @@ ], "description": "Simple template engine.", "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": ["template"], + "keywords": [ + "template" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0" }, "funding": [ { @@ -4635,39 +5133,43 @@ "type": "github" } ], - "time": "2024-07-03T05:08:43+00:00" + "time": "2025-02-07T04:59:16+00:00" }, { "name": "phpunit/php-timer", - "version": "7.0.1", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4677,11 +5179,13 @@ ], "description": "Utility class for timing", "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": ["timer"], + "keywords": [ + "timer" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" }, "funding": [ { @@ -4689,20 +5193,20 @@ "type": "github" } ], - "time": "2024-07-03T05:09:35+00:00" + "time": "2025-02-07T04:59:38+00:00" }, { "name": "phpunit/phpunit", - "version": "11.5.12", + "version": "12.3.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "d42785840519401ed2113292263795eb4c0f95da" + "reference": "a2cab3224f687150ac2f3cc13d99b64ba1e1d088" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d42785840519401ed2113292263795eb4c0f95da", - "reference": "d42785840519401ed2113292263795eb4c0f95da", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2cab3224f687150ac2f3cc13d99b64ba1e1d088", + "reference": "a2cab3224f687150ac2f3cc13d99b64ba1e1d088", "shasum": "" }, "require": { @@ -4712,43 +5216,47 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.0", + "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", - "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.9", - "phpunit/php-file-iterator": "^5.1.0", - "phpunit/php-invoker": "^5.0.1", - "phpunit/php-text-template": "^4.0.1", - "phpunit/php-timer": "^7.0.1", - "sebastian/cli-parser": "^3.0.2", - "sebastian/code-unit": "^3.0.2", - "sebastian/comparator": "^6.3.1", - "sebastian/diff": "^6.0.2", - "sebastian/environment": "^7.2.0", - "sebastian/exporter": "^6.3.0", - "sebastian/global-state": "^7.0.2", - "sebastian/object-enumerator": "^6.0.1", - "sebastian/type": "^5.1.0", - "sebastian/version": "^5.0.2", + "php": ">=8.3", + "phpunit/php-code-coverage": "^12.3.2", + "phpunit/php-file-iterator": "^6.0.0", + "phpunit/php-invoker": "^6.0.0", + "phpunit/php-text-template": "^5.0.0", + "phpunit/php-timer": "^8.0.0", + "sebastian/cli-parser": "^4.0.0", + "sebastian/comparator": "^7.1.3", + "sebastian/diff": "^7.0.0", + "sebastian/environment": "^8.0.3", + "sebastian/exporter": "^7.0.0", + "sebastian/global-state": "^8.0.0", + "sebastian/object-enumerator": "^7.0.0", + "sebastian/type": "^6.0.3", + "sebastian/version": "^6.0.0", "staabm/side-effects-detector": "^1.0.5" }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" - }, - "bin": ["phpunit"], + "bin": [ + "phpunit" + ], "type": "library", "extra": { "branch-alias": { - "dev-main": "11.5-dev" + "dev-main": "12.3-dev" } }, "autoload": { - "files": ["src/Framework/Assert/Functions.php"], - "classmap": ["src/"] + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4758,11 +5266,15 @@ ], "description": "The PHP Unit Testing framework.", "homepage": "https://phpunit.de/", - "keywords": ["phpunit", "testing", "xunit"], + "keywords": [ + "phpunit", + "testing", + "xunit" + ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.12" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.3.6" }, "funding": [ { @@ -4773,12 +5285,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2025-03-07T07:31:03+00:00" + "time": "2025-08-20T14:43:23+00:00" }, { "name": "psr/container", @@ -4809,7 +5329,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -4859,7 +5381,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Christian Lück", @@ -4883,7 +5407,12 @@ } ], "description": "Async, Promise-based cache interface for ReactPHP", - "keywords": ["cache", "caching", "promise", "reactphp"], + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], "support": { "issues": "https://github.com/reactphp/cache/issues", "source": "https://github.com/reactphp/cache/tree/v1.2.0" @@ -4928,7 +5457,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Christian Lück", @@ -4952,7 +5483,11 @@ } ], "description": "Event-driven library for executing child processes with ReactPHP.", - "keywords": ["event-driven", "process", "reactphp"], + "keywords": [ + "event-driven", + "process", + "reactphp" + ], "support": { "issues": "https://github.com/reactphp/child-process/issues", "source": "https://github.com/reactphp/child-process/tree/v0.6.6" @@ -4997,7 +5532,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Christian Lück", @@ -5021,7 +5558,12 @@ } ], "description": "Async DNS resolver for ReactPHP", - "keywords": ["async", "dns", "dns-resolver", "reactphp"], + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], "support": { "issues": "https://github.com/reactphp/dns/issues", "source": "https://github.com/reactphp/dns/tree/v1.13.0" @@ -5064,7 +5606,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Christian Lück", @@ -5088,7 +5632,10 @@ } ], "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": ["asynchronous", "event-loop"], + "keywords": [ + "asynchronous", + "event-loop" + ], "support": { "issues": "https://github.com/reactphp/event-loop/issues", "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" @@ -5103,34 +5650,38 @@ }, { "name": "react/promise", - "version": "v3.2.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", "shasum": "" }, "require": { "php": ">=7.1.0" }, "require-dev": { - "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpstan/phpstan": "1.12.28 || 1.4.10", "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", "autoload": { - "files": ["src/functions_include.php"], + "files": [ + "src/functions_include.php" + ], "psr-4": { "React\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Jan Sorgalla", @@ -5154,10 +5705,13 @@ } ], "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": ["promise", "promises"], + "keywords": [ + "promise", + "promises" + ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.2.0" + "source": "https://github.com/reactphp/promise/tree/v3.3.0" }, "funding": [ { @@ -5165,7 +5719,7 @@ "type": "open_collective" } ], - "time": "2024-05-24T10:39:05+00:00" + "time": "2025-08-19T18:57:03+00:00" }, { "name": "react/socket", @@ -5202,7 +5756,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Christian Lück", @@ -5226,7 +5782,13 @@ } ], "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", - "keywords": ["Connection", "Socket", "async", "reactphp", "stream"], + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], "support": { "issues": "https://github.com/reactphp/socket/issues", "source": "https://github.com/reactphp/socket/tree/v1.16.0" @@ -5269,7 +5831,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Christian Lück", @@ -5317,21 +5881,21 @@ }, { "name": "rector/rector", - "version": "2.0.10", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "5844a718acb40f40afcd110394270afa55509fd0" + "reference": "fe613c528819222f8686a9a037a315ef9d4915b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/5844a718acb40f40afcd110394270afa55509fd0", - "reference": "5844a718acb40f40afcd110394270afa55509fd0", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/fe613c528819222f8686a9a037a315ef9d4915b3", + "reference": "fe613c528819222f8686a9a037a315ef9d4915b3", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.6" + "phpstan/phpstan": "^2.1.18" }, "conflict": { "rector/rector-doctrine": "*", @@ -5342,18 +5906,30 @@ "suggest": { "ext-dom": "To manipulate phpunit.xml via the custom-rule command" }, - "bin": ["bin/rector"], + "bin": [ + "bin/rector" + ], "type": "library", "autoload": { - "files": ["bootstrap.php"] + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Instant Upgrade and Automated Refactoring of any PHP code", - "keywords": ["automation", "dev", "migration", "refactoring"], + "homepage": "https://getrector.com/", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.0.10" + "source": "https://github.com/rectorphp/rector/tree/2.1.4" }, "funding": [ { @@ -5361,39 +5937,43 @@ "type": "github" } ], - "time": "2025-03-03T17:35:18+00:00" + "time": "2025-08-15T14:41:36+00:00" }, { "name": "sebastian/cli-parser", - "version": "3.0.2", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + "reference": "6d584c727d9114bcdc14c86711cd1cad51778e7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/6d584c727d9114bcdc14c86711cd1cad51778e7c", + "reference": "6d584c727d9114bcdc14c86711cd1cad51778e7c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5406,7 +5986,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.0.0" }, "funding": [ { @@ -5414,136 +5994,31 @@ "type": "github" } ], - "time": "2024-07-03T04:41:36+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca", - "reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": ["src/"] - }, - "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-12-12T09:59:06+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": ["src/"] - }, - "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-07-03T04:45:54+00:00" + "time": "2025-02-07T04:53:50+00:00" }, { "name": "sebastian/comparator", - "version": "6.3.1", + "version": "7.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959" + "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959", - "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148", + "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/diff": "^6.0", - "sebastian/exporter": "^6.0" + "php": ">=8.3", + "sebastian/diff": "^7.0", + "sebastian/exporter": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^11.4" + "phpunit/phpunit": "^12.2" }, "suggest": { "ext-bcmath": "For comparing BcMath\\Number objects" @@ -5551,14 +6026,18 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.3-dev" + "dev-main": "7.1-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5579,52 +6058,72 @@ ], "description": "Provides the functionality to compare PHP values for equality", "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": ["comparator", "compare", "equality"], + "keywords": [ + "comparator", + "compare", + "equality" + ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2025-03-07T06:57:01+00:00" + "time": "2025-08-20T11:27:00+00:00" }, { "name": "sebastian/complexity", - "version": "4.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", "shasum": "" }, "require": { "nikic/php-parser": "^5.0", - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5637,7 +6136,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" }, "funding": [ { @@ -5645,40 +6144,44 @@ "type": "github" } ], - "time": "2024-07-03T04:49:50+00:00" + "time": "2025-02-07T04:55:25+00:00" }, { "name": "sebastian/diff", - "version": "6.0.2", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + "reference": "7ab1ea946c012266ca32390913653d844ecd085f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^12.0", + "symfony/process": "^7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5691,11 +6194,16 @@ ], "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": ["diff", "udiff", "unidiff", "unified diff"], + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0" }, "funding": [ { @@ -5703,27 +6211,27 @@ "type": "github" } ], - "time": "2024-07-03T04:53:05+00:00" + "time": "2025-02-07T04:55:46+00:00" }, { "name": "sebastian/environment", - "version": "7.2.0", + "version": "8.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5" + "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", - "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68", + "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "suggest": { "ext-posix": "*" @@ -5731,14 +6239,18 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "7.2-dev" + "dev-main": "8.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5747,53 +6259,73 @@ ], "description": "Provides functionality to handle HHVM/PHP environments", "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": ["Xdebug", "environment", "hhvm"], + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0" + "source": "https://github.com/sebastianbergmann/environment/tree/8.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" } ], - "time": "2024-07-03T04:54:44+00:00" + "time": "2025-08-12T14:11:56+00:00" }, { "name": "sebastian/exporter", - "version": "6.3.0", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3" + "reference": "76432aafc58d50691a00d86d0632f1217a47b688" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/3473f61172093b2da7de1fb5782e1f24cc036dc3", - "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/76432aafc58d50691a00d86d0632f1217a47b688", + "reference": "76432aafc58d50691a00d86d0632f1217a47b688", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/recursion-context": "^6.0" + "php": ">=8.3", + "sebastian/recursion-context": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.1-dev" + "dev-main": "7.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5818,11 +6350,14 @@ ], "description": "Provides the functionality to export PHP variables for visualization", "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": ["export", "exporter"], + "keywords": [ + "export", + "exporter" + ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.0" + "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.0" }, "funding": [ { @@ -5830,42 +6365,46 @@ "type": "github" } ], - "time": "2024-12-05T09:17:50+00:00" + "time": "2025-02-07T04:56:42+00:00" }, { "name": "sebastian/global-state", - "version": "7.0.2", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + "reference": "570a2aeb26d40f057af686d63c4e99b075fb6cbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/570a2aeb26d40f057af686d63c4e99b075fb6cbc", + "reference": "570a2aeb26d40f057af686d63c4e99b075fb6cbc", "shasum": "" }, "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5874,11 +6413,13 @@ ], "description": "Snapshotting of global state", "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": ["global state"], + "keywords": [ + "global state" + ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.0" }, "funding": [ { @@ -5886,40 +6427,44 @@ "type": "github" } ], - "time": "2024-07-03T04:57:36+00:00" + "time": "2025-02-07T04:56:59+00:00" }, { "name": "sebastian/lines-of-code", - "version": "3.0.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f", + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f", "shasum": "" }, "require": { "nikic/php-parser": "^5.0", - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5932,7 +6477,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0" }, "funding": [ { @@ -5940,41 +6485,45 @@ "type": "github" } ], - "time": "2024-07-03T04:58:38+00:00" + "time": "2025-02-07T04:57:28+00:00" }, { "name": "sebastian/object-enumerator", - "version": "6.0.1", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", "shasum": "" }, "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5986,7 +6535,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" }, "funding": [ { @@ -5994,39 +6543,43 @@ "type": "github" } ], - "time": "2024-07-03T05:00:13+00:00" + "time": "2025-02-07T04:57:48+00:00" }, { "name": "sebastian/object-reflector", - "version": "4.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + "reference": "4bfa827c969c98be1e527abd576533293c634f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -6038,7 +6591,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" }, "funding": [ { @@ -6046,39 +6599,43 @@ "type": "github" } ], - "time": "2024-07-03T05:01:32+00:00" + "time": "2025-02-07T04:58:17+00:00" }, { "name": "sebastian/recursion-context", - "version": "6.0.2", + "version": "7.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -6098,47 +6655,63 @@ "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2024-07-03T05:10:34+00:00" + "time": "2025-08-13T04:44:59+00:00" }, { "name": "sebastian/type", - "version": "5.1.0", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac" + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/461b9c5da241511a2a0e8f240814fb23ce5c0aac", - "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d", + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -6151,44 +6724,60 @@ "support": { "issues": "https://github.com/sebastianbergmann/type/issues", "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/5.1.0" + "source": "https://github.com/sebastianbergmann/type/tree/6.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" } ], - "time": "2024-09-17T13:12:04+00:00" + "time": "2025-08-09T06:57:12+00:00" }, { "name": "sebastian/version", - "version": "5.0.2", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", - "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -6201,7 +6790,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/version/issues", "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/6.0.0" }, "funding": [ { @@ -6209,7 +6798,7 @@ "type": "github" } ], - "time": "2024-10-09T05:16:32+00:00" + "time": "2025-02-07T05:00:38+00:00" }, { "name": "sebastianfeldmann/camino", @@ -6240,7 +6829,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -6249,7 +6840,10 @@ ], "description": "Path management the OO way", "homepage": "https://github.com/sebastianfeldmann/camino", - "keywords": ["file system", "path"], + "keywords": [ + "file system", + "path" + ], "support": { "issues": "https://github.com/sebastianfeldmann/camino/issues", "source": "https://github.com/sebastianfeldmann/camino/tree/0.9.5" @@ -6294,7 +6888,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -6303,7 +6899,9 @@ ], "description": "PHP cli helper classes", "homepage": "https://github.com/sebastianfeldmann/cli", - "keywords": ["cli"], + "keywords": [ + "cli" + ], "support": { "issues": "https://github.com/sebastianfeldmann/cli/issues", "source": "https://github.com/sebastianfeldmann/cli/tree/3.4.2" @@ -6318,16 +6916,16 @@ }, { "name": "sebastianfeldmann/git", - "version": "3.13.2", + "version": "3.14.3", "source": { "type": "git", "url": "https://github.com/sebastianfeldmann/git.git", - "reference": "95c5fccbbf5e94ad86c459a73f0c2d2d2e776d98" + "reference": "22584df8df01d95b0700000cfd855779fae7d8ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/95c5fccbbf5e94ad86c459a73f0c2d2d2e776d98", - "reference": "95c5fccbbf5e94ad86c459a73f0c2d2d2e776d98", + "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/22584df8df01d95b0700000cfd855779fae7d8ea", + "reference": "22584df8df01d95b0700000cfd855779fae7d8ea", "shasum": "" }, "require": { @@ -6352,7 +6950,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -6361,10 +6961,12 @@ ], "description": "PHP git wrapper", "homepage": "https://github.com/sebastianfeldmann/git", - "keywords": ["git"], + "keywords": [ + "git" + ], "support": { "issues": "https://github.com/sebastianfeldmann/git/issues", - "source": "https://github.com/sebastianfeldmann/git/tree/3.13.2" + "source": "https://github.com/sebastianfeldmann/git/tree/3.14.3" }, "funding": [ { @@ -6372,7 +6974,7 @@ "type": "github" } ], - "time": "2025-02-11T19:34:51+00:00" + "time": "2025-06-05T16:05:10+00:00" }, { "name": "staabm/side-effects-detector", @@ -6402,12 +7004,18 @@ }, "type": "library", "autoload": { - "classmap": ["lib/"] + "classmap": [ + "lib/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "A static analysis tool to detect side effects in PHP code", - "keywords": ["static analysis"], + "keywords": [ + "static analysis" + ], "support": { "issues": "https://github.com/staabm/side-effects-detector/issues", "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" @@ -6422,23 +7030,24 @@ }, { "name": "symfony/console", - "version": "v7.2.1", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" + "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "url": "https://api.github.com/repos/symfony/console/zipball/5f360ebc65c55265a74d23d7fe27f957870158a1", + "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0" + "symfony/string": "^7.2" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -6468,10 +7077,14 @@ "psr-4": { "Symfony\\Component\\Console\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -6484,9 +7097,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "keywords": ["cli", "command-line", "console", "terminal"], + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/console/tree/v7.2.1" + "source": "https://github.com/symfony/console/tree/v7.3.2" }, "funding": [ { @@ -6497,25 +7115,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-11T03:49:26+00:00" + "time": "2025-07-30T17:13:41+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", "shasum": "" }, "require": { @@ -6545,10 +7167,14 @@ "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -6562,7 +7188,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0" }, "funding": [ { @@ -6578,20 +7204,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-04-22T09:11:45+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -6605,7 +7231,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -6614,7 +7240,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -6636,7 +7264,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -6652,20 +7280,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/filesystem", - "version": "v7.2.0", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" + "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", - "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd", + "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd", "shasum": "" }, "require": { @@ -6681,10 +7309,14 @@ "psr-4": { "Symfony\\Component\\Filesystem\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -6698,7 +7330,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.2.0" + "source": "https://github.com/symfony/filesystem/tree/v7.3.2" }, "funding": [ { @@ -6709,25 +7341,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-25T15:15:23+00:00" + "time": "2025-07-07T08:17:47+00:00" }, { "name": "symfony/finder", - "version": "v7.2.2", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "87a71856f2f56e4100373e92529eed3171695cfb" + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", - "reference": "87a71856f2f56e4100373e92529eed3171695cfb", + "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", "shasum": "" }, "require": { @@ -6741,10 +7377,14 @@ "psr-4": { "Symfony\\Component\\Finder\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -6758,7 +7398,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.2.2" + "source": "https://github.com/symfony/finder/tree/v7.3.2" }, "funding": [ { @@ -6769,25 +7409,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-30T19:00:17+00:00" + "time": "2025-07-15T13:41:35+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.2.0", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50" + "reference": "119bcf13e67dbd188e5dbc74228b1686f66acd37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7da8fbac9dcfef75ffc212235d76b2754ce0cf50", - "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/119bcf13e67dbd188e5dbc74228b1686f66acd37", + "reference": "119bcf13e67dbd188e5dbc74228b1686f66acd37", "shasum": "" }, "require": { @@ -6799,10 +7443,14 @@ "psr-4": { "Symfony\\Component\\OptionsResolver\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -6815,9 +7463,13 @@ ], "description": "Provides an improved replacement for the array_replace PHP function", "homepage": "https://symfony.com", - "keywords": ["config", "configuration", "options"], + "keywords": [ + "config", + "configuration", + "options" + ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.2.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.3.2" }, "funding": [ { @@ -6828,25 +7480,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-20T11:17:29+00:00" + "time": "2025-07-15T11:36:08+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { @@ -6863,13 +7519,17 @@ } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -6891,7 +7551,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -6902,16 +7562,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -6937,14 +7601,20 @@ } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "classmap": ["Resources/stubs"] + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -6966,7 +7636,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" }, "funding": [ { @@ -6977,6 +7647,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -6986,7 +7660,7 @@ }, { "name": "symfony/polyfill-php81", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", @@ -7009,14 +7683,20 @@ } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Php81\\": "" }, - "classmap": ["Resources/stubs"] + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -7029,9 +7709,14 @@ ], "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", - "keywords": ["compatibility", "polyfill", "portable", "shim"], + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" }, "funding": [ { @@ -7042,6 +7727,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -7051,16 +7740,16 @@ }, { "name": "symfony/process", - "version": "v7.2.4", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf" + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", - "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", + "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", "shasum": "" }, "require": { @@ -7071,10 +7760,14 @@ "psr-4": { "Symfony\\Component\\Process\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -7088,7 +7781,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.2.4" + "source": "https://github.com/symfony/process/tree/v7.3.0" }, "funding": [ { @@ -7104,20 +7797,20 @@ "type": "tidelift" } ], - "time": "2025-02-05T08:33:46+00:00" + "time": "2025-04-17T09:11:12+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -7135,17 +7828,21 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" }, - "exclude-from-classmap": ["/Test/"] + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -7167,7 +7864,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -7183,11 +7880,11 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.2.4", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -7208,10 +7905,14 @@ "psr-4": { "Symfony\\Component\\Stopwatch\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -7225,7 +7926,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.2.4" + "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" }, "funding": [ { @@ -7245,16 +7946,16 @@ }, { "name": "symfony/string", - "version": "v7.2.0", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", + "url": "https://api.github.com/repos/symfony/string/zipball/42f505aff654e62ac7ac2ce21033818297ca89ca", + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca", "shasum": "" }, "require": { @@ -7277,14 +7978,20 @@ }, "type": "library", "autoload": { - "files": ["Resources/functions.php"], + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\String\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -7297,9 +8004,16 @@ ], "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", - "keywords": ["grapheme", "i18n", "string", "unicode", "utf-8", "utf8"], + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], "support": { - "source": "https://github.com/symfony/string/tree/v7.2.0" + "source": "https://github.com/symfony/string/tree/v7.3.2" }, "funding": [ { @@ -7310,43 +8024,45 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-13T13:31:26+00:00" + "time": "2025-07-10T08:47:49+00:00" }, { "name": "symplify/coding-standard", - "version": "12.2.3", + "version": "12.4.3", "source": { "type": "git", "url": "https://github.com/symplify/coding-standard.git", - "reference": "5de526650985cce3c27c9934461df79ef5c7fd16" + "reference": "cd26aac22be7b757b492a7cc44824a447a03f4eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symplify/coding-standard/zipball/5de526650985cce3c27c9934461df79ef5c7fd16", - "reference": "5de526650985cce3c27c9934461df79ef5c7fd16", + "url": "https://api.github.com/repos/symplify/coding-standard/zipball/cd26aac22be7b757b492a7cc44824a447a03f4eb", + "reference": "cd26aac22be7b757b492a7cc44824a447a03f4eb", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^3.59", + "friendsofphp/php-cs-fixer": "^3.75.0", "nette/utils": "^4.0", - "php": ">=8.2", - "symplify/rule-doc-generator-contracts": "^11.2" + "php": ">=8.2" }, "require-dev": { "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^1.11", - "phpunit/phpunit": "^10.5", - "rector/rector": "^1.1", - "squizlabs/php_codesniffer": "^3.10.1", - "symplify/easy-coding-standard": "^12.3", - "symplify/phpstan-extensions": "^11.4", - "symplify/rule-doc-generator": "^12.2.2", - "tomasvotruba/class-leak": "^0.2", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^11.5", + "rector/rector": "^2.0.13", + "squizlabs/php_codesniffer": "^3.12", + "symplify/easy-coding-standard": "^12.5", + "symplify/phpstan-extensions": "^12.0", + "tomasvotruba/class-leak": "^2.0", "tracy/tracy": "^2.10" }, "type": "library", @@ -7356,11 +8072,13 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Set of Symplify rules for PHP_CodeSniffer and PHP CS Fixer.", "support": { "issues": "https://github.com/symplify/coding-standard/issues", - "source": "https://github.com/symplify/coding-standard/tree/12.2.3" + "source": "https://github.com/symplify/coding-standard/tree/12.4.3" }, "funding": [ { @@ -7372,20 +8090,20 @@ "type": "github" } ], - "time": "2024-08-08T08:38:30+00:00" + "time": "2025-05-18T07:59:44+00:00" }, { "name": "symplify/easy-coding-standard", - "version": "12.5.8", + "version": "12.5.24", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "2bf0e468dc9679f3835c835cd3fd4a25ff6e4e14" + "reference": "4b90f2b6efed9508000968eac2397ac7aff34354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/2bf0e468dc9679f3835c835cd3fd4a25ff6e4e14", - "reference": "2bf0e468dc9679f3835c835cd3fd4a25ff6e4e14", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/4b90f2b6efed9508000968eac2397ac7aff34354", + "reference": "4b90f2b6efed9508000968eac2397ac7aff34354", "shasum": "" }, "require": { @@ -7399,18 +8117,29 @@ "suggest": { "ext-dom": "Needed to support checkstyle output format in class CheckstyleOutputFormatter" }, - "bin": ["bin/ecs"], + "bin": [ + "bin/ecs" + ], "type": "library", "autoload": { - "files": ["bootstrap.php"] + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Use Coding Standard with 0-knowledge of PHP-CS-Fixer and PHP_CodeSniffer", - "keywords": ["Code style", "automation", "fixer", "static analysis"], + "keywords": [ + "Code style", + "automation", + "fixer", + "static analysis" + ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.8" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.24" }, "funding": [ { @@ -7422,64 +8151,7 @@ "type": "github" } ], - "time": "2025-01-31T13:59:38+00:00" - }, - { - "name": "symplify/rule-doc-generator-contracts", - "version": "11.2.0", - "source": { - "type": "git", - "url": "https://github.com/symplify/rule-doc-generator-contracts.git", - "reference": "479cfcfd46047f80624aba931d9789e50475b5c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symplify/rule-doc-generator-contracts/zipball/479cfcfd46047f80624aba931d9789e50475b5c6", - "reference": "479cfcfd46047f80624aba931d9789e50475b5c6", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpstan/extension-installer": "^1.2", - "rector/rector": "^0.15.10", - "symplify/easy-ci": "^11.1", - "symplify/easy-coding-standard": "^11.1", - "symplify/easy-testing": "^11.1", - "symplify/phpstan-extensions": "^11.1", - "symplify/phpstan-rules": "11.2.3.72", - "tomasvotruba/unused-public": "^0.0.34" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "11.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symplify\\RuleDocGenerator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], - "description": "Contracts for production code of RuleDocGenerator", - "support": { - "source": "https://github.com/symplify/rule-doc-generator-contracts/tree/11.2.0" - }, - "funding": [ - { - "url": "https://www.paypal.me/rectorphp", - "type": "custom" - }, - { - "url": "https://github.com/tomasvotruba", - "type": "github" - } - ], - "time": "2024-03-18T22:02:54+00:00" + "time": "2025-08-21T06:57:14+00:00" }, { "name": "theseer/tokenizer", @@ -7503,10 +8175,14 @@ }, "type": "library", "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Arne Blankerts", diff --git a/docs/src/content/docs/ar/getting-started/install.mdx b/docs/src/content/docs/ar/getting-started/install.mdx index aed0d67c..59484a0c 100644 --- a/docs/src/content/docs/ar/getting-started/install.mdx +++ b/docs/src/content/docs/ar/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/ar/getting-started/update.mdx b/docs/src/content/docs/ar/getting-started/update.mdx index 2ace22a2..d0bc9d57 100644 --- a/docs/src/content/docs/ar/getting-started/update.mdx +++ b/docs/src/content/docs/ar/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/br/getting-started/install.mdx b/docs/src/content/docs/br/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/br/getting-started/install.mdx +++ b/docs/src/content/docs/br/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/br/getting-started/update.mdx b/docs/src/content/docs/br/getting-started/update.mdx index 74b7528d..2654899b 100644 --- a/docs/src/content/docs/br/getting-started/update.mdx +++ b/docs/src/content/docs/br/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/ca/getting-started/install.mdx b/docs/src/content/docs/ca/getting-started/install.mdx index 8d18212e..e4e002cb 100644 --- a/docs/src/content/docs/ca/getting-started/install.mdx +++ b/docs/src/content/docs/ca/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/ca/getting-started/update.mdx b/docs/src/content/docs/ca/getting-started/update.mdx index af6a2863..48a866e2 100644 --- a/docs/src/content/docs/ca/getting-started/update.mdx +++ b/docs/src/content/docs/ca/getting-started/update.mdx @@ -12,26 +12,22 @@ d'errors 🐛 i millores de rendiment ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/da/getting-started/install.mdx b/docs/src/content/docs/da/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/da/getting-started/install.mdx +++ b/docs/src/content/docs/da/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/da/getting-started/update.mdx b/docs/src/content/docs/da/getting-started/update.mdx index f9cb5acf..5737493b 100644 --- a/docs/src/content/docs/da/getting-started/update.mdx +++ b/docs/src/content/docs/da/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/de/getting-started/install.mdx b/docs/src/content/docs/de/getting-started/install.mdx index 2fe5fd94..a5035129 100644 --- a/docs/src/content/docs/de/getting-started/install.mdx +++ b/docs/src/content/docs/de/getting-started/install.mdx @@ -86,7 +86,6 @@ nicht installiert: %s: **Hinweis** - Wenn Sie diese Cron-Aufgabe nicht hinzufügen, funktionieren die folgenden Castopod-Funktionen nicht: - - Einen Podcast aus einem vorhandenen RSS-Feed importieren - Sende soziale Aktivitäten an deine Follower im Fediversum - Übertragungen von Episoden zu open hubs mit diff --git a/docs/src/content/docs/de/getting-started/update.mdx b/docs/src/content/docs/de/getting-started/update.mdx index f78c0af4..048b065b 100644 --- a/docs/src/content/docs/de/getting-started/update.mdx +++ b/docs/src/content/docs/de/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Da li treba da napravim rezervnu kopiju pre ažuriranja?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Gde mogu da pronađem moju verziju Castopod-a?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Uverite se da ste preuzeli Castopod paket a **NE** izvorni kod - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. Na vašem serveru: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/el/getting-started/install.mdx b/docs/src/content/docs/el/getting-started/install.mdx index fbbd5f58..53bd469c 100644 --- a/docs/src/content/docs/el/getting-started/install.mdx +++ b/docs/src/content/docs/el/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/el/getting-started/update.mdx b/docs/src/content/docs/el/getting-started/update.mdx index 6d8f4c92..3d43b08b 100644 --- a/docs/src/content/docs/el/getting-started/update.mdx +++ b/docs/src/content/docs/el/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/en/getting-started/install.mdx b/docs/src/content/docs/en/getting-started/install.mdx index 1d8c6ae9..6e72326c 100644 --- a/docs/src/content/docs/en/getting-started/install.mdx +++ b/docs/src/content/docs/en/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/en/getting-started/update.mdx b/docs/src/content/docs/en/getting-started/update.mdx index 20dfbd09..5d1ba13b 100644 --- a/docs/src/content/docs/en/getting-started/update.mdx +++ b/docs/src/content/docs/en/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/en/plugins/create.mdx b/docs/src/content/docs/en/plugins/create.mdx index 0e2b55db..43566991 100644 --- a/docs/src/content/docs/en/plugins/create.mdx +++ b/docs/src/content/docs/en/plugins/create.mdx @@ -40,7 +40,6 @@ project generated for you! 2. add a manifest.json file - - hello-world - **manifest.json** @@ -51,7 +50,6 @@ project generated for you! 3. add the Plugin.php class - - hello-world - manifest.json - **Plugin.php** diff --git a/docs/src/content/docs/es/getting-started/install.mdx b/docs/src/content/docs/es/getting-started/install.mdx index b305aac2..1f02ca61 100644 --- a/docs/src/content/docs/es/getting-started/install.mdx +++ b/docs/src/content/docs/es/getting-started/install.mdx @@ -85,7 +85,6 @@ extensiones: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/es/getting-started/update.mdx b/docs/src/content/docs/es/getting-started/update.mdx index 9bea659a..c4fa9178 100644 --- a/docs/src/content/docs/es/getting-started/update.mdx +++ b/docs/src/content/docs/es/getting-started/update.mdx @@ -12,26 +12,22 @@ de errores 🐛 y mejoras de rendimiento ⚡. 0. ⚠️ Antes de cualquier actualización, te recomendamos que respaldes tus archivos de Castopod y base de datos. - - cf. [¿Debería hacer una copia de seguridad antes de actualizar?](#should-i-make-a-backup-before-updating) 1. Vaya a la página de [lanzamientos](https://code.castopod.org/adaures/castopod/-/releases) y vea si su instancia está actualizada con la última versión de Castopod - - cf. [¿Dónde puedo encontrar mi versión de Castopod?](#where-can-i-find-my-castopod-version) 2. Descargue el último paquete de lanzamiento llamado `Paquete Castopod`, puede elegir entre los archivos `zip` o `tar.gz` - - ⚠️ Asegúrate de descargar el paquete de Castopod y **NO** el código fuente - Ten en cuenta que también puedes descargar el último paquete de [castopod.org](https://castopod.org/) 3. En tu servidor: - - Eliminar todos los archivos excepto `.env` y la carpeta `public/media` - Copie los nuevos archivos del paquete descargado en su servidor diff --git a/docs/src/content/docs/eu/getting-started/install.mdx b/docs/src/content/docs/eu/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/eu/getting-started/install.mdx +++ b/docs/src/content/docs/eu/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/eu/getting-started/update.mdx b/docs/src/content/docs/eu/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/eu/getting-started/update.mdx +++ b/docs/src/content/docs/eu/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/fa/getting-started/install.mdx b/docs/src/content/docs/fa/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/fa/getting-started/install.mdx +++ b/docs/src/content/docs/fa/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/fa/getting-started/update.mdx b/docs/src/content/docs/fa/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/fa/getting-started/update.mdx +++ b/docs/src/content/docs/fa/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/fr-ca/getting-started/install.mdx b/docs/src/content/docs/fr-ca/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/fr-ca/getting-started/install.mdx +++ b/docs/src/content/docs/fr-ca/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/fr-ca/getting-started/update.mdx b/docs/src/content/docs/fr-ca/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/fr-ca/getting-started/update.mdx +++ b/docs/src/content/docs/fr-ca/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/fr/getting-started/install.mdx b/docs/src/content/docs/fr/getting-started/install.mdx index 774c6ca8..e80527c9 100644 --- a/docs/src/content/docs/fr/getting-started/install.mdx +++ b/docs/src/content/docs/fr/getting-started/install.mdx @@ -87,7 +87,6 @@ installées : **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/fr/getting-started/update.mdx b/docs/src/content/docs/fr/getting-started/update.mdx index 1382b9cf..096081ca 100644 --- a/docs/src/content/docs/fr/getting-started/update.mdx +++ b/docs/src/content/docs/fr/getting-started/update.mdx @@ -12,27 +12,23 @@ corrections de bugs 🐛 et des améliorations de performance ⚡. 0. ⚠️ Avant toute mise à jour, nous vous recommandons fortement de sauvegarder vos fichiers Castopod et la base de données . - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Allez à la page [des versions](https://code.castopod.org/adaures/castopod/-/releases) et vérifiez si votre instance est à jour avec la dernière version de Castopod - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Téléchargez la dernière version du paquet nommé `Castopod Package`. Vous pouvez choisir entre les archives au format `zip` ou `tar.gz` - - ⚠️ Assurez-vous de bien télécharger le paquet Castopod et **NON** le code source - Notez que vous pouvez également télécharger le dernier paquet depuis [castopod.org](https://castopod.org/) 3. Sur votre serveur : - - Supprimer tous les fichiers sauf `.env` et `public/media` - Copiez les nouveaux fichiers du paquet téléchargé sur votre serveur diff --git a/docs/src/content/docs/fr2/getting-started/install.mdx b/docs/src/content/docs/fr2/getting-started/install.mdx index 6edc9b83..00112113 100644 --- a/docs/src/content/docs/fr2/getting-started/install.mdx +++ b/docs/src/content/docs/fr2/getting-started/install.mdx @@ -86,7 +86,6 @@ installées : **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/fr2/getting-started/update.mdx b/docs/src/content/docs/fr2/getting-started/update.mdx index 5c980a20..257593fe 100644 --- a/docs/src/content/docs/fr2/getting-started/update.mdx +++ b/docs/src/content/docs/fr2/getting-started/update.mdx @@ -12,26 +12,22 @@ corrections de bugs 🐛 et des améliorations de performance ⚡. 0. ⚠️ Avant toute mise à jour, nous vous recommandons fortement de sauvegarder vos fichiers Castopod et la base de données . - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. Sur votre serveur : - - Supprimer tous les fichiers sauf `.env` et `public/media` - Copiez les nouveaux fichiers du paquet téléchargé sur votre serveur diff --git a/docs/src/content/docs/gd/getting-started/install.mdx b/docs/src/content/docs/gd/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/gd/getting-started/install.mdx +++ b/docs/src/content/docs/gd/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/gd/getting-started/update.mdx b/docs/src/content/docs/gd/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/gd/getting-started/update.mdx +++ b/docs/src/content/docs/gd/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/gl/getting-started/install.mdx b/docs/src/content/docs/gl/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/gl/getting-started/install.mdx +++ b/docs/src/content/docs/gl/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/gl/getting-started/update.mdx b/docs/src/content/docs/gl/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/gl/getting-started/update.mdx +++ b/docs/src/content/docs/gl/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/id/getting-started/install.mdx b/docs/src/content/docs/id/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/id/getting-started/install.mdx +++ b/docs/src/content/docs/id/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/id/getting-started/update.mdx b/docs/src/content/docs/id/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/id/getting-started/update.mdx +++ b/docs/src/content/docs/id/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/it/getting-started/install.mdx b/docs/src/content/docs/it/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/it/getting-started/install.mdx +++ b/docs/src/content/docs/it/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/it/getting-started/update.mdx b/docs/src/content/docs/it/getting-started/update.mdx index 2ace22a2..d0bc9d57 100644 --- a/docs/src/content/docs/it/getting-started/update.mdx +++ b/docs/src/content/docs/it/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/ja/getting-started/install.mdx b/docs/src/content/docs/ja/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/ja/getting-started/install.mdx +++ b/docs/src/content/docs/ja/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/ja/getting-started/update.mdx b/docs/src/content/docs/ja/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/ja/getting-started/update.mdx +++ b/docs/src/content/docs/ja/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/kk/getting-started/install.mdx b/docs/src/content/docs/kk/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/kk/getting-started/install.mdx +++ b/docs/src/content/docs/kk/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/kk/getting-started/update.mdx b/docs/src/content/docs/kk/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/kk/getting-started/update.mdx +++ b/docs/src/content/docs/kk/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/ko/getting-started/install.mdx b/docs/src/content/docs/ko/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/ko/getting-started/install.mdx +++ b/docs/src/content/docs/ko/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/ko/getting-started/update.mdx b/docs/src/content/docs/ko/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/ko/getting-started/update.mdx +++ b/docs/src/content/docs/ko/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/nl/getting-started/install.mdx b/docs/src/content/docs/nl/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/nl/getting-started/install.mdx +++ b/docs/src/content/docs/nl/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/nl/getting-started/update.mdx b/docs/src/content/docs/nl/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/nl/getting-started/update.mdx +++ b/docs/src/content/docs/nl/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/nn-no/getting-started/install.mdx b/docs/src/content/docs/nn-no/getting-started/install.mdx index 0579db88..4e72f6e5 100644 --- a/docs/src/content/docs/nn-no/getting-started/install.mdx +++ b/docs/src/content/docs/nn-no/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/nn-no/getting-started/update.mdx b/docs/src/content/docs/nn-no/getting-started/update.mdx index 67596e6c..94757ea9 100644 --- a/docs/src/content/docs/nn-no/getting-started/update.mdx +++ b/docs/src/content/docs/nn-no/getting-started/update.mdx @@ -11,26 +11,22 @@ siste versjonen for å få nye funksjonar, ✨, feilrettingar 🐛 og betre ytin 0. ⚠️ Før du oppdaterer, rår me sterkt til at du tek ein tryggingskopi av filene og databasen til Castopod. - - Les [bør eg ta ein tryggingskopi før eg oppdaterer?](#should-i-make-a-backup-before-updating) 1. Gå til [utgjevingssida](https://code.castopod.org/adaures/castopod/-/releases) og sjå om nettstaden din er oppdatert til den siste utgåva av Castopod - - Les [Kvar finn eg Castopod-versjonen min?](#where-can-i-find-my-castopod-version) 2. Last ned den siste utgåva som heiter `Castopod Package`, du kan velja mellom `zip`- eller `tar.gz`-arkiv - - ⚠️ Pass på at du lastar ned Castopod-pakka, og **IKKJE** kjeldekoden - Hugs at du kan lasta ned den nyaste programpakka frå [castopod.org](https://castopod.org/) 3. Gjer dette på tenaren din: - - Slett alle filene utanom `.env` og `public/media` - Kopier dei nye filene frå den nedlasta programpakka over til tenaren din diff --git a/docs/src/content/docs/oc/getting-started/install.mdx b/docs/src/content/docs/oc/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/oc/getting-started/install.mdx +++ b/docs/src/content/docs/oc/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/oc/getting-started/update.mdx b/docs/src/content/docs/oc/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/oc/getting-started/update.mdx +++ b/docs/src/content/docs/oc/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/pl/getting-started/install.mdx b/docs/src/content/docs/pl/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/pl/getting-started/install.mdx +++ b/docs/src/content/docs/pl/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/pl/getting-started/update.mdx b/docs/src/content/docs/pl/getting-started/update.mdx index 2ace22a2..d0bc9d57 100644 --- a/docs/src/content/docs/pl/getting-started/update.mdx +++ b/docs/src/content/docs/pl/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/pt-br/getting-started/install.mdx b/docs/src/content/docs/pt-br/getting-started/install.mdx index 1a6cb450..60fc5967 100644 --- a/docs/src/content/docs/pt-br/getting-started/install.mdx +++ b/docs/src/content/docs/pt-br/getting-started/install.mdx @@ -84,7 +84,6 @@ want to generate Video Clips. As seguintes extensões devem ser instaladas: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/pt-br/getting-started/update.mdx b/docs/src/content/docs/pt-br/getting-started/update.mdx index c8c83202..042aa15b 100644 --- a/docs/src/content/docs/pt-br/getting-started/update.mdx +++ b/docs/src/content/docs/pt-br/getting-started/update.mdx @@ -12,26 +12,22 @@ e melhorias de desempenho ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/pt/getting-started/install.mdx b/docs/src/content/docs/pt/getting-started/install.mdx index 2248ec8d..7c523718 100644 --- a/docs/src/content/docs/pt/getting-started/install.mdx +++ b/docs/src/content/docs/pt/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/pt/getting-started/update.mdx b/docs/src/content/docs/pt/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/pt/getting-started/update.mdx +++ b/docs/src/content/docs/pt/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/ro/getting-started/install.mdx b/docs/src/content/docs/ro/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/ro/getting-started/install.mdx +++ b/docs/src/content/docs/ro/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/ro/getting-started/update.mdx b/docs/src/content/docs/ro/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/ro/getting-started/update.mdx +++ b/docs/src/content/docs/ro/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/ru/getting-started/install.mdx b/docs/src/content/docs/ru/getting-started/install.mdx index 2248ec8d..7c523718 100644 --- a/docs/src/content/docs/ru/getting-started/install.mdx +++ b/docs/src/content/docs/ru/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/ru/getting-started/update.mdx b/docs/src/content/docs/ru/getting-started/update.mdx index 2ace22a2..d0bc9d57 100644 --- a/docs/src/content/docs/ru/getting-started/update.mdx +++ b/docs/src/content/docs/ru/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/sk/getting-started/install.mdx b/docs/src/content/docs/sk/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/sk/getting-started/install.mdx +++ b/docs/src/content/docs/sk/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/sk/getting-started/update.mdx b/docs/src/content/docs/sk/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/sk/getting-started/update.mdx +++ b/docs/src/content/docs/sk/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/sr-latn/getting-started/install.mdx b/docs/src/content/docs/sr-latn/getting-started/install.mdx index 873b3fee..f2f20478 100644 --- a/docs/src/content/docs/sr-latn/getting-started/install.mdx +++ b/docs/src/content/docs/sr-latn/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/sr-latn/getting-started/update.mdx b/docs/src/content/docs/sr-latn/getting-started/update.mdx index 9f18d222..ea0ec27a 100644 --- a/docs/src/content/docs/sr-latn/getting-started/update.mdx +++ b/docs/src/content/docs/sr-latn/getting-started/update.mdx @@ -12,26 +12,22 @@ bagovima 🐛 i unapređenim performansama ⚡. 0. ⚠️ Pre bilo kog ažuriranja, toplo preporučujemo da napravite rezervnu kopiju svojih Castopod datoteka i baze podataka. - - cf. [Da li treba da napravim rezervnu kopiju pre ažuriranja?](#should-i-make-a-backup-before-updating) 1. Idite na [stranicu izdanja](https://code.castopod.org/adaures/castopod/-/releases) i proverite da li je vaša instanca ažurirana sa najnovijom verzijom Castopod-a - - cf. [Gde mogu da pronađem moju verziju Castopod-a?](#where-can-i-find-my-castopod-version) 2. Skinite najnoviji paket izdanja koji se zove `Castopod Package`, možete odabrati `zip` ili `tar.gz` tip arhive - - ⚠️ Uverite se da ste preuzeli Castopod paket a **NE** izvorni kod - Imajte na umu da takođe možete preuzeti najnoviji paket sa [castopod.org](https://castopod.org/) 3. Na vašem serveru: - - Uklonite sve datoteke sem `.env` i `public/media` - Kopirajte nove datoteke iz preuzetog paketa na vaš server diff --git a/docs/src/content/docs/sv/getting-started/install.mdx b/docs/src/content/docs/sv/getting-started/install.mdx index dc8b9015..f7282060 100644 --- a/docs/src/content/docs/sv/getting-started/install.mdx +++ b/docs/src/content/docs/sv/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/sv/getting-started/update.mdx b/docs/src/content/docs/sv/getting-started/update.mdx index 783774a8..b09c665d 100644 --- a/docs/src/content/docs/sv/getting-started/update.mdx +++ b/docs/src/content/docs/sv/getting-started/update.mdx @@ -12,26 +12,22 @@ prestanda förbättringar ⚡. 0. ⚠️ Innan någon uppdatering rekommenderar vi starkt att du säkerhetskopierar dina Castopod-filer och databas. - - cf. [Ska jag göra en säkerhetskopia innan jag uppdaterar?](#should-i-make-a-backup-before-updating) 1. Gå till [releaser sidan](https://code.castopod.org/adaures/castopod/-/releases) och se om din instans är uppdaterad med den senaste Castopod versionen - - cf. [Var hittar jag min Castopod-version?](#where-can-i-find-my-castopod-version) 2. Ladda ner det senaste utgivningspaketet som heter `Castopod Package`, du kan välja mellan `zip` eller `tar.gz` arkiv - - ⚠️ Kontrollera att du laddar ner Castopod-paketet och **INTE** källkoden - Observera att du även kan ladda ner det senaste paketet från [castopod.org](https://castopod.org/) 3. På din server: - - Ta bort alla filer utom `.env` och `publik/media` - Kopiera de nya filerna från det nedladdade paketet till din server diff --git a/docs/src/content/docs/uk/getting-started/install.mdx b/docs/src/content/docs/uk/getting-started/install.mdx index 873b3fee..f2f20478 100644 --- a/docs/src/content/docs/uk/getting-started/install.mdx +++ b/docs/src/content/docs/uk/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/uk/getting-started/update.mdx b/docs/src/content/docs/uk/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/uk/getting-started/update.mdx +++ b/docs/src/content/docs/uk/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/docs/src/content/docs/zh-hans/getting-started/install.mdx b/docs/src/content/docs/zh-hans/getting-started/install.mdx index 3ebe63fd..b9f0e763 100644 --- a/docs/src/content/docs/zh-hans/getting-started/install.mdx +++ b/docs/src/content/docs/zh-hans/getting-started/install.mdx @@ -75,7 +75,6 @@ you do not have these, please contact your server administrator. ``` **注意** - 如果您不添加此 cron 任务,则以下 Castopod 功能不工作: - - 从现有的 RSS 摘要导入播客文件 - 在联邦宇宙中向您的关注者广播社交活动 - 使用 [WebSub](https://en.wikipedia.org/wiki/WebSub) 开放订阅打开广播剧集 diff --git a/docs/src/content/docs/zh-hans/getting-started/update.mdx b/docs/src/content/docs/zh-hans/getting-started/update.mdx index 693c6bf5..cd847189 100644 --- a/docs/src/content/docs/zh-hans/getting-started/update.mdx +++ b/docs/src/content/docs/zh-hans/getting-started/update.mdx @@ -9,23 +9,19 @@ import { Aside } from "@astrojs/starlight/components"; ## 更新说明 0. ⚠️ 在更新之前,我们强烈建议你备份 Castopod 文件和数据库。 - - 参看. [我应该在更新前进行备份吗?](#should-i-make-a-backup-before-updating) 1. 前往 [发布页面](https://code.castopod.org/adaures/castopod/-/releases) 和 查看您的实例是否是最新的 Castopod 版本 - - 参看 [我在哪里可以找到我的 Castopod 版本?](#where-can-i-find-my-castopod-version) 2. 下载名为`Castopod Package`的最新发布包,你可以在 `zip` 或 `tar.gz` 压缩包之间选择 - - ⚠️ 请确保你下载的是 Castopod 软件包而 **不是** 源代码 - 请注意,你还可以从 [castopod.org](https://castopod.org/) 3. 在你的服务器上: - - 删除除 `.env` 文件和 `public/media` 目录之外的所有文件 - 将下载软件包中的新文件复制到你的服务器中 diff --git a/docs/src/content/docs/zh-hant/getting-started/install.mdx b/docs/src/content/docs/zh-hant/getting-started/install.mdx index 408fae6f..57194115 100644 --- a/docs/src/content/docs/zh-hant/getting-started/install.mdx +++ b/docs/src/content/docs/zh-hant/getting-started/install.mdx @@ -82,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using diff --git a/docs/src/content/docs/zh-hant/getting-started/update.mdx b/docs/src/content/docs/zh-hant/getting-started/update.mdx index c23fbd5e..1b929377 100644 --- a/docs/src/content/docs/zh-hant/getting-started/update.mdx +++ b/docs/src/content/docs/zh-hant/getting-started/update.mdx @@ -12,26 +12,22 @@ improvements ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server diff --git a/modules/Admin/Controllers/DashboardController.php b/modules/Admin/Controllers/DashboardController.php index 845ed564..725412a3 100644 --- a/modules/Admin/Controllers/DashboardController.php +++ b/modules/Admin/Controllers/DashboardController.php @@ -20,9 +20,11 @@ class DashboardController extends BaseController public function index(): string { $podcastsData = []; - $podcastsCount = (new PodcastModel())->builder() + $podcastsCount = new PodcastModel() + ->builder() ->countAll(); - $podcastsLastPublishedAt = (new PodcastModel())->builder() + $podcastsLastPublishedAt = new PodcastModel() + ->builder() ->selectMax('published_at', 'last_published_at') ->where('`published_at` <= UTC_TIMESTAMP()', null, false) ->get() @@ -33,9 +35,11 @@ class DashboardController extends BaseController ); $episodesData = []; - $episodesCount = (new EpisodeModel())->builder() + $episodesCount = new EpisodeModel() + ->builder() ->countAll(); - $episodesLastPublishedAt = (new EpisodeModel())->builder() + $episodesLastPublishedAt = new EpisodeModel() + ->builder() ->selectMax('published_at', 'last_published_at') ->where('`published_at` <= UTC_TIMESTAMP()', null, false) ->get() @@ -45,7 +49,8 @@ class DashboardController extends BaseController $episodesLastPublishedAt, ); - $totalUploaded = (new MediaModel())->builder() + $totalUploaded = new MediaModel() + ->builder() ->selectSum('file_size') ->get() ->getResultArray()[0]; @@ -66,7 +71,8 @@ class DashboardController extends BaseController $onlyPodcastId = null; if ($podcastsData['number_of_podcasts'] === 1) { - $onlyPodcastId = (new PodcastModel())->first() + $onlyPodcastId = new PodcastModel() + ->first() ->id; } diff --git a/modules/Admin/Controllers/EpisodeController.php b/modules/Admin/Controllers/EpisodeController.php index 1d8c87dc..7319afd6 100644 --- a/modules/Admin/Controllers/EpisodeController.php +++ b/modules/Admin/Controllers/EpisodeController.php @@ -40,7 +40,7 @@ class EpisodeController extends BaseController } if (count($params) === 1) { - if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } @@ -48,7 +48,7 @@ class EpisodeController extends BaseController } if ( - ! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1])) instanceof Episode + ! ($episode = new EpisodeModel()->getEpisodeById((int) $params[1])) instanceof Episode ) { throw PageNotFoundException::forPageNotFound(); } @@ -127,11 +127,13 @@ class EpisodeController extends BaseController { helper(['form']); - $currentSeasonNumber = (new EpisodeModel())->getCurrentSeasonNumber($podcast->id); + $currentSeasonNumber = new EpisodeModel() + ->getCurrentSeasonNumber($podcast->id); $data = [ 'podcast' => $podcast, 'currentSeasonNumber' => $currentSeasonNumber, - 'nextEpisodeNumber' => (new EpisodeModel())->getNextEpisodeNumber($podcast->id, $currentSeasonNumber), + 'nextEpisodeNumber' => new EpisodeModel() + ->getNextEpisodeNumber($podcast->id, $currentSeasonNumber), ]; $this->setHtmlHead(lang('Episode.create')); @@ -165,7 +167,7 @@ class EpisodeController extends BaseController $validData = $this->validator->getValidated(); - if ((new EpisodeModel()) + if (new EpisodeModel() ->where([ 'slug' => $validData['slug'], 'podcast_id' => $podcast->id, @@ -315,7 +317,8 @@ class EpisodeController extends BaseController ($transcriptRemoteUrl = $this->request->getPost('transcript_remote_url')) && (($transcriptFile = $episode->transcript_id) !== null) ) { - (new MediaModel())->deleteMedia($episode->transcript); + new MediaModel() + ->deleteMedia($episode->transcript); } $episode->transcript_remote_url = $transcriptRemoteUrl === '' ? null : $transcriptRemoteUrl; @@ -333,7 +336,8 @@ class EpisodeController extends BaseController ($chaptersRemoteUrl = $this->request->getPost('chapters_remote_url')) && (($chaptersFile = $episode->chapters) instanceof Chapters) ) { - (new MediaModel())->deleteMedia($episode->chapters); + new MediaModel() + ->deleteMedia($episode->chapters); } $episode->chapters_remote_url = $chaptersRemoteUrl === '' ? null : $chaptersRemoteUrl; @@ -502,7 +506,7 @@ class EpisodeController extends BaseController $data = [ 'podcast' => $episode->podcast, 'episode' => $episode, - 'post' => (new PostModel()) + 'post' => new PostModel() ->where([ 'actor_id' => $episode->podcast->actor_id, 'episode_id' => $episode->id, @@ -571,7 +575,8 @@ class EpisodeController extends BaseController $episode->published_at = Time::now(); } - $post = (new PostModel())->getPostById($this->request->getPost('post_id')); + $post = new PostModel() + ->getPostById($this->request->getPost('post_id')); if ($post instanceof Post) { $post->message = $this->request->getPost('message'); @@ -761,7 +766,7 @@ class EpisodeController extends BaseController $db->transStart(); - $allPostsLinkedToEpisode = (new PostModel()) + $allPostsLinkedToEpisode = new PostModel() ->where([ 'episode_id' => $episode->id, 'in_reply_to_id' => null, @@ -769,17 +774,19 @@ class EpisodeController extends BaseController ]) ->findAll(); foreach ($allPostsLinkedToEpisode as $post) { - (new PostModel())->removePost($post); + new PostModel() + ->removePost($post); } - $allCommentsLinkedToEpisode = (new EpisodeCommentModel()) + $allCommentsLinkedToEpisode = new EpisodeCommentModel() ->where([ 'episode_id' => $episode->id, 'in_reply_to_id' => null, ]) ->findAll(); foreach ($allCommentsLinkedToEpisode as $comment) { - (new EpisodeCommentModel())->removeComment($comment); + new EpisodeCommentModel() + ->removeComment($comment); } // set episode published_at to null to unpublish @@ -795,9 +802,10 @@ class EpisodeController extends BaseController } // set podcast is_published_on_hubs to false to trigger websub push - (new PodcastModel())->update($episode->podcast_id, [ - 'is_published_on_hubs' => 0, - ]); + new PodcastModel() + ->update($episode->podcast_id, [ + 'is_published_on_hubs' => 0, + ]); $db->transComplete(); diff --git a/modules/Admin/Controllers/EpisodePersonController.php b/modules/Admin/Controllers/EpisodePersonController.php index d3bd170f..dd8c8e4a 100644 --- a/modules/Admin/Controllers/EpisodePersonController.php +++ b/modules/Admin/Controllers/EpisodePersonController.php @@ -27,7 +27,7 @@ class EpisodePersonController extends BaseController } if (count($params) === 1) { - if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } @@ -35,7 +35,7 @@ class EpisodePersonController extends BaseController } if ( - ! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1])) instanceof Episode + ! ($episode = new EpisodeModel()->getEpisodeById((int) $params[1])) instanceof Episode ) { throw PageNotFoundException::forPageNotFound(); } @@ -51,10 +51,12 @@ class EpisodePersonController extends BaseController helper('form'); $data = [ - 'episode' => $episode, - 'podcast' => $episode->podcast, - 'personOptions' => (new PersonModel())->getPersonOptions(), - 'taxonomyOptions' => (new PersonModel())->getTaxonomyOptions(), + 'episode' => $episode, + 'podcast' => $episode->podcast, + 'personOptions' => new PersonModel() + ->getPersonOptions(), + 'taxonomyOptions' => new PersonModel() + ->getTaxonomyOptions(), ]; $this->setHtmlHead(lang('Person.episode_form.title')); @@ -80,19 +82,21 @@ class EpisodePersonController extends BaseController $validData = $this->validator->getValidated(); - (new PersonModel())->addEpisodePersons( - $episode->podcast_id, - $episode->id, - $validData['persons'], - $this->request->getPost('roles') ?? [], - ); + new PersonModel() + ->addEpisodePersons( + $episode->podcast_id, + $episode->id, + $validData['persons'], + $this->request->getPost('roles') ?? [], + ); return redirect()->back(); } public function deleteAction(Episode $episode, string $personId): RedirectResponse { - (new PersonModel())->removePersonFromEpisode($episode->podcast_id, $episode->id, (int) $personId); + new PersonModel() + ->removePersonFromEpisode($episode->podcast_id, $episode->id, (int) $personId); return redirect()->back(); } diff --git a/modules/Admin/Controllers/NotificationController.php b/modules/Admin/Controllers/NotificationController.php index 627a4a3a..c42f62e4 100644 --- a/modules/Admin/Controllers/NotificationController.php +++ b/modules/Admin/Controllers/NotificationController.php @@ -32,7 +32,7 @@ class NotificationController extends BaseController } if ( - ! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast + ! ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast ) { throw PageNotFoundException::forPageNotFound(); } @@ -41,7 +41,7 @@ class NotificationController extends BaseController if (count($params) > 1) { if ( - ! ($notification = (new NotificationModel())->find($params[1])) instanceof Notification + ! ($notification = new NotificationModel()->find($params[1])) instanceof Notification ) { throw PageNotFoundException::forPageNotFound(); } @@ -54,7 +54,8 @@ class NotificationController extends BaseController public function list(Podcast $podcast): string { - $notifications = (new NotificationModel())->where('target_actor_id', $podcast->actor_id) + $notifications = new NotificationModel() + ->where('target_actor_id', $podcast->actor_id) ->orderBy('created_at', 'desc'); $data = [ @@ -72,13 +73,15 @@ class NotificationController extends BaseController public function markAllAsReadAction(Podcast $podcast): RedirectResponse { - $notifications = (new NotificationModel())->where('target_actor_id', $podcast->actor_id) + $notifications = new NotificationModel() + ->where('target_actor_id', $podcast->actor_id) ->where('read_at', null) ->findAll(); foreach ($notifications as $notification) { $notification->read_at = new Time('now'); - (new NotificationModel())->update($notification->id, $notification); + new NotificationModel() + ->update($notification->id, $notification); } return redirect()->back(); @@ -94,7 +97,8 @@ class NotificationController extends BaseController return redirect()->route('podcast-activity', [esc($podcast->handle)]); } - $post = (new PostModel())->getPostById($notification->post_id); + $post = new PostModel() + ->getPostById($notification->post_id); return redirect()->route('post', [$podcast->handle, $post->id]); } diff --git a/modules/Admin/Controllers/PageController.php b/modules/Admin/Controllers/PageController.php index 895d8f9c..8c406463 100644 --- a/modules/Admin/Controllers/PageController.php +++ b/modules/Admin/Controllers/PageController.php @@ -23,7 +23,7 @@ class PageController extends BaseController return $this->{$method}(); } - if (($page = (new PageModel())->find($params[0])) instanceof Page) { + if (($page = new PageModel()->find($params[0])) instanceof Page) { return $this->{$method}($page); } @@ -34,7 +34,8 @@ class PageController extends BaseController { $this->setHtmlHead(lang('Page.all_pages')); $data = [ - 'pages' => (new PageModel())->findAll(), + 'pages' => new PageModel() + ->findAll(), ]; return view('page/list', $data); @@ -113,7 +114,8 @@ class PageController extends BaseController public function deleteAction(Page $page): RedirectResponse { - (new PageModel())->delete($page->id); + new PageModel() + ->delete($page->id); return redirect()->route('page-list'); } diff --git a/modules/Admin/Controllers/PersonController.php b/modules/Admin/Controllers/PersonController.php index 51d4a21c..95bc4a28 100644 --- a/modules/Admin/Controllers/PersonController.php +++ b/modules/Admin/Controllers/PersonController.php @@ -25,7 +25,7 @@ class PersonController extends BaseController } if ( - ($person = (new PersonModel())->getPersonById((int) $params[0])) instanceof Person + ($person = new PersonModel()->getPersonById((int) $params[0])) instanceof Person ) { return $this->{$method}($person); } @@ -36,7 +36,8 @@ class PersonController extends BaseController public function list(): string { $data = [ - 'persons' => (new PersonModel())->orderBy('full_name') + 'persons' => new PersonModel() + ->orderBy('full_name') ->findAll(), ]; @@ -157,10 +158,12 @@ class PersonController extends BaseController { if ($person->avatar_id !== null) { // delete avatar to prevent collision if recreating person - (new MediaModel())->deleteMedia($person->avatar); + new MediaModel() + ->deleteMedia($person->avatar); } - (new PersonModel())->delete($person->id); + new PersonModel() + ->delete($person->id); return redirect()->route('person-list') ->with('message', lang('Person.messages.deleteSuccess')); diff --git a/modules/Admin/Controllers/PodcastController.php b/modules/Admin/Controllers/PodcastController.php index 870b66a5..0c5323d0 100644 --- a/modules/Admin/Controllers/PodcastController.php +++ b/modules/Admin/Controllers/PodcastController.php @@ -45,7 +45,7 @@ class PodcastController extends BaseController } if ( - ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast + ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast ) { return $this->{$method}($podcast); } @@ -57,7 +57,8 @@ class PodcastController extends BaseController { if (auth()->user()->can('podcasts.view')) { $data = [ - 'podcasts' => (new PodcastModel())->findAll(), + 'podcasts' => new PodcastModel() + ->findAll(), ]; } else { $data = [ @@ -177,8 +178,10 @@ class PodcastController extends BaseController { helper(['form', 'misc']); - $languageOptions = (new LanguageModel())->getLanguageOptions(); - $categoryOptions = (new CategoryModel())->getCategoryOptions(); + $languageOptions = new LanguageModel() + ->getLanguageOptions(); + $categoryOptions = new CategoryModel() + ->getCategoryOptions(); $data = [ 'languageOptions' => $languageOptions, @@ -251,10 +254,8 @@ class PodcastController extends BaseController add_podcast_group(auth()->user(), (int) $newPodcastId, setting('AuthGroups.mostPowerfulPodcastGroup')); // set Podcast categories - (new CategoryModel())->setPodcastCategories( - (int) $newPodcastId, - $this->request->getPost('other_categories') ?? [], - ); + new CategoryModel() + ->setPodcastCategories((int) $newPodcastId, $this->request->getPost('other_categories') ?? []); $db->transComplete(); @@ -268,8 +269,10 @@ class PodcastController extends BaseController { helper('form'); - $languageOptions = (new LanguageModel())->getLanguageOptions(); - $categoryOptions = (new CategoryModel())->getCategoryOptions(); + $languageOptions = new LanguageModel() + ->getLanguageOptions(); + $categoryOptions = new CategoryModel() + ->getCategoryOptions(); $data = [ 'podcast' => $podcast, @@ -346,10 +349,8 @@ class PodcastController extends BaseController } // set Podcast categories - (new CategoryModel())->setPodcastCategories( - $podcast->id, - $this->request->getPost('other_categories') ?? [], - ); + new CategoryModel() + ->setPodcastCategories($podcast->id, $this->request->getPost('other_categories') ?? []); // New feed url redirect service('settings') @@ -385,18 +386,21 @@ class PodcastController extends BaseController ->with('errors', $mediaModel->errors()); } - (new PodcastModel())->clearCache([ - 'id' => $podcast->id, - ]); + new PodcastModel() + ->clearCache([ + 'id' => $podcast->id, + ]); // remove banner url from actor - $actor = (new ActorModel())->getActorById($podcast->actor_id); + $actor = new ActorModel() + ->getActorById($podcast->actor_id); if ($actor instanceof Actor) { $actor->cover_image_url = null; $actor->cover_image_mimetype = null; - (new ActorModel())->update($actor->id, $actor); + new ActorModel() + ->update($actor->id, $actor); } $db->transComplete(); @@ -406,7 +410,7 @@ class PodcastController extends BaseController public function latestEpisodesView(int $limit, int $podcastId): string { - $episodes = (new EpisodeModel()) + $episodes = new EpisodeModel() ->where('podcast_id', $podcastId) ->orderBy('-`published_at`', '', false) ->orderBy('created_at', 'desc') @@ -414,7 +418,8 @@ class PodcastController extends BaseController return view('podcast/latest_episodes', [ 'episodes' => $episodes, - 'podcast' => (new PodcastModel())->getPodcastById($podcastId), + 'podcast' => new PodcastModel() + ->getPodcastById($podcastId), ]); } @@ -451,7 +456,8 @@ class PodcastController extends BaseController $db->transStart(); //delete podcast episodes - $podcastEpisodes = (new EpisodeModel())->where('podcast_id', $podcast->id) + $podcastEpisodes = new EpisodeModel() + ->where('podcast_id', $podcast->id) ->findAll(); foreach ($podcastEpisodes as $podcastEpisode) { @@ -669,7 +675,7 @@ class PodcastController extends BaseController } } - $episodes = (new EpisodeModel()) + $episodes = new EpisodeModel() ->where('podcast_id', $podcast->id) ->where('published_at !=', null) ->findAll(); @@ -686,7 +692,8 @@ class PodcastController extends BaseController ->with('errors', $episodeModel->errors()); } - $post = (new PostModel())->where('episode_id', $episode->id) + $post = new PostModel() + ->where('episode_id', $episode->id) ->first(); if ($post instanceof Post) { @@ -722,7 +729,7 @@ class PodcastController extends BaseController $data = [ 'podcast' => $podcast, - 'post' => (new PostModel()) + 'post' => new PostModel() ->where([ 'actor_id' => $podcast->actor_id, 'episode_id' => null, @@ -783,7 +790,7 @@ class PodcastController extends BaseController $podcast->published_at = Time::now(); } - $post = (new PostModel()) + $post = new PostModel() ->where([ 'actor_id' => $podcast->actor_id, 'episode_id' => null, @@ -837,7 +844,7 @@ class PodcastController extends BaseController } } - $episodes = (new EpisodeModel()) + $episodes = new EpisodeModel() ->where('podcast_id', $podcast->id) ->where('published_at !=', null) ->findAll(); @@ -854,7 +861,8 @@ class PodcastController extends BaseController ->with('errors', $episodeModel->errors()); } - $post = (new PostModel())->where('episode_id', $episode->id) + $post = new PostModel() + ->where('episode_id', $episode->id) ->first(); if ($post instanceof Post) { @@ -904,7 +912,7 @@ class PodcastController extends BaseController $postModel->removePost($post); } - $episodes = (new EpisodeModel()) + $episodes = new EpisodeModel() ->where('podcast_id', $podcast->id) ->where('published_at !=', null) ->findAll(); diff --git a/modules/Admin/Controllers/PodcastPersonController.php b/modules/Admin/Controllers/PodcastPersonController.php index b0b93539..7713bbfc 100644 --- a/modules/Admin/Controllers/PodcastPersonController.php +++ b/modules/Admin/Controllers/PodcastPersonController.php @@ -27,7 +27,7 @@ class PodcastPersonController extends BaseController } if ( - ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast + ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast ) { unset($params[0]); return $this->{$method}($podcast, ...$params); @@ -41,10 +41,13 @@ class PodcastPersonController extends BaseController helper('form'); $data = [ - 'podcast' => $podcast, - 'podcastPersons' => (new PersonModel())->getPodcastPersons($podcast->id), - 'personOptions' => (new PersonModel())->getPersonOptions(), - 'taxonomyOptions' => (new PersonModel())->getTaxonomyOptions(), + 'podcast' => $podcast, + 'podcastPersons' => new PersonModel() + ->getPodcastPersons($podcast->id), + 'personOptions' => new PersonModel() + ->getPersonOptions(), + 'taxonomyOptions' => new PersonModel() + ->getTaxonomyOptions(), ]; $this->setHtmlHead(lang('Person.podcast_form.title')); @@ -69,18 +72,16 @@ class PodcastPersonController extends BaseController $validData = $this->validator->getValidated(); - (new PersonModel())->addPodcastPersons( - $podcast->id, - $validData['persons'], - $this->request->getPost('roles') ?? [], - ); + new PersonModel() + ->addPodcastPersons($podcast->id, $validData['persons'], $this->request->getPost('roles') ?? []); return redirect()->back(); } public function deleteAction(Podcast $podcast, string $personId): RedirectResponse { - (new PersonModel())->removePersonFromPodcast($podcast->id, (int) $personId); + new PersonModel() + ->removePersonFromPodcast($podcast->id, (int) $personId); return redirect()->back(); } diff --git a/modules/Admin/Controllers/SettingsController.php b/modules/Admin/Controllers/SettingsController.php index e3e1ce7a..f0e8c508 100644 --- a/modules/Admin/Controllers/SettingsController.php +++ b/modules/Admin/Controllers/SettingsController.php @@ -136,7 +136,8 @@ class SettingsController extends BaseController public function regenerateImagesAction(): RedirectResponse { /** @var Podcast[] $allPodcasts */ - $allPodcasts = (new PodcastModel())->findAll(); + $allPodcasts = new PodcastModel() + ->findAll(); /** @var FileManagerInterface $fileManager */ $fileManager = service('file_manager'); @@ -158,7 +159,8 @@ class SettingsController extends BaseController $fileManager->deletePersonImagesSizes(); - $persons = (new PersonModel())->findAll(); + $persons = new PersonModel() + ->findAll(); foreach ($persons as $person) { if ($person->avatar_id !== null) { $person->avatar->saveSizes(); @@ -172,16 +174,26 @@ class SettingsController extends BaseController { if ($this->request->getPost('reset_counts') === 'yes') { // recalculate fediverse counts - (new ActorModel())->resetFollowersCount(); - (new ActorModel())->resetPostsCount(); - (new PostModel())->setEpisodeIdForRepliesOfEpisodePosts(); - (new PostModel())->resetFavouritesCount(); - (new PostModel())->resetReblogsCount(); - (new PostModel())->resetRepliesCount(); - (new EpisodeModel())->resetCommentsCount(); - (new EpisodeModel())->resetPostsCount(); - (new EpisodeCommentModel())->resetLikesCount(); - (new EpisodeCommentModel())->resetRepliesCount(); + new ActorModel() + ->resetFollowersCount(); + new ActorModel() + ->resetPostsCount(); + new PostModel() + ->setEpisodeIdForRepliesOfEpisodePosts(); + new PostModel() + ->resetFavouritesCount(); + new PostModel() + ->resetReblogsCount(); + new PostModel() + ->resetRepliesCount(); + new EpisodeModel() + ->resetCommentsCount(); + new EpisodeModel() + ->resetPostsCount(); + new EpisodeCommentModel() + ->resetLikesCount(); + new EpisodeCommentModel() + ->resetRepliesCount(); } if ($this->request->getPost('clear_cache') === 'yes') { @@ -190,7 +202,8 @@ class SettingsController extends BaseController if ($this->request->getPost('rename_episodes_files') === 'yes') { /** @var Audio[] $allAudio */ - $allAudio = (new MediaModel('audio'))->getAllOfType(); + $allAudio = new MediaModel('audio') + ->getAllOfType(); foreach ($allAudio as $audio) { $audio->rename(); diff --git a/modules/Admin/Controllers/SoundbiteController.php b/modules/Admin/Controllers/SoundbiteController.php index faf72bee..2ca68bac 100644 --- a/modules/Admin/Controllers/SoundbiteController.php +++ b/modules/Admin/Controllers/SoundbiteController.php @@ -29,7 +29,7 @@ class SoundbiteController extends BaseController } if (count($params) === 1) { - if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } @@ -37,7 +37,7 @@ class SoundbiteController extends BaseController } if ( - ! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1])) instanceof Episode + ! ($episode = new EpisodeModel()->getEpisodeById((int) $params[1])) instanceof Episode ) { throw PageNotFoundException::forPageNotFound(); } @@ -50,7 +50,7 @@ class SoundbiteController extends BaseController public function list(Episode $episode): string { - $soundbitesBuilder = (new ClipModel('audio')) + $soundbitesBuilder = new ClipModel('audio') ->where([ 'podcast_id' => $episode->podcast_id, 'episode_id' => $episode->id, @@ -137,7 +137,8 @@ class SoundbiteController extends BaseController public function deleteAction(Episode $episode, string $soundbiteId): RedirectResponse { - $soundbite = (new ClipModel())->getSoundbiteById((int) $soundbiteId); + $soundbite = new ClipModel() + ->getSoundbiteById((int) $soundbiteId); if (! $soundbite instanceof Soundbite) { throw PageNotFoundException::forPageNotFound(); @@ -145,9 +146,11 @@ class SoundbiteController extends BaseController if ($soundbite->media === null) { // delete Clip directly - (new ClipModel())->deleteSoundbite($episode->podcast_id, $episode->id, $soundbite->id); + new ClipModel() + ->deleteSoundbite($episode->podcast_id, $episode->id, $soundbite->id); } else { - (new ClipModel())->clearSoundbiteCache($episode->podcast_id, $episode->id, $soundbite->id); + new ClipModel() + ->clearSoundbiteCache($episode->podcast_id, $episode->id, $soundbite->id); $mediaModel = new MediaModel(); // delete the soundbite file, the clip will be deleted on cascade diff --git a/modules/Admin/Controllers/VideoClipsController.php b/modules/Admin/Controllers/VideoClipsController.php index 573042e6..f6847095 100644 --- a/modules/Admin/Controllers/VideoClipsController.php +++ b/modules/Admin/Controllers/VideoClipsController.php @@ -30,7 +30,7 @@ class VideoClipsController extends BaseController } if (count($params) === 1) { - if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } @@ -38,7 +38,7 @@ class VideoClipsController extends BaseController } if ( - ! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1])) instanceof Episode + ! ($episode = new EpisodeModel()->getEpisodeById((int) $params[1])) instanceof Episode ) { throw PageNotFoundException::forPageNotFound(); } @@ -51,7 +51,7 @@ class VideoClipsController extends BaseController public function list(Episode $episode): string { - $videoClipsBuilder = (new ClipModel('video')) + $videoClipsBuilder = new ClipModel('video') ->where([ 'podcast_id' => $episode->podcast_id, 'episode_id' => $episode->id, @@ -83,7 +83,8 @@ class VideoClipsController extends BaseController public function view(Episode $episode, string $videoClipId): string { - $videoClip = (new ClipModel())->getVideoClipById((int) $videoClipId); + $videoClip = new ClipModel() + ->getVideoClipById((int) $videoClipId); $data = [ 'podcast' => $episode->podcast, @@ -176,7 +177,7 @@ class VideoClipsController extends BaseController ]); // Check if video clip exists before inserting a new line - if ((new ClipModel())->doesVideoClipExist($videoClip)) { + if (new ClipModel()->doesVideoClipExist($videoClip)) { // video clip already exists return redirect() ->back() @@ -184,7 +185,8 @@ class VideoClipsController extends BaseController ->with('error', lang('VideoClip.messages.alreadyExistingError')); } - (new ClipModel())->insert($videoClip); + new ClipModel() + ->insert($videoClip); return redirect()->route('video-clips-list', [$episode->podcast_id, $episode->id])->with( 'message', @@ -194,24 +196,27 @@ class VideoClipsController extends BaseController public function retryAction(Episode $episode, string $videoClipId): RedirectResponse { - $videoClip = (new ClipModel())->getVideoClipById((int) $videoClipId); + $videoClip = new ClipModel() + ->getVideoClipById((int) $videoClipId); if (! $videoClip instanceof VideoClip) { throw PageNotFoundException::forPageNotFound(); } - (new ClipModel())->update($videoClip->id, [ - 'status' => 'queued', - 'job_started_at' => null, - 'job_ended_at' => null, - ]); + new ClipModel() + ->update($videoClip->id, [ + 'status' => 'queued', + 'job_started_at' => null, + 'job_ended_at' => null, + ]); return redirect()->back(); } public function deleteAction(Episode $episode, string $videoClipId): RedirectResponse { - $videoClip = (new ClipModel())->getVideoClipById((int) $videoClipId); + $videoClip = new ClipModel() + ->getVideoClipById((int) $videoClipId); if (! $videoClip instanceof VideoClip) { throw PageNotFoundException::forPageNotFound(); @@ -219,9 +224,11 @@ class VideoClipsController extends BaseController if ($videoClip->media === null) { // delete Clip directly - (new ClipModel())->deleteVideoClip($episode->podcast_id, $episode->id, $videoClip->id); + new ClipModel() + ->deleteVideoClip($videoClip->id); } else { - (new ClipModel())->clearVideoClipCache($videoClip->id); + new ClipModel() + ->clearVideoClipCache($videoClip->id); $mediaModel = new MediaModel(); // delete the videoClip file, the clip will be deleted on cascade diff --git a/modules/Analytics/Controllers/EpisodeAnalyticsController.php b/modules/Analytics/Controllers/EpisodeAnalyticsController.php index 5da42457..dfaff0a9 100644 --- a/modules/Analytics/Controllers/EpisodeAnalyticsController.php +++ b/modules/Analytics/Controllers/EpisodeAnalyticsController.php @@ -15,12 +15,11 @@ use App\Models\EpisodeModel; use CodeIgniter\Controller; use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\HTTP\RedirectResponse; +use Deprecated; class EpisodeAnalyticsController extends Controller { - /** - * @deprecated Replaced by EpisodeAudioController::index method - */ + #[Deprecated(message: 'Replaced by EpisodeAudioController::index method')] public function hit(string $base64EpisodeData, string ...$audioPath): RedirectResponse { $episodeData = unpack( @@ -32,7 +31,8 @@ class EpisodeAnalyticsController extends Controller throw PageNotFoundException::forPageNotFound(); } - $episode = (new EpisodeModel())->getEpisodeById($episodeData['episodeId']); + $episode = new EpisodeModel() + ->getEpisodeById($episodeData['episodeId']); if (! $episode instanceof Episode) { throw PageNotFoundException::forPageNotFound(); diff --git a/modules/Analytics/Models/AnalyticsPodcastModel.php b/modules/Analytics/Models/AnalyticsPodcastModel.php index 1b4775e0..cb3cfb87 100644 --- a/modules/Analytics/Models/AnalyticsPodcastModel.php +++ b/modules/Analytics/Models/AnalyticsPodcastModel.php @@ -267,9 +267,8 @@ class AnalyticsPodcastModel extends Model public function getDataTotalStorageByMonth(): array { if (! ($found = cache('analytics_total_storage_by_month'))) { - $found = (new MediaModel())->select( - 'DATE_FORMAT(uploaded_at,"%Y-%m") as labels, ROUND(sum(file_size) / 1000000, 2) as `values`', - ) + $found = new MediaModel() + ->select('DATE_FORMAT(uploaded_at,"%Y-%m") as labels, ROUND(sum(file_size) / 1000000, 2) as `values`') ->groupBy('labels') ->orderBy('labels', 'ASC') ->findAll(); diff --git a/modules/Api/Rest/V1/Controllers/BaseApiController.php b/modules/Api/Rest/V1/Controllers/BaseApiController.php new file mode 100644 index 00000000..ba114089 --- /dev/null +++ b/modules/Api/Rest/V1/Controllers/BaseApiController.php @@ -0,0 +1,22 @@ +initialize(); @@ -50,6 +46,7 @@ class EpisodeController extends Controller $builder->orderBy('episodes.created_at', 'desc'); } + /** @var array $data */ $data = $builder->findAll( (int) ($this->request->getGet('limit') ?? config('RestApi')->limit), (int) $this->request->getGet('offset'), @@ -64,7 +61,8 @@ class EpisodeController extends Controller public function view(int $id): ResponseInterface { - $episode = (new EpisodeModel())->getEpisodeById($id); + $episode = new EpisodeModel() + ->getEpisodeById($id); if (! $episode instanceof Episode) { return $this->failNotFound('Episode not found'); @@ -96,7 +94,8 @@ class EpisodeController extends Controller $podcastId = (int) $this->request->getPost('podcast_id'); - $podcast = (new PodcastModel())->getPodcastById($podcastId); + $podcast = new PodcastModel() + ->getPodcastById($podcastId); if (! $podcast instanceof Podcast) { return $this->failNotFound('Podcast not found'); @@ -129,7 +128,7 @@ class EpisodeController extends Controller $validData = $this->validator->getValidated(); - if ((new EpisodeModel()) + if (new EpisodeModel() ->where([ 'slug' => $validData['slug'], 'podcast_id' => $podcast->id, @@ -187,7 +186,7 @@ class EpisodeController extends Controller $episodeModel = new EpisodeModel(); if (($newEpisodeId = (int) $episodeModel->insert($newEpisode, true)) === 0) { - return $this->fail($episodeModel->errors(), 400); + return $this->fail(array_values($episodeModel->errors()), 400); } $episode = $episodeModel->find($newEpisodeId) @@ -278,12 +277,12 @@ class EpisodeController extends Controller $postModel = new PostModel(); if (! $postModel->addPost($newPost)) { $db->transRollback(); - return $this->fail($postModel->errors(), 400); + return $this->fail(array_values($postModel->errors()), 400); } if (! $episodeModel->update($episode->id, $episode)) { $db->transRollback(); - return $this->fail($episodeModel->errors(), 400); + return $this->fail(array_values($episodeModel->errors()), 400); } $db->transComplete(); diff --git a/modules/Api/Rest/V1/Controllers/ExceptionController.php b/modules/Api/Rest/V1/Controllers/ExceptionController.php index 1f77bcc9..3f1cd7f0 100644 --- a/modules/Api/Rest/V1/Controllers/ExceptionController.php +++ b/modules/Api/Rest/V1/Controllers/ExceptionController.php @@ -4,14 +4,10 @@ declare(strict_types=1); namespace Modules\Api\Rest\V1\Controllers; -use CodeIgniter\API\ResponseTrait; -use CodeIgniter\Controller; use CodeIgniter\HTTP\ResponseInterface; -class ExceptionController extends Controller +class ExceptionController extends BaseApiController { - use ResponseTrait; - public function notFound(): ResponseInterface { return $this->failNotFound('Podcast not found'); diff --git a/modules/Api/Rest/V1/Controllers/PodcastController.php b/modules/Api/Rest/V1/Controllers/PodcastController.php index 7e45b2e0..f76398f7 100644 --- a/modules/Api/Rest/V1/Controllers/PodcastController.php +++ b/modules/Api/Rest/V1/Controllers/PodcastController.php @@ -6,14 +6,10 @@ namespace Modules\Api\Rest\V1\Controllers; use App\Entities\Podcast; use App\Models\PodcastModel; -use CodeIgniter\API\ResponseTrait; -use CodeIgniter\Controller; use CodeIgniter\HTTP\ResponseInterface; -class PodcastController extends Controller +class PodcastController extends BaseApiController { - use ResponseTrait; - public function __construct() { service('restApiExceptions')->initialize(); @@ -21,7 +17,9 @@ class PodcastController extends Controller public function list(): ResponseInterface { - $data = (new PodcastModel())->findAll(); + /** @var array $data */ + $data = new PodcastModel() + ->findAll(); array_map(static function ($podcast): void { self::mapPodcast($podcast); }, $data); @@ -30,7 +28,8 @@ class PodcastController extends Controller public function view(int $id): ResponseInterface { - $podcast = (new PodcastModel())->getPodcastById($id); + $podcast = new PodcastModel() + ->getPodcastById($id); if (! $podcast instanceof Podcast) { return $this->failNotFound('Podcast not found'); } diff --git a/modules/Auth/Config/AuthGroups.php b/modules/Auth/Config/AuthGroups.php index 9d3ff5a8..5bb64b88 100644 --- a/modules/Auth/Config/AuthGroups.php +++ b/modules/Auth/Config/AuthGroups.php @@ -228,7 +228,8 @@ class AuthGroups extends ShieldAuthGroups * For each podcast, include podcast groups, permissions, and matrix into $groups, $permissions, and $matrix * attributes. */ - $podcasts = (new PodcastModel())->findAll(); + $podcasts = new PodcastModel() + ->findAll(); foreach ($podcasts as $podcast) { $this->generatePodcastAuthorizations($podcast->id); } diff --git a/modules/Auth/Config/Routes.php b/modules/Auth/Config/Routes.php index 535646f6..e9c46c34 100644 --- a/modules/Auth/Config/Routes.php +++ b/modules/Auth/Config/Routes.php @@ -7,7 +7,7 @@ namespace Modules\Auth\Config; use CodeIgniter\Router\RouteCollection; /** - * @var RouteCollection $routes + * @var RouteCollection */ service('auth') diff --git a/modules/Auth/Controllers/ContributorController.php b/modules/Auth/Controllers/ContributorController.php index 400c0ad3..119703bf 100644 --- a/modules/Auth/Controllers/ContributorController.php +++ b/modules/Auth/Controllers/ContributorController.php @@ -30,7 +30,7 @@ class ContributorController extends BaseController throw PageNotFoundException::forPageNotFound(); } - if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } @@ -40,7 +40,7 @@ class ContributorController extends BaseController return $this->{$method}(); } - if (($this->contributor = (new UserModel())->getPodcastContributor( + if (($this->contributor = new UserModel()->getPodcastContributor( (int) $params[1], (int) $params[0], )) instanceof User) { @@ -67,7 +67,8 @@ class ContributorController extends BaseController { $data = [ 'podcast' => $this->podcast, - 'contributor' => (new UserModel())->getPodcastContributor($this->contributor->id, $this->podcast->id), + 'contributor' => new UserModel() + ->getPodcastContributor($this->contributor->id, $this->podcast->id), ]; $this->setHtmlHead(lang('Contributor.view', [ @@ -85,7 +86,8 @@ class ContributorController extends BaseController { helper('form'); - $users = (new UserModel())->findAll(); + $users = new UserModel() + ->findAll(); $contributorOptions = array_reduce( $users, static function (array $result, User $user): array { @@ -128,7 +130,8 @@ class ContributorController extends BaseController public function createAction(): RedirectResponse { /** @var User $user */ - $user = (new UserModel())->find((int) $this->request->getPost('user')); + $user = new UserModel() + ->find((int) $this->request->getPost('user')); if (get_podcast_group($user, $this->podcast->id)) { return redirect() diff --git a/modules/Auth/Controllers/UserController.php b/modules/Auth/Controllers/UserController.php index 0911133f..a0a5859e 100644 --- a/modules/Auth/Controllers/UserController.php +++ b/modules/Auth/Controllers/UserController.php @@ -29,7 +29,7 @@ class UserController extends BaseController return $this->{$method}(); } - if (($this->user = (new UserModel())->find($params[0])) instanceof User) { + if (($this->user = new UserModel()->find($params[0])) instanceof User) { return $this->{$method}(); } @@ -39,7 +39,8 @@ class UserController extends BaseController public function list(): string { $data = [ - 'users' => (new UserModel())->findAll(), + 'users' => new UserModel() + ->findAll(), ]; $this->setHtmlHead(lang('User.all_users')); @@ -280,7 +281,8 @@ class UserController extends BaseController ->with('errors', $this->validator->getErrors()); } - (new UserModel())->delete($this->user->id, true); + new UserModel() + ->delete($this->user->id, true); return redirect() ->route('user-list') diff --git a/modules/Auth/Filters/PermissionFilter.php b/modules/Auth/Filters/PermissionFilter.php index e958d910..982e9f64 100644 --- a/modules/Auth/Filters/PermissionFilter.php +++ b/modules/Auth/Filters/PermissionFilter.php @@ -86,7 +86,8 @@ class PermissionFilter implements FilterInterface if (is_numeric($podcastParam)) { $podcastId = (int) $podcastParam; } else { - $podcast = (new PodcastModel())->getPodcastByHandle($podcastParam); + $podcast = new PodcastModel() + ->getPodcastByHandle($podcastParam); if ($podcast instanceof Podcast) { $podcastId = $podcast->id; } diff --git a/modules/Auth/Helpers/auth_helper.php b/modules/Auth/Helpers/auth_helper.php index 7e32e57c..964cb440 100644 --- a/modules/Auth/Helpers/auth_helper.php +++ b/modules/Auth/Helpers/auth_helper.php @@ -214,7 +214,8 @@ if (! function_exists('get_user_podcasts')) { */ function get_user_podcasts(User $user): array { - return (new PodcastModel())->getUserPodcasts($user->id, get_user_podcast_ids($user)); + return new PodcastModel() + ->getUserPodcasts($user->id, get_user_podcast_ids($user)); } } @@ -224,7 +225,8 @@ if (! function_exists('get_podcasts_user_can_interact_with')) { */ function get_podcasts_user_can_interact_with(User $user): array { - $userPodcasts = (new PodcastModel())->getUserPodcasts($user->id, get_user_podcast_ids($user)); + $userPodcasts = new PodcastModel() + ->getUserPodcasts($user->id, get_user_podcast_ids($user)); $hasInteractAsPrivilege = interact_as_actor_id() === null; @@ -279,10 +281,8 @@ if (! function_exists('get_actor_ids_with_unread_notifications')) { return []; } - $unreadNotifications = (new NotificationModel())->whereIn( - 'target_actor_id', - array_column($userPodcasts, 'actor_id'), - ) + $unreadNotifications = new NotificationModel() + ->whereIn('target_actor_id', array_column($userPodcasts, 'actor_id')) ->where('read_at', null) ->findAll(); diff --git a/modules/Fediverse/Entities/Notification.php b/modules/Fediverse/Entities/Notification.php index 5e5f89d0..33ae26dc 100644 --- a/modules/Fediverse/Entities/Notification.php +++ b/modules/Fediverse/Entities/Notification.php @@ -70,7 +70,8 @@ class Notification extends UuidEntity } if (! $this->actor instanceof Actor) { - $this->actor = (new ActorModel())->getActorById($this->actor_id); + $this->actor = new ActorModel() + ->getActorById($this->actor_id); } return $this->actor; @@ -83,7 +84,8 @@ class Notification extends UuidEntity } if (! $this->target_actor instanceof Actor) { - $this->target_actor = (new ActorModel())->getActorById($this->target_actor_id); + $this->target_actor = new ActorModel() + ->getActorById($this->target_actor_id); } return $this->target_actor; @@ -96,7 +98,8 @@ class Notification extends UuidEntity } if (! $this->post instanceof Post) { - $this->post = (new PostModel())->getPostById($this->post_id); + $this->post = new PostModel() + ->getPostById($this->post_id); } return $this->post; diff --git a/modules/Fediverse/Filters/FediverseFilter.php b/modules/Fediverse/Filters/FediverseFilter.php index 0c8f406e..355546b2 100644 --- a/modules/Fediverse/Filters/FediverseFilter.php +++ b/modules/Fediverse/Filters/FediverseFilter.php @@ -45,7 +45,8 @@ class FediverseFilter implements FilterInterface $payload = $request->getJSON(); $actorUri = $payload->actor; - $domain = (new URI($actorUri))->getHost(); + $domain = new URI($actorUri) + ->getHost(); // check first if domain is blocked if (model('BlockedDomainModel', false)->isDomainBlocked($domain)) { @@ -61,7 +62,8 @@ class FediverseFilter implements FilterInterface if (in_array('verify-signature', $params, true)) { try { // securityCheck: check activity signature before handling it - (new HttpSignature())->verify(); + new HttpSignature() + ->verify(); } catch (Exception) { // Invalid HttpSignature (401 = unauthorized) // TODO: show error message? diff --git a/modules/Fediverse/Models/ActivityModel.php b/modules/Fediverse/Models/ActivityModel.php index c06881ff..a31ff2af 100644 --- a/modules/Fediverse/Models/ActivityModel.php +++ b/modules/Fediverse/Models/ActivityModel.php @@ -139,7 +139,8 @@ class ActivityModel extends UuidModel protected function notify(array $data): array { /** @var ?Activity $activity */ - $activity = (new self())->find(is_array($data['id']) ? $data['id'][0] : $data['id']); + $activity = new self() + ->find(is_array($data['id']) ? $data['id'][0] : $data['id']); if (! $activity instanceof Activity) { return $data; @@ -155,35 +156,39 @@ class ActivityModel extends UuidModel } if ($activity->type === 'Follow') { - (new NotificationModel())->insert([ - 'actor_id' => $activity->actor_id, - 'target_actor_id' => $activity->target_actor_id, - 'activity_id' => $activity->id, - 'type' => 'follow', - 'created_at' => $activity->created_at, - ]); + new NotificationModel() + ->insert([ + 'actor_id' => $activity->actor_id, + 'target_actor_id' => $activity->target_actor_id, + 'activity_id' => $activity->id, + 'type' => 'follow', + 'created_at' => $activity->created_at, + ]); } elseif ($activity->type === 'Undo_Follow') { - (new NotificationModel())->builder() + new NotificationModel() + ->builder() ->delete([ 'actor_id' => $activity->actor_id, 'target_actor_id' => $activity->target_actor_id, 'type' => 'follow', ]); } elseif (in_array($activity->type, ['Create', 'Like', 'Announce'], true) && $activity->post_id !== null) { - (new NotificationModel())->insert([ - 'actor_id' => $activity->actor_id, - 'target_actor_id' => $activity->target_actor_id, - 'post_id' => $activity->post_id, - 'activity_id' => $activity->id, - 'type' => match ($activity->type) { - 'Create' => 'reply', - 'Like' => 'like', - 'Announce' => 'share', - }, - 'created_at' => $activity->created_at, - ]); + new NotificationModel() + ->insert([ + 'actor_id' => $activity->actor_id, + 'target_actor_id' => $activity->target_actor_id, + 'post_id' => $activity->post_id, + 'activity_id' => $activity->id, + 'type' => match ($activity->type) { + 'Create' => 'reply', + 'Like' => 'like', + 'Announce' => 'share', + }, + 'created_at' => $activity->created_at, + ]); } elseif (in_array($activity->type, ['Undo_Like', 'Undo_Announce'], true) && $activity->post_id !== null) { - (new NotificationModel())->builder() + new NotificationModel() + ->builder() ->delete([ 'actor_id' => $activity->actor_id, 'target_actor_id' => $activity->target_actor_id, diff --git a/modules/Install/Controllers/InstallController.php b/modules/Install/Controllers/InstallController.php index 95425bf3..f6f875af 100644 --- a/modules/Install/Controllers/InstallController.php +++ b/modules/Install/Controllers/InstallController.php @@ -117,7 +117,7 @@ class InstallController extends Controller $db = db_connect(); // Check if instance owner has been created, meaning install was completed - if ($db->tableExists('users') && (new UserModel())->where('is_owner', true) + if ($db->tableExists('users') && new UserModel()->where('is_owner', true) ->first() instanceof User ) { // if so, show a 404 page diff --git a/modules/Media/Entities/BaseMedia.php b/modules/Media/Entities/BaseMedia.php index 392a9556..5eb1b118 100644 --- a/modules/Media/Entities/BaseMedia.php +++ b/modules/Media/Entities/BaseMedia.php @@ -116,12 +116,12 @@ class BaseMedia extends Entity public function rename(): bool { - $newFileKey = $this->file_directory . '/' . (new File(''))->getRandomName() . '.' . $this->file_extension; + $newFileKey = $this->file_directory . '/' . new File('')->getRandomName() . '.' . $this->file_extension; $db = db_connect(); $db->transStart(); - if (! (new MediaModel())->update($this->id, [ + if (! new MediaModel()->update($this->id, [ 'file_key' => $newFileKey, ])) { return false; diff --git a/modules/MediaClipper/Commands/Generate.php b/modules/MediaClipper/Commands/Generate.php index dc604d5c..656349ac 100644 --- a/modules/MediaClipper/Commands/Generate.php +++ b/modules/MediaClipper/Commands/Generate.php @@ -25,13 +25,15 @@ class Generate extends BaseCommand { // get number of running clips to prevent from having too much running in parallel // TODO: get the number of running ffmpeg processes directly from the machine? - $runningVideoClips = (new ClipModel())->getRunningVideoClipsCount(); + $runningVideoClips = new ClipModel() + ->getRunningVideoClipsCount(); if ($runningVideoClips >= config('Admin')->videoClipWorkers) { return; } // get all clips that haven't been processed yet - $scheduledClips = (new ClipModel())->getScheduledVideoClips(); + $scheduledClips = new ClipModel() + ->getScheduledVideoClips(); if ($scheduledClips === []) { return; @@ -45,13 +47,14 @@ class Generate extends BaseCommand ]; } - (new ClipModel())->updateBatch($data, 'id'); + new ClipModel() + ->updateBatch($data, 'id'); // Loop through clips to generate them foreach ($scheduledClips as $scheduledClip) { try { // set clip to pending - (new ClipModel()) + new ClipModel() ->update($scheduledClip->id, [ 'status' => 'running', 'job_started_at' => Time::now(), @@ -86,11 +89,12 @@ class Generate extends BaseCommand $clipModel->clearVideoClipCache($scheduledClip->id); } catch (Exception $exception) { - (new ClipModel())->update($scheduledClip->id, [ - 'status' => 'failed', - 'logs' => $exception, - 'job_ended_at' => Time::now(), - ]); + new ClipModel() + ->update($scheduledClip->id, [ + 'status' => 'failed', + 'logs' => $exception, + 'job_ended_at' => Time::now(), + ]); } } } diff --git a/modules/Platforms/Controllers/PlatformController.php b/modules/Platforms/Controllers/PlatformController.php index 3d080c0f..20df5fef 100644 --- a/modules/Platforms/Controllers/PlatformController.php +++ b/modules/Platforms/Controllers/PlatformController.php @@ -28,7 +28,7 @@ class PlatformController extends BaseController } if ( - ! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast + ! ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast ) { throw PageNotFoundException::forPageNotFound(); } @@ -51,7 +51,8 @@ class PlatformController extends BaseController $data = [ 'podcast' => $this->podcast, 'platformType' => $platformType, - 'platforms' => (new PlatformModel())->getPlatformsWithData($this->podcast->id, $platformType), + 'platforms' => new PlatformModel() + ->getPlatformsWithData($this->podcast->id, $platformType), ]; $this->setHtmlHead(lang("Platforms.title.{$platformType}")); @@ -100,7 +101,8 @@ class PlatformController extends BaseController public function removeAction(string $platformType, string $platformSlug): RedirectResponse { - (new PlatformModel())->removePlatform($this->podcast->id, $platformType, $platformSlug); + new PlatformModel() + ->removePlatform($this->podcast->id, $platformType, $platformSlug); return redirect() ->back() diff --git a/modules/Plugins/Controllers/PluginController.php b/modules/Plugins/Controllers/PluginController.php index 95c8e5be..2028cdec 100644 --- a/modules/Plugins/Controllers/PluginController.php +++ b/modules/Plugins/Controllers/PluginController.php @@ -105,7 +105,8 @@ class PluginController extends BaseController ]; if ($podcastId !== null) { - $podcast = (new PodcastModel())->getPodcastById((int) $podcastId); + $podcast = new PodcastModel() + ->getPodcastById((int) $podcastId); if (! $podcast instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); @@ -118,7 +119,8 @@ class PluginController extends BaseController } if ($episodeId !== null) { - $episode = (new EpisodeModel())->getEpisodeById((int) $episodeId); + $episode = new EpisodeModel() + ->getEpisodeById((int) $episodeId); if (! $episode instanceof Episode) { throw PageNotFoundException::forPageNotFound(); diff --git a/modules/Plugins/Core/BasePlugin.php b/modules/Plugins/Core/BasePlugin.php index bd3f67a5..995fa272 100644 --- a/modules/Plugins/Core/BasePlugin.php +++ b/modules/Plugins/Core/BasePlugin.php @@ -358,7 +358,8 @@ abstract class BasePlugin implements PluginInterface $environment = new Environment([ 'html_input' => 'escape', 'allow_unsafe_links' => false, - 'host' => (new URI(base_url()))->getHost(), + 'host' => new URI(base_url()) + ->getHost(), ]); $environment->addExtension(new CommonMarkCoreExtension()); @@ -368,13 +369,15 @@ abstract class BasePlugin implements PluginInterface $environment->addEventListener( DocumentParsedEvent::class, static function (DocumentParsedEvent $event): void { - (new ExternalLinkProcessor())->onDocumentParsed($event); + new ExternalLinkProcessor() + ->onDocumentParsed($event); }, ); $environment->addEventListener( DocumentParsedEvent::class, static function (DocumentParsedEvent $event): void { - (new ExternalImageProcessor())->onDocumentParsed($event); + new ExternalImageProcessor() + ->onDocumentParsed($event); }, ); diff --git a/modules/Plugins/ExternalImageProcessor.php b/modules/Plugins/ExternalImageProcessor.php index 1e53837f..f5947aa3 100644 --- a/modules/Plugins/ExternalImageProcessor.php +++ b/modules/Plugins/ExternalImageProcessor.php @@ -39,6 +39,7 @@ class ExternalImageProcessor $host = parse_url($url, PHP_URL_HOST); // TODO: load from environment's config - return $host !== (new URI(base_url()))->getHost(); + return $host !== new URI(base_url()) + ->getHost(); } } diff --git a/modules/Plugins/ExternalLinkProcessor.php b/modules/Plugins/ExternalLinkProcessor.php index c7f944ce..0297609c 100644 --- a/modules/Plugins/ExternalLinkProcessor.php +++ b/modules/Plugins/ExternalLinkProcessor.php @@ -40,6 +40,7 @@ class ExternalLinkProcessor $host = parse_url($url, PHP_URL_HOST); // TODO: load from environment's config - return $host !== (new URI(base_url()))->getHost(); + return $host !== new URI(base_url()) + ->getHost(); } } diff --git a/modules/PodcastImport/Commands/PodcastImport.php b/modules/PodcastImport/Commands/PodcastImport.php index 2bd3f9e9..63c835e1 100644 --- a/modules/PodcastImport/Commands/PodcastImport.php +++ b/modules/PodcastImport/Commands/PodcastImport.php @@ -51,7 +51,10 @@ class PodcastImport extends BaseCommand $importQueue = get_import_tasks(); $currentImport = current( - array_filter($importQueue, static fn ($task): bool => $task->status === TaskStatus::Running), + array_filter( + $importQueue, + static fn (PodcastImportTask $task): bool => $task->status === TaskStatus::Running, + ), ); if ($currentImport instanceof PodcastImportTask) { @@ -66,7 +69,10 @@ class PodcastImport extends BaseCommand } // Get the next queued import - $queuedImports = array_filter($importQueue, static fn ($task): bool => $task->status === TaskStatus::Queued); + $queuedImports = array_filter( + $importQueue, + static fn (PodcastImportTask $task): bool => $task->status === TaskStatus::Queued, + ); $nextImport = end($queuedImports); if (! $nextImport instanceof PodcastImportTask) { @@ -77,7 +83,8 @@ class PodcastImport extends BaseCommand $this->importTask = $nextImport; // retrieve user who created import task - $user = (new UserModel())->find($this->importTask->created_by); + $user = new UserModel() + ->find($this->importTask->created_by); if (! $user instanceof User) { throw new Exception('Could not retrieve user with ID: ' . $this->importTask->created_by); @@ -121,10 +128,12 @@ class PodcastImport extends BaseCommand // check if podcast to be imported already exists by guid if exists or handle otherwise $podcastGuid = $this->podcastFeed->channel->podcast_guid->getValue(); if ($podcastGuid !== null) { - $podcast = (new PodcastModel())->where('guid', $podcastGuid) + $podcast = new PodcastModel() + ->where('guid', $podcastGuid) ->first(); } else { - $podcast = (new PodcastModel())->where('handle', $this->importTask->handle) + $podcast = new PodcastModel() + ->where('handle', $this->importTask->handle) ->first(); } @@ -178,7 +187,7 @@ class PodcastImport extends BaseCommand private function getOldestEpisodePublicationDate(int $podcastId): ?Time { - $result = (new EpisodeModel()) + $result = new EpisodeModel() ->builder() ->selectMax('published_at', 'oldest_published_at') ->where('podcast_id', $podcastId) @@ -514,7 +523,7 @@ class PodcastImport extends BaseCommand */ private function getImportedGUIDs(int $podcastId): array { - $result = (new EpisodeModel()) + $result = new EpisodeModel() ->builder() ->select('guid') ->where('podcast_id', $podcastId) diff --git a/modules/PodcastImport/Controllers/PodcastImportController.php b/modules/PodcastImport/Controllers/PodcastImportController.php index 919dc478..d15037d2 100644 --- a/modules/PodcastImport/Controllers/PodcastImportController.php +++ b/modules/PodcastImport/Controllers/PodcastImportController.php @@ -36,7 +36,7 @@ class PodcastImportController extends BaseController public function podcastList(int $podcastId): string { - if (! ($podcast = (new PodcastModel())->getPodcastById($podcastId)) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastById($podcastId)) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } @@ -56,8 +56,10 @@ class PodcastImportController extends BaseController { helper(['form', 'misc']); - $languageOptions = (new LanguageModel())->getLanguageOptions(); - $categoryOptions = (new CategoryModel())->getCategoryOptions(); + $languageOptions = new LanguageModel() + ->getLanguageOptions(); + $categoryOptions = new CategoryModel() + ->getCategoryOptions(); $data = [ 'languageOptions' => $languageOptions, @@ -109,7 +111,7 @@ class PodcastImportController extends BaseController public function syncImport(int $podcastId): string { - if (! ($podcast = (new PodcastModel())->getPodcastById($podcastId)) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastById($podcastId)) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } @@ -126,7 +128,7 @@ class PodcastImportController extends BaseController public function syncImportAttempt(int $podcastId): RedirectResponse { - if (! ($podcast = (new PodcastModel())->getPodcastById($podcastId)) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastById($podcastId)) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } diff --git a/modules/PodcastImport/Helpers/podcast_import_helper.php b/modules/PodcastImport/Helpers/podcast_import_helper.php index 6d086bcf..6fa22039 100644 --- a/modules/PodcastImport/Helpers/podcast_import_helper.php +++ b/modules/PodcastImport/Helpers/podcast_import_helper.php @@ -24,7 +24,7 @@ if (! function_exists('get_import_tasks')) { if ($podcastHandle !== null) { $podcastImportsQueue = array_filter( $podcastImportsQueue, - static fn ($importTask): bool => $importTask->handle === $podcastHandle, + static fn (PodcastImportTask $importTask): bool => $importTask->handle === $podcastHandle, ); } diff --git a/modules/PremiumPodcasts/Controllers/LockController.php b/modules/PremiumPodcasts/Controllers/LockController.php index 5b91fcf2..b06efd09 100644 --- a/modules/PremiumPodcasts/Controllers/LockController.php +++ b/modules/PremiumPodcasts/Controllers/LockController.php @@ -34,7 +34,7 @@ class LockController extends BaseController throw PageNotFoundException::forPageNotFound(); } - if (! ($podcast = (new PodcastModel())->getPodcastByHandle($params[0])) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastByHandle($params[0])) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } diff --git a/modules/PremiumPodcasts/Controllers/SubscriptionController.php b/modules/PremiumPodcasts/Controllers/SubscriptionController.php index 4a5d38a5..7ddf669a 100644 --- a/modules/PremiumPodcasts/Controllers/SubscriptionController.php +++ b/modules/PremiumPodcasts/Controllers/SubscriptionController.php @@ -32,7 +32,7 @@ class SubscriptionController extends BaseController throw PageNotFoundException::forPageNotFound(); } - if (! ($podcast = (new PodcastModel())->getPodcastById((int) $params[0])) instanceof Podcast) { + if (! ($podcast = new PodcastModel()->getPodcastById((int) $params[0])) instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } @@ -42,7 +42,7 @@ class SubscriptionController extends BaseController return $this->{$method}(); } - if (! ($this->subscription = (new SubscriptionModel())->getSubscriptionById( + if (! ($this->subscription = new SubscriptionModel()->getSubscriptionById( (int) $params[1], )) instanceof Subscription) { throw PageNotFoundException::forPageNotFound(); @@ -431,7 +431,8 @@ class SubscriptionController extends BaseController $db = db_connect(); $db->transStart(); - (new SubscriptionModel())->delete($this->subscription->id); + new SubscriptionModel() + ->delete($this->subscription->id); /** @var Email $email */ $email = service('email'); diff --git a/modules/PremiumPodcasts/Entities/Subscription.php b/modules/PremiumPodcasts/Entities/Subscription.php index 0de27443..b5dd4ebe 100644 --- a/modules/PremiumPodcasts/Entities/Subscription.php +++ b/modules/PremiumPodcasts/Entities/Subscription.php @@ -105,7 +105,8 @@ class Subscription extends Entity } if (! $this->podcast instanceof Podcast) { - $this->podcast = (new PodcastModel())->getPodcastById($this->podcast_id); + $this->podcast = new PodcastModel() + ->getPodcastById($this->podcast_id); } return $this->podcast; @@ -113,9 +114,7 @@ class Subscription extends Entity public function getDownloadsLast3Months(): int { - return (new AnalyticsPodcastBySubscriptionModel())->getNumberOfDownloadsLast3Months( - $this->podcast_id, - $this->id, - ); + return new AnalyticsPodcastBySubscriptionModel() + ->getNumberOfDownloadsLast3Months($this->podcast_id, $this->id); } } diff --git a/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php b/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php index cc2495c2..2f08a68b 100644 --- a/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php +++ b/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php @@ -52,7 +52,8 @@ class PodcastUnlockFilter implements FilterInterface return null; } - $episode = (new EpisodeModel())->getEpisodeBySlug($routerParams[0], $routerParams[1]); + $episode = new EpisodeModel() + ->getEpisodeBySlug($routerParams[0], $routerParams[1]); if (! $episode instanceof Episode) { return null; diff --git a/modules/PremiumPodcasts/Models/SubscriptionModel.php b/modules/PremiumPodcasts/Models/SubscriptionModel.php index f9d9aea3..afd7344f 100644 --- a/modules/PremiumPodcasts/Models/SubscriptionModel.php +++ b/modules/PremiumPodcasts/Models/SubscriptionModel.php @@ -134,7 +134,8 @@ class SubscriptionModel extends Model protected function clearCache(array $data): array { /** @var ?Subscription */ - $subscription = (new self())->find(is_array($data['id']) ? $data['id'][0] : $data['id']); + $subscription = new self() + ->find(is_array($data['id']) ? $data['id'][0] : $data['id']); if (! $subscription instanceof Subscription) { return $data; diff --git a/modules/WebSub/Commands/Publish.php b/modules/WebSub/Commands/Publish.php index 4bdee5a4..c0f47b22 100644 --- a/modules/WebSub/Commands/Publish.php +++ b/modules/WebSub/Commands/Publish.php @@ -78,12 +78,14 @@ class Publish extends BaseCommand } // set podcast feed as having been pushed onto hubs - (new PodcastModel())->update($podcast->id, [ - 'is_published_on_hubs' => 1, - ]); + new PodcastModel() + ->update($podcast->id, [ + 'is_published_on_hubs' => 1, + ]); // set newly published episodes as pushed onto hubs - (new EpisodeModel())->set('is_published_on_hubs', true) + new EpisodeModel() + ->set('is_published_on_hubs', true) ->where([ 'podcast_id' => $podcast->id, 'is_published_on_hubs' => false, diff --git a/package.json b/package.json index b9a95d6b..e4aaf4a4 100644 --- a/package.json +++ b/package.json @@ -31,78 +31,78 @@ }, "dependencies": { "@amcharts/amcharts4": "^4.10.40", - "@amcharts/amcharts4-geodata": "^4.1.30", - "@codemirror/commands": "^6.8.0", + "@amcharts/amcharts4-geodata": "^4.1.31", + "@codemirror/commands": "^6.8.1", "@codemirror/lang-html": "^6.4.9", "@codemirror/lang-xml": "^6.1.0", - "@codemirror/language": "^6.11.0", + "@codemirror/language": "^6.11.3", "@codemirror/state": "^6.5.2", - "@codemirror/view": "^6.36.4", - "@floating-ui/dom": "^1.6.13", + "@codemirror/view": "^6.38.1", + "@floating-ui/dom": "^1.7.4", "@github/clipboard-copy-element": "^1.3.0", "@github/hotkey": "^3.1.1", "@github/markdown-toolbar-element": "^2.2.3", - "@github/relative-time-element": "^4.4.5", - "@patternfly/elements": "^4.0.2", + "@github/relative-time-element": "^4.4.8", + "@patternfly/elements": "^4.2.0", "@vime/core": "^5.4.1", "choices.js": "^11.1.0", - "codemirror": "^6.0.1", + "codemirror": "^6.0.2", "flatpickr": "^4.6.13", - "htmlfy": "^0.6.2", + "htmlfy": "^1.0.0", "leaflet": "^1.9.4", "leaflet.markercluster": "^1.5.3", - "lit": "^3.2.1", - "marked": "^15.0.7", - "wavesurfer.js": "^7.9.1", - "xml-formatter": "^3.6.4" + "lit": "^3.3.1", + "marked": "^16.2.0", + "wavesurfer.js": "^7.10.1", + "xml-formatter": "^3.6.6" }, "devDependencies": { - "@commitlint/cli": "^19.8.0", - "@commitlint/config-conventional": "^19.8.0", - "@csstools/css-tokenizer": "^3.0.3", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "^9.22.0", + "@commitlint/cli": "^19.8.1", + "@commitlint/config-conventional": "^19.8.1", + "@csstools/css-tokenizer": "^3.0.4", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.34.0", "@semantic-release/changelog": "^6.0.3", - "@semantic-release/exec": "^7.0.3", + "@semantic-release/exec": "^7.1.0", "@semantic-release/git": "^10.0.1", - "@semantic-release/gitlab": "^13.2.4", + "@semantic-release/gitlab": "^13.2.8", "@tailwindcss/forms": "^0.5.10", "@tailwindcss/typography": "^0.5.16", - "@types/leaflet": "^1.9.16", + "@types/leaflet": "^1.9.20", "all-contributors-cli": "^6.26.1", "commitizen": "^4.3.1", - "conventional-changelog-conventionalcommits": "^8.0.0", - "cross-env": "^7.0.3", - "cssnano": "^7.0.6", + "conventional-changelog-conventionalcommits": "^9.1.0", + "cross-env": "^10.0.0", + "cssnano": "^7.1.1", "cz-conventional-changelog": "^3.3.0", - "eslint": "^9.22.0", - "eslint-config-prettier": "^10.1.1", - "eslint-plugin-prettier": "^5.2.3", - "glob": "^11.0.1", - "globals": "^16.0.0", + "eslint": "^9.34.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", + "glob": "^11.0.3", + "globals": "^16.3.0", "husky": "^9.1.7", "is-ci": "^4.1.0", - "lint-staged": "^15.5.0", - "postcss": "^8.5.3", - "postcss-import": "^16.1.0", - "postcss-nesting": "^13.0.1", - "postcss-preset-env": "^10.1.5", + "lint-staged": "^16.1.5", + "postcss": "^8.5.6", + "postcss-import": "^16.1.1", + "postcss-nesting": "^13.0.2", + "postcss-preset-env": "^10.3.0", "postcss-reporter": "^7.1.0", - "prettier": "3.5.3", - "prettier-plugin-organize-imports": "^4.1.0", - "semantic-release": "^24.2.3", - "sharp": "^0.33.5", - "stylelint": "^16.15.0", - "stylelint-config-standard": "^37.0.0", - "svgo": "^3.3.2", + "prettier": "3.6.2", + "prettier-plugin-organize-imports": "^4.2.0", + "semantic-release": "^24.2.7", + "sharp": "^0.34.3", + "stylelint": "^16.23.1", + "stylelint-config-standard": "^39.0.0", + "svgo": "^4.0.0", "tailwindcss": "^3.4.17", - "typescript": "~5.7.3", - "typescript-eslint": "^8.26.1", - "vite": "^6.2.2", - "vite-plugin-codeigniter": "^1.0.1", - "vite-plugin-inspect": "^11.0.0", - "vite-plugin-pwa": "^0.21.1", - "vite-plugin-static-copy": "^2.3.0", + "typescript": "~5.9.2", + "typescript-eslint": "^8.41.0", + "vite": "^7.1.3", + "vite-plugin-codeigniter": "^2.0.0", + "vite-plugin-inspect": "^11.3.3", + "vite-plugin-pwa": "^1.0.3", + "vite-plugin-static-copy": "^3.1.2", "workbox-build": "^7.3.0", "workbox-core": "^7.3.0", "workbox-routing": "^7.3.0", diff --git a/phpstan.neon b/phpstan.neon index 5aa7d8ce..686e91c4 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -51,4 +51,4 @@ parameters: ignoreErrors: - '#^Call to an undefined method CodeIgniter\\Cache\\CacheInterface\:\:deleteMatching\(\)#' - identifier: missingType.generics - - identifier: property.readOnlyByPhpDocDefaultValue \ No newline at end of file + - '#\$callback of static method CodeIgniter\\Events\\Events\:\:on\(\) expects callable\(mixed\)\: mixed, Closure\(mixed, mixed\)\: void given.#' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4f6bc67c..85ca7049 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,11 +11,11 @@ importers: specifier: ^4.10.40 version: 4.10.40 "@amcharts/amcharts4-geodata": - specifier: ^4.1.30 - version: 4.1.30 + specifier: ^4.1.31 + version: 4.1.31 "@codemirror/commands": - specifier: ^6.8.0 - version: 6.8.0 + specifier: ^6.8.1 + version: 6.8.1 "@codemirror/lang-html": specifier: ^6.4.9 version: 6.4.9 @@ -23,17 +23,17 @@ importers: specifier: ^6.1.0 version: 6.1.0 "@codemirror/language": - specifier: ^6.11.0 - version: 6.11.0 + specifier: ^6.11.3 + version: 6.11.3 "@codemirror/state": specifier: ^6.5.2 version: 6.5.2 "@codemirror/view": - specifier: ^6.36.4 - version: 6.36.4 + specifier: ^6.38.1 + version: 6.38.1 "@floating-ui/dom": - specifier: ^1.6.13 - version: 1.6.13 + specifier: ^1.7.4 + version: 1.7.4 "@github/clipboard-copy-element": specifier: ^1.3.0 version: 1.3.0 @@ -44,11 +44,11 @@ importers: specifier: ^2.2.3 version: 2.2.3 "@github/relative-time-element": - specifier: ^4.4.5 - version: 4.4.5 + specifier: ^4.4.8 + version: 4.4.8 "@patternfly/elements": - specifier: ^4.0.2 - version: 4.0.2 + specifier: ^4.2.0 + version: 4.2.0 "@vime/core": specifier: ^5.4.1 version: 5.4.1 @@ -56,14 +56,14 @@ importers: specifier: ^11.1.0 version: 11.1.0 codemirror: - specifier: ^6.0.1 - version: 6.0.1(@lezer/common@1.2.3) + specifier: ^6.0.2 + version: 6.0.2 flatpickr: specifier: ^4.6.13 version: 4.6.13 htmlfy: - specifier: ^0.6.2 - version: 0.6.2 + specifier: ^1.0.0 + version: 1.0.0 leaflet: specifier: ^1.9.4 version: 1.9.4 @@ -71,45 +71,45 @@ importers: specifier: ^1.5.3 version: 1.5.3(leaflet@1.9.4) lit: - specifier: ^3.2.1 - version: 3.2.1 + specifier: ^3.3.1 + version: 3.3.1 marked: - specifier: ^15.0.7 - version: 15.0.7 + specifier: ^16.2.0 + version: 16.2.0 wavesurfer.js: - specifier: ^7.9.1 - version: 7.9.1 + specifier: ^7.10.1 + version: 7.10.1 xml-formatter: - specifier: ^3.6.4 - version: 3.6.4 + specifier: ^3.6.6 + version: 3.6.6 devDependencies: "@commitlint/cli": - specifier: ^19.8.0 - version: 19.8.0(@types/node@22.9.0)(typescript@5.7.3) + specifier: ^19.8.1 + version: 19.8.1(@types/node@24.3.0)(typescript@5.9.2) "@commitlint/config-conventional": - specifier: ^19.8.0 - version: 19.8.0 + specifier: ^19.8.1 + version: 19.8.1 "@csstools/css-tokenizer": - specifier: ^3.0.3 - version: 3.0.3 + specifier: ^3.0.4 + version: 3.0.4 "@eslint/eslintrc": - specifier: ^3.3.0 - version: 3.3.0 + specifier: ^3.3.1 + version: 3.3.1 "@eslint/js": - specifier: ^9.22.0 - version: 9.22.0 + specifier: ^9.34.0 + version: 9.34.0 "@semantic-release/changelog": specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.2.3(typescript@5.7.3)) + version: 6.0.3(semantic-release@24.2.7(typescript@5.9.2)) "@semantic-release/exec": - specifier: ^7.0.3 - version: 7.0.3(semantic-release@24.2.3(typescript@5.7.3)) + specifier: ^7.1.0 + version: 7.1.0(semantic-release@24.2.7(typescript@5.9.2)) "@semantic-release/git": specifier: ^10.0.1 - version: 10.0.1(semantic-release@24.2.3(typescript@5.7.3)) + version: 10.0.1(semantic-release@24.2.7(typescript@5.9.2)) "@semantic-release/gitlab": - specifier: ^13.2.4 - version: 13.2.4(semantic-release@24.2.3(typescript@5.7.3)) + specifier: ^13.2.8 + version: 13.2.8(semantic-release@24.2.7(typescript@5.9.2)) "@tailwindcss/forms": specifier: ^0.5.10 version: 0.5.10(tailwindcss@3.4.17) @@ -117,41 +117,41 @@ importers: specifier: ^0.5.16 version: 0.5.16(tailwindcss@3.4.17) "@types/leaflet": - specifier: ^1.9.16 - version: 1.9.16 + specifier: ^1.9.20 + version: 1.9.20 all-contributors-cli: specifier: ^6.26.1 version: 6.26.1 commitizen: specifier: ^4.3.1 - version: 4.3.1(@types/node@22.9.0)(typescript@5.7.3) + version: 4.3.1(@types/node@24.3.0)(typescript@5.9.2) conventional-changelog-conventionalcommits: - specifier: ^8.0.0 - version: 8.0.0 + specifier: ^9.1.0 + version: 9.1.0 cross-env: - specifier: ^7.0.3 - version: 7.0.3 + specifier: ^10.0.0 + version: 10.0.0 cssnano: - specifier: ^7.0.6 - version: 7.0.6(postcss@8.5.3) + specifier: ^7.1.1 + version: 7.1.1(postcss@8.5.6) cz-conventional-changelog: specifier: ^3.3.0 - version: 3.3.0(@types/node@22.9.0)(typescript@5.7.3) + version: 3.3.0(@types/node@24.3.0)(typescript@5.9.2) eslint: - specifier: ^9.22.0 - version: 9.22.0(jiti@2.4.1) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) eslint-config-prettier: - specifier: ^10.1.1 - version: 10.1.1(eslint@9.22.0(jiti@2.4.1)) + specifier: ^10.1.8 + version: 10.1.8(eslint@9.34.0(jiti@2.5.1)) eslint-plugin-prettier: - specifier: ^5.2.3 - version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.1)))(eslint@9.22.0(jiti@2.4.1))(prettier@3.5.3) + specifier: ^5.5.4 + version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1))(prettier@3.6.2) glob: - specifier: ^11.0.1 - version: 11.0.1 + specifier: ^11.0.3 + version: 11.0.3 globals: - specifier: ^16.0.0 - version: 16.0.0 + specifier: ^16.3.0 + version: 16.3.0 husky: specifier: ^9.1.7 version: 9.1.7 @@ -159,68 +159,68 @@ importers: specifier: ^4.1.0 version: 4.1.0 lint-staged: - specifier: ^15.5.0 - version: 15.5.0 + specifier: ^16.1.5 + version: 16.1.5 postcss: - specifier: ^8.5.3 - version: 8.5.3 + specifier: ^8.5.6 + version: 8.5.6 postcss-import: - specifier: ^16.1.0 - version: 16.1.0(postcss@8.5.3) + specifier: ^16.1.1 + version: 16.1.1(postcss@8.5.6) postcss-nesting: - specifier: ^13.0.1 - version: 13.0.1(postcss@8.5.3) + specifier: ^13.0.2 + version: 13.0.2(postcss@8.5.6) postcss-preset-env: - specifier: ^10.1.5 - version: 10.1.5(postcss@8.5.3) + specifier: ^10.3.0 + version: 10.3.0(postcss@8.5.6) postcss-reporter: specifier: ^7.1.0 - version: 7.1.0(postcss@8.5.3) + version: 7.1.0(postcss@8.5.6) prettier: - specifier: 3.5.3 - version: 3.5.3 + specifier: 3.6.2 + version: 3.6.2 prettier-plugin-organize-imports: - specifier: ^4.1.0 - version: 4.1.0(prettier@3.5.3)(typescript@5.7.3) + specifier: ^4.2.0 + version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) semantic-release: - specifier: ^24.2.3 - version: 24.2.3(typescript@5.7.3) + specifier: ^24.2.7 + version: 24.2.7(typescript@5.9.2) sharp: - specifier: ^0.33.5 - version: 0.33.5 + specifier: ^0.34.3 + version: 0.34.3 stylelint: - specifier: ^16.15.0 - version: 16.15.0(typescript@5.7.3) + specifier: ^16.23.1 + version: 16.23.1(typescript@5.9.2) stylelint-config-standard: - specifier: ^37.0.0 - version: 37.0.0(stylelint@16.15.0(typescript@5.7.3)) + specifier: ^39.0.0 + version: 39.0.0(stylelint@16.23.1(typescript@5.9.2)) svgo: - specifier: ^3.3.2 - version: 3.3.2 + specifier: ^4.0.0 + version: 4.0.0 tailwindcss: specifier: ^3.4.17 version: 3.4.17 typescript: - specifier: ~5.7.3 - version: 5.7.3 + specifier: ~5.9.2 + version: 5.9.2 typescript-eslint: - specifier: ^8.26.1 - version: 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) + specifier: ^8.41.0 + version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) vite: - specifier: ^6.2.2 - version: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + specifier: ^7.1.3 + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) vite-plugin-codeigniter: - specifier: ^1.0.1 - version: 1.0.1(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + specifier: ^2.0.0 + version: 2.0.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)) vite-plugin-inspect: - specifier: ^11.0.0 - version: 11.0.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + specifier: ^11.3.3 + version: 11.3.3(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)) vite-plugin-pwa: - specifier: ^0.21.1 - version: 0.21.1(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0) + specifier: ^1.0.3 + version: 1.0.3(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.3.0)(workbox-window@7.3.0) vite-plugin-static-copy: - specifier: ^2.3.0 - version: 2.3.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + specifier: ^3.1.2 + version: 3.1.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)) workbox-build: specifier: ^7.3.0 version: 7.3.0 @@ -242,10 +242,10 @@ packages: } engines: { node: ">=10" } - "@amcharts/amcharts4-geodata@4.1.30": + "@amcharts/amcharts4-geodata@4.1.31": resolution: { - integrity: sha512-dM2wOMyyivHpTI+T3RxXgcgN0cv23DzMFuG2s/0ImNZGAWn97RdCdtbVEGcaI1Bi+hbbV9n0X7onNP5bnxZ+RQ==, + integrity: sha512-ciX2rOX6YZaRv/GGXqQNjV4ixhe1Ke9r+4xlwm9YuUHZ5QZSfLx6obXRqhmQeTdnNcxjveMoZ//E7xfotvqgVg==, } "@amcharts/amcharts4@4.10.40": @@ -270,233 +270,226 @@ packages: peerDependencies: ajv: ">=8" - "@babel/code-frame@7.26.2": + "@babel/code-frame@7.27.1": resolution: { - integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==, + integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==, } engines: { node: ">=6.9.0" } - "@babel/compat-data@7.26.2": + "@babel/compat-data@7.28.0": resolution: { - integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==, + integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==, } engines: { node: ">=6.9.0" } - "@babel/core@7.26.0": + "@babel/core@7.28.3": resolution: { - integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==, + integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==, } engines: { node: ">=6.9.0" } - "@babel/generator@7.26.2": + "@babel/generator@7.28.3": resolution: { - integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==, + integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==, } engines: { node: ">=6.9.0" } - "@babel/helper-annotate-as-pure@7.25.9": + "@babel/helper-annotate-as-pure@7.27.3": resolution: { - integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==, + integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==, } engines: { node: ">=6.9.0" } - "@babel/helper-builder-binary-assignment-operator-visitor@7.25.9": + "@babel/helper-compilation-targets@7.27.2": resolution: { - integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==, + integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==, } engines: { node: ">=6.9.0" } - "@babel/helper-compilation-targets@7.25.9": + "@babel/helper-create-class-features-plugin@7.28.3": resolution: { - integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-create-class-features-plugin@7.25.9": - resolution: - { - integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==, + integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-create-regexp-features-plugin@7.25.9": + "@babel/helper-create-regexp-features-plugin@7.27.1": resolution: { - integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==, + integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-define-polyfill-provider@0.6.2": + "@babel/helper-define-polyfill-provider@0.6.5": resolution: { - integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==, + integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==, } peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - "@babel/helper-member-expression-to-functions@7.25.9": + "@babel/helper-globals@7.28.0": resolution: { - integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==, + integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==, } engines: { node: ">=6.9.0" } - "@babel/helper-module-imports@7.25.9": + "@babel/helper-member-expression-to-functions@7.27.1": resolution: { - integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==, + integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==, } engines: { node: ">=6.9.0" } - "@babel/helper-module-transforms@7.26.0": + "@babel/helper-module-imports@7.27.1": resolution: { - integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==, + integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-module-transforms@7.28.3": + resolution: + { + integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-optimise-call-expression@7.25.9": + "@babel/helper-optimise-call-expression@7.27.1": resolution: { - integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==, + integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==, } engines: { node: ">=6.9.0" } - "@babel/helper-plugin-utils@7.25.9": + "@babel/helper-plugin-utils@7.27.1": resolution: { - integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==, + integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==, } engines: { node: ">=6.9.0" } - "@babel/helper-remap-async-to-generator@7.25.9": + "@babel/helper-remap-async-to-generator@7.27.1": resolution: { - integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==, + integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-replace-supers@7.25.9": + "@babel/helper-replace-supers@7.27.1": resolution: { - integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==, + integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-simple-access@7.25.9": + "@babel/helper-skip-transparent-expression-wrappers@7.27.1": resolution: { - integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==, + integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==, } engines: { node: ">=6.9.0" } - "@babel/helper-skip-transparent-expression-wrappers@7.25.9": + "@babel/helper-string-parser@7.27.1": resolution: { - integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==, + integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, } engines: { node: ">=6.9.0" } - "@babel/helper-string-parser@7.25.9": + "@babel/helper-validator-identifier@7.27.1": resolution: { - integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==, + integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==, } engines: { node: ">=6.9.0" } - "@babel/helper-validator-identifier@7.25.9": + "@babel/helper-validator-option@7.27.1": resolution: { - integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==, + integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==, } engines: { node: ">=6.9.0" } - "@babel/helper-validator-option@7.25.9": + "@babel/helper-wrap-function@7.28.3": resolution: { - integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==, + integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==, } engines: { node: ">=6.9.0" } - "@babel/helper-wrap-function@7.25.9": + "@babel/helpers@7.28.3": resolution: { - integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==, + integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==, } engines: { node: ">=6.9.0" } - "@babel/helpers@7.26.0": + "@babel/parser@7.28.3": resolution: { - integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==, - } - engines: { node: ">=6.9.0" } - - "@babel/parser@7.26.2": - resolution: - { - integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==, + integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==, } engines: { node: ">=6.0.0" } hasBin: true - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9": + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1": resolution: { - integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==, + integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9": + "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1": resolution: { - integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==, + integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9": + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1": resolution: { - integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==, + integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9": + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1": resolution: { - integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==, + integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.13.0 - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9": + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3": resolution: { - integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==, + integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -511,19 +504,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-syntax-import-assertions@7.26.0": + "@babel/plugin-syntax-import-assertions@7.27.1": resolution: { - integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==, + integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-syntax-import-attributes@7.26.0": + "@babel/plugin-syntax-import-attributes@7.27.1": resolution: { - integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==, + integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -538,460 +531,469 @@ packages: peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-transform-arrow-functions@7.25.9": + "@babel/plugin-transform-arrow-functions@7.27.1": resolution: { - integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==, + integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-async-generator-functions@7.25.9": + "@babel/plugin-transform-async-generator-functions@7.28.0": resolution: { - integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==, + integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-async-to-generator@7.25.9": + "@babel/plugin-transform-async-to-generator@7.27.1": resolution: { - integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==, + integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-block-scoped-functions@7.25.9": + "@babel/plugin-transform-block-scoped-functions@7.27.1": resolution: { - integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==, + integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-block-scoping@7.25.9": + "@babel/plugin-transform-block-scoping@7.28.0": resolution: { - integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==, + integrity: sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-class-properties@7.25.9": + "@babel/plugin-transform-class-properties@7.27.1": resolution: { - integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==, + integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-class-static-block@7.26.0": + "@babel/plugin-transform-class-static-block@7.28.3": resolution: { - integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==, + integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.12.0 - "@babel/plugin-transform-classes@7.25.9": + "@babel/plugin-transform-classes@7.28.3": resolution: { - integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==, + integrity: sha512-DoEWC5SuxuARF2KdKmGUq3ghfPMO6ZzR12Dnp5gubwbeWJo4dbNWXJPVlwvh4Zlq6Z7YVvL8VFxeSOJgjsx4Sg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-computed-properties@7.25.9": + "@babel/plugin-transform-computed-properties@7.27.1": resolution: { - integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==, + integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-destructuring@7.25.9": + "@babel/plugin-transform-destructuring@7.28.0": resolution: { - integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==, + integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-dotall-regex@7.25.9": + "@babel/plugin-transform-dotall-regex@7.27.1": resolution: { - integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==, + integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-duplicate-keys@7.25.9": + "@babel/plugin-transform-duplicate-keys@7.27.1": resolution: { - integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==, + integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9": + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1": resolution: { - integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==, + integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-transform-dynamic-import@7.25.9": + "@babel/plugin-transform-dynamic-import@7.27.1": resolution: { - integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==, + integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-exponentiation-operator@7.25.9": + "@babel/plugin-transform-explicit-resource-management@7.28.0": resolution: { - integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==, + integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-export-namespace-from@7.25.9": + "@babel/plugin-transform-exponentiation-operator@7.27.1": resolution: { - integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==, + integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-for-of@7.25.9": + "@babel/plugin-transform-export-namespace-from@7.27.1": resolution: { - integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==, + integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-function-name@7.25.9": + "@babel/plugin-transform-for-of@7.27.1": resolution: { - integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==, + integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-json-strings@7.25.9": + "@babel/plugin-transform-function-name@7.27.1": resolution: { - integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==, + integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-literals@7.25.9": + "@babel/plugin-transform-json-strings@7.27.1": resolution: { - integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==, + integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-logical-assignment-operators@7.25.9": + "@babel/plugin-transform-literals@7.27.1": resolution: { - integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==, + integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-member-expression-literals@7.25.9": + "@babel/plugin-transform-logical-assignment-operators@7.27.1": resolution: { - integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==, + integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-amd@7.25.9": + "@babel/plugin-transform-member-expression-literals@7.27.1": resolution: { - integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==, + integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-commonjs@7.25.9": + "@babel/plugin-transform-modules-amd@7.27.1": resolution: { - integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==, + integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-systemjs@7.25.9": + "@babel/plugin-transform-modules-commonjs@7.27.1": resolution: { - integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==, + integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-umd@7.25.9": + "@babel/plugin-transform-modules-systemjs@7.27.1": resolution: { - integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==, + integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-named-capturing-groups-regex@7.25.9": + "@babel/plugin-transform-modules-umd@7.27.1": resolution: { - integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==, + integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-named-capturing-groups-regex@7.27.1": + resolution: + { + integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-transform-new-target@7.25.9": + "@babel/plugin-transform-new-target@7.27.1": resolution: { - integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==, + integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-nullish-coalescing-operator@7.25.9": + "@babel/plugin-transform-nullish-coalescing-operator@7.27.1": resolution: { - integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==, + integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-numeric-separator@7.25.9": + "@babel/plugin-transform-numeric-separator@7.27.1": resolution: { - integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==, + integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-object-rest-spread@7.25.9": + "@babel/plugin-transform-object-rest-spread@7.28.0": resolution: { - integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==, + integrity: sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-object-super@7.25.9": + "@babel/plugin-transform-object-super@7.27.1": resolution: { - integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==, + integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-optional-catch-binding@7.25.9": + "@babel/plugin-transform-optional-catch-binding@7.27.1": resolution: { - integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==, + integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-optional-chaining@7.25.9": + "@babel/plugin-transform-optional-chaining@7.27.1": resolution: { - integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==, + integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-parameters@7.25.9": + "@babel/plugin-transform-parameters@7.27.7": resolution: { - integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==, + integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-private-methods@7.25.9": + "@babel/plugin-transform-private-methods@7.27.1": resolution: { - integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==, + integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-private-property-in-object@7.25.9": + "@babel/plugin-transform-private-property-in-object@7.27.1": resolution: { - integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==, + integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-property-literals@7.25.9": + "@babel/plugin-transform-property-literals@7.27.1": resolution: { - integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==, + integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-regenerator@7.25.9": + "@babel/plugin-transform-regenerator@7.28.3": resolution: { - integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==, + integrity: sha512-K3/M/a4+ESb5LEldjQb+XSrpY0nF+ZBFlTCbSnKaYAMfD8v33O6PMs4uYnOk19HlcsI8WMu3McdFPTiQHF/1/A==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-regexp-modifiers@7.26.0": + "@babel/plugin-transform-regexp-modifiers@7.27.1": resolution: { - integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==, + integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/plugin-transform-reserved-words@7.25.9": + "@babel/plugin-transform-reserved-words@7.27.1": resolution: { - integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==, + integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-shorthand-properties@7.25.9": + "@babel/plugin-transform-shorthand-properties@7.27.1": resolution: { - integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==, + integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-spread@7.25.9": + "@babel/plugin-transform-spread@7.27.1": resolution: { - integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==, + integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-sticky-regex@7.25.9": + "@babel/plugin-transform-sticky-regex@7.27.1": resolution: { - integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==, + integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-template-literals@7.25.9": + "@babel/plugin-transform-template-literals@7.27.1": resolution: { - integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==, + integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-typeof-symbol@7.25.9": + "@babel/plugin-transform-typeof-symbol@7.27.1": resolution: { - integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==, + integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-escapes@7.25.9": + "@babel/plugin-transform-unicode-escapes@7.27.1": resolution: { - integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==, + integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-property-regex@7.25.9": + "@babel/plugin-transform-unicode-property-regex@7.27.1": resolution: { - integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==, + integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-regex@7.25.9": + "@babel/plugin-transform-unicode-regex@7.27.1": resolution: { - integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==, + integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-sets-regex@7.25.9": + "@babel/plugin-transform-unicode-sets-regex@7.27.1": resolution: { - integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==, + integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/preset-env@7.26.0": + "@babel/preset-env@7.28.3": resolution: { - integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==, + integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -1005,49 +1007,44 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - "@babel/runtime@7.26.0": + "@babel/runtime@7.28.3": resolution: { - integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==, + integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==, } engines: { node: ">=6.9.0" } - "@babel/template@7.25.9": + "@babel/template@7.27.2": resolution: { - integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==, + integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==, } engines: { node: ">=6.9.0" } - "@babel/traverse@7.25.9": + "@babel/traverse@7.28.3": resolution: { - integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==, + integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==, } engines: { node: ">=6.9.0" } - "@babel/types@7.26.0": + "@babel/types@7.28.2": resolution: { - integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==, + integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==, } engines: { node: ">=6.9.0" } - "@codemirror/autocomplete@6.18.2": + "@codemirror/autocomplete@6.18.6": resolution: { - integrity: sha512-wJGylKtMFR/Ds6Gh01+OovXE/pncPiKZNNBKuC39pKnH+XK5d9+WsNqcrdxPjFPFTigRBqse0rfxw9UxrfyhPg==, + integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==, } - peerDependencies: - "@codemirror/language": ^6.0.0 - "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.0.0 - "@lezer/common": ^1.0.0 - "@codemirror/commands@6.8.0": + "@codemirror/commands@6.8.1": resolution: { - integrity: sha512-q8VPEFaEP4ikSlt6ZxjB3zW72+7osfAYW9i8Zu943uqbKuz6utc1+F170hyLUCUltXORjQXRyYQNfkckzA/bPQ==, + integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==, } "@codemirror/lang-css@6.3.1": @@ -1062,10 +1059,10 @@ packages: integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==, } - "@codemirror/lang-javascript@6.2.2": + "@codemirror/lang-javascript@6.2.4": resolution: { - integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==, + integrity: sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==, } "@codemirror/lang-xml@6.1.0": @@ -1074,22 +1071,22 @@ packages: integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==, } - "@codemirror/language@6.11.0": + "@codemirror/language@6.11.3": resolution: { - integrity: sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==, + integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==, } - "@codemirror/lint@6.8.2": + "@codemirror/lint@6.8.5": resolution: { - integrity: sha512-PDFG5DjHxSEjOXk9TQYYVjZDqlZTFaDBfhQixHnQOEVDDNHUbEh/hstAjcQJaA6FQdZTD1hquXTK0rVBLADR1g==, + integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==, } - "@codemirror/search@6.5.7": + "@codemirror/search@6.5.11": resolution: { - integrity: sha512-6+iLsXvITWKHYlkgHPCs/qiX4dNzn8N78YfhOFvPtPYCkuXqZq10rAfsUMhOq7O/1VjJqdXRflyExlfVcu/9VQ==, + integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==, } "@codemirror/state@6.5.2": @@ -1098,10 +1095,10 @@ packages: integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==, } - "@codemirror/view@6.36.4": + "@codemirror/view@6.38.1": resolution: { - integrity: sha512-ZQ0V5ovw/miKEXTvjgzRyjnrk9TwriUB1k4R5p7uNnHR9Hus+D1SXHGdJshijEzPFjU25xea/7nhIeSqYFKdbA==, + integrity: sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==, } "@colors/colors@1.5.0": @@ -1111,264 +1108,256 @@ packages: } engines: { node: ">=0.1.90" } - "@commitlint/cli@19.8.0": + "@commitlint/cli@19.8.1": resolution: { - integrity: sha512-t/fCrLVu+Ru01h0DtlgHZXbHV2Y8gKocTR5elDOqIRUzQd0/6hpt2VIWOj9b3NDo7y4/gfxeR2zRtXq/qO6iUg==, + integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==, } engines: { node: ">=v18" } hasBin: true - "@commitlint/config-conventional@19.8.0": + "@commitlint/config-conventional@19.8.1": resolution: { - integrity: sha512-9I2kKJwcAPwMoAj38hwqFXG0CzS2Kj+SAByPUQ0SlHTfb7VUhYVmo7G2w2tBrqmOf7PFd6MpZ/a1GQJo8na8kw==, + integrity: sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==, } engines: { node: ">=v18" } - "@commitlint/config-validator@19.5.0": + "@commitlint/config-validator@19.8.1": resolution: { - integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==, + integrity: sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==, } engines: { node: ">=v18" } - "@commitlint/config-validator@19.8.0": + "@commitlint/ensure@19.8.1": resolution: { - integrity: sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA==, + integrity: sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==, } engines: { node: ">=v18" } - "@commitlint/ensure@19.8.0": + "@commitlint/execute-rule@19.8.1": resolution: { - integrity: sha512-kNiNU4/bhEQ/wutI1tp1pVW1mQ0QbAjfPRo5v8SaxoVV+ARhkB8Wjg3BSseNYECPzWWfg/WDqQGIfV1RaBFQZg==, + integrity: sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==, } engines: { node: ">=v18" } - "@commitlint/execute-rule@19.5.0": + "@commitlint/format@19.8.1": resolution: { - integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==, + integrity: sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==, } engines: { node: ">=v18" } - "@commitlint/execute-rule@19.8.0": + "@commitlint/is-ignored@19.8.1": resolution: { - integrity: sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A==, + integrity: sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==, } engines: { node: ">=v18" } - "@commitlint/format@19.8.0": + "@commitlint/lint@19.8.1": resolution: { - integrity: sha512-EOpA8IERpQstxwp/WGnDArA7S+wlZDeTeKi98WMOvaDLKbjptuHWdOYYr790iO7kTCif/z971PKPI2PkWMfOxg==, + integrity: sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==, } engines: { node: ">=v18" } - "@commitlint/is-ignored@19.8.0": + "@commitlint/load@19.8.1": resolution: { - integrity: sha512-L2Jv9yUg/I+jF3zikOV0rdiHUul9X3a/oU5HIXhAJLE2+TXTnEBfqYP9G5yMw/Yb40SnR764g4fyDK6WR2xtpw==, + integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==, } engines: { node: ">=v18" } - "@commitlint/lint@19.8.0": + "@commitlint/message@19.8.1": resolution: { - integrity: sha512-+/NZKyWKSf39FeNpqhfMebmaLa1P90i1Nrb1SrA7oSU5GNN/lksA4z6+ZTnsft01YfhRZSYMbgGsARXvkr/VLQ==, + integrity: sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==, } engines: { node: ">=v18" } - "@commitlint/load@19.5.0": + "@commitlint/parse@19.8.1": resolution: { - integrity: sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==, + integrity: sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==, } engines: { node: ">=v18" } - "@commitlint/load@19.8.0": + "@commitlint/read@19.8.1": resolution: { - integrity: sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ==, + integrity: sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==, } engines: { node: ">=v18" } - "@commitlint/message@19.8.0": + "@commitlint/resolve-extends@19.8.1": resolution: { - integrity: sha512-qs/5Vi9bYjf+ZV40bvdCyBn5DvbuelhR6qewLE8Bh476F7KnNyLfdM/ETJ4cp96WgeeHo6tesA2TMXS0sh5X4A==, + integrity: sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==, } engines: { node: ">=v18" } - "@commitlint/parse@19.8.0": + "@commitlint/rules@19.8.1": resolution: { - integrity: sha512-YNIKAc4EXvNeAvyeEnzgvm1VyAe0/b3Wax7pjJSwXuhqIQ1/t2hD3OYRXb6D5/GffIvaX82RbjD+nWtMZCLL7Q==, + integrity: sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==, } engines: { node: ">=v18" } - "@commitlint/read@19.8.0": + "@commitlint/to-lines@19.8.1": resolution: { - integrity: sha512-6ywxOGYajcxK1y1MfzrOnwsXO6nnErna88gRWEl3qqOOP8MDu/DTeRkGLXBFIZuRZ7mm5yyxU5BmeUvMpNte5w==, + integrity: sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==, } engines: { node: ">=v18" } - "@commitlint/resolve-extends@19.5.0": + "@commitlint/top-level@19.8.1": resolution: { - integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==, + integrity: sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==, } engines: { node: ">=v18" } - "@commitlint/resolve-extends@19.8.0": + "@commitlint/types@19.8.1": resolution: { - integrity: sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ==, + integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==, } engines: { node: ">=v18" } - "@commitlint/rules@19.8.0": + "@csstools/cascade-layer-name-parser@2.0.5": resolution: { - integrity: sha512-IZ5IE90h6DSWNuNK/cwjABLAKdy8tP8OgGVGbXe1noBEX5hSsu00uRlLu6JuruiXjWJz2dZc+YSw3H0UZyl/mA==, - } - engines: { node: ">=v18" } - - "@commitlint/to-lines@19.8.0": - resolution: - { - integrity: sha512-3CKLUw41Cur8VMjh16y8LcsOaKbmQjAKCWlXx6B0vOUREplp6em9uIVhI8Cv934qiwkbi2+uv+mVZPnXJi1o9A==, - } - engines: { node: ">=v18" } - - "@commitlint/top-level@19.8.0": - resolution: - { - integrity: sha512-Rphgoc/omYZisoNkcfaBRPQr4myZEHhLPx2/vTXNLjiCw4RgfPR1wEgUpJ9OOmDCiv5ZyIExhprNLhteqH4FuQ==, - } - engines: { node: ">=v18" } - - "@commitlint/types@19.5.0": - resolution: - { - integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==, - } - engines: { node: ">=v18" } - - "@commitlint/types@19.8.0": - resolution: - { - integrity: sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==, - } - engines: { node: ">=v18" } - - "@csstools/cascade-layer-name-parser@2.0.4": - resolution: - { - integrity: sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==, + integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==, } engines: { node: ">=18" } peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 - "@csstools/color-helpers@5.0.2": + "@csstools/color-helpers@5.1.0": resolution: { - integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==, + integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==, } engines: { node: ">=18" } - "@csstools/css-calc@2.1.2": + "@csstools/css-calc@2.1.4": resolution: { - integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==, + integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==, } engines: { node: ">=18" } peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 - "@csstools/css-color-parser@3.0.8": + "@csstools/css-color-parser@3.1.0": resolution: { - integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==, + integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==, } engines: { node: ">=18" } peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 - "@csstools/css-parser-algorithms@3.0.4": + "@csstools/css-parser-algorithms@3.0.5": resolution: { - integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==, + integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==, } engines: { node: ">=18" } peerDependencies: - "@csstools/css-tokenizer": ^3.0.3 + "@csstools/css-tokenizer": ^3.0.4 - "@csstools/css-tokenizer@3.0.3": + "@csstools/css-tokenizer@3.0.4": resolution: { - integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==, + integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==, } engines: { node: ">=18" } - "@csstools/media-query-list-parser@4.0.2": + "@csstools/media-query-list-parser@4.0.3": resolution: { - integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==, + integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==, } engines: { node: ">=18" } peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 - "@csstools/postcss-cascade-layers@5.0.1": + "@csstools/postcss-alpha-function@1.0.0": resolution: { - integrity: sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==, + integrity: sha512-r2L8KNg5Wriq5n8IUQcjzy2Rh37J5YjzP9iOyHZL5fxdWYHB08vqykHQa4wAzN/tXwDuCHnhQDGCtxfS76xn7g==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-function@4.0.8": + "@csstools/postcss-cascade-layers@5.0.2": resolution: { - integrity: sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==, + integrity: sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-mix-function@3.0.8": + "@csstools/postcss-color-function-display-p3-linear@1.0.0": resolution: { - integrity: sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==, + integrity: sha512-7q+OuUqfowRrP84m/Jl0wv3pfCQyUTCW5MxDIux+/yty5IkUUHOTigCjrC0Fjy3OT0ncGLudHbfLWmP7E1arNA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-content-alt-text@2.0.4": + "@csstools/postcss-color-function@4.0.11": resolution: { - integrity: sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw==, + integrity: sha512-AtH22zLHTLm64HLdpv5EedT/zmYTm1MtdQbQhRZXxEB6iYtS6SrS1jLX3TcmUWMFzpumK/OVylCm3HcLms4slw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-exponential-functions@2.0.7": + "@csstools/postcss-color-mix-function@3.0.11": resolution: { - integrity: sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==, + integrity: sha512-cQpXBelpTx0YhScZM5Ve0jDCA4RzwFc7oNafzZOGgCHt/GQVYiU8Vevz9QJcwy/W0Pyi/BneY+KMjz23lI9r+Q==, + } + engines: { node: ">=18" } + peerDependencies: + postcss: ^8.4 + + "@csstools/postcss-color-mix-variadic-function-arguments@1.0.1": + resolution: + { + integrity: sha512-c7hyBtbF+jlHIcUGVdWY06bHICgguV9ypfcELU3eU3W/9fiz2dxM8PqxQk2ndXYTzLnwPvNNqu1yCmQ++N6Dcg==, + } + engines: { node: ">=18" } + peerDependencies: + postcss: ^8.4 + + "@csstools/postcss-content-alt-text@2.0.7": + resolution: + { + integrity: sha512-cq/zWaEkpcg3RttJ5+GdNwk26NwxY5KgqgtNL777Fdd28AVGHxuBvqmK4Jq4oKhW1NX4M2LbgYAVVN0NZ+/XYQ==, + } + engines: { node: ">=18" } + peerDependencies: + postcss: ^8.4 + + "@csstools/postcss-exponential-functions@2.0.9": + resolution: + { + integrity: sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==, } engines: { node: ">=18" } peerDependencies: @@ -1383,37 +1372,37 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-gamut-mapping@2.0.8": + "@csstools/postcss-gamut-mapping@2.0.11": resolution: { - integrity: sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==, + integrity: sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-gradients-interpolation-method@5.0.8": + "@csstools/postcss-gradients-interpolation-method@5.0.11": resolution: { - integrity: sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==, + integrity: sha512-8M3mcNTL3cGIJXDnvrJ2oWEcKi3zyw7NeYheFKePUlBmLYm1gkw9Rr/BA7lFONrOPeQA3yeMPldrrws6lqHrug==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-hwb-function@4.0.8": + "@csstools/postcss-hwb-function@4.0.11": resolution: { - integrity: sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==, + integrity: sha512-9meZbsVWTZkWsSBazQips3cHUOT29a/UAwFz0AMEXukvpIGGDR9+GMl3nIckWO5sPImsadu4F5Zy+zjt8QgCdA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-ic-unit@4.0.0": + "@csstools/postcss-ic-unit@4.0.3": resolution: { - integrity: sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA==, + integrity: sha512-RtYYm2qUIu9vAaHB0cC8rQGlOCQAUgEc2tMr7ewlGXYipBQKjoWmyVArqsk7SEr8N3tErq6P6UOJT3amaVof5Q==, } engines: { node: ">=18" } peerDependencies: @@ -1428,19 +1417,19 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-is-pseudo-class@5.0.1": + "@csstools/postcss-is-pseudo-class@5.0.3": resolution: { - integrity: sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ==, + integrity: sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-light-dark-function@2.0.7": + "@csstools/postcss-light-dark-function@2.0.10": resolution: { - integrity: sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw==, + integrity: sha512-g7Lwb294lSoNnyrwcqoooh9fTAp47rRNo+ILg7SLRSMU3K9ePIwRt566sNx+pehiCelv4E1ICaU1EwLQuyF2qw==, } engines: { node: ">=18" } peerDependencies: @@ -1482,28 +1471,28 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-logical-viewport-units@3.0.3": + "@csstools/postcss-logical-viewport-units@3.0.4": resolution: { - integrity: sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==, + integrity: sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-media-minmax@2.0.7": + "@csstools/postcss-media-minmax@2.0.9": resolution: { - integrity: sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==, + integrity: sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4": + "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5": resolution: { - integrity: sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==, + integrity: sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==, } engines: { node: ">=18" } peerDependencies: @@ -1527,37 +1516,37 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-oklab-function@4.0.8": + "@csstools/postcss-oklab-function@4.0.11": resolution: { - integrity: sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==, + integrity: sha512-9f03ZGxZ2VmSCrM4SDXlAYP+Xpu4VFzemfQUQFL9OYxAbpvDy0FjDipZ0i8So1pgs8VIbQI0bNjFWgfdpGw8ig==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-progressive-custom-properties@4.0.0": + "@csstools/postcss-progressive-custom-properties@4.2.0": resolution: { - integrity: sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==, + integrity: sha512-fWCXRasX17N1NCPTCuwC3FJDV+Wc031f16cFuuMEfIsYJ1q5ABCa59W0C6VeMGqjNv6ldf37vvwXXAeaZjD9PA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-random-function@1.0.3": + "@csstools/postcss-random-function@2.0.1": resolution: { - integrity: sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==, + integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-relative-color-syntax@3.0.8": + "@csstools/postcss-relative-color-syntax@3.0.11": resolution: { - integrity: sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==, + integrity: sha512-oQ5fZvkcBrWR+k6arHXk0F8FlkmD4IxM+rcGDLWrF2f31tWyEM3lSraeWAV0f7BGH6LIrqmyU3+Qo/1acfoJng==, } engines: { node: ">=18" } peerDependencies: @@ -1572,37 +1561,37 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-sign-functions@1.1.2": + "@csstools/postcss-sign-functions@1.1.4": resolution: { - integrity: sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==, + integrity: sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-stepped-value-functions@4.0.7": + "@csstools/postcss-stepped-value-functions@4.0.9": resolution: { - integrity: sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==, + integrity: sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-text-decoration-shorthand@4.0.2": + "@csstools/postcss-text-decoration-shorthand@4.0.3": resolution: { - integrity: sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==, + integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-trigonometric-functions@4.0.7": + "@csstools/postcss-trigonometric-functions@4.0.9": resolution: { - integrity: sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==, + integrity: sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==, } engines: { node: ">=18" } peerDependencies: @@ -1617,10 +1606,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/selector-resolve-nested@3.0.0": + "@csstools/selector-resolve-nested@3.1.0": resolution: { - integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==, + integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==, } engines: { node: ">=18" } peerDependencies: @@ -1650,241 +1639,256 @@ packages: integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==, } - "@emnapi/runtime@1.3.1": + "@emnapi/runtime@1.4.5": resolution: { - integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==, + integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==, } - "@esbuild/aix-ppc64@0.25.0": + "@epic-web/invariant@1.0.0": resolution: { - integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==, + integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==, + } + + "@esbuild/aix-ppc64@0.25.9": + resolution: + { + integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==, } engines: { node: ">=18" } cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.25.0": + "@esbuild/android-arm64@0.25.9": resolution: { - integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==, + integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==, } engines: { node: ">=18" } cpu: [arm64] os: [android] - "@esbuild/android-arm@0.25.0": + "@esbuild/android-arm@0.25.9": resolution: { - integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==, + integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==, } engines: { node: ">=18" } cpu: [arm] os: [android] - "@esbuild/android-x64@0.25.0": + "@esbuild/android-x64@0.25.9": resolution: { - integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==, + integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==, } engines: { node: ">=18" } cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.25.0": + "@esbuild/darwin-arm64@0.25.9": resolution: { - integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==, + integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==, } engines: { node: ">=18" } cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.25.0": + "@esbuild/darwin-x64@0.25.9": resolution: { - integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==, + integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==, } engines: { node: ">=18" } cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.25.0": + "@esbuild/freebsd-arm64@0.25.9": resolution: { - integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==, + integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==, } engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.25.0": + "@esbuild/freebsd-x64@0.25.9": resolution: { - integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==, + integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==, } engines: { node: ">=18" } cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.25.0": + "@esbuild/linux-arm64@0.25.9": resolution: { - integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==, + integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==, } engines: { node: ">=18" } cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.25.0": + "@esbuild/linux-arm@0.25.9": resolution: { - integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==, + integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==, } engines: { node: ">=18" } cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.25.0": + "@esbuild/linux-ia32@0.25.9": resolution: { - integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==, + integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==, } engines: { node: ">=18" } cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.25.0": + "@esbuild/linux-loong64@0.25.9": resolution: { - integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==, + integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==, } engines: { node: ">=18" } cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.25.0": + "@esbuild/linux-mips64el@0.25.9": resolution: { - integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==, + integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==, } engines: { node: ">=18" } cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.25.0": + "@esbuild/linux-ppc64@0.25.9": resolution: { - integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==, + integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==, } engines: { node: ">=18" } cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.25.0": + "@esbuild/linux-riscv64@0.25.9": resolution: { - integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==, + integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==, } engines: { node: ">=18" } cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.25.0": + "@esbuild/linux-s390x@0.25.9": resolution: { - integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==, + integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==, } engines: { node: ">=18" } cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.25.0": + "@esbuild/linux-x64@0.25.9": resolution: { - integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==, + integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==, } engines: { node: ">=18" } cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.25.0": + "@esbuild/netbsd-arm64@0.25.9": resolution: { - integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==, + integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==, } engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.25.0": + "@esbuild/netbsd-x64@0.25.9": resolution: { - integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==, + integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==, } engines: { node: ">=18" } cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.25.0": + "@esbuild/openbsd-arm64@0.25.9": resolution: { - integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==, + integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==, } engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.25.0": + "@esbuild/openbsd-x64@0.25.9": resolution: { - integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==, + integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==, } engines: { node: ">=18" } cpu: [x64] os: [openbsd] - "@esbuild/sunos-x64@0.25.0": + "@esbuild/openharmony-arm64@0.25.9": resolution: { - integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==, + integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [openharmony] + + "@esbuild/sunos-x64@0.25.9": + resolution: + { + integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==, } engines: { node: ">=18" } cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.25.0": + "@esbuild/win32-arm64@0.25.9": resolution: { - integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==, + integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==, } engines: { node: ">=18" } cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.25.0": + "@esbuild/win32-ia32@0.25.9": resolution: { - integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==, + integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==, } engines: { node: ">=18" } cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.25.0": + "@esbuild/win32-x64@0.25.9": resolution: { - integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==, + integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==, } engines: { node: ">=18" } cpu: [x64] os: [win32] - "@eslint-community/eslint-utils@4.4.1": + "@eslint-community/eslint-utils@4.7.0": resolution: { - integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==, + integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==, } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: @@ -1897,38 +1901,38 @@ packages: } engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - "@eslint/config-array@0.19.2": + "@eslint/config-array@0.21.0": resolution: { - integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==, + integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/config-helpers@0.1.0": + "@eslint/config-helpers@0.3.1": resolution: { - integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==, + integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/core@0.12.0": + "@eslint/core@0.15.2": resolution: { - integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==, + integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/eslintrc@3.3.0": + "@eslint/eslintrc@3.3.1": resolution: { - integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==, + integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/js@9.22.0": + "@eslint/js@9.34.0": resolution: { - integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==, + integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -1939,29 +1943,29 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/plugin-kit@0.2.7": + "@eslint/plugin-kit@0.3.5": resolution: { - integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==, + integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@floating-ui/core@1.6.8": + "@floating-ui/core@1.7.3": resolution: { - integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==, + integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==, } - "@floating-ui/dom@1.6.13": + "@floating-ui/dom@1.7.4": resolution: { - integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==, + integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==, } - "@floating-ui/utils@0.2.9": + "@floating-ui/utils@0.2.10": resolution: { - integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==, + integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==, } "@foliojs-fork/fontkit@1.9.2": @@ -1976,10 +1980,10 @@ packages: integrity: sha512-ZPohpxxbuKNE0l/5iBJnOAfUaMACwvUIKCvqtWGKIMv1lPYoNjYXRfhi9FeeV9McBkBLxsMFWTVVhHJA8cyzvg==, } - "@foliojs-fork/pdfkit@0.15.1": + "@foliojs-fork/pdfkit@0.15.3": resolution: { - integrity: sha512-4Cq2onHZAhThIfzv3/AFTPALqHzbmV8uNvgRELULWNbsZATgVeqEL4zHOzCyblLfX6tMXVO2BVaPcXboIxGjiw==, + integrity: sha512-Obc0Wmy3bm7BINFVvPhcl2rnSSK61DQrlHU8aXnAqDk9LCjWdUOPwhgD8Ywz5VtuFjRxmVOM/kQ/XLIBjDvltw==, } "@foliojs-fork/restructure@2.0.2": @@ -2006,10 +2010,10 @@ packages: integrity: sha512-AlquKGee+IWiAMYVB0xyHFZRMnu4n3X4HTvJHu79GiVJ1ojTukCWyxMlF5NMsecoLcBKsuBhx3QPv2vkE/zQ0A==, } - "@github/relative-time-element@4.4.5": + "@github/relative-time-element@4.4.8": resolution: { - integrity: sha512-9ejPtayBDIJfEU8x1fg/w2o5mahHkkp1SC6uObDtoKs4Gn+2a1vNK8XIiNDD8rMeEfpvDjydgSZZ+uk+7N0VsQ==, + integrity: sha512-FSLYm6F3TSQnqHE1EMQUVVgi2XjbCvsESwwXfugHFpBnhyF1uhJOtu0Psp/BB/qqazfdkk7f5fVcu7WuXl3t8Q==, } "@humanfs/core@0.19.1": @@ -2040,175 +2044,215 @@ packages: } engines: { node: ">=18.18" } - "@humanwhocodes/retry@0.4.2": + "@humanwhocodes/retry@0.4.3": resolution: { - integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==, + integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, } engines: { node: ">=18.18" } - "@img/sharp-darwin-arm64@0.33.5": + "@img/sharp-darwin-arm64@0.34.3": resolution: { - integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==, + integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [darwin] - "@img/sharp-darwin-x64@0.33.5": + "@img/sharp-darwin-x64@0.34.3": resolution: { - integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==, + integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [darwin] - "@img/sharp-libvips-darwin-arm64@1.0.4": + "@img/sharp-libvips-darwin-arm64@1.2.0": resolution: { - integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==, + integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==, } cpu: [arm64] os: [darwin] - "@img/sharp-libvips-darwin-x64@1.0.4": + "@img/sharp-libvips-darwin-x64@1.2.0": resolution: { - integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==, + integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==, } cpu: [x64] os: [darwin] - "@img/sharp-libvips-linux-arm64@1.0.4": + "@img/sharp-libvips-linux-arm64@1.2.0": resolution: { - integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==, + integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==, } cpu: [arm64] os: [linux] - "@img/sharp-libvips-linux-arm@1.0.5": + "@img/sharp-libvips-linux-arm@1.2.0": resolution: { - integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==, + integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==, } cpu: [arm] os: [linux] - "@img/sharp-libvips-linux-s390x@1.0.4": + "@img/sharp-libvips-linux-ppc64@1.2.0": resolution: { - integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==, + integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==, + } + cpu: [ppc64] + os: [linux] + + "@img/sharp-libvips-linux-s390x@1.2.0": + resolution: + { + integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==, } cpu: [s390x] os: [linux] - "@img/sharp-libvips-linux-x64@1.0.4": + "@img/sharp-libvips-linux-x64@1.2.0": resolution: { - integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==, + integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==, } cpu: [x64] os: [linux] - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": + "@img/sharp-libvips-linuxmusl-arm64@1.2.0": resolution: { - integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==, + integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==, } cpu: [arm64] os: [linux] - "@img/sharp-libvips-linuxmusl-x64@1.0.4": + "@img/sharp-libvips-linuxmusl-x64@1.2.0": resolution: { - integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==, + integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==, } cpu: [x64] os: [linux] - "@img/sharp-linux-arm64@0.33.5": + "@img/sharp-linux-arm64@0.34.3": resolution: { - integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==, + integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [linux] - "@img/sharp-linux-arm@0.33.5": + "@img/sharp-linux-arm@0.34.3": resolution: { - integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==, + integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm] os: [linux] - "@img/sharp-linux-s390x@0.33.5": + "@img/sharp-linux-ppc64@0.34.3": resolution: { - integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==, + integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [ppc64] + os: [linux] + + "@img/sharp-linux-s390x@0.34.3": + resolution: + { + integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [s390x] os: [linux] - "@img/sharp-linux-x64@0.33.5": + "@img/sharp-linux-x64@0.34.3": resolution: { - integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==, + integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] - "@img/sharp-linuxmusl-arm64@0.33.5": + "@img/sharp-linuxmusl-arm64@0.34.3": resolution: { - integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==, + integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [linux] - "@img/sharp-linuxmusl-x64@0.33.5": + "@img/sharp-linuxmusl-x64@0.34.3": resolution: { - integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==, + integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] - "@img/sharp-wasm32@0.33.5": + "@img/sharp-wasm32@0.34.3": resolution: { - integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==, + integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [wasm32] - "@img/sharp-win32-ia32@0.33.5": + "@img/sharp-win32-arm64@0.34.3": resolution: { - integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==, + integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [win32] + + "@img/sharp-win32-ia32@0.34.3": + resolution: + { + integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [ia32] os: [win32] - "@img/sharp-win32-x64@0.33.5": + "@img/sharp-win32-x64@0.34.3": resolution: { - integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==, + integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [win32] + "@isaacs/balanced-match@4.0.1": + resolution: + { + integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==, + } + engines: { node: 20 || >=22 } + + "@isaacs/brace-expansion@5.0.0": + resolution: + { + integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==, + } + engines: { node: 20 || >=22 } + "@isaacs/cliui@8.0.2": resolution: { @@ -2216,12 +2260,11 @@ packages: } engines: { node: ">=12" } - "@jridgewell/gen-mapping@0.3.5": + "@jridgewell/gen-mapping@0.3.13": resolution: { - integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==, + integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, } - engines: { node: ">=6.0.0" } "@jridgewell/resolve-uri@3.1.2": resolution: @@ -2230,35 +2273,28 @@ packages: } engines: { node: ">=6.0.0" } - "@jridgewell/set-array@1.2.1": + "@jridgewell/source-map@0.3.11": resolution: { - integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/source-map@0.3.6": - resolution: - { - integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==, + integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==, } - "@jridgewell/sourcemap-codec@1.5.0": + "@jridgewell/sourcemap-codec@1.5.5": resolution: { - integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==, + integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, } - "@jridgewell/trace-mapping@0.3.25": + "@jridgewell/trace-mapping@0.3.30": resolution: { - integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, + integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==, } - "@keyv/serialize@1.0.2": + "@keyv/serialize@1.1.0": resolution: { - integrity: sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==, + integrity: sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==, } "@lezer/common@1.2.3": @@ -2267,10 +2303,10 @@ packages: integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==, } - "@lezer/css@1.1.9": + "@lezer/css@1.3.0": resolution: { - integrity: sha512-TYwgljcDv+YrV0MZFFvYFQHCfGgbPMR6nuqLabBdmZoFH3EP1gvw8t0vae326Ne3PszQkbXfVBjCnf3ZVCr0bA==, + integrity: sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw==, } "@lezer/highlight@1.2.1": @@ -2285,10 +2321,10 @@ packages: integrity: sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==, } - "@lezer/javascript@1.4.21": + "@lezer/javascript@1.5.1": resolution: { - integrity: sha512-lL+1fcuxWYPURMM/oFZLEDm0XuLN128QPV+VuGtKpeaOGdcl9F2LYC3nh1S9LkPqx9M0mndZFdXCipNAZpzIkQ==, + integrity: sha512-ATOImjeVJuvgm3JQ/bpo2Tmv55HSScE2MTPnKRMRIPx2cLhHGyX2VnqpHhtIV1tVzIjZDbcWQm+NCTF40ggZVw==, } "@lezer/lr@1.4.2": @@ -2297,28 +2333,28 @@ packages: integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==, } - "@lezer/xml@1.0.5": + "@lezer/xml@1.0.6": resolution: { - integrity: sha512-VFouqOzmUWfIg+tfmpcdV33ewtK+NSwd4ngSe1aG7HFb4BN0ExyY1b8msp+ndFrnlG4V4iC8yXacjFtrwERnaw==, + integrity: sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==, } - "@lit-labs/ssr-dom-shim@1.2.1": + "@lit-labs/ssr-dom-shim@1.4.0": resolution: { - integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==, + integrity: sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==, } - "@lit/context@1.1.3": + "@lit/context@1.1.6": resolution: { - integrity: sha512-Auh37F4S0PZM93HTDfZWs97mmzaQ7M3vnTc9YvxAGyP3UItSK/8Fs0vTOGT+njuvOwbKio/l8Cx/zWL4vkutpQ==, + integrity: sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A==, } - "@lit/reactive-element@2.0.4": + "@lit/reactive-element@2.1.1": resolution: { - integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==, + integrity: sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==, } "@marijn/find-cluster-break@1.0.2": @@ -2348,91 +2384,91 @@ packages: } engines: { node: ">= 8" } - "@octokit/auth-token@5.1.1": + "@octokit/auth-token@6.0.0": resolution: { - integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==, + integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } - "@octokit/core@6.1.2": + "@octokit/core@7.0.3": resolution: { - integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==, + integrity: sha512-oNXsh2ywth5aowwIa7RKtawnkdH6LgU1ztfP9AIUCQCvzysB+WeU8o2kyyosDPwBZutPpjZDKPQGIzzrfTWweQ==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } - "@octokit/endpoint@10.1.1": + "@octokit/endpoint@11.0.0": resolution: { - integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==, + integrity: sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } - "@octokit/graphql@8.1.1": + "@octokit/graphql@9.0.1": resolution: { - integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==, + integrity: sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } - "@octokit/openapi-types@22.2.0": + "@octokit/openapi-types@25.1.0": resolution: { - integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==, + integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==, } - "@octokit/plugin-paginate-rest@11.3.5": + "@octokit/plugin-paginate-rest@13.1.1": resolution: { - integrity: sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==, + integrity: sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } peerDependencies: "@octokit/core": ">=6" - "@octokit/plugin-retry@7.1.2": + "@octokit/plugin-retry@8.0.1": resolution: { - integrity: sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==, + integrity: sha512-KUoYR77BjF5O3zcwDQHRRZsUvJwepobeqiSSdCJ8lWt27FZExzb0GgVxrhhfuyF6z2B2zpO0hN5pteni1sqWiw==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } peerDependencies: - "@octokit/core": ">=6" + "@octokit/core": ">=7" - "@octokit/plugin-throttling@9.3.2": + "@octokit/plugin-throttling@11.0.1": resolution: { - integrity: sha512-FqpvcTpIWFpMMwIeSoypoJXysSAQ3R+ALJhXXSG1HTP3YZOIeLmcNcimKaXxTcws+Sh6yoRl13SJ5r8sXc1Fhw==, + integrity: sha512-S+EVhy52D/272L7up58dr3FNSMXWuNZolkL4zMJBNIfIxyZuUcczsQAU4b5w6dewJXnKYVgSHSV5wxitMSW1kw==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } peerDependencies: - "@octokit/core": ^6.0.0 + "@octokit/core": ^7.0.0 - "@octokit/request-error@6.1.5": + "@octokit/request-error@7.0.0": resolution: { - integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==, + integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } - "@octokit/request@9.1.3": + "@octokit/request@10.0.3": resolution: { - integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==, + integrity: sha512-V6jhKokg35vk098iBqp2FBKunk3kMTXlmq+PtbV9Gl3TfskWlebSofU9uunVKhUN7xl+0+i5vt0TGTG8/p/7HA==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } - "@octokit/types@13.6.1": + "@octokit/types@14.1.0": resolution: { - integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==, + integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==, } - "@patternfly/elements@4.0.2": + "@patternfly/elements@4.2.0": resolution: { - integrity: sha512-JaM4l2aWE4GXVzqWN90oYsi2w4YhkWWG18cSDoh0qemi8iZNoD74DrUYn1KdZz3FS7q2G05X7ST4wr7qbsOceQ==, + integrity: sha512-GXVpEfiQzfZwEprUJ9QhSdRyIXDJRm1LT0r88+zlXCGGFDLzMdOlI3+krxQJlv1b+v3VPph4HY/VaGZT8Uxo+w==, } "@patternfly/icons@1.0.3": @@ -2441,10 +2477,10 @@ packages: integrity: sha512-8BARaCFBUZU2/TxuOQb8R2/VIpxGMnFwdw5ddT1AMnR2KSifdo+d05SgZtVmFkOIAOA0oCo/YKRgSORDA47wig==, } - "@patternfly/pfe-core@4.0.4": + "@patternfly/pfe-core@5.0.3": resolution: { - integrity: sha512-KsU3J2/65U+tRMqOfRaJL5BbLLR9rBT+O1fSKp7k27tKfRb/3eXs0CGi5VJr3IdO5/CvIYUXm2paEUXAdqbf3w==, + integrity: sha512-tKc9YfbXD5kzUr6ssa5gKicKgWf+CEax3auvv0yv5jJ42RFMhDRVO0YWalPi5iBl70XHNentpMmdHioC00TJAw==, } "@pkgjs/parseargs@0.11.0": @@ -2454,10 +2490,10 @@ packages: } engines: { node: ">=14" } - "@pkgr/core@0.1.1": + "@pkgr/core@0.2.9": resolution: { - integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==, + integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==, } engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } @@ -2482,10 +2518,10 @@ packages: } engines: { node: ">=12" } - "@polka/url@1.0.0-next.28": + "@polka/url@1.0.0-next.29": resolution: { - integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==, + integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==, } "@rollup/plugin-babel@5.3.1": @@ -2502,10 +2538,10 @@ packages: "@types/babel__core": optional: true - "@rollup/plugin-node-resolve@15.3.0": + "@rollup/plugin-node-resolve@15.3.1": resolution: { - integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==, + integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==, } engines: { node: ">=14.0.0" } peerDependencies: @@ -2543,10 +2579,10 @@ packages: peerDependencies: rollup: ^1.20.0||^2.0.0 - "@rollup/pluginutils@5.1.3": + "@rollup/pluginutils@5.2.0": resolution: { - integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==, + integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==, } engines: { node: ">=14.0.0" } peerDependencies: @@ -2555,154 +2591,162 @@ packages: rollup: optional: true - "@rollup/rollup-android-arm-eabi@4.34.8": + "@rollup/rollup-android-arm-eabi@4.48.1": resolution: { - integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==, + integrity: sha512-rGmb8qoG/zdmKoYELCBwu7vt+9HxZ7Koos3pD0+sH5fR3u3Wb/jGcpnqxcnWsPEKDUyzeLSqksN8LJtgXjqBYw==, } cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.34.8": + "@rollup/rollup-android-arm64@4.48.1": resolution: { - integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==, + integrity: sha512-4e9WtTxrk3gu1DFE+imNJr4WsL13nWbD/Y6wQcyku5qadlKHY3OQ3LJ/INrrjngv2BJIHnIzbqMk1GTAC2P8yQ==, } cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.34.8": + "@rollup/rollup-darwin-arm64@4.48.1": resolution: { - integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==, + integrity: sha512-+XjmyChHfc4TSs6WUQGmVf7Hkg8ferMAE2aNYYWjiLzAS/T62uOsdfnqv+GHRjq7rKRnYh4mwWb4Hz7h/alp8A==, } cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.34.8": + "@rollup/rollup-darwin-x64@4.48.1": resolution: { - integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==, + integrity: sha512-upGEY7Ftw8M6BAJyGwnwMw91rSqXTcOKZnnveKrVWsMTF8/k5mleKSuh7D4v4IV1pLxKAk3Tbs0Lo9qYmii5mQ==, } cpu: [x64] os: [darwin] - "@rollup/rollup-freebsd-arm64@4.34.8": + "@rollup/rollup-freebsd-arm64@4.48.1": resolution: { - integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==, + integrity: sha512-P9ViWakdoynYFUOZhqq97vBrhuvRLAbN/p2tAVJvhLb8SvN7rbBnJQcBu8e/rQts42pXGLVhfsAP0k9KXWa3nQ==, } cpu: [arm64] os: [freebsd] - "@rollup/rollup-freebsd-x64@4.34.8": + "@rollup/rollup-freebsd-x64@4.48.1": resolution: { - integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==, + integrity: sha512-VLKIwIpnBya5/saccM8JshpbxfyJt0Dsli0PjXozHwbSVaHTvWXJH1bbCwPXxnMzU4zVEfgD1HpW3VQHomi2AQ==, } cpu: [x64] os: [freebsd] - "@rollup/rollup-linux-arm-gnueabihf@4.34.8": + "@rollup/rollup-linux-arm-gnueabihf@4.48.1": resolution: { - integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==, + integrity: sha512-3zEuZsXfKaw8n/yF7t8N6NNdhyFw3s8xJTqjbTDXlipwrEHo4GtIKcMJr5Ed29leLpB9AugtAQpAHW0jvtKKaQ==, } cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm-musleabihf@4.34.8": + "@rollup/rollup-linux-arm-musleabihf@4.48.1": resolution: { - integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==, + integrity: sha512-leo9tOIlKrcBmmEypzunV/2w946JeLbTdDlwEZ7OnnsUyelZ72NMnT4B2vsikSgwQifjnJUbdXzuW4ToN1wV+Q==, } cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm64-gnu@4.34.8": + "@rollup/rollup-linux-arm64-gnu@4.48.1": resolution: { - integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==, + integrity: sha512-Vy/WS4z4jEyvnJm+CnPfExIv5sSKqZrUr98h03hpAMbE2aI0aD2wvK6GiSe8Gx2wGp3eD81cYDpLLBqNb2ydwQ==, } cpu: [arm64] os: [linux] - "@rollup/rollup-linux-arm64-musl@4.34.8": + "@rollup/rollup-linux-arm64-musl@4.48.1": resolution: { - integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==, + integrity: sha512-x5Kzn7XTwIssU9UYqWDB9VpLpfHYuXw5c6bJr4Mzv9kIv242vmJHbI5PJJEnmBYitUIfoMCODDhR7KoZLot2VQ==, } cpu: [arm64] os: [linux] - "@rollup/rollup-linux-loongarch64-gnu@4.34.8": + "@rollup/rollup-linux-loongarch64-gnu@4.48.1": resolution: { - integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==, + integrity: sha512-yzCaBbwkkWt/EcgJOKDUdUpMHjhiZT/eDktOPWvSRpqrVE04p0Nd6EGV4/g7MARXXeOqstflqsKuXVM3H9wOIQ==, } cpu: [loong64] os: [linux] - "@rollup/rollup-linux-powerpc64le-gnu@4.34.8": + "@rollup/rollup-linux-ppc64-gnu@4.48.1": resolution: { - integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==, + integrity: sha512-UK0WzWUjMAJccHIeOpPhPcKBqax7QFg47hwZTp6kiMhQHeOYJeaMwzeRZe1q5IiTKsaLnHu9s6toSYVUlZ2QtQ==, } cpu: [ppc64] os: [linux] - "@rollup/rollup-linux-riscv64-gnu@4.34.8": + "@rollup/rollup-linux-riscv64-gnu@4.48.1": resolution: { - integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==, + integrity: sha512-3NADEIlt+aCdCbWVZ7D3tBjBX1lHpXxcvrLt/kdXTiBrOds8APTdtk2yRL2GgmnSVeX4YS1JIf0imFujg78vpw==, } cpu: [riscv64] os: [linux] - "@rollup/rollup-linux-s390x-gnu@4.34.8": + "@rollup/rollup-linux-riscv64-musl@4.48.1": resolution: { - integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==, + integrity: sha512-euuwm/QTXAMOcyiFCcrx0/S2jGvFlKJ2Iro8rsmYL53dlblp3LkUQVFzEidHhvIPPvcIsxDhl2wkBE+I6YVGzA==, + } + cpu: [riscv64] + os: [linux] + + "@rollup/rollup-linux-s390x-gnu@4.48.1": + resolution: + { + integrity: sha512-w8mULUjmPdWLJgmTYJx/W6Qhln1a+yqvgwmGXcQl2vFBkWsKGUBRbtLRuKJUln8Uaimf07zgJNxOhHOvjSQmBQ==, } cpu: [s390x] os: [linux] - "@rollup/rollup-linux-x64-gnu@4.34.8": + "@rollup/rollup-linux-x64-gnu@4.48.1": resolution: { - integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==, + integrity: sha512-90taWXCWxTbClWuMZD0DKYohY1EovA+W5iytpE89oUPmT5O1HFdf8cuuVIylE6vCbrGdIGv85lVRzTcpTRZ+kA==, } cpu: [x64] os: [linux] - "@rollup/rollup-linux-x64-musl@4.34.8": + "@rollup/rollup-linux-x64-musl@4.48.1": resolution: { - integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==, + integrity: sha512-2Gu29SkFh1FfTRuN1GR1afMuND2GKzlORQUP3mNMJbqdndOg7gNsa81JnORctazHRokiDzQ5+MLE5XYmZW5VWg==, } cpu: [x64] os: [linux] - "@rollup/rollup-win32-arm64-msvc@4.34.8": + "@rollup/rollup-win32-arm64-msvc@4.48.1": resolution: { - integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==, + integrity: sha512-6kQFR1WuAO50bxkIlAVeIYsz3RUx+xymwhTo9j94dJ+kmHe9ly7muH23sdfWduD0BA8pD9/yhonUvAjxGh34jQ==, } cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.34.8": + "@rollup/rollup-win32-ia32-msvc@4.48.1": resolution: { - integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==, + integrity: sha512-RUyZZ/mga88lMI3RlXFs4WQ7n3VyU07sPXmMG7/C1NOi8qisUg57Y7LRarqoGoAiopmGmChUhSwfpvQ3H5iGSQ==, } cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.34.8": + "@rollup/rollup-win32-x64-msvc@4.48.1": resolution: { - integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==, + integrity: sha512-8a/caCUN4vkTChxkaIJcMtwIVcBhi4X2PQRoT+yCK3qRYaZ7cURrmJFL5Ux9H9RaMIXj9RuihckdmkBX3zZsgg==, } cpu: [x64] os: [win32] @@ -2722,10 +2766,10 @@ packages: peerDependencies: semantic-release: ">=18.0.0" - "@semantic-release/commit-analyzer@13.0.0": + "@semantic-release/commit-analyzer@13.0.1": resolution: { - integrity: sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==, + integrity: sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==, } engines: { node: ">=20.8.1" } peerDependencies: @@ -2745,10 +2789,10 @@ packages: } engines: { node: ">=18" } - "@semantic-release/exec@7.0.3": + "@semantic-release/exec@7.1.0": resolution: { - integrity: sha512-uNWwPNtWi3WTcTm3fWfFQEuj8otOvwoS5m9yo2jSVHuvqdZNsOWmuL0/FqcVyZnCI32fxyYV0G7PPb/TzCH6jw==, + integrity: sha512-4ycZ2atgEUutspPZ2hxO6z8JoQt4+y/kkHvfZ1cZxgl9WKJId1xPj+UadwInj+gMn2Gsv+fLnbrZ4s+6tK2TFQ==, } engines: { node: ">=20.8.1" } peerDependencies: @@ -2763,37 +2807,37 @@ packages: peerDependencies: semantic-release: ">=18.0.0" - "@semantic-release/github@11.0.0": + "@semantic-release/github@11.0.4": resolution: { - integrity: sha512-Uon6G6gJD8U1JNvPm7X0j46yxNRJ8Ui6SgK4Zw5Ktu8RgjEft3BGn+l/RX1TTzhhO3/uUcKuqM+/9/ETFxWS/Q==, + integrity: sha512-fU/nLSjkp9DmB0h7FVO5imhhWJMvq2LjD4+3lz3ZAzpDLY9+KYwC+trJ+g7LbZeJv9y3L9fSFSg2DduUpiT6bw==, } engines: { node: ">=20.8.1" } peerDependencies: semantic-release: ">=24.1.0" - "@semantic-release/gitlab@13.2.4": + "@semantic-release/gitlab@13.2.8": resolution: { - integrity: sha512-oj9LphVriiNyrB3oV/6tMxXrtYMaoq3VKUe7gxxkZIp4KmRhFbeSsxDrEGDnTke8uTm2PKAqgsGjD9oocv7bKw==, + integrity: sha512-uTRRpTHHMQ4kC94E5yN18tkpVZ/gxtFDfWhfluE7xS3AhNG2cBKuZi0cDp0kwdMpiNRB6YdPTnLyXJxV7BKoiA==, } engines: { node: ">=20.8.1" } peerDependencies: semantic-release: ">=20.1.0" - "@semantic-release/npm@12.0.1": + "@semantic-release/npm@12.0.2": resolution: { - integrity: sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==, + integrity: sha512-+M9/Lb35IgnlUO6OSJ40Ie+hUsZLuph2fqXC/qrKn0fMvUU/jiCjpoL6zEm69vzcmaZJ8yNKtMBEKHWN49WBbQ==, } engines: { node: ">=20.8.1" } peerDependencies: semantic-release: ">=20.1.0" - "@semantic-release/release-notes-generator@14.0.1": + "@semantic-release/release-notes-generator@14.0.3": resolution: { - integrity: sha512-K0w+5220TM4HZTthE5dDpIuFrnkN1NfTGPidJFm04ULT1DEZ9WG89VNXN7F0c+6nMEpWgqmPvb7vY7JkB2jyyA==, + integrity: sha512-XxAZRPWGwO5JwJtS83bRdoIhCiYIx8Vhr+u231pQAsdFIAbm19rSVJLdnBN+Avvk7CKvNQE/nJ4y7uqKH6WTiw==, } engines: { node: ">=20.8.1" } peerDependencies: @@ -2806,10 +2850,10 @@ packages: } engines: { node: ">=10" } - "@sindresorhus/is@7.0.1": + "@sindresorhus/is@7.0.2": resolution: { - integrity: sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==, + integrity: sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==, } engines: { node: ">=18" } @@ -2864,17 +2908,10 @@ packages: peerDependencies: tailwindcss: ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" - "@trysound/sax@0.2.0": + "@types/conventional-commits-parser@5.0.1": resolution: { - integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==, - } - engines: { node: ">=10.13.0" } - - "@types/conventional-commits-parser@5.0.0": - resolution: - { - integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==, + integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==, } "@types/eslint@9.6.1": @@ -2889,10 +2926,10 @@ packages: integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==, } - "@types/estree@1.0.6": + "@types/estree@1.0.8": resolution: { - integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==, + integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, } "@types/fscreen@1.0.4": @@ -2901,10 +2938,10 @@ packages: integrity: sha512-TsjxyAUvlvuQyao9vNk0yES4nY07K9xoAbkhgXU948JG39EqlLxniWuW9OiZde9Q8ACSpu3fmbXXRAfb/l/HqQ==, } - "@types/geojson@7946.0.14": + "@types/geojson@7946.0.16": resolution: { - integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==, + integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==, } "@types/http-cache-semantics@4.0.4": @@ -2919,16 +2956,16 @@ packages: integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, } - "@types/leaflet@1.9.16": + "@types/leaflet@1.9.20": resolution: { - integrity: sha512-wzZoyySUxkgMZ0ihJ7IaUIblG8Rdc8AbbZKLneyn+QjYsj5q1QU7TEKYqwTr10BGSzY5LI7tJk9Ifo+mEjdFRw==, + integrity: sha512-rooalPMlk61LCaLOvBF2VIf9M47HgMQqi5xQ9QRi7c8PkdIe0WrIi5IxXUXQjAdL0c+vcQ01mYWbthzmp9GHWw==, } - "@types/node@22.9.0": + "@types/node@24.3.0": resolution: { - integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==, + integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==, } "@types/normalize-package-data@2.4.4": @@ -2937,98 +2974,104 @@ packages: integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, } - "@types/parse-path@7.0.3": - resolution: - { - integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==, - } - "@types/resolve@1.20.2": resolution: { integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, } - "@types/semver@7.5.8": - resolution: - { - integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==, - } - "@types/trusted-types@2.0.7": resolution: { integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, } - "@typescript-eslint/eslint-plugin@8.26.1": + "@typescript-eslint/eslint-plugin@8.41.0": resolution: { - integrity: sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==, + integrity: sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + "@typescript-eslint/parser": ^8.41.0 eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" + typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/parser@8.26.1": + "@typescript-eslint/parser@8.41.0": resolution: { - integrity: sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==, + integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" + typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/scope-manager@8.26.1": + "@typescript-eslint/project-service@8.41.0": resolution: { - integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==, + integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/scope-manager@8.41.0": + resolution: + { + integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/type-utils@8.26.1": + "@typescript-eslint/tsconfig-utils@8.41.0": resolution: { - integrity: sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==, + integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/type-utils@8.41.0": + resolution: + { + integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" + typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/types@8.26.1": + "@typescript-eslint/types@8.41.0": resolution: { - integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==, + integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/typescript-estree@8.26.1": + "@typescript-eslint/typescript-estree@8.41.0": resolution: { - integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==, + integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: ">=4.8.4 <5.9.0" + typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/utils@8.26.1": + "@typescript-eslint/utils@8.41.0": resolution: { - integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==, + integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" + typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/visitor-keys@8.26.1": + "@typescript-eslint/visitor-keys@8.41.0": resolution: { - integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==, + integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -3053,18 +3096,18 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.0: + acorn@8.15.0: resolution: { - integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==, + integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==, } engines: { node: ">=0.4.0" } hasBin: true - agent-base@7.1.1: + agent-base@7.1.4: resolution: { - integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==, + integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, } engines: { node: ">= 14" } @@ -3123,10 +3166,10 @@ packages: } engines: { node: ">=8" } - ansi-regex@6.1.0: + ansi-regex@6.2.0: resolution: { - integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==, + integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==, } engines: { node: ">=12" } @@ -3151,10 +3194,10 @@ packages: } engines: { node: ">=12" } - ansis@3.16.0: + ansis@4.1.0: resolution: { - integrity: sha512-sU7d/tfZiYrsIAXbdL/CNZld5bCkruzwT5KmqmadCJYxuLxHAOBjidxD5+iLmN/6xEfjcQq1l7OpsiCBlc4LzA==, + integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==, } engines: { node: ">=14" } @@ -3189,10 +3232,10 @@ packages: integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==, } - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.2: resolution: { - integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==, + integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==, } engines: { node: ">= 0.4" } @@ -3209,10 +3252,10 @@ packages: } engines: { node: ">=8" } - arraybuffer.prototype.slice@1.0.3: + arraybuffer.prototype.slice@1.0.4: resolution: { - integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==, + integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==, } engines: { node: ">= 0.4" } @@ -3223,6 +3266,13 @@ packages: } engines: { node: ">=8" } + async-function@1.0.0: + resolution: + { + integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==, + } + engines: { node: ">= 0.4" } + async@3.2.6: resolution: { @@ -3236,10 +3286,10 @@ packages: } engines: { node: ">= 4.0.0" } - autoprefixer@10.4.20: + autoprefixer@10.4.21: resolution: { - integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==, + integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==, } engines: { node: ^10 || ^12 || >=14 } hasBin: true @@ -3253,26 +3303,26 @@ packages: } engines: { node: ">= 0.4" } - babel-plugin-polyfill-corejs2@0.4.11: + babel-plugin-polyfill-corejs2@0.4.14: resolution: { - integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==, + integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==, } peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.10.6: + babel-plugin-polyfill-corejs3@0.13.0: resolution: { - integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==, + integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, } peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.2: + babel-plugin-polyfill-regenerator@0.6.5: resolution: { - integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==, + integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==, } peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -3301,10 +3351,10 @@ packages: integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, } - before-after-hook@3.0.2: + before-after-hook@4.0.0: resolution: { - integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==, + integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==, } binary-extensions@2.3.0: @@ -3314,10 +3364,10 @@ packages: } engines: { node: ">=8" } - birpc@2.2.0: + birpc@2.5.0: resolution: { - integrity: sha512-1/22obknhoj56PcE+pZPp6AbWDdY55M81/ofpPW3Ltlp9Eh4zoFFLswvZmNpRTb790CY5tsNfgbYeNOqIARJfQ==, + integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==, } bl@4.1.0: @@ -3338,16 +3388,16 @@ packages: integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==, } - brace-expansion@1.1.11: + brace-expansion@1.1.12: resolution: { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==, } - brace-expansion@2.0.1: + brace-expansion@2.0.2: resolution: { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==, } braces@3.0.3: @@ -3363,18 +3413,10 @@ packages: integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==, } - browserslist@4.24.2: + browserslist@4.25.3: resolution: { - integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true - - browserslist@4.24.4: - resolution: - { - integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==, + integrity: sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==, } engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true @@ -3391,12 +3433,6 @@ packages: integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, } - buffer@6.0.3: - resolution: - { - integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, - } - bundle-name@4.1.0: resolution: { @@ -3418,10 +3454,10 @@ packages: } engines: { node: ">=18" } - cacheable@1.8.8: + cacheable@1.10.4: resolution: { - integrity: sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw==, + integrity: sha512-Gd7ccIUkZ9TE2odLQVS+PDjIvQCdJKUlLdJRVvZu0aipj07Qfx+XIej7hhDrKGGoIxV5m5fT/kOJNJPQhQneRg==, } cachedir@2.3.0: @@ -3431,10 +3467,24 @@ packages: } engines: { node: ">=6" } - call-bind@1.0.7: + call-bind-apply-helpers@1.0.2: resolution: { - integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==, + integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, + } + engines: { node: ">= 0.4" } + + call-bind@1.0.8: + resolution: + { + integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==, + } + engines: { node: ">= 0.4" } + + call-bound@1.0.4: + resolution: + { + integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, } engines: { node: ">= 0.4" } @@ -3465,16 +3515,10 @@ packages: integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==, } - caniuse-lite@1.0.30001677: + caniuse-lite@1.0.30001737: resolution: { - integrity: sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==, - } - - caniuse-lite@1.0.30001700: - resolution: - { - integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==, + integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==, } chalk@2.4.2: @@ -3491,17 +3535,10 @@ packages: } engines: { node: ">=10" } - chalk@5.3.0: + chalk@5.6.0: resolution: { - integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, - } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } - - chalk@5.4.1: - resolution: - { - integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==, + integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==, } engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } @@ -3531,10 +3568,10 @@ packages: } engines: { node: ">= 8.10.0" } - ci-info@4.1.0: + ci-info@4.3.0: resolution: { - integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==, + integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==, } engines: { node: ">=8" } @@ -3628,10 +3665,10 @@ packages: } engines: { node: ">=0.8" } - codemirror@6.0.1: + codemirror@6.0.2: resolution: { - integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==, + integrity: sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==, } color-convert@1.9.3: @@ -3684,12 +3721,19 @@ packages: integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, } - commander@13.1.0: + commander@11.1.0: resolution: { - integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==, + integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, } - engines: { node: ">=18" } + engines: { node: ">=16" } + + commander@14.0.0: + resolution: + { + integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==, + } + engines: { node: ">=20" } commander@2.20.3: resolution: @@ -3765,17 +3809,17 @@ packages: } engines: { node: ">=16" } - conventional-changelog-conventionalcommits@8.0.0: + conventional-changelog-conventionalcommits@9.1.0: resolution: { - integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==, + integrity: sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA==, } engines: { node: ">=18" } - conventional-changelog-writer@8.0.0: + conventional-changelog-writer@8.2.0: resolution: { - integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==, + integrity: sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==, } engines: { node: ">=18" } hasBin: true @@ -3801,10 +3845,10 @@ packages: engines: { node: ">=16" } hasBin: true - conventional-commits-parser@6.0.0: + conventional-commits-parser@6.2.0: resolution: { - integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==, + integrity: sha512-uLnoLeIW4XaoFtH37qEcg/SXMJmKF4vi7V0H2rnPueg+VEtFGA/asSCNTcq4M/GQ6QmlzchAEtOoDTtKqWeHag==, } engines: { node: ">=18" } hasBin: true @@ -3822,16 +3866,16 @@ packages: integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, } - core-js-compat@3.39.0: + core-js-compat@3.45.1: resolution: { - integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==, + integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==, } - core-js@3.39.0: + core-js@3.45.1: resolution: { - integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==, + integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==, } core-util-is@1.0.3: @@ -3840,17 +3884,6 @@ packages: integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, } - cosmiconfig-typescript-loader@5.1.0: - resolution: - { - integrity: sha512-7PtBB+6FdsOvZyJtlF3hEPpACq7RQX6BVGsgC7/lfVXnKMvNCu/XY3ykreqG5w/rBNdu2z8LCIKoF3kpHHdHlA==, - } - engines: { node: ">=v16" } - peerDependencies: - "@types/node": "*" - cosmiconfig: ">=8.2" - typescript: ">=4" - cosmiconfig-typescript-loader@6.1.0: resolution: { @@ -3880,21 +3913,14 @@ packages: integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==, } - cross-env@7.0.3: + cross-env@10.0.0: resolution: { - integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==, + integrity: sha512-aU8qlEK/nHYtVuN4p7UQgAwVljzMg8hB4YK5ThRqD2l/ziSnryncPNn7bMLt5cFYsKVKBh8HqLqyCoTupEUu7Q==, } - engines: { node: ">=10.14", npm: ">=6", yarn: ">=1" } + engines: { node: ">=20" } hasBin: true - cross-spawn@7.0.3: - resolution: - { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, - } - engines: { node: ">= 8" } - cross-spawn@7.0.6: resolution: { @@ -3965,10 +3991,10 @@ packages: peerDependencies: postcss: ^8.4 - css-select@5.1.0: + css-select@5.2.2: resolution: { - integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==, + integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, } css-tree@2.2.1: @@ -3978,13 +4004,6 @@ packages: } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: ">=7.0.0" } - css-tree@2.3.1: - resolution: - { - integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==, - } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } - css-tree@3.1.0: resolution: { @@ -3992,17 +4011,17 @@ packages: } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } - css-what@6.1.0: + css-what@6.2.2: resolution: { - integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, + integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, } engines: { node: ">= 6" } - cssdb@8.2.3: + cssdb@8.4.0: resolution: { - integrity: sha512-9BDG5XmJrJQQnJ51VFxXCAtpZ5ebDlAREmO8sxMOVU0aSxN/gocbctjIG5LMh3WBUq+xTlb/jw2LoljBEqraTA==, + integrity: sha512-lyATYGyvXwQ8h55WeQeEHXhI+47rl52pXSYkFK/ZrCbAJSgVIaPFjYc3RM8TpRHKk7W3wsAZImmLps+P5VyN9g==, } cssesc@3.0.0: @@ -4013,32 +4032,32 @@ packages: engines: { node: ">=4" } hasBin: true - cssnano-preset-default@7.0.6: + cssnano-preset-default@7.0.9: resolution: { - integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==, + integrity: sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - cssnano-utils@5.0.0: + cssnano-utils@5.0.1: resolution: { - integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==, + integrity: sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - cssnano@7.0.6: + cssnano@7.1.1: resolution: { - integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==, + integrity: sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 csso@5.0.5: resolution: @@ -4148,43 +4167,31 @@ packages: } engines: { node: ">=12" } - data-view-buffer@1.0.1: + data-view-buffer@1.0.2: resolution: { - integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==, + integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==, } engines: { node: ">= 0.4" } - data-view-byte-length@1.0.1: + data-view-byte-length@1.0.2: resolution: { - integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==, + integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==, } engines: { node: ">= 0.4" } - data-view-byte-offset@1.0.0: + data-view-byte-offset@1.0.1: resolution: { - integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==, + integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==, } engines: { node: ">= 0.4" } - debug@4.3.7: + debug@4.4.1: resolution: { - integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==, - } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.0: - resolution: - { - integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==, + integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==, } engines: { node: ">=6.0" } peerDependencies: @@ -4302,10 +4309,10 @@ packages: } engines: { node: ">=8" } - detect-libc@2.0.3: + detect-libc@2.0.4: resolution: { - integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==, + integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==, } engines: { node: ">=8" } @@ -4353,10 +4360,10 @@ packages: } engines: { node: ">= 4" } - domutils@3.1.0: + domutils@3.2.2: resolution: { - integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==, + integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, } dot-prop@5.3.0: @@ -4366,6 +4373,13 @@ packages: } engines: { node: ">=8" } + dunder-proto@1.0.1: + resolution: + { + integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, + } + engines: { node: ">= 0.4" } + duplexer2@0.1.4: resolution: { @@ -4386,16 +4400,10 @@ packages: engines: { node: ">=0.10.0" } hasBin: true - electron-to-chromium@1.5.104: + electron-to-chromium@1.5.208: resolution: { - integrity: sha512-Us9M2L4cO/zMBqVkJtnj353nQhMju9slHm62NprKTmdF3HH8wYOtNvDFq/JB2+ZRoGLzdvYDiATlMHs98XBM1g==, - } - - electron-to-chromium@1.5.52: - resolution: - { - integrity: sha512-xtoijJTZ+qeucLBDNztDOuQBE1ksqjvNjvqFoST3nGC7fSpqJ+X6BdTBaY5BHG+IhWWmpc6b/KfpeuEDupEPOQ==, + integrity: sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==, } emoji-regex@10.4.0: @@ -4429,10 +4437,10 @@ packages: } engines: { node: ">=0.12" } - env-ci@11.1.0: + env-ci@11.1.1: resolution: { - integrity: sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==, + integrity: sha512-mT3ks8F0kwpo7SYNds6nWj0PaRh+qJxIeBVBXAKTN9hphAzZv7s0QAZQbqnB1fAv/r4pJUGE15BV9UrS31FP2w==, } engines: { node: ^18.17 || >=20.6.1 } @@ -4462,17 +4470,17 @@ packages: integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==, } - es-abstract@1.23.3: + es-abstract@1.24.0: resolution: { - integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==, + integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==, } engines: { node: ">= 0.4" } - es-define-property@1.0.0: + es-define-property@1.0.1: resolution: { - integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==, + integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, } engines: { node: ">= 0.4" } @@ -4483,31 +4491,31 @@ packages: } engines: { node: ">= 0.4" } - es-object-atoms@1.0.0: + es-object-atoms@1.1.1: resolution: { - integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==, + integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, } engines: { node: ">= 0.4" } - es-set-tostringtag@2.0.3: + es-set-tostringtag@2.1.0: resolution: { - integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==, + integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, } engines: { node: ">= 0.4" } - es-to-primitive@1.2.1: + es-to-primitive@1.3.0: resolution: { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==, } engines: { node: ">= 0.4" } - esbuild@0.25.0: + esbuild@0.25.9: resolution: { - integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==, + integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==, } engines: { node: ">=18" } hasBin: true @@ -4540,25 +4548,25 @@ packages: } engines: { node: ">=12" } - eslint-config-prettier@10.1.1: + eslint-config-prettier@10.1.8: resolution: { - integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==, + integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==, } hasBin: true peerDependencies: eslint: ">=7.0.0" - eslint-plugin-prettier@5.2.3: + eslint-plugin-prettier@5.5.4: resolution: { - integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==, + integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==, } engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" - eslint-config-prettier: "*" + eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" prettier: ">=3.0.0" peerDependenciesMeta: "@types/eslint": @@ -4566,10 +4574,10 @@ packages: eslint-config-prettier: optional: true - eslint-scope@8.3.0: + eslint-scope@8.4.0: resolution: { - integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==, + integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -4580,17 +4588,17 @@ packages: } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - eslint-visitor-keys@4.2.0: + eslint-visitor-keys@4.2.1: resolution: { - integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==, + integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eslint@9.22.0: + eslint@9.34.0: resolution: { - integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==, + integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } hasBin: true @@ -4600,10 +4608,10 @@ packages: jiti: optional: true - espree@10.3.0: + espree@10.4.0: resolution: { - integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==, + integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -4667,10 +4675,10 @@ packages: } engines: { node: ">=16.17" } - execa@9.5.1: + execa@9.6.0: resolution: { - integrity: sha512-QY5PPtSonnGwhhHDNI7+3RvY285c7iuJFFB+lU+oEzMY/gEGJ808owqJsrr8Otd1E/x07po1LkUBmdAc5duPAg==, + integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==, } engines: { node: ^18.19.0 || >=20.5.0 } @@ -4688,6 +4696,12 @@ packages: } engines: { node: ">=4" } + fast-content-type-parse@3.0.0: + resolution: + { + integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==, + } + fast-deep-equal@3.1.3: resolution: { @@ -4700,13 +4714,6 @@ packages: integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, } - fast-glob@3.3.2: - resolution: - { - integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, - } - engines: { node: ">=8.6.0" } - fast-glob@3.3.3: resolution: { @@ -4726,10 +4733,10 @@ packages: integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, } - fast-uri@3.0.3: + fast-uri@3.1.0: resolution: { - integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==, + integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==, } fastest-levenshtein@1.0.16: @@ -4739,17 +4746,18 @@ packages: } engines: { node: ">= 4.9.1" } - fastq@1.17.1: + fastq@1.19.1: resolution: { - integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==, + integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, } - fdir@6.4.2: + fdir@6.5.0: resolution: { - integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==, + integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, } + engines: { node: ">=12.0.0" } peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -4777,10 +4785,10 @@ packages: } engines: { node: ">=18" } - file-entry-cache@10.0.6: + file-entry-cache@10.1.4: resolution: { - integrity: sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==, + integrity: sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==, } file-entry-cache@8.0.0: @@ -4815,10 +4823,10 @@ packages: integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==, } - find-up-simple@1.0.0: + find-up-simple@1.0.1: resolution: { - integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==, + integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==, } engines: { node: ">=18" } @@ -4871,10 +4879,10 @@ packages: } engines: { node: ">=16" } - flat-cache@6.1.6: + flat-cache@6.1.13: resolution: { - integrity: sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ==, + integrity: sha512-gmtS2PaUjSPa4zjObEIn4WWliKyZzYljgxODBfxugpK6q6HU9ClXzgCJ+nlcPKY9Bt090ypTOLIFWkV0jbKFjw==, } flatpickr@4.6.13: @@ -4883,29 +4891,30 @@ packages: integrity: sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==, } - flatted@3.3.2: + flatted@3.3.3: resolution: { - integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==, + integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, } - for-each@0.3.3: + for-each@0.3.5: resolution: { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, + integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==, } + engines: { node: ">= 0.4" } - foreground-child@3.3.0: + foreground-child@3.3.1: resolution: { - integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==, + integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==, } engines: { node: ">=14" } - form-data-encoder@4.0.2: + form-data-encoder@4.1.0: resolution: { - integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==, + integrity: sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==, } engines: { node: ">= 18" } @@ -4928,10 +4937,10 @@ packages: integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==, } - fs-extra@11.2.0: + fs-extra@11.3.1: resolution: { - integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==, + integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==, } engines: { node: ">=14.14" } @@ -4975,10 +4984,10 @@ packages: } engines: { node: ">=18" } - function.prototype.name@1.1.6: + function.prototype.name@1.1.8: resolution: { - integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==, + integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==, } engines: { node: ">= 0.4" } @@ -4988,10 +4997,10 @@ packages: integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, } - fuse.js@7.0.0: + fuse.js@7.1.0: resolution: { - integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==, + integrity: sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==, } engines: { node: ">=10" } @@ -5016,10 +5025,10 @@ packages: } engines: { node: ">=18" } - get-intrinsic@1.2.4: + get-intrinsic@1.3.0: resolution: { - integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==, + integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, } engines: { node: ">= 0.4" } @@ -5029,6 +5038,13 @@ packages: integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==, } + get-proto@1.0.1: + resolution: + { + integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, + } + engines: { node: ">= 0.4" } + get-stream@6.0.1: resolution: { @@ -5057,10 +5073,10 @@ packages: } engines: { node: ">=18" } - get-symbol-description@1.0.2: + get-symbol-description@1.1.0: resolution: { - integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==, + integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==, } engines: { node: ">= 0.4" } @@ -5099,10 +5115,10 @@ packages: } hasBin: true - glob@11.0.1: + glob@11.0.3: resolution: { - integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==, + integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==, } engines: { node: 20 || >=22 } hasBin: true @@ -5149,13 +5165,6 @@ packages: } engines: { node: ">=6" } - globals@11.12.0: - resolution: - { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, - } - engines: { node: ">=4" } - globals@14.0.0: resolution: { @@ -5163,10 +5172,10 @@ packages: } engines: { node: ">=18" } - globals@16.0.0: + globals@16.3.0: resolution: { - integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==, + integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==, } engines: { node: ">=18" } @@ -5184,10 +5193,10 @@ packages: } engines: { node: ">=10" } - globby@14.0.2: + globby@14.1.0: resolution: { - integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==, + integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==, } engines: { node: ">=18" } @@ -5197,16 +5206,17 @@ packages: integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==, } - gopd@1.0.1: + gopd@1.2.0: resolution: { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, + integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, } + engines: { node: ">= 0.4" } - got@14.4.4: + got@14.4.7: resolution: { - integrity: sha512-tqiF7eSgTBwQkxb1LxsEpva8TaMYVisbhplrFVmw9GQE3855Z+MH/mnsXLLOkDxR6hZJRFMj5VTAZ8lmTF8ZOA==, + integrity: sha512-DI8zV1231tqiGzOiOzQWDhsBmncFW7oQDH6Zgy6pDPrqJuVZMtoSgPLLsBZQj8Jg4JFfwoOsDA8NGtLQLnIx2g==, } engines: { node: ">=20" } @@ -5236,11 +5246,12 @@ packages: engines: { node: ">=0.4.7" } hasBin: true - has-bigints@1.0.2: + has-bigints@1.1.0: resolution: { - integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, + integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==, } + engines: { node: ">= 0.4" } has-flag@3.0.0: resolution: @@ -5262,17 +5273,17 @@ packages: integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, } - has-proto@1.0.3: + has-proto@1.2.0: resolution: { - integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==, + integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==, } engines: { node: ">= 0.4" } - has-symbols@1.0.3: + has-symbols@1.1.0: resolution: { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, + integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, } engines: { node: ">= 0.4" } @@ -5310,10 +5321,10 @@ packages: } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - hookified@1.7.0: + hookified@1.12.0: resolution: { - integrity: sha512-XQdMjqC1AyeOzfs+17cnIk7Wdfu1hh2JtcyNfBf5u9jHrT3iZUlGHxLTntFBuk5lwkqJ6l3+daeQdHK5yByHVA==, + integrity: sha512-hMr1Y9TCLshScrBbV2QxJ9BROddxZ12MX9KsCtuGGy/3SmmN5H1PllKerrVlSotur9dlE8hmUKAOSa3WDzsZmQ==, } hosted-git-info@7.0.2: @@ -5323,10 +5334,10 @@ packages: } engines: { node: ^16.14.0 || >=18.0.0 } - hosted-git-info@8.0.0: + hosted-git-info@8.1.0: resolution: { - integrity: sha512-4nw3vOVR+vHUOT8+U4giwe2tcGv+R3pwwRidUe67DoMBTjhrfr6rZYJVVwdkBE+Um050SG+X9tf0Jo4fOpn01w==, + integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==, } engines: { node: ^18.17.0 || >=20.5.0 } @@ -5344,16 +5355,16 @@ packages: } engines: { node: ">=8" } - htmlfy@0.6.2: + htmlfy@1.0.0: resolution: { - integrity: sha512-dWRE+TW3QSB5mXsnYCUPLoPmaCu2O7kp6/3xh5fayiGuaNtRL/64SdjhoTBwJ2XvuSkLoMgQDLunrAqwxJj40Q==, + integrity: sha512-XM6zkMWIekSHqT55GhXXuf9BbIIsxidbIpj9uwY2I5MsnQPw4llWL1QD2BbzsmD5ozyi+t5gJQsuFIJj+shOYQ==, } - http-cache-semantics@4.1.1: + http-cache-semantics@4.2.0: resolution: { - integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==, + integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==, } http-proxy-agent@7.0.2: @@ -5370,10 +5381,10 @@ packages: } engines: { node: ">=10.19.0" } - https-proxy-agent@7.0.5: + https-proxy-agent@7.0.6: resolution: { - integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==, + integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, } engines: { node: ">= 14" } @@ -5391,10 +5402,10 @@ packages: } engines: { node: ">=16.17.0" } - human-signals@8.0.0: + human-signals@8.0.1: resolution: { - integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==, + integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==, } engines: { node: ">=18.18.0" } @@ -5439,27 +5450,20 @@ packages: } engines: { node: ">= 4" } - ignore@7.0.3: + ignore@7.0.5: resolution: { - integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==, + integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, } engines: { node: ">= 4" } - import-fresh@3.3.0: + import-fresh@3.3.1: resolution: { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, + integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, } engines: { node: ">=6" } - import-from-esm@1.3.4: - resolution: - { - integrity: sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==, - } - engines: { node: ">=16.20" } - import-from-esm@2.0.0: resolution: { @@ -5494,10 +5498,10 @@ packages: } engines: { node: ">=12" } - index-to-position@0.1.2: + index-to-position@1.1.0: resolution: { - integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==, + integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==, } engines: { node: ">=18" } @@ -5541,10 +5545,10 @@ packages: } engines: { node: ">=12.0.0" } - internal-slot@1.0.7: + internal-slot@1.1.0: resolution: { - integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==, + integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==, } engines: { node: ">= 0.4" } @@ -5562,17 +5566,17 @@ packages: } engines: { node: ">=12" } - is-arguments@1.1.1: + is-arguments@1.2.0: resolution: { - integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==, + integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==, } engines: { node: ">= 0.4" } - is-array-buffer@3.0.4: + is-array-buffer@3.0.5: resolution: { - integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==, + integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==, } engines: { node: ">= 0.4" } @@ -5588,11 +5592,19 @@ packages: integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, } - is-bigint@1.0.4: + is-async-function@2.1.1: resolution: { - integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, + integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==, } + engines: { node: ">= 0.4" } + + is-bigint@1.1.0: + resolution: + { + integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==, + } + engines: { node: ">= 0.4" } is-binary-path@2.1.0: resolution: @@ -5601,10 +5613,10 @@ packages: } engines: { node: ">=8" } - is-boolean-object@1.1.2: + is-boolean-object@1.2.2: resolution: { - integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, + integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==, } engines: { node: ">= 0.4" } @@ -5622,24 +5634,24 @@ packages: } hasBin: true - is-core-module@2.15.1: + is-core-module@2.16.1: resolution: { - integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==, + integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==, } engines: { node: ">= 0.4" } - is-data-view@1.0.1: + is-data-view@1.0.2: resolution: { - integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==, + integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==, } engines: { node: ">= 0.4" } - is-date-object@1.0.5: + is-date-object@1.1.0: resolution: { - integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, + integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==, } engines: { node: ">= 0.4" } @@ -5658,6 +5670,13 @@ packages: } engines: { node: ">=0.10.0" } + is-finalizationregistry@1.1.1: + resolution: + { + integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==, + } + engines: { node: ">= 0.4" } + is-fullwidth-code-point@3.0.0: resolution: { @@ -5679,6 +5698,13 @@ packages: } engines: { node: ">=18" } + is-generator-function@1.1.0: + resolution: + { + integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==, + } + engines: { node: ">= 0.4" } + is-glob@4.0.3: resolution: { @@ -5701,6 +5727,13 @@ packages: } engines: { node: ">=8" } + is-map@2.0.3: + resolution: + { + integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==, + } + engines: { node: ">= 0.4" } + is-module@1.0.0: resolution: { @@ -5714,10 +5747,10 @@ packages: } engines: { node: ">= 0.4" } - is-number-object@1.0.7: + is-number-object@1.1.1: resolution: { - integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, + integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==, } engines: { node: ">= 0.4" } @@ -5756,10 +5789,10 @@ packages: } engines: { node: ">=0.10.0" } - is-regex@1.1.4: + is-regex@1.2.1: resolution: { - integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, + integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==, } engines: { node: ">= 0.4" } @@ -5770,10 +5803,17 @@ packages: } engines: { node: ">=0.10.0" } - is-shared-array-buffer@1.0.3: + is-set@2.0.3: resolution: { - integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==, + integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==, + } + engines: { node: ">= 0.4" } + + is-shared-array-buffer@1.0.4: + resolution: + { + integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==, } engines: { node: ">= 0.4" } @@ -5798,17 +5838,17 @@ packages: } engines: { node: ">=18" } - is-string@1.0.7: + is-string@1.1.1: resolution: { - integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, + integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==, } engines: { node: ">= 0.4" } - is-symbol@1.0.4: + is-symbol@1.1.1: resolution: { - integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, + integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==, } engines: { node: ">= 0.4" } @@ -5819,10 +5859,10 @@ packages: } engines: { node: ">=8" } - is-typed-array@1.1.13: + is-typed-array@1.1.15: resolution: { - integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==, + integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==, } engines: { node: ">= 0.4" } @@ -5846,11 +5886,26 @@ packages: integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==, } - is-weakref@1.0.2: + is-weakmap@2.0.2: resolution: { - integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, + integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==, } + engines: { node: ">= 0.4" } + + is-weakref@1.1.1: + resolution: + { + integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==, + } + engines: { node: ">= 0.4" } + + is-weakset@2.0.4: + resolution: + { + integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==, + } + engines: { node: ">= 0.4" } is-windows@1.0.2: resolution: @@ -5897,17 +5952,17 @@ packages: integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, } - jackspeak@4.0.2: + jackspeak@4.1.1: resolution: { - integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==, + integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==, } engines: { node: 20 || >=22 } - jake@10.9.2: + jake@10.9.4: resolution: { - integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==, + integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==, } engines: { node: ">=10" } hasBin: true @@ -5919,17 +5974,17 @@ packages: } engines: { node: ">= 0.6.0" } - jiti@1.21.6: + jiti@1.21.7: resolution: { - integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==, + integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==, } hasBin: true - jiti@2.4.1: + jiti@2.5.1: resolution: { - integrity: sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==, + integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==, } hasBin: true @@ -5960,6 +6015,14 @@ packages: engines: { node: ">=6" } hasBin: true + jsesc@3.1.0: + resolution: + { + integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, + } + engines: { node: ">=6" } + hasBin: true + json-buffer@3.0.1: resolution: { @@ -6017,10 +6080,10 @@ packages: engines: { node: ">=6" } hasBin: true - jsonfile@6.1.0: + jsonfile@6.2.0: resolution: { - integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, + integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==, } jsonparse@1.3.1: @@ -6043,10 +6106,10 @@ packages: integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, } - keyv@5.2.3: + keyv@5.5.0: resolution: { - integrity: sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==, + integrity: sha512-QG7qR2tijh1ftOvClut4YKKg1iW6cx3GZsKoGyJPxHkGWK9oJhG9P3j5deP0QQOGDowBMVQFaP+Vm4NpGYvmIQ==, } kind-of@6.0.3: @@ -6056,10 +6119,10 @@ packages: } engines: { node: ">=0.10.0" } - known-css-properties@0.35.0: + known-css-properties@0.37.0: resolution: { - integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==, + integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==, } leaflet.markercluster@1.5.3: @@ -6090,13 +6153,6 @@ packages: } engines: { node: ">= 0.8.0" } - lilconfig@3.1.2: - resolution: - { - integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==, - } - engines: { node: ">=14" } - lilconfig@3.1.3: resolution: { @@ -6110,37 +6166,37 @@ packages: integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } - lint-staged@15.5.0: + lint-staged@16.1.5: resolution: { - integrity: sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==, + integrity: sha512-uAeQQwByI6dfV7wpt/gVqg+jAPaSp8WwOA8kKC/dv1qw14oGpnpAisY65ibGHUGDUv0rYaZ8CAJZ/1U8hUvC2A==, } - engines: { node: ">=18.12.0" } + engines: { node: ">=20.17" } hasBin: true - listr2@8.2.5: + listr2@9.0.2: resolution: { - integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==, + integrity: sha512-VVd7cS6W+vLJu2wmq4QmfVj14Iep7cz4r/OWNk36Aq5ZOY7G8/BfCrQFexcwB1OIxB3yERiePfE/REBjEFulag==, } - engines: { node: ">=18.0.0" } + engines: { node: ">=20.0.0" } - lit-element@4.1.1: + lit-element@4.2.1: resolution: { - integrity: sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==, + integrity: sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==, } - lit-html@3.2.1: + lit-html@3.3.1: resolution: { - integrity: sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==, + integrity: sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==, } - lit@3.2.1: + lit@3.3.1: resolution: { - integrity: sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==, + integrity: sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==, } load-json-file@4.0.0: @@ -6338,10 +6394,10 @@ packages: integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, } - lru-cache@11.0.2: + lru-cache@11.1.0: resolution: { - integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==, + integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==, } engines: { node: 20 || >=22 } @@ -6357,31 +6413,38 @@ packages: integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, } - marked-terminal@7.2.1: + marked-terminal@7.3.0: resolution: { - integrity: sha512-rQ1MoMFXZICWNsKMiiHwP/Z+92PLKskTPXj+e7uwXmuMPkNn7iTqC+IvDekVm1MPeC9wYQeLxeFaOvudRR/XbQ==, + integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==, } engines: { node: ">=16.0.0" } peerDependencies: - marked: ">=1 <15" + marked: ">=1 <16" - marked@12.0.2: + marked@15.0.12: resolution: { - integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==, + integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==, } engines: { node: ">= 18" } hasBin: true - marked@15.0.7: + marked@16.2.0: resolution: { - integrity: sha512-dgLIeKGLx5FwziAnsk4ONoGwHwGPJzselimvlVskE9XLN4Orv9u2VA3GWw/lYUqjfA0rUT/6fqKwfZJapP9BEg==, + integrity: sha512-LbbTuye+0dWRz2TS9KJ7wsnD4KAtpj0MVkWc90XvBa6AslXsT0hTBVH5k32pcSyHH1fst9XEFJunXHktVy0zlg==, } - engines: { node: ">= 18" } + engines: { node: ">= 20" } hasBin: true + math-intrinsics@1.1.0: + resolution: + { + integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, + } + engines: { node: ">= 0.4" } + mathml-tag-names@2.1.3: resolution: { @@ -6394,12 +6457,6 @@ packages: integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==, } - mdn-data@2.0.30: - resolution: - { - integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, - } - mdn-data@2.12.2: resolution: { @@ -6446,10 +6503,10 @@ packages: } engines: { node: ">=8.6" } - mime@4.0.4: + mime@4.0.7: resolution: { - integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==, + integrity: sha512-2OfDPL+e03E0LrXaGYOtTFIYhiuzep94NSsuhrNULq+stylcJedcHdzHtz0atMUuGwJfFYs0YL5xeC/Ca2x0eQ==, } engines: { node: ">=16" } hasBin: true @@ -6496,10 +6553,10 @@ packages: } hasBin: true - minimatch@10.0.1: + minimatch@10.0.3: resolution: { - integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==, + integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==, } engines: { node: 20 || >=22 } @@ -6548,10 +6605,10 @@ packages: integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==, } - mrmime@2.0.0: + mrmime@2.0.1: resolution: { - integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==, + integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==, } engines: { node: ">=10" } @@ -6573,10 +6630,17 @@ packages: integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, } - nanoid@3.3.8: + nano-spawn@1.0.2: resolution: { - integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==, + integrity: sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==, + } + engines: { node: ">=20.17" } + + nanoid@3.3.11: + resolution: + { + integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, } engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true @@ -6599,10 +6663,10 @@ packages: integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==, } - node-emoji@2.1.3: + node-emoji@2.2.0: resolution: { - integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==, + integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==, } engines: { node: ">=18" } @@ -6618,12 +6682,6 @@ packages: encoding: optional: true - node-releases@2.0.18: - resolution: - { - integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==, - } - node-releases@2.0.19: resolution: { @@ -6651,10 +6709,10 @@ packages: } engines: { node: ">=0.10.0" } - normalize-url@8.0.1: + normalize-url@8.0.2: resolution: { - integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==, + integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==, } engines: { node: ">=14.16" } @@ -6679,10 +6737,10 @@ packages: } engines: { node: ">=18" } - npm@10.9.0: + npm@10.9.3: resolution: { - integrity: sha512-ZanDioFylI9helNhl2LNd+ErmVD+H5I53ry41ixlLyCBgkuYb+58CvbAp99hW+zr5L9W4X7CchSoeqKdngOLSw==, + integrity: sha512-6Eh1u5Q+kIVXeA8e7l2c/HpnFFcwrkt37xDMujD5be1gloWa9p6j3Fsv3mByXXmqJHy+2cElRMML8opNT7xIJQ==, } engines: { node: ^18.17.0 || >=20.5.0 } hasBin: true @@ -6776,10 +6834,10 @@ packages: } engines: { node: ">= 6" } - object-inspect@1.13.2: + object-inspect@1.13.4: resolution: { - integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==, + integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, } engines: { node: ">= 0.4" } @@ -6797,17 +6855,17 @@ packages: } engines: { node: ">= 0.4" } - object.assign@4.1.5: + object.assign@4.1.7: resolution: { - integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==, + integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==, } engines: { node: ">= 0.4" } - ohash@2.0.4: + ohash@2.0.11: resolution: { - integrity: sha512-ac+SFwzhdHb0hp48/dbR7Jta39qfbuj7t3hApd9uyHS8bisHTfVzSEvjOVgV0L3zG7VR2/7JjkSGimP75D+hOQ==, + integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==, } once@1.4.0: @@ -6837,10 +6895,10 @@ packages: } engines: { node: ">=18" } - open@10.1.0: + open@10.2.0: resolution: { - integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==, + integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==, } engines: { node: ">=18" } @@ -6865,6 +6923,13 @@ packages: } engines: { node: ">=0.10.0" } + own-keys@1.0.1: + resolution: + { + integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==, + } + engines: { node: ">= 0.4" } + p-cancelable@4.0.1: resolution: { @@ -6949,13 +7014,6 @@ packages: } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - p-map@7.0.2: - resolution: - { - integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==, - } - engines: { node: ">=18" } - p-map@7.0.3: resolution: { @@ -7024,10 +7082,10 @@ packages: } engines: { node: ">=8" } - parse-json@8.1.0: + parse-json@8.3.0: resolution: { - integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==, + integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==, } engines: { node: ">=18" } @@ -7045,16 +7103,16 @@ packages: } engines: { node: ">=0.10.0" } - parse-path@7.0.0: + parse-path@7.1.0: resolution: { - integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==, + integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==, } - parse-url@9.2.0: + parse-url@10.0.3: resolution: { - integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==, + integrity: sha512-RvldzLvNE0DtOO1loukZsYcHCzHVUnHe7GNyrKIkavp7fNWs5ueX3kUzY/hXS8uRqDWwtaRKDcAmLEVouPIxIw==, } engines: { node: ">=14.13.0" } @@ -7145,12 +7203,12 @@ packages: } engines: { node: ">=8" } - path-type@5.0.0: + path-type@6.0.0: resolution: { - integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==, + integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==, } - engines: { node: ">=12" } + engines: { node: ">=18" } pathe@2.0.3: resolution: @@ -7158,10 +7216,10 @@ packages: integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, } - pdfmake@0.2.15: + pdfmake@0.2.20: resolution: { - integrity: sha512-Ryef9mjxo6q8dthhbssAK0zwCsPZ6Pl7kCHnIEXOvQdd79LUGZD6SHGi21YryFXczPjvw6V009uxQwp5iritcA==, + integrity: sha512-bGbxbGFP5p8PWNT3Phsu1ZcRLnRfF6jmnuKTkgmt6i5PZzSdX6JaB+NeTz9q+aocfW8SE9GUjL3o/5GroBqGcQ==, } engines: { node: ">=18" } @@ -7173,10 +7231,10 @@ packages: engines: { node: ">=0.10" } hasBin: true - perfect-debounce@1.0.0: + perfect-debounce@2.0.0: resolution: { - integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==, + integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==, } performance-now@2.1.0: @@ -7198,10 +7256,10 @@ packages: } engines: { node: ">=8.6" } - picomatch@4.0.2: + picomatch@4.0.3: resolution: { - integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==, + integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, } engines: { node: ">=12" } @@ -7234,10 +7292,10 @@ packages: } engines: { node: ">=10" } - pirates@4.0.6: + pirates@4.0.7: resolution: { - integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, + integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==, } engines: { node: ">= 6" } @@ -7260,10 +7318,10 @@ packages: integrity: sha512-bxaGcA40sL3d6M4hH72Z4NdLqxpXRsCFk8AITYg6x1rn1Ei3izf00UMLklerBZTO49aPA3CYrIwVulx2Bce2pA==, } - possible-typed-array-names@1.0.0: + possible-typed-array-names@1.1.0: resolution: { - integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==, + integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==, } engines: { node: ">= 0.4" } @@ -7276,10 +7334,10 @@ packages: peerDependencies: postcss: ^8.4 - postcss-calc@10.0.2: + postcss-calc@10.1.1: resolution: { - integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==, + integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==, } engines: { node: ^18.12 || ^20.9 || >=22.0 } peerDependencies: @@ -7294,10 +7352,10 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.8: + postcss-color-functional-notation@7.0.11: resolution: { - integrity: sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==, + integrity: sha512-zfqoUSaHMko/k2PA9xnaydVTHqYv5vphq5Q2AHcG/dCdv/OkHYWcVWfVTBKZ526uzT8L7NghuvSw3C9PxlKnLg==, } engines: { node: ">=18" } peerDependencies: @@ -7321,46 +7379,46 @@ packages: peerDependencies: postcss: ^8.4 - postcss-colormin@7.0.2: + postcss-colormin@7.0.4: resolution: { - integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==, + integrity: sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-convert-values@7.0.4: + postcss-convert-values@7.0.7: resolution: { - integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==, + integrity: sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-custom-media@11.0.5: + postcss-custom-media@11.0.6: resolution: { - integrity: sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==, + integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - postcss-custom-properties@14.0.4: + postcss-custom-properties@14.0.6: resolution: { - integrity: sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==, + integrity: sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - postcss-custom-selectors@8.0.4: + postcss-custom-selectors@8.0.5: resolution: { - integrity: sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==, + integrity: sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==, } engines: { node: ">=18" } peerDependencies: @@ -7375,46 +7433,46 @@ packages: peerDependencies: postcss: ^8.4 - postcss-discard-comments@7.0.3: + postcss-discard-comments@7.0.4: resolution: { - integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==, + integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-discard-duplicates@7.0.1: + postcss-discard-duplicates@7.0.2: resolution: { - integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==, + integrity: sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-discard-empty@7.0.0: + postcss-discard-empty@7.0.1: resolution: { - integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==, + integrity: sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-discard-overridden@7.0.0: + postcss-discard-overridden@7.0.1: resolution: { - integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==, + integrity: sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-double-position-gradients@6.0.0: + postcss-double-position-gradients@6.0.3: resolution: { - integrity: sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg==, + integrity: sha512-Dl0Z9sdbMwrPslgOaGBZRGo3TASmmgTcqcUODr82MTYyJk6devXZM6MlQjpQKMJqlLJ6oL1w78U7IXFdPA5+ug==, } engines: { node: ">=18" } peerDependencies: @@ -7473,10 +7531,10 @@ packages: peerDependencies: postcss: ^8.0.0 - postcss-import@16.1.0: + postcss-import@16.1.1: resolution: { - integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==, + integrity: sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==, } engines: { node: ">=18.0.0" } peerDependencies: @@ -7491,10 +7549,10 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-lab-function@7.0.8: + postcss-lab-function@7.0.11: resolution: { - integrity: sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==, + integrity: sha512-BEA4jId8uQe1gyjZZ6Bunb6ZsH2izks+v25AxQJDBtigXCjTLmCPWECwQpLTtcxH589MVxhs/9TAmRC6lUEmXQ==, } engines: { node: ">=18" } peerDependencies: @@ -7524,59 +7582,59 @@ packages: peerDependencies: postcss: ^8.4 - postcss-merge-longhand@7.0.4: + postcss-merge-longhand@7.0.5: resolution: { - integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==, + integrity: sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-merge-rules@7.0.4: + postcss-merge-rules@7.0.6: resolution: { - integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==, + integrity: sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-minify-font-values@7.0.0: + postcss-minify-font-values@7.0.1: resolution: { - integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==, + integrity: sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-minify-gradients@7.0.0: + postcss-minify-gradients@7.0.1: resolution: { - integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==, + integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-minify-params@7.0.2: + postcss-minify-params@7.0.4: resolution: { - integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==, + integrity: sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-minify-selectors@7.0.4: + postcss-minify-selectors@7.0.5: resolution: { - integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==, + integrity: sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 postcss-nested@6.2.0: resolution: @@ -7587,95 +7645,95 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-nesting@13.0.1: + postcss-nesting@13.0.2: resolution: { - integrity: sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==, + integrity: sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - postcss-normalize-charset@7.0.0: + postcss-normalize-charset@7.0.1: resolution: { - integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==, + integrity: sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-display-values@7.0.0: + postcss-normalize-display-values@7.0.1: resolution: { - integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==, + integrity: sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-positions@7.0.0: + postcss-normalize-positions@7.0.1: resolution: { - integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==, + integrity: sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-repeat-style@7.0.0: + postcss-normalize-repeat-style@7.0.1: resolution: { - integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==, + integrity: sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-string@7.0.0: + postcss-normalize-string@7.0.1: resolution: { - integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==, + integrity: sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-timing-functions@7.0.0: + postcss-normalize-timing-functions@7.0.1: resolution: { - integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==, + integrity: sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-unicode@7.0.2: + postcss-normalize-unicode@7.0.4: resolution: { - integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==, + integrity: sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-url@7.0.0: + postcss-normalize-url@7.0.1: resolution: { - integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==, + integrity: sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-whitespace@7.0.0: + postcss-normalize-whitespace@7.0.1: resolution: { - integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==, + integrity: sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 postcss-opacity-percentage@3.0.0: resolution: @@ -7686,14 +7744,14 @@ packages: peerDependencies: postcss: ^8.4 - postcss-ordered-values@7.0.1: + postcss-ordered-values@7.0.2: resolution: { - integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==, + integrity: sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 postcss-overflow-shorthand@6.0.0: resolution: @@ -7721,10 +7779,10 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.1.5: + postcss-preset-env@10.3.0: resolution: { - integrity: sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==, + integrity: sha512-khE99iwEbWLzXBVFNsS0QdnfYXDpqH/pxoHFcaCaVlh+e29swc3UyiLSSJ89dTK8e+Si3wNKYDGs6jEMmbE8TQ==, } engines: { node: ">=18" } peerDependencies: @@ -7739,23 +7797,23 @@ packages: peerDependencies: postcss: ^8.4 - postcss-reduce-initial@7.0.2: + postcss-reduce-initial@7.0.4: resolution: { - integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==, + integrity: sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-reduce-transforms@7.0.0: + postcss-reduce-transforms@7.0.1: resolution: { - integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==, + integrity: sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 postcss-replace-overflow-wrap@4.0.0: resolution: @@ -7812,13 +7870,6 @@ packages: } engines: { node: ">=4" } - postcss-selector-parser@7.0.0: - resolution: - { - integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==, - } - engines: { node: ">=4" } - postcss-selector-parser@7.1.0: resolution: { @@ -7826,23 +7877,23 @@ packages: } engines: { node: ">=4" } - postcss-svgo@7.0.1: + postcss-svgo@7.1.0: resolution: { - integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==, + integrity: sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==, } engines: { node: ^18.12.0 || ^20.9.0 || >= 18 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-unique-selectors@7.0.3: + postcss-unique-selectors@7.0.4: resolution: { - integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==, + integrity: sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 postcss-value-parser@4.2.0: resolution: @@ -7850,10 +7901,10 @@ packages: integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, } - postcss@8.5.3: + postcss@8.5.6: resolution: { - integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==, + integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==, } engines: { node: ^10 || ^12 || >=14 } @@ -7871,15 +7922,15 @@ packages: } engines: { node: ">=6.0.0" } - prettier-plugin-organize-imports@4.1.0: + prettier-plugin-organize-imports@4.2.0: resolution: { - integrity: sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==, + integrity: sha512-Zdy27UhlmyvATZi67BTnLcKTo8fm6Oik59Sz6H64PgZJVs6NJpPD1mT240mmJn62c98/QaL+r3kx9Q3gRpDajg==, } peerDependencies: prettier: ">=2.0" typescript: ">=2.9" - vue-tsc: ^2.1.0 + vue-tsc: ^2.1.0 || 3 peerDependenciesMeta: vue-tsc: optional: true @@ -7892,10 +7943,10 @@ packages: engines: { node: ">=10.13.0" } hasBin: true - prettier@3.5.3: + prettier@3.6.2: resolution: { - integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==, + integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, } engines: { node: ">=14" } hasBin: true @@ -7914,10 +7965,10 @@ packages: } engines: { node: ^14.13.1 || >=16.0.0 } - pretty-ms@9.1.0: + pretty-ms@9.2.0: resolution: { - integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==, + integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==, } engines: { node: ">=18" } @@ -7933,10 +7984,10 @@ packages: integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==, } - protocols@2.0.1: + protocols@2.0.2: resolution: { - integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==, + integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==, } punycode@2.3.1: @@ -8018,6 +8069,13 @@ packages: } engines: { node: ">=8.10.0" } + reflect.getprototypeof@1.0.10: + resolution: + { + integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==, + } + engines: { node: ">= 0.4" } + regenerate-unicode-properties@10.2.0: resolution: { @@ -8031,36 +8089,24 @@ packages: integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, } - regenerator-runtime@0.14.1: + regexp.prototype.flags@1.5.4: resolution: { - integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, - } - - regenerator-transform@0.15.2: - resolution: - { - integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==, - } - - regexp.prototype.flags@1.5.3: - resolution: - { - integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==, + integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==, } engines: { node: ">= 0.4" } - regexpu-core@6.1.1: + regexpu-core@6.2.0: resolution: { - integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==, + integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==, } engines: { node: ">=4" } - registry-auth-token@5.0.2: + registry-auth-token@5.1.0: resolution: { - integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==, + integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==, } engines: { node: ">=14" } @@ -8070,10 +8116,10 @@ packages: integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, } - regjsparser@0.11.2: + regjsparser@0.12.0: resolution: { - integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==, + integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==, } hasBin: true @@ -8130,11 +8176,12 @@ packages: } engines: { node: ">=8" } - resolve@1.22.8: + resolve@1.22.10: resolution: { - integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, + integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==, } + engines: { node: ">= 0.4" } hasBin: true responselike@3.0.0: @@ -8158,10 +8205,10 @@ packages: } engines: { node: ">=18" } - reusify@1.0.4: + reusify@1.1.0: resolution: { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, } engines: { iojs: ">=1.0.0", node: ">=0.10.0" } @@ -8186,10 +8233,10 @@ packages: engines: { node: ">=10.0.0" } hasBin: true - rollup@4.34.8: + rollup@4.48.1: resolution: { - integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==, + integrity: sha512-jVG20NvbhTYDkGAty2/Yh7HK6/q3DGSRH4o8ALKGArmMuaauM9kLfoMZ+WliPwA5+JHr2lTn3g557FxBV87ifg==, } engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true @@ -8221,16 +8268,16 @@ packages: } engines: { npm: ">=2.0.0" } - rxjs@7.8.1: + rxjs@7.8.2: resolution: { - integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==, + integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==, } - safe-array-concat@1.1.2: + safe-array-concat@1.1.3: resolution: { - integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==, + integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==, } engines: { node: ">=0.4" } @@ -8246,10 +8293,17 @@ packages: integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, } - safe-regex-test@1.0.3: + safe-push-apply@1.0.0: resolution: { - integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==, + integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==, + } + engines: { node: ">= 0.4" } + + safe-regex-test@1.1.0: + resolution: + { + integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==, } engines: { node: ">= 0.4" } @@ -8265,10 +8319,10 @@ packages: integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, } - semantic-release@24.2.3: + semantic-release@24.2.7: resolution: { - integrity: sha512-KRhQG9cUazPavJiJEFIJ3XAMjgfd0fcK3B+T26qOl8L0UG5aZUjeRfREO0KM5InGtYwxqiiytkJrbcYoLDEv0A==, + integrity: sha512-g7RssbTAbir1k/S7uSwSVZFfFXwpomUB9Oas0+xi9KStSCmeDXcA7rNhiskjLqvUe/Evhx8fVCT16OSa34eM5g==, } engines: { node: ">=20.8.1" } hasBin: true @@ -8294,10 +8348,10 @@ packages: } hasBin: true - semver@7.6.3: + semver@7.7.2: resolution: { - integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, + integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==, } engines: { node: ">=10" } hasBin: true @@ -8328,10 +8382,17 @@ packages: } engines: { node: ">= 0.4" } - sharp@0.33.5: + set-proto@1.0.0: resolution: { - integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==, + integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==, + } + engines: { node: ">= 0.4" } + + sharp@0.34.3: + resolution: + { + integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } @@ -8349,10 +8410,31 @@ packages: } engines: { node: ">=8" } - side-channel@1.0.6: + side-channel-list@1.0.0: resolution: { - integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==, + integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==, + } + engines: { node: ">= 0.4" } + + side-channel-map@1.0.1: + resolution: + { + integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, + } + engines: { node: ">= 0.4" } + + side-channel-weakmap@1.0.2: + resolution: + { + integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, + } + engines: { node: ">= 0.4" } + + side-channel@1.1.0: + resolution: + { + integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==, } engines: { node: ">= 0.4" } @@ -8463,6 +8545,7 @@ packages: integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==, } engines: { node: ">= 8" } + deprecated: The work that was done in this beta branch won't be included in future versions sourcemap-codec@1.4.8: resolution: @@ -8495,10 +8578,10 @@ packages: integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, } - spdx-license-ids@3.0.20: + spdx-license-ids@3.0.22: resolution: { - integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==, + integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==, } split2@1.0.0: @@ -8527,6 +8610,13 @@ packages: integrity: sha512-ppYTcWTJnIl4ZAKwF39LTA9f/ypHfbVefsHdN2hpMQGrR57wt1TieZo9tlCM/r1Y4SFiZ5yz/cjho564C921Xw==, } + stop-iteration-iterator@1.1.0: + resolution: + { + integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==, + } + engines: { node: ">= 0.4" } + stream-combiner2@1.1.1: resolution: { @@ -8561,25 +8651,26 @@ packages: } engines: { node: ">=18" } - string.prototype.matchall@4.0.11: + string.prototype.matchall@4.0.12: resolution: { - integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==, + integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==, } engines: { node: ">= 0.4" } - string.prototype.trim@1.2.9: + string.prototype.trim@1.2.10: resolution: { - integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==, + integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==, } engines: { node: ">= 0.4" } - string.prototype.trimend@1.0.8: + string.prototype.trimend@1.0.9: resolution: { - integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==, + integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==, } + engines: { node: ">= 0.4" } string.prototype.trimstart@1.0.8: resolution: @@ -8683,37 +8774,37 @@ packages: integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==, } - stylehacks@7.0.4: + stylehacks@7.0.6: resolution: { - integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==, + integrity: sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - stylelint-config-recommended@15.0.0: + stylelint-config-recommended@17.0.0: resolution: { - integrity: sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==, + integrity: sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==, } engines: { node: ">=18.12.0" } peerDependencies: - stylelint: ^16.13.0 + stylelint: ^16.23.0 - stylelint-config-standard@37.0.0: + stylelint-config-standard@39.0.0: resolution: { - integrity: sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==, + integrity: sha512-JabShWORb8Bmc1A47ZyJstran60P3yUdI1zWMpGYPeFiC6xzHXJMkpKAd8EjIhq3HPUplIWWMDJ/xu0AiPd+kA==, } engines: { node: ">=18.12.0" } peerDependencies: - stylelint: ^16.13.0 + stylelint: ^16.23.0 - stylelint@16.15.0: + stylelint@16.23.1: resolution: { - integrity: sha512-OK6Rs7EPdcdmjqiDycadZY4fw3f5/TC1X6/tGjnF3OosbwCeNs7nG+79MCAtjEg7ckwqTJTsku08e0Rmaz5nUw==, + integrity: sha512-dNvDTsKV1U2YtiUDfe9d2gp902veFeo3ecCWdGlmLm2WFrAV0+L5LoOj/qHSBABQwMsZPJwfC4bf39mQm1S5zw==, } engines: { node: ">=18.12.0" } hasBin: true @@ -8747,13 +8838,6 @@ packages: } engines: { node: ">=8" } - supports-hyperlinks@3.1.0: - resolution: - { - integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==, - } - engines: { node: ">=14.18" } - supports-hyperlinks@3.2.0: resolution: { @@ -8774,18 +8858,18 @@ packages: integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==, } - svgo@3.3.2: + svgo@4.0.0: resolution: { - integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==, + integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==, } - engines: { node: ">=14.0.0" } + engines: { node: ">=16" } hasBin: true - synckit@0.9.2: + synckit@0.11.11: resolution: { - integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==, + integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==, } engines: { node: ^14.18.0 || >=16.0.0 } @@ -8832,10 +8916,10 @@ packages: } engines: { node: ">=14.16" } - terser@5.36.0: + terser@5.43.1: resolution: { - integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==, + integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==, } engines: { node: ">=10" } hasBin: true @@ -8891,16 +8975,16 @@ packages: integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==, } - tinyexec@0.3.1: + tinyexec@1.0.1: resolution: { - integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==, + integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==, } - tinyglobby@0.2.10: + tinyglobby@0.2.14: resolution: { - integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==, + integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==, } engines: { node: ">=12.0.0" } @@ -8950,10 +9034,10 @@ packages: } engines: { node: ">= 0.4" } - ts-api-utils@2.0.1: + ts-api-utils@2.1.0: resolution: { - integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==, + integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==, } engines: { node: ">=18.12" } peerDependencies: @@ -9012,55 +9096,55 @@ packages: } engines: { node: ">=12.20" } - type-fest@4.26.1: + type-fest@4.41.0: resolution: { - integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==, + integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==, } engines: { node: ">=16" } - typed-array-buffer@1.0.2: + typed-array-buffer@1.0.3: resolution: { - integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==, + integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==, } engines: { node: ">= 0.4" } - typed-array-byte-length@1.0.1: + typed-array-byte-length@1.0.3: resolution: { - integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==, + integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==, } engines: { node: ">= 0.4" } - typed-array-byte-offset@1.0.2: + typed-array-byte-offset@1.0.4: resolution: { - integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==, + integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==, } engines: { node: ">= 0.4" } - typed-array-length@1.0.6: + typed-array-length@1.0.7: resolution: { - integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==, + integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==, } engines: { node: ">= 0.4" } - typescript-eslint@8.26.1: + typescript-eslint@8.41.0: resolution: { - integrity: sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==, + integrity: sha512-n66rzs5OBXW3SFSnZHr2T685q1i4ODm2nulFJhMZBotaTavsS8TrI3d7bDlRSs9yWo7HmyWrN9qDu14Qv7Y0Dw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" + typescript: ">=4.8.4 <6.0.0" - typescript@5.7.3: + typescript@5.9.2: resolution: { - integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==, + integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==, } engines: { node: ">=14.17" } hasBin: true @@ -9073,16 +9157,17 @@ packages: engines: { node: ">=0.8.0" } hasBin: true - unbox-primitive@1.0.2: + unbox-primitive@1.1.0: resolution: { - integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, + integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==, } + engines: { node: ">= 0.4" } - undici-types@6.19.8: + undici-types@7.10.0: resolution: { - integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==, + integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==, } unicode-canonical-property-names-ecmascript@2.0.1: @@ -9160,10 +9245,10 @@ packages: } engines: { node: ">=12" } - universal-user-agent@7.0.2: + universal-user-agent@7.0.3: resolution: { - integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==, + integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==, } universalify@2.0.1: @@ -9173,12 +9258,12 @@ packages: } engines: { node: ">= 10.0.0" } - unplugin-utils@0.2.4: + unplugin-utils@0.3.0: resolution: { - integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==, + integrity: sha512-JLoggz+PvLVMJo+jZt97hdIIIZ2yTzGgft9e9q8iMrC4ewufl62ekeW7mixBghonn2gVb/ICjyvlmOCUBnJLQg==, } - engines: { node: ">=18.12.0" } + engines: { node: ">=20.19.0" } upath@1.2.0: resolution: @@ -9187,10 +9272,10 @@ packages: } engines: { node: ">=4" } - update-browserslist-db@1.1.1: + update-browserslist-db@1.1.3: resolution: { - integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==, + integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==, } hasBin: true peerDependencies: @@ -9227,83 +9312,83 @@ packages: integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, } - vite-dev-rpc@1.0.7: + vite-dev-rpc@1.1.0: resolution: { - integrity: sha512-FxSTEofDbUi2XXujCA+hdzCDkXFG1PXktMjSk1efq9Qb5lOYaaM9zNSvKvPPF7645Bak79kSp1PTooMW2wktcA==, + integrity: sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==, } peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 - vite-hot-client@2.0.4: + vite-hot-client@2.1.0: resolution: { - integrity: sha512-W9LOGAyGMrbGArYJN4LBCdOC5+Zwh7dHvOHC0KmGKkJhsOzaKbpo/jEjpPKVHIW0/jBWj8RZG0NUxfgA8BxgAg==, + integrity: sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==, } peerDependencies: - vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - vite-plugin-codeigniter@1.0.1: + vite-plugin-codeigniter@2.0.0: resolution: { - integrity: sha512-VXrzMeMKiqluyMKVALjaw0IK8TaIWwAdOIt6H2vU0QSnG7HI8NnHYcKSh3Zbb5/arwK5Op4JitbEVU6KzllPgQ==, + integrity: sha512-F4S23BlXu1Yhb2k/cHeB3DV8q1BN+GNFf63jDFRqL4vwdv12/RWK+hBhNSsUUQguklogluza6GL+U1W8t/ba0w==, } peerDependencies: - vite: ^6.0.0 + vite: ^7.0.0 - vite-plugin-inspect@11.0.0: + vite-plugin-inspect@11.3.3: resolution: { - integrity: sha512-Q0RDNcMs1mbI2yGRwOzSapnnA6NFO0j88+Vb8pJX0iYMw34WczwKJi3JgheItDhbWRq/CLUR0cs+ajZpcUaIFQ==, + integrity: sha512-u2eV5La99oHoYPHE6UvbwgEqKKOQGz86wMg40CCosP6q8BkB6e5xPneZfYagK4ojPJSj5anHCrnvC20DpwVdRA==, } engines: { node: ">=14" } peerDependencies: "@nuxt/kit": "*" - vite: ^6.0.0 + vite: ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: "@nuxt/kit": optional: true - vite-plugin-pwa@0.21.1: + vite-plugin-pwa@1.0.3: resolution: { - integrity: sha512-rkTbKFbd232WdiRJ9R3u+hZmf5SfQljX1b45NF6oLA6DSktEKpYllgTo1l2lkiZWMWV78pABJtFjNXfBef3/3Q==, + integrity: sha512-/OpqIpUldALGxcsEnv/ekQiQ5xHkQ53wcoN5ewX4jiIDNGs3W+eNcI1WYZeyOLmzoEjg09D7aX0O89YGjen1aw==, } engines: { node: ">=16.0.0" } peerDependencies: - "@vite-pwa/assets-generator": ^0.2.6 - vite: ^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + "@vite-pwa/assets-generator": ^1.0.0 + vite: ^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 workbox-build: ^7.3.0 workbox-window: ^7.3.0 peerDependenciesMeta: "@vite-pwa/assets-generator": optional: true - vite-plugin-static-copy@2.3.0: + vite-plugin-static-copy@3.1.2: resolution: { - integrity: sha512-LLKwhhHetGaCnWz4mas4qqjjguDka6/6b4+SeIohRroj8aCE7QTfiZECfPecslFQkWZ3HdQuq5kOPmWZjNYlKA==, + integrity: sha512-aVmYOzptLVOI2b1jL+cmkF7O6uhRv1u5fvOkQgbohWZp2CbR22kn9ZqkCUIt9umKF7UhdbsEpshn1rf4720QFg==, } engines: { node: ^18.0.0 || >=20.0.0 } peerDependencies: - vite: ^5.0.0 || ^6.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - vite@6.2.2: + vite@7.1.3: resolution: { - integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==, + integrity: sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==, } - engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true peerDependencies: - "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + "@types/node": ^20.19.0 || >=22.12.0 jiti: ">=1.21.0" - less: "*" + less: ^4.0.0 lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: ">=0.54.8" + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 @@ -9337,10 +9422,10 @@ packages: integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, } - wavesurfer.js@7.9.1: + wavesurfer.js@7.10.1: resolution: { - integrity: sha512-+pG8X9c9BrfAW8KR54OPzZcAj/57sOL08He/tc6/7Mt6NCX3IfDFwexQxXVTILggGZUOUk7tFKfny32yGrysKA==, + integrity: sha512-tF1ptFCAi8SAqKbM1e7705zouLC3z4ulXCg15kSP5dQ7VDV30Q3x/xFRcuVIYTT5+jB/PdkhiBRCfsMshZG1Ug==, } wcwidth@1.0.1: @@ -9373,11 +9458,26 @@ packages: integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==, } - which-boxed-primitive@1.0.2: + which-boxed-primitive@1.1.1: resolution: { - integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, + integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==, } + engines: { node: ">= 0.4" } + + which-builtin-type@1.2.1: + resolution: + { + integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==, + } + engines: { node: ">= 0.4" } + + which-collection@1.0.2: + resolution: + { + integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==, + } + engines: { node: ">= 0.4" } which-module@2.0.1: resolution: @@ -9385,10 +9485,10 @@ packages: integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, } - which-typed-array@1.1.15: + which-typed-array@1.1.19: resolution: { - integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==, + integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==, } engines: { node: ">= 0.4" } @@ -9558,25 +9658,33 @@ packages: } engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - xml-formatter@3.6.4: + wsl-utils@0.1.0: resolution: { - integrity: sha512-vkvTNw4u9mp72lMmJHw771NE9EJLX0kfwIcP+ZEo9eJ6HmotX23vmykyROyIQ9Y3a+ckdUdhxIE2ZO66rYuPrg==, + integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==, + } + engines: { node: ">=18" } + + xml-formatter@3.6.6: + resolution: + { + integrity: sha512-yfofQht42x2sN1YThT6Er6GFXiQinfDAsMTNvMPi2uZw5/Vtc2PYHfvALR8U+b2oN2ekBxLd2tGWV06rAM8nQA==, } engines: { node: ">= 16" } - xml-parser-xo@4.1.2: + xml-parser-xo@4.1.4: resolution: { - integrity: sha512-Z/DRB0ZAKj5vAQg++XsfQQKfT73Vfj5n5lKIVXobBDQEva6NHWUTxOA6OohJmEcpoy8AEqBmSGkXXAnFwt5qAA==, + integrity: sha512-wo+yWDNeMwd1ctzH4CsiGXaAappDsxuR+VnmPewOzHk/zvefksT2ZlcWpAePl11THOWgnIZM4GjvumevurNWZw==, } engines: { node: ">= 16" } - xmldoc@1.3.0: + xmldoc@2.0.2: resolution: { - integrity: sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng==, + integrity: sha512-UiRwoSStEXS3R+YE8OqYv3jebza8cBBAI2y8g3B15XFkn3SbEOyyLnmPHjLBPZANrPJKEzxxB7A3XwcLikQVlQ==, } + engines: { node: ">=12.0.0" } xtend@4.0.2: resolution: @@ -9604,12 +9712,12 @@ packages: integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, } - yaml@2.7.0: + yaml@2.8.1: resolution: { - integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==, + integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==, } - engines: { node: ">= 14" } + engines: { node: ">= 14.6" } hasBin: true yargs-parser@18.1.3: @@ -9661,41 +9769,41 @@ packages: } engines: { node: ">=10" } - yocto-queue@1.1.1: + yocto-queue@1.2.1: resolution: { - integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==, + integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==, } engines: { node: ">=12.20" } - yoctocolors@2.1.1: + yoctocolors@2.1.2: resolution: { - integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==, + integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==, } engines: { node: ">=18" } - zod@3.24.2: + zod@4.1.1: resolution: { - integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==, + integrity: sha512-SgMZK/h8Tigt9nnKkfJMvB/mKjiJXaX26xegP4sa+0wHIFVFWVlsQGdhklDmuargBD3Hsi3rsQRIzwJIhTPJHA==, } snapshots: "@alloc/quick-lru@5.2.0": {} - "@amcharts/amcharts4-geodata@4.1.30": {} + "@amcharts/amcharts4-geodata@4.1.31": {} "@amcharts/amcharts4@4.10.40": dependencies: - "@babel/runtime": 7.26.0 - core-js: 3.39.0 + "@babel/runtime": 7.28.3 + core-js: 3.45.1 d3-force: 3.0.0 d3-geo: 3.1.1 d3-geo-projection: 4.0.0 d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - pdfmake: 0.2.15 + pdfmake: 0.2.20 polylabel: 1.1.0 raf: 3.4.1 regression: 2.0.1 @@ -9705,8 +9813,8 @@ snapshots: "@ampproject/remapping@2.3.0": dependencies: - "@jridgewell/gen-mapping": 0.3.5 - "@jridgewell/trace-mapping": 0.3.25 + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/trace-mapping": 0.3.30 "@apideck/better-ajv-errors@0.3.6(ajv@8.17.1)": dependencies: @@ -9715,838 +9823,808 @@ snapshots: jsonpointer: 5.0.1 leven: 3.1.0 - "@babel/code-frame@7.26.2": + "@babel/code-frame@7.27.1": dependencies: - "@babel/helper-validator-identifier": 7.25.9 + "@babel/helper-validator-identifier": 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - "@babel/compat-data@7.26.2": {} + "@babel/compat-data@7.28.0": {} - "@babel/core@7.26.0": + "@babel/core@7.28.3": dependencies: "@ampproject/remapping": 2.3.0 - "@babel/code-frame": 7.26.2 - "@babel/generator": 7.26.2 - "@babel/helper-compilation-targets": 7.25.9 - "@babel/helper-module-transforms": 7.26.0(@babel/core@7.26.0) - "@babel/helpers": 7.26.0 - "@babel/parser": 7.26.2 - "@babel/template": 7.25.9 - "@babel/traverse": 7.25.9 - "@babel/types": 7.26.0 + "@babel/code-frame": 7.27.1 + "@babel/generator": 7.28.3 + "@babel/helper-compilation-targets": 7.27.2 + "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) + "@babel/helpers": 7.28.3 + "@babel/parser": 7.28.3 + "@babel/template": 7.27.2 + "@babel/traverse": 7.28.3 + "@babel/types": 7.28.2 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/generator@7.26.2": + "@babel/generator@7.28.3": dependencies: - "@babel/parser": 7.26.2 - "@babel/types": 7.26.0 - "@jridgewell/gen-mapping": 0.3.5 - "@jridgewell/trace-mapping": 0.3.25 - jsesc: 3.0.2 + "@babel/parser": 7.28.3 + "@babel/types": 7.28.2 + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/trace-mapping": 0.3.30 + jsesc: 3.1.0 - "@babel/helper-annotate-as-pure@7.25.9": + "@babel/helper-annotate-as-pure@7.27.3": dependencies: - "@babel/types": 7.26.0 + "@babel/types": 7.28.2 - "@babel/helper-builder-binary-assignment-operator-visitor@7.25.9": + "@babel/helper-compilation-targets@7.27.2": dependencies: - "@babel/traverse": 7.25.9 - "@babel/types": 7.26.0 - transitivePeerDependencies: - - supports-color - - "@babel/helper-compilation-targets@7.25.9": - dependencies: - "@babel/compat-data": 7.26.2 - "@babel/helper-validator-option": 7.25.9 - browserslist: 4.24.2 + "@babel/compat-data": 7.28.0 + "@babel/helper-validator-option": 7.27.1 + browserslist: 4.25.3 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)": + "@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-annotate-as-pure": 7.25.9 - "@babel/helper-member-expression-to-functions": 7.25.9 - "@babel/helper-optimise-call-expression": 7.25.9 - "@babel/helper-replace-supers": 7.25.9(@babel/core@7.26.0) - "@babel/helper-skip-transparent-expression-wrappers": 7.25.9 - "@babel/traverse": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-annotate-as-pure": 7.27.3 + "@babel/helper-member-expression-to-functions": 7.27.1 + "@babel/helper-optimise-call-expression": 7.27.1 + "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.3) + "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 + "@babel/traverse": 7.28.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)": + "@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-annotate-as-pure": 7.25.9 - regexpu-core: 6.1.1 + "@babel/core": 7.28.3 + "@babel/helper-annotate-as-pure": 7.27.3 + regexpu-core: 6.2.0 semver: 6.3.1 - "@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)": + "@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-compilation-targets": 7.25.9 - "@babel/helper-plugin-utils": 7.25.9 - debug: 4.4.0 + "@babel/core": 7.28.3 + "@babel/helper-compilation-targets": 7.27.2 + "@babel/helper-plugin-utils": 7.27.1 + debug: 4.4.1 lodash.debounce: 4.0.8 - resolve: 1.22.8 + resolve: 1.22.10 transitivePeerDependencies: - supports-color - "@babel/helper-member-expression-to-functions@7.25.9": + "@babel/helper-globals@7.28.0": {} + + "@babel/helper-member-expression-to-functions@7.27.1": dependencies: - "@babel/traverse": 7.25.9 - "@babel/types": 7.26.0 + "@babel/traverse": 7.28.3 + "@babel/types": 7.28.2 transitivePeerDependencies: - supports-color - "@babel/helper-module-imports@7.25.9": + "@babel/helper-module-imports@7.27.1": dependencies: - "@babel/traverse": 7.25.9 - "@babel/types": 7.26.0 + "@babel/traverse": 7.28.3 + "@babel/types": 7.28.2 transitivePeerDependencies: - supports-color - "@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)": + "@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-module-imports": 7.25.9 - "@babel/helper-validator-identifier": 7.25.9 - "@babel/traverse": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-module-imports": 7.27.1 + "@babel/helper-validator-identifier": 7.27.1 + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/helper-optimise-call-expression@7.25.9": + "@babel/helper-optimise-call-expression@7.27.1": dependencies: - "@babel/types": 7.26.0 + "@babel/types": 7.28.2 - "@babel/helper-plugin-utils@7.25.9": {} + "@babel/helper-plugin-utils@7.27.1": {} - "@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)": + "@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-annotate-as-pure": 7.25.9 - "@babel/helper-wrap-function": 7.25.9 - "@babel/traverse": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-annotate-as-pure": 7.27.3 + "@babel/helper-wrap-function": 7.28.3 + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)": + "@babel/helper-replace-supers@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-member-expression-to-functions": 7.25.9 - "@babel/helper-optimise-call-expression": 7.25.9 - "@babel/traverse": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-member-expression-to-functions": 7.27.1 + "@babel/helper-optimise-call-expression": 7.27.1 + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/helper-simple-access@7.25.9": + "@babel/helper-skip-transparent-expression-wrappers@7.27.1": dependencies: - "@babel/traverse": 7.25.9 - "@babel/types": 7.26.0 + "@babel/traverse": 7.28.3 + "@babel/types": 7.28.2 transitivePeerDependencies: - supports-color - "@babel/helper-skip-transparent-expression-wrappers@7.25.9": + "@babel/helper-string-parser@7.27.1": {} + + "@babel/helper-validator-identifier@7.27.1": {} + + "@babel/helper-validator-option@7.27.1": {} + + "@babel/helper-wrap-function@7.28.3": dependencies: - "@babel/traverse": 7.25.9 - "@babel/types": 7.26.0 + "@babel/template": 7.27.2 + "@babel/traverse": 7.28.3 + "@babel/types": 7.28.2 transitivePeerDependencies: - supports-color - "@babel/helper-string-parser@7.25.9": {} - - "@babel/helper-validator-identifier@7.25.9": {} - - "@babel/helper-validator-option@7.25.9": {} - - "@babel/helper-wrap-function@7.25.9": + "@babel/helpers@7.28.3": dependencies: - "@babel/template": 7.25.9 - "@babel/traverse": 7.25.9 - "@babel/types": 7.26.0 + "@babel/template": 7.27.2 + "@babel/types": 7.28.2 + + "@babel/parser@7.28.3": + dependencies: + "@babel/types": 7.28.2 + + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/helpers@7.26.0": + "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/template": 7.25.9 - "@babel/types": 7.26.0 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/parser@7.26.2": + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/types": 7.26.0 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/traverse": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 + "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": 7.25.9 - "@babel/plugin-transform-optional-chaining": 7.25.9(@babel/core@7.26.0) + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/traverse": 7.25.9 + "@babel/core": 7.28.3 + + "@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.28.3) + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)": + "@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - - "@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-regexp-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-remap-async-to-generator": 7.25.9(@babel/core@7.26.0) - "@babel/traverse": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-module-imports": 7.27.1 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-module-imports": 7.25.9 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-remap-async-to-generator": 7.25.9(@babel/core@7.26.0) + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-class-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)": + "@babel/plugin-transform-classes@7.28.3(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-class-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-annotate-as-pure": 7.27.3 + "@babel/helper-compilation-targets": 7.27.2 + "@babel/helper-globals": 7.28.0 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.3) + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-annotate-as-pure": 7.25.9 - "@babel/helper-compilation-targets": 7.25.9 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-replace-supers": 7.25.9(@babel/core@7.26.0) - "@babel/traverse": 7.25.9 - globals: 11.12.0 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/template": 7.27.2 + + "@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/template": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-regexp-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-regexp-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-builder-binary-assignment-operator-visitor": 7.25.9 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-compilation-targets": 7.25.9 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/traverse": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-compilation-targets": 7.27.2 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-module-transforms": 7.26.0(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-module-transforms": 7.26.0(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-simple-access": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-module-transforms": 7.26.0(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-validator-identifier": 7.25.9 - "@babel/traverse": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-validator-identifier": 7.27.1 + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-module-transforms": 7.26.0(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-regexp-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-compilation-targets": 7.25.9 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/plugin-transform-parameters": 7.25.9(@babel/core@7.26.0) - - "@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-replace-supers": 7.25.9(@babel/core@7.26.0) + "@babel/core": 7.28.3 + "@babel/helper-compilation-targets": 7.27.2 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) + "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) + "@babel/traverse": 7.28.3 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-class-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-annotate-as-pure": 7.25.9 - "@babel/helper-create-class-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - regenerator-transform: 0.15.2 - - "@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-regexp-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - - "@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)": - dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-skip-transparent-expression-wrappers": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-annotate-as-pure": 7.27.3 + "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-regenerator@7.28.3(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-regexp-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-regexp-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 + transitivePeerDependencies: + - supports-color - "@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)": + "@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-create-regexp-features-plugin": 7.25.9(@babel/core@7.26.0) - "@babel/helper-plugin-utils": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 - "@babel/preset-env@7.26.0(@babel/core@7.26.0)": + "@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.3)": dependencies: - "@babel/compat-data": 7.26.2 - "@babel/core": 7.26.0 - "@babel/helper-compilation-targets": 7.25.9 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/helper-validator-option": 7.25.9 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-bugfix-safari-class-field-initializer-scope": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) - "@babel/plugin-syntax-import-assertions": 7.26.0(@babel/core@7.26.0) - "@babel/plugin-syntax-import-attributes": 7.26.0(@babel/core@7.26.0) - "@babel/plugin-syntax-unicode-sets-regex": 7.18.6(@babel/core@7.26.0) - "@babel/plugin-transform-arrow-functions": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-async-generator-functions": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-async-to-generator": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-block-scoped-functions": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-block-scoping": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-class-properties": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-class-static-block": 7.26.0(@babel/core@7.26.0) - "@babel/plugin-transform-classes": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-computed-properties": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-destructuring": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-dotall-regex": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-duplicate-keys": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-dynamic-import": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-exponentiation-operator": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-export-namespace-from": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-for-of": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-function-name": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-json-strings": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-literals": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-logical-assignment-operators": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-member-expression-literals": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-modules-amd": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-modules-commonjs": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-modules-systemjs": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-modules-umd": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-named-capturing-groups-regex": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-new-target": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-nullish-coalescing-operator": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-numeric-separator": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-object-rest-spread": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-object-super": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-optional-catch-binding": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-optional-chaining": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-parameters": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-private-methods": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-private-property-in-object": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-property-literals": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-regenerator": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-regexp-modifiers": 7.26.0(@babel/core@7.26.0) - "@babel/plugin-transform-reserved-words": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-shorthand-properties": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-spread": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-sticky-regex": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-template-literals": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-typeof-symbol": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-unicode-escapes": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-unicode-property-regex": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-unicode-regex": 7.25.9(@babel/core@7.26.0) - "@babel/plugin-transform-unicode-sets-regex": 7.25.9(@babel/core@7.26.0) - "@babel/preset-modules": 0.1.6-no-external-plugins(@babel/core@7.26.0) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) - core-js-compat: 3.39.0 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.3)": + dependencies: + "@babel/core": 7.28.3 + "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) + "@babel/helper-plugin-utils": 7.27.1 + + "@babel/preset-env@7.28.3(@babel/core@7.28.3)": + dependencies: + "@babel/compat-data": 7.28.0 + "@babel/core": 7.28.3 + "@babel/helper-compilation-targets": 7.27.2 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-validator-option": 7.27.1 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-bugfix-safari-class-field-initializer-scope": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": 7.28.3(@babel/core@7.28.3) + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3) + "@babel/plugin-syntax-import-assertions": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-syntax-import-attributes": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-syntax-unicode-sets-regex": 7.18.6(@babel/core@7.28.3) + "@babel/plugin-transform-arrow-functions": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-async-generator-functions": 7.28.0(@babel/core@7.28.3) + "@babel/plugin-transform-async-to-generator": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-block-scoped-functions": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-block-scoping": 7.28.0(@babel/core@7.28.3) + "@babel/plugin-transform-class-properties": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-class-static-block": 7.28.3(@babel/core@7.28.3) + "@babel/plugin-transform-classes": 7.28.3(@babel/core@7.28.3) + "@babel/plugin-transform-computed-properties": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) + "@babel/plugin-transform-dotall-regex": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-duplicate-keys": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-dynamic-import": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-explicit-resource-management": 7.28.0(@babel/core@7.28.3) + "@babel/plugin-transform-exponentiation-operator": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-export-namespace-from": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-for-of": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-function-name": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-json-strings": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-literals": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-logical-assignment-operators": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-member-expression-literals": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-modules-amd": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-modules-systemjs": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-modules-umd": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-new-target": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-nullish-coalescing-operator": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-numeric-separator": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-object-rest-spread": 7.28.0(@babel/core@7.28.3) + "@babel/plugin-transform-object-super": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-optional-catch-binding": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) + "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-property-literals": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-regenerator": 7.28.3(@babel/core@7.28.3) + "@babel/plugin-transform-regexp-modifiers": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-reserved-words": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-shorthand-properties": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-spread": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-sticky-regex": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-template-literals": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-typeof-symbol": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-unicode-escapes": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-unicode-property-regex": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-unicode-regex": 7.27.1(@babel/core@7.28.3) + "@babel/plugin-transform-unicode-sets-regex": 7.27.1(@babel/core@7.28.3) + "@babel/preset-modules": 0.1.6-no-external-plugins(@babel/core@7.28.3) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.3) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.3) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.3) + core-js-compat: 3.45.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)": + "@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.3)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-plugin-utils": 7.25.9 - "@babel/types": 7.26.0 + "@babel/core": 7.28.3 + "@babel/helper-plugin-utils": 7.27.1 + "@babel/types": 7.28.2 esutils: 2.0.3 - "@babel/runtime@7.26.0": - dependencies: - regenerator-runtime: 0.14.1 + "@babel/runtime@7.28.3": {} - "@babel/template@7.25.9": + "@babel/template@7.27.2": dependencies: - "@babel/code-frame": 7.26.2 - "@babel/parser": 7.26.2 - "@babel/types": 7.26.0 + "@babel/code-frame": 7.27.1 + "@babel/parser": 7.28.3 + "@babel/types": 7.28.2 - "@babel/traverse@7.25.9": + "@babel/traverse@7.28.3": dependencies: - "@babel/code-frame": 7.26.2 - "@babel/generator": 7.26.2 - "@babel/parser": 7.26.2 - "@babel/template": 7.25.9 - "@babel/types": 7.26.0 - debug: 4.4.0 - globals: 11.12.0 + "@babel/code-frame": 7.27.1 + "@babel/generator": 7.28.3 + "@babel/helper-globals": 7.28.0 + "@babel/parser": 7.28.3 + "@babel/template": 7.27.2 + "@babel/types": 7.28.2 + debug: 4.4.1 transitivePeerDependencies: - supports-color - "@babel/types@7.26.0": + "@babel/types@7.28.2": dependencies: - "@babel/helper-string-parser": 7.25.9 - "@babel/helper-validator-identifier": 7.25.9 + "@babel/helper-string-parser": 7.27.1 + "@babel/helper-validator-identifier": 7.27.1 - "@codemirror/autocomplete@6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3)": + "@codemirror/autocomplete@6.18.6": dependencies: - "@codemirror/language": 6.11.0 + "@codemirror/language": 6.11.3 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.36.4 + "@codemirror/view": 6.38.1 "@lezer/common": 1.2.3 - "@codemirror/commands@6.8.0": + "@codemirror/commands@6.8.1": dependencies: - "@codemirror/language": 6.11.0 + "@codemirror/language": 6.11.3 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.36.4 + "@codemirror/view": 6.38.1 "@lezer/common": 1.2.3 - "@codemirror/lang-css@6.3.1(@codemirror/view@6.36.4)": + "@codemirror/lang-css@6.3.1": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) - "@codemirror/language": 6.11.0 + "@codemirror/autocomplete": 6.18.6 + "@codemirror/language": 6.11.3 "@codemirror/state": 6.5.2 "@lezer/common": 1.2.3 - "@lezer/css": 1.1.9 - transitivePeerDependencies: - - "@codemirror/view" + "@lezer/css": 1.3.0 "@codemirror/lang-html@6.4.9": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) - "@codemirror/lang-css": 6.3.1(@codemirror/view@6.36.4) - "@codemirror/lang-javascript": 6.2.2 - "@codemirror/language": 6.11.0 + "@codemirror/autocomplete": 6.18.6 + "@codemirror/lang-css": 6.3.1 + "@codemirror/lang-javascript": 6.2.4 + "@codemirror/language": 6.11.3 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.36.4 + "@codemirror/view": 6.38.1 "@lezer/common": 1.2.3 - "@lezer/css": 1.1.9 + "@lezer/css": 1.3.0 "@lezer/html": 1.3.10 - "@codemirror/lang-javascript@6.2.2": + "@codemirror/lang-javascript@6.2.4": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) - "@codemirror/language": 6.11.0 - "@codemirror/lint": 6.8.2 + "@codemirror/autocomplete": 6.18.6 + "@codemirror/language": 6.11.3 + "@codemirror/lint": 6.8.5 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.36.4 + "@codemirror/view": 6.38.1 "@lezer/common": 1.2.3 - "@lezer/javascript": 1.4.21 + "@lezer/javascript": 1.5.1 "@codemirror/lang-xml@6.1.0": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) - "@codemirror/language": 6.11.0 + "@codemirror/autocomplete": 6.18.6 + "@codemirror/language": 6.11.3 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.36.4 + "@codemirror/view": 6.38.1 "@lezer/common": 1.2.3 - "@lezer/xml": 1.0.5 + "@lezer/xml": 1.0.6 - "@codemirror/language@6.11.0": + "@codemirror/language@6.11.3": dependencies: "@codemirror/state": 6.5.2 - "@codemirror/view": 6.36.4 + "@codemirror/view": 6.38.1 "@lezer/common": 1.2.3 "@lezer/highlight": 1.2.1 "@lezer/lr": 1.4.2 style-mod: 4.1.2 - "@codemirror/lint@6.8.2": + "@codemirror/lint@6.8.5": dependencies: "@codemirror/state": 6.5.2 - "@codemirror/view": 6.36.4 + "@codemirror/view": 6.38.1 crelt: 1.0.6 - "@codemirror/search@6.5.7": + "@codemirror/search@6.5.11": dependencies: "@codemirror/state": 6.5.2 - "@codemirror/view": 6.36.4 + "@codemirror/view": 6.38.1 crelt: 1.0.6 "@codemirror/state@6.5.2": dependencies: "@marijn/find-cluster-break": 1.0.2 - "@codemirror/view@6.36.4": + "@codemirror/view@6.38.1": dependencies: "@codemirror/state": 6.5.2 + crelt: 1.0.6 style-mod: 4.1.2 w3c-keyname: 2.2.8 "@colors/colors@1.5.0": optional: true - "@commitlint/cli@19.8.0(@types/node@22.9.0)(typescript@5.7.3)": + "@commitlint/cli@19.8.1(@types/node@24.3.0)(typescript@5.9.2)": dependencies: - "@commitlint/format": 19.8.0 - "@commitlint/lint": 19.8.0 - "@commitlint/load": 19.8.0(@types/node@22.9.0)(typescript@5.7.3) - "@commitlint/read": 19.8.0 - "@commitlint/types": 19.8.0 - tinyexec: 0.3.1 + "@commitlint/format": 19.8.1 + "@commitlint/lint": 19.8.1 + "@commitlint/load": 19.8.1(@types/node@24.3.0)(typescript@5.9.2) + "@commitlint/read": 19.8.1 + "@commitlint/types": 19.8.1 + tinyexec: 1.0.1 yargs: 17.7.2 transitivePeerDependencies: - "@types/node" - typescript - "@commitlint/config-conventional@19.8.0": + "@commitlint/config-conventional@19.8.1": dependencies: - "@commitlint/types": 19.8.0 + "@commitlint/types": 19.8.1 conventional-changelog-conventionalcommits: 7.0.2 - "@commitlint/config-validator@19.5.0": + "@commitlint/config-validator@19.8.1": dependencies: - "@commitlint/types": 19.5.0 - ajv: 8.17.1 - optional: true - - "@commitlint/config-validator@19.8.0": - dependencies: - "@commitlint/types": 19.8.0 + "@commitlint/types": 19.8.1 ajv: 8.17.1 - "@commitlint/ensure@19.8.0": + "@commitlint/ensure@19.8.1": dependencies: - "@commitlint/types": 19.8.0 + "@commitlint/types": 19.8.1 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 lodash.startcase: 4.4.0 lodash.upperfirst: 4.3.1 - "@commitlint/execute-rule@19.5.0": - optional: true + "@commitlint/execute-rule@19.8.1": {} - "@commitlint/execute-rule@19.8.0": {} - - "@commitlint/format@19.8.0": + "@commitlint/format@19.8.1": dependencies: - "@commitlint/types": 19.8.0 - chalk: 5.4.1 + "@commitlint/types": 19.8.1 + chalk: 5.6.0 - "@commitlint/is-ignored@19.8.0": + "@commitlint/is-ignored@19.8.1": dependencies: - "@commitlint/types": 19.8.0 - semver: 7.6.3 + "@commitlint/types": 19.8.1 + semver: 7.7.2 - "@commitlint/lint@19.8.0": + "@commitlint/lint@19.8.1": dependencies: - "@commitlint/is-ignored": 19.8.0 - "@commitlint/parse": 19.8.0 - "@commitlint/rules": 19.8.0 - "@commitlint/types": 19.8.0 + "@commitlint/is-ignored": 19.8.1 + "@commitlint/parse": 19.8.1 + "@commitlint/rules": 19.8.1 + "@commitlint/types": 19.8.1 - "@commitlint/load@19.5.0(@types/node@22.9.0)(typescript@5.7.3)": + "@commitlint/load@19.8.1(@types/node@24.3.0)(typescript@5.9.2)": dependencies: - "@commitlint/config-validator": 19.5.0 - "@commitlint/execute-rule": 19.5.0 - "@commitlint/resolve-extends": 19.5.0 - "@commitlint/types": 19.5.0 - chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.7.3) - cosmiconfig-typescript-loader: 5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - transitivePeerDependencies: - - "@types/node" - - typescript - optional: true - - "@commitlint/load@19.8.0(@types/node@22.9.0)(typescript@5.7.3)": - dependencies: - "@commitlint/config-validator": 19.8.0 - "@commitlint/execute-rule": 19.8.0 - "@commitlint/resolve-extends": 19.8.0 - "@commitlint/types": 19.8.0 - chalk: 5.4.1 - cosmiconfig: 9.0.0(typescript@5.7.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) + "@commitlint/config-validator": 19.8.1 + "@commitlint/execute-rule": 19.8.1 + "@commitlint/resolve-extends": 19.8.1 + "@commitlint/types": 19.8.1 + chalk: 5.6.0 + cosmiconfig: 9.0.0(typescript@5.9.2) + cosmiconfig-typescript-loader: 6.1.0(@types/node@24.3.0)(cosmiconfig@9.0.0(typescript@5.9.2))(typescript@5.9.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -10554,457 +10632,469 @@ snapshots: - "@types/node" - typescript - "@commitlint/message@19.8.0": {} + "@commitlint/message@19.8.1": {} - "@commitlint/parse@19.8.0": + "@commitlint/parse@19.8.1": dependencies: - "@commitlint/types": 19.8.0 + "@commitlint/types": 19.8.1 conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 - "@commitlint/read@19.8.0": + "@commitlint/read@19.8.1": dependencies: - "@commitlint/top-level": 19.8.0 - "@commitlint/types": 19.8.0 + "@commitlint/top-level": 19.8.1 + "@commitlint/types": 19.8.1 git-raw-commits: 4.0.0 minimist: 1.2.8 - tinyexec: 0.3.1 + tinyexec: 1.0.1 - "@commitlint/resolve-extends@19.5.0": + "@commitlint/resolve-extends@19.8.1": dependencies: - "@commitlint/config-validator": 19.5.0 - "@commitlint/types": 19.5.0 - global-directory: 4.0.1 - import-meta-resolve: 4.1.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - optional: true - - "@commitlint/resolve-extends@19.8.0": - dependencies: - "@commitlint/config-validator": 19.8.0 - "@commitlint/types": 19.8.0 + "@commitlint/config-validator": 19.8.1 + "@commitlint/types": 19.8.1 global-directory: 4.0.1 import-meta-resolve: 4.1.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - "@commitlint/rules@19.8.0": + "@commitlint/rules@19.8.1": dependencies: - "@commitlint/ensure": 19.8.0 - "@commitlint/message": 19.8.0 - "@commitlint/to-lines": 19.8.0 - "@commitlint/types": 19.8.0 + "@commitlint/ensure": 19.8.1 + "@commitlint/message": 19.8.1 + "@commitlint/to-lines": 19.8.1 + "@commitlint/types": 19.8.1 - "@commitlint/to-lines@19.8.0": {} + "@commitlint/to-lines@19.8.1": {} - "@commitlint/top-level@19.8.0": + "@commitlint/top-level@19.8.1": dependencies: find-up: 7.0.0 - "@commitlint/types@19.5.0": + "@commitlint/types@19.8.1": dependencies: - "@types/conventional-commits-parser": 5.0.0 - chalk: 5.4.1 - optional: true + "@types/conventional-commits-parser": 5.0.1 + chalk: 5.6.0 - "@commitlint/types@19.8.0": + "@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": dependencies: - "@types/conventional-commits-parser": 5.0.0 - chalk: 5.4.1 + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 - "@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/color-helpers@5.1.0": {} + + "@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": dependencies: - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 - "@csstools/color-helpers@5.0.2": {} - - "@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": dependencies: - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 + "@csstools/color-helpers": 5.1.0 + "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 - "@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)": dependencies: - "@csstools/color-helpers": 5.0.2 - "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 + "@csstools/css-tokenizer": 3.0.4 - "@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)": + "@csstools/css-tokenizer@3.0.4": {} + + "@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": dependencies: - "@csstools/css-tokenizer": 3.0.3 + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 - "@csstools/css-tokenizer@3.0.3": {} - - "@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/postcss-alpha-function@1.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.3)": + "@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.6)": dependencies: - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - "@csstools/postcss-color-function@4.0.8(postcss@8.5.3)": + "@csstools/postcss-color-function-display-p3-linear@1.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-color-mix-function@3.0.8(postcss@8.5.3)": + "@csstools/postcss-color-function@4.0.11(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-content-alt-text@2.0.4(postcss@8.5.3)": + "@csstools/postcss-color-mix-function@3.0.11(postcss@8.5.6)": dependencies: - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-exponential-functions@2.0.7(postcss@8.5.3)": + "@csstools/postcss-color-mix-variadic-function-arguments@1.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.3)": + "@csstools/postcss-content-alt-text@2.0.7(postcss@8.5.6)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + "@csstools/postcss-exponential-functions@2.0.9(postcss@8.5.6)": + dependencies: + "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + postcss: 8.5.6 + + "@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.6)": + dependencies: + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-gamut-mapping@2.0.8(postcss@8.5.3)": + "@csstools/postcss-gamut-mapping@2.0.11(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + postcss: 8.5.6 - "@csstools/postcss-gradients-interpolation-method@5.0.8(postcss@8.5.3)": + "@csstools/postcss-gradients-interpolation-method@5.0.11(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-hwb-function@4.0.8(postcss@8.5.3)": + "@csstools/postcss-hwb-function@4.0.11(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-ic-unit@4.0.0(postcss@8.5.3)": + "@csstools/postcss-ic-unit@4.0.3(postcss@8.5.6)": dependencies: - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-initial@2.0.1(postcss@8.5.3)": + "@csstools/postcss-initial@2.0.1(postcss@8.5.6)": dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - "@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.3)": + "@csstools/postcss-is-pseudo-class@5.0.3(postcss@8.5.6)": dependencies: - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - "@csstools/postcss-light-dark-function@2.0.7(postcss@8.5.3)": + "@csstools/postcss-light-dark-function@2.0.10(postcss@8.5.6)": dependencies: - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.3)": + "@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.6)": dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - "@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.3)": + "@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.6)": dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - "@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.3)": + "@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.6)": dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - "@csstools/postcss-logical-resize@3.0.0(postcss@8.5.3)": + "@csstools/postcss-logical-resize@3.0.0(postcss@8.5.6)": dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.3)": + "@csstools/postcss-logical-viewport-units@3.0.4(postcss@8.5.6)": dependencies: - "@csstools/css-tokenizer": 3.0.3 - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-tokenizer": 3.0.4 + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-media-minmax@2.0.7(postcss@8.5.3)": + "@csstools/postcss-media-minmax@2.0.9(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.3 + "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/media-query-list-parser": 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 - "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.3)": + "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5(postcss@8.5.6)": dependencies: - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.3 + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/media-query-list-parser": 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 - "@csstools/postcss-nested-calc@4.0.0(postcss@8.5.3)": + "@csstools/postcss-nested-calc@4.0.0(postcss@8.5.6)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.3)": + "@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.6)": dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-oklab-function@4.0.8(postcss@8.5.3)": + "@csstools/postcss-oklab-function@4.0.11(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.3)": + "@csstools/postcss-progressive-custom-properties@4.2.0(postcss@8.5.6)": dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-random-function@1.0.3(postcss@8.5.3)": + "@csstools/postcss-random-function@2.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - postcss: 8.5.3 + "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + postcss: 8.5.6 - "@csstools/postcss-relative-color-syntax@3.0.8(postcss@8.5.3)": + "@csstools/postcss-relative-color-syntax@3.0.11(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - "@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.3)": + "@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.6)": dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - "@csstools/postcss-sign-functions@1.1.2(postcss@8.5.3)": + "@csstools/postcss-sign-functions@1.1.4(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - postcss: 8.5.3 + "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + postcss: 8.5.6 - "@csstools/postcss-stepped-value-functions@4.0.7(postcss@8.5.3)": + "@csstools/postcss-stepped-value-functions@4.0.9(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - postcss: 8.5.3 + "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + postcss: 8.5.6 - "@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.3)": + "@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.6)": dependencies: - "@csstools/color-helpers": 5.0.2 - postcss: 8.5.3 + "@csstools/color-helpers": 5.1.0 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-trigonometric-functions@4.0.7(postcss@8.5.3)": + "@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - postcss: 8.5.3 + "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + postcss: 8.5.6 - "@csstools/postcss-unset-value@4.0.0(postcss@8.5.3)": + "@csstools/postcss-unset-value@4.0.0(postcss@8.5.6)": dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - "@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.0.0)": + "@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.0)": dependencies: - postcss-selector-parser: 7.0.0 - - "@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.0.0)": - dependencies: - postcss-selector-parser: 7.0.0 + postcss-selector-parser: 7.1.0 "@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)": dependencies: postcss-selector-parser: 7.1.0 - "@csstools/utilities@2.0.0(postcss@8.5.3)": + "@csstools/utilities@2.0.0(postcss@8.5.6)": dependencies: - postcss: 8.5.3 + postcss: 8.5.6 "@dual-bundle/import-meta-resolve@4.1.0": {} - "@emnapi/runtime@1.3.1": + "@emnapi/runtime@1.4.5": dependencies: tslib: 2.8.1 optional: true - "@esbuild/aix-ppc64@0.25.0": + "@epic-web/invariant@1.0.0": {} + + "@esbuild/aix-ppc64@0.25.9": optional: true - "@esbuild/android-arm64@0.25.0": + "@esbuild/android-arm64@0.25.9": optional: true - "@esbuild/android-arm@0.25.0": + "@esbuild/android-arm@0.25.9": optional: true - "@esbuild/android-x64@0.25.0": + "@esbuild/android-x64@0.25.9": optional: true - "@esbuild/darwin-arm64@0.25.0": + "@esbuild/darwin-arm64@0.25.9": optional: true - "@esbuild/darwin-x64@0.25.0": + "@esbuild/darwin-x64@0.25.9": optional: true - "@esbuild/freebsd-arm64@0.25.0": + "@esbuild/freebsd-arm64@0.25.9": optional: true - "@esbuild/freebsd-x64@0.25.0": + "@esbuild/freebsd-x64@0.25.9": optional: true - "@esbuild/linux-arm64@0.25.0": + "@esbuild/linux-arm64@0.25.9": optional: true - "@esbuild/linux-arm@0.25.0": + "@esbuild/linux-arm@0.25.9": optional: true - "@esbuild/linux-ia32@0.25.0": + "@esbuild/linux-ia32@0.25.9": optional: true - "@esbuild/linux-loong64@0.25.0": + "@esbuild/linux-loong64@0.25.9": optional: true - "@esbuild/linux-mips64el@0.25.0": + "@esbuild/linux-mips64el@0.25.9": optional: true - "@esbuild/linux-ppc64@0.25.0": + "@esbuild/linux-ppc64@0.25.9": optional: true - "@esbuild/linux-riscv64@0.25.0": + "@esbuild/linux-riscv64@0.25.9": optional: true - "@esbuild/linux-s390x@0.25.0": + "@esbuild/linux-s390x@0.25.9": optional: true - "@esbuild/linux-x64@0.25.0": + "@esbuild/linux-x64@0.25.9": optional: true - "@esbuild/netbsd-arm64@0.25.0": + "@esbuild/netbsd-arm64@0.25.9": optional: true - "@esbuild/netbsd-x64@0.25.0": + "@esbuild/netbsd-x64@0.25.9": optional: true - "@esbuild/openbsd-arm64@0.25.0": + "@esbuild/openbsd-arm64@0.25.9": optional: true - "@esbuild/openbsd-x64@0.25.0": + "@esbuild/openbsd-x64@0.25.9": optional: true - "@esbuild/sunos-x64@0.25.0": + "@esbuild/openharmony-arm64@0.25.9": optional: true - "@esbuild/win32-arm64@0.25.0": + "@esbuild/sunos-x64@0.25.9": optional: true - "@esbuild/win32-ia32@0.25.0": + "@esbuild/win32-arm64@0.25.9": optional: true - "@esbuild/win32-x64@0.25.0": + "@esbuild/win32-ia32@0.25.9": optional: true - "@eslint-community/eslint-utils@4.4.1(eslint@9.22.0(jiti@2.4.1))": + "@esbuild/win32-x64@0.25.9": + optional: true + + "@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.5.1))": dependencies: - eslint: 9.22.0(jiti@2.4.1) + eslint: 9.34.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 "@eslint-community/regexpp@4.12.1": {} - "@eslint/config-array@0.19.2": + "@eslint/config-array@0.21.0": dependencies: "@eslint/object-schema": 2.1.6 - debug: 4.4.0 + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - "@eslint/config-helpers@0.1.0": {} + "@eslint/config-helpers@0.3.1": {} - "@eslint/core@0.12.0": + "@eslint/core@0.15.2": dependencies: "@types/json-schema": 7.0.15 - "@eslint/eslintrc@3.3.0": + "@eslint/eslintrc@3.3.1": dependencies: ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 + debug: 4.4.1 + espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - "@eslint/js@9.22.0": {} + "@eslint/js@9.34.0": {} "@eslint/object-schema@2.1.6": {} - "@eslint/plugin-kit@0.2.7": + "@eslint/plugin-kit@0.3.5": dependencies: - "@eslint/core": 0.12.0 + "@eslint/core": 0.15.2 levn: 0.4.1 - "@floating-ui/core@1.6.8": + "@floating-ui/core@1.7.3": dependencies: - "@floating-ui/utils": 0.2.9 + "@floating-ui/utils": 0.2.10 - "@floating-ui/dom@1.6.13": + "@floating-ui/dom@1.7.4": dependencies: - "@floating-ui/core": 1.6.8 - "@floating-ui/utils": 0.2.9 + "@floating-ui/core": 1.7.3 + "@floating-ui/utils": 0.2.10 - "@floating-ui/utils@0.2.9": {} + "@floating-ui/utils@0.2.10": {} "@foliojs-fork/fontkit@1.9.2": dependencies: @@ -11022,7 +11112,7 @@ snapshots: base64-js: 1.3.1 unicode-trie: 2.0.0 - "@foliojs-fork/pdfkit@0.15.1": + "@foliojs-fork/pdfkit@0.15.3": dependencies: "@foliojs-fork/fontkit": 1.9.2 "@foliojs-fork/linebreak": 1.1.2 @@ -11038,7 +11128,7 @@ snapshots: "@github/markdown-toolbar-element@2.2.3": {} - "@github/relative-time-element@4.4.5": {} + "@github/relative-time-element@4.4.8": {} "@humanfs/core@0.19.1": {} @@ -11051,83 +11141,100 @@ snapshots: "@humanwhocodes/retry@0.3.1": {} - "@humanwhocodes/retry@0.4.2": {} + "@humanwhocodes/retry@0.4.3": {} - "@img/sharp-darwin-arm64@0.33.5": + "@img/sharp-darwin-arm64@0.34.3": optionalDependencies: - "@img/sharp-libvips-darwin-arm64": 1.0.4 + "@img/sharp-libvips-darwin-arm64": 1.2.0 optional: true - "@img/sharp-darwin-x64@0.33.5": + "@img/sharp-darwin-x64@0.34.3": optionalDependencies: - "@img/sharp-libvips-darwin-x64": 1.0.4 + "@img/sharp-libvips-darwin-x64": 1.2.0 optional: true - "@img/sharp-libvips-darwin-arm64@1.0.4": + "@img/sharp-libvips-darwin-arm64@1.2.0": optional: true - "@img/sharp-libvips-darwin-x64@1.0.4": + "@img/sharp-libvips-darwin-x64@1.2.0": optional: true - "@img/sharp-libvips-linux-arm64@1.0.4": + "@img/sharp-libvips-linux-arm64@1.2.0": optional: true - "@img/sharp-libvips-linux-arm@1.0.5": + "@img/sharp-libvips-linux-arm@1.2.0": optional: true - "@img/sharp-libvips-linux-s390x@1.0.4": + "@img/sharp-libvips-linux-ppc64@1.2.0": optional: true - "@img/sharp-libvips-linux-x64@1.0.4": + "@img/sharp-libvips-linux-s390x@1.2.0": optional: true - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": + "@img/sharp-libvips-linux-x64@1.2.0": optional: true - "@img/sharp-libvips-linuxmusl-x64@1.0.4": + "@img/sharp-libvips-linuxmusl-arm64@1.2.0": optional: true - "@img/sharp-linux-arm64@0.33.5": + "@img/sharp-libvips-linuxmusl-x64@1.2.0": + optional: true + + "@img/sharp-linux-arm64@0.34.3": optionalDependencies: - "@img/sharp-libvips-linux-arm64": 1.0.4 + "@img/sharp-libvips-linux-arm64": 1.2.0 optional: true - "@img/sharp-linux-arm@0.33.5": + "@img/sharp-linux-arm@0.34.3": optionalDependencies: - "@img/sharp-libvips-linux-arm": 1.0.5 + "@img/sharp-libvips-linux-arm": 1.2.0 optional: true - "@img/sharp-linux-s390x@0.33.5": + "@img/sharp-linux-ppc64@0.34.3": optionalDependencies: - "@img/sharp-libvips-linux-s390x": 1.0.4 + "@img/sharp-libvips-linux-ppc64": 1.2.0 optional: true - "@img/sharp-linux-x64@0.33.5": + "@img/sharp-linux-s390x@0.34.3": optionalDependencies: - "@img/sharp-libvips-linux-x64": 1.0.4 + "@img/sharp-libvips-linux-s390x": 1.2.0 optional: true - "@img/sharp-linuxmusl-arm64@0.33.5": + "@img/sharp-linux-x64@0.34.3": optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + "@img/sharp-libvips-linux-x64": 1.2.0 optional: true - "@img/sharp-linuxmusl-x64@0.33.5": + "@img/sharp-linuxmusl-arm64@0.34.3": optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.0 optional: true - "@img/sharp-wasm32@0.33.5": + "@img/sharp-linuxmusl-x64@0.34.3": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.2.0 + optional: true + + "@img/sharp-wasm32@0.34.3": dependencies: - "@emnapi/runtime": 1.3.1 + "@emnapi/runtime": 1.4.5 optional: true - "@img/sharp-win32-ia32@0.33.5": + "@img/sharp-win32-arm64@0.34.3": optional: true - "@img/sharp-win32-x64@0.33.5": + "@img/sharp-win32-ia32@0.34.3": optional: true + "@img/sharp-win32-x64@0.34.3": + optional: true + + "@isaacs/balanced-match@4.0.1": {} + + "@isaacs/brace-expansion@5.0.0": + dependencies: + "@isaacs/balanced-match": 4.0.1 + "@isaacs/cliui@8.0.2": dependencies: string-width: 5.1.2 @@ -11137,35 +11244,30 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - "@jridgewell/gen-mapping@0.3.5": + "@jridgewell/gen-mapping@0.3.13": dependencies: - "@jridgewell/set-array": 1.2.1 - "@jridgewell/sourcemap-codec": 1.5.0 - "@jridgewell/trace-mapping": 0.3.25 + "@jridgewell/sourcemap-codec": 1.5.5 + "@jridgewell/trace-mapping": 0.3.30 "@jridgewell/resolve-uri@3.1.2": {} - "@jridgewell/set-array@1.2.1": {} - - "@jridgewell/source-map@0.3.6": + "@jridgewell/source-map@0.3.11": dependencies: - "@jridgewell/gen-mapping": 0.3.5 - "@jridgewell/trace-mapping": 0.3.25 + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/trace-mapping": 0.3.30 - "@jridgewell/sourcemap-codec@1.5.0": {} + "@jridgewell/sourcemap-codec@1.5.5": {} - "@jridgewell/trace-mapping@0.3.25": + "@jridgewell/trace-mapping@0.3.30": dependencies: "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.0 + "@jridgewell/sourcemap-codec": 1.5.5 - "@keyv/serialize@1.0.2": - dependencies: - buffer: 6.0.3 + "@keyv/serialize@1.1.0": {} "@lezer/common@1.2.3": {} - "@lezer/css@1.1.9": + "@lezer/css@1.3.0": dependencies: "@lezer/common": 1.2.3 "@lezer/highlight": 1.2.1 @@ -11181,7 +11283,7 @@ snapshots: "@lezer/highlight": 1.2.1 "@lezer/lr": 1.4.2 - "@lezer/javascript@1.4.21": + "@lezer/javascript@1.5.1": dependencies: "@lezer/common": 1.2.3 "@lezer/highlight": 1.2.1 @@ -11191,21 +11293,21 @@ snapshots: dependencies: "@lezer/common": 1.2.3 - "@lezer/xml@1.0.5": + "@lezer/xml@1.0.6": dependencies: "@lezer/common": 1.2.3 "@lezer/highlight": 1.2.1 "@lezer/lr": 1.4.2 - "@lit-labs/ssr-dom-shim@1.2.1": {} + "@lit-labs/ssr-dom-shim@1.4.0": {} - "@lit/context@1.1.3": + "@lit/context@1.1.6": dependencies: - "@lit/reactive-element": 2.0.4 + "@lit/reactive-element": 2.1.1 - "@lit/reactive-element@2.0.4": + "@lit/reactive-element@2.1.1": dependencies: - "@lit-labs/ssr-dom-shim": 1.2.1 + "@lit-labs/ssr-dom-shim": 1.4.0 "@marijn/find-cluster-break@1.0.2": {} @@ -11219,86 +11321,87 @@ snapshots: "@nodelib/fs.walk@1.2.8": dependencies: "@nodelib/fs.scandir": 2.1.5 - fastq: 1.17.1 + fastq: 1.19.1 - "@octokit/auth-token@5.1.1": {} + "@octokit/auth-token@6.0.0": {} - "@octokit/core@6.1.2": + "@octokit/core@7.0.3": dependencies: - "@octokit/auth-token": 5.1.1 - "@octokit/graphql": 8.1.1 - "@octokit/request": 9.1.3 - "@octokit/request-error": 6.1.5 - "@octokit/types": 13.6.1 - before-after-hook: 3.0.2 - universal-user-agent: 7.0.2 + "@octokit/auth-token": 6.0.0 + "@octokit/graphql": 9.0.1 + "@octokit/request": 10.0.3 + "@octokit/request-error": 7.0.0 + "@octokit/types": 14.1.0 + before-after-hook: 4.0.0 + universal-user-agent: 7.0.3 - "@octokit/endpoint@10.1.1": + "@octokit/endpoint@11.0.0": dependencies: - "@octokit/types": 13.6.1 - universal-user-agent: 7.0.2 + "@octokit/types": 14.1.0 + universal-user-agent: 7.0.3 - "@octokit/graphql@8.1.1": + "@octokit/graphql@9.0.1": dependencies: - "@octokit/request": 9.1.3 - "@octokit/types": 13.6.1 - universal-user-agent: 7.0.2 + "@octokit/request": 10.0.3 + "@octokit/types": 14.1.0 + universal-user-agent: 7.0.3 - "@octokit/openapi-types@22.2.0": {} + "@octokit/openapi-types@25.1.0": {} - "@octokit/plugin-paginate-rest@11.3.5(@octokit/core@6.1.2)": + "@octokit/plugin-paginate-rest@13.1.1(@octokit/core@7.0.3)": dependencies: - "@octokit/core": 6.1.2 - "@octokit/types": 13.6.1 + "@octokit/core": 7.0.3 + "@octokit/types": 14.1.0 - "@octokit/plugin-retry@7.1.2(@octokit/core@6.1.2)": + "@octokit/plugin-retry@8.0.1(@octokit/core@7.0.3)": dependencies: - "@octokit/core": 6.1.2 - "@octokit/request-error": 6.1.5 - "@octokit/types": 13.6.1 + "@octokit/core": 7.0.3 + "@octokit/request-error": 7.0.0 + "@octokit/types": 14.1.0 bottleneck: 2.19.5 - "@octokit/plugin-throttling@9.3.2(@octokit/core@6.1.2)": + "@octokit/plugin-throttling@11.0.1(@octokit/core@7.0.3)": dependencies: - "@octokit/core": 6.1.2 - "@octokit/types": 13.6.1 + "@octokit/core": 7.0.3 + "@octokit/types": 14.1.0 bottleneck: 2.19.5 - "@octokit/request-error@6.1.5": + "@octokit/request-error@7.0.0": dependencies: - "@octokit/types": 13.6.1 + "@octokit/types": 14.1.0 - "@octokit/request@9.1.3": + "@octokit/request@10.0.3": dependencies: - "@octokit/endpoint": 10.1.1 - "@octokit/request-error": 6.1.5 - "@octokit/types": 13.6.1 - universal-user-agent: 7.0.2 + "@octokit/endpoint": 11.0.0 + "@octokit/request-error": 7.0.0 + "@octokit/types": 14.1.0 + fast-content-type-parse: 3.0.0 + universal-user-agent: 7.0.3 - "@octokit/types@13.6.1": + "@octokit/types@14.1.0": dependencies: - "@octokit/openapi-types": 22.2.0 + "@octokit/openapi-types": 25.1.0 - "@patternfly/elements@4.0.2": + "@patternfly/elements@4.2.0": dependencies: - "@lit/context": 1.1.3 + "@lit/context": 1.1.6 "@patternfly/icons": 1.0.3 - "@patternfly/pfe-core": 4.0.4 - lit: 3.2.1 + "@patternfly/pfe-core": 5.0.3 + lit: 3.3.1 tslib: 2.8.1 "@patternfly/icons@1.0.3": {} - "@patternfly/pfe-core@4.0.4": + "@patternfly/pfe-core@5.0.3": dependencies: - "@floating-ui/dom": 1.6.13 - "@lit/context": 1.1.3 - lit: 3.2.1 + "@floating-ui/dom": 1.7.4 + "@lit/context": 1.1.6 + lit: 3.3.1 "@pkgjs/parseargs@0.11.0": optional: true - "@pkgr/core@0.1.1": {} + "@pkgr/core@0.2.9": {} "@pnpm/config.env-replace@1.1.0": {} @@ -11312,24 +11415,24 @@ snapshots: "@pnpm/network.ca-file": 1.0.2 config-chain: 1.1.13 - "@polka/url@1.0.0-next.28": {} + "@polka/url@1.0.0-next.29": {} - "@rollup/plugin-babel@5.3.1(@babel/core@7.26.0)(rollup@2.79.2)": + "@rollup/plugin-babel@5.3.1(@babel/core@7.28.3)(rollup@2.79.2)": dependencies: - "@babel/core": 7.26.0 - "@babel/helper-module-imports": 7.25.9 + "@babel/core": 7.28.3 + "@babel/helper-module-imports": 7.27.1 "@rollup/pluginutils": 3.1.0(rollup@2.79.2) rollup: 2.79.2 transitivePeerDependencies: - supports-color - "@rollup/plugin-node-resolve@15.3.0(rollup@2.79.2)": + "@rollup/plugin-node-resolve@15.3.1(rollup@2.79.2)": dependencies: - "@rollup/pluginutils": 5.1.3(rollup@2.79.2) + "@rollup/pluginutils": 5.2.0(rollup@2.79.2) "@types/resolve": 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.10 optionalDependencies: rollup: 2.79.2 @@ -11343,7 +11446,7 @@ snapshots: dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 - terser: 5.36.0 + terser: 5.43.1 optionalDependencies: rollup: 2.79.2 @@ -11354,92 +11457,95 @@ snapshots: picomatch: 2.3.1 rollup: 2.79.2 - "@rollup/pluginutils@5.1.3(rollup@2.79.2)": + "@rollup/pluginutils@5.2.0(rollup@2.79.2)": dependencies: - "@types/estree": 1.0.6 + "@types/estree": 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 2.79.2 - "@rollup/rollup-android-arm-eabi@4.34.8": + "@rollup/rollup-android-arm-eabi@4.48.1": optional: true - "@rollup/rollup-android-arm64@4.34.8": + "@rollup/rollup-android-arm64@4.48.1": optional: true - "@rollup/rollup-darwin-arm64@4.34.8": + "@rollup/rollup-darwin-arm64@4.48.1": optional: true - "@rollup/rollup-darwin-x64@4.34.8": + "@rollup/rollup-darwin-x64@4.48.1": optional: true - "@rollup/rollup-freebsd-arm64@4.34.8": + "@rollup/rollup-freebsd-arm64@4.48.1": optional: true - "@rollup/rollup-freebsd-x64@4.34.8": + "@rollup/rollup-freebsd-x64@4.48.1": optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.34.8": + "@rollup/rollup-linux-arm-gnueabihf@4.48.1": optional: true - "@rollup/rollup-linux-arm-musleabihf@4.34.8": + "@rollup/rollup-linux-arm-musleabihf@4.48.1": optional: true - "@rollup/rollup-linux-arm64-gnu@4.34.8": + "@rollup/rollup-linux-arm64-gnu@4.48.1": optional: true - "@rollup/rollup-linux-arm64-musl@4.34.8": + "@rollup/rollup-linux-arm64-musl@4.48.1": optional: true - "@rollup/rollup-linux-loongarch64-gnu@4.34.8": + "@rollup/rollup-linux-loongarch64-gnu@4.48.1": optional: true - "@rollup/rollup-linux-powerpc64le-gnu@4.34.8": + "@rollup/rollup-linux-ppc64-gnu@4.48.1": optional: true - "@rollup/rollup-linux-riscv64-gnu@4.34.8": + "@rollup/rollup-linux-riscv64-gnu@4.48.1": optional: true - "@rollup/rollup-linux-s390x-gnu@4.34.8": + "@rollup/rollup-linux-riscv64-musl@4.48.1": optional: true - "@rollup/rollup-linux-x64-gnu@4.34.8": + "@rollup/rollup-linux-s390x-gnu@4.48.1": optional: true - "@rollup/rollup-linux-x64-musl@4.34.8": + "@rollup/rollup-linux-x64-gnu@4.48.1": optional: true - "@rollup/rollup-win32-arm64-msvc@4.34.8": + "@rollup/rollup-linux-x64-musl@4.48.1": optional: true - "@rollup/rollup-win32-ia32-msvc@4.34.8": + "@rollup/rollup-win32-arm64-msvc@4.48.1": optional: true - "@rollup/rollup-win32-x64-msvc@4.34.8": + "@rollup/rollup-win32-ia32-msvc@4.48.1": + optional: true + + "@rollup/rollup-win32-x64-msvc@4.48.1": optional: true "@sec-ant/readable-stream@0.4.1": {} - "@semantic-release/changelog@6.0.3(semantic-release@24.2.3(typescript@5.7.3))": + "@semantic-release/changelog@6.0.3(semantic-release@24.2.7(typescript@5.9.2))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 - fs-extra: 11.2.0 + fs-extra: 11.3.1 lodash: 4.17.21 - semantic-release: 24.2.3(typescript@5.7.3) + semantic-release: 24.2.7(typescript@5.9.2) - "@semantic-release/commit-analyzer@13.0.0(semantic-release@24.2.3(typescript@5.7.3))": + "@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.7(typescript@5.9.2))": dependencies: conventional-changelog-angular: 8.0.0 - conventional-changelog-writer: 8.0.0 + conventional-changelog-writer: 8.2.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.0.0 - debug: 4.4.0 - import-from-esm: 1.3.4 + conventional-commits-parser: 6.2.0 + debug: 4.4.1 + import-from-esm: 2.0.0 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 24.2.3(typescript@5.7.3) + semantic-release: 24.2.7(typescript@5.9.2) transitivePeerDependencies: - supports-color @@ -11447,109 +11553,109 @@ snapshots: "@semantic-release/error@4.0.0": {} - "@semantic-release/exec@7.0.3(semantic-release@24.2.3(typescript@5.7.3))": + "@semantic-release/exec@7.1.0(semantic-release@24.2.7(typescript@5.9.2))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 3.1.0 - debug: 4.4.0 - execa: 9.5.1 + debug: 4.4.1 + execa: 9.6.0 lodash-es: 4.17.21 - parse-json: 8.1.0 - semantic-release: 24.2.3(typescript@5.7.3) + parse-json: 8.3.0 + semantic-release: 24.2.7(typescript@5.9.2) transitivePeerDependencies: - supports-color - "@semantic-release/git@10.0.1(semantic-release@24.2.3(typescript@5.7.3))": + "@semantic-release/git@10.0.1(semantic-release@24.2.7(typescript@5.9.2))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 - debug: 4.3.7 + debug: 4.4.1 dir-glob: 3.0.1 execa: 5.1.1 lodash: 4.17.21 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 24.2.3(typescript@5.7.3) + semantic-release: 24.2.7(typescript@5.9.2) transitivePeerDependencies: - supports-color - "@semantic-release/github@11.0.0(semantic-release@24.2.3(typescript@5.7.3))": + "@semantic-release/github@11.0.4(semantic-release@24.2.7(typescript@5.9.2))": dependencies: - "@octokit/core": 6.1.2 - "@octokit/plugin-paginate-rest": 11.3.5(@octokit/core@6.1.2) - "@octokit/plugin-retry": 7.1.2(@octokit/core@6.1.2) - "@octokit/plugin-throttling": 9.3.2(@octokit/core@6.1.2) + "@octokit/core": 7.0.3 + "@octokit/plugin-paginate-rest": 13.1.1(@octokit/core@7.0.3) + "@octokit/plugin-retry": 8.0.1(@octokit/core@7.0.3) + "@octokit/plugin-throttling": 11.0.1(@octokit/core@7.0.3) "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 - debug: 4.4.0 + debug: 4.4.1 dir-glob: 3.0.1 - globby: 14.0.2 + globby: 14.1.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 + https-proxy-agent: 7.0.6 issue-parser: 7.0.1 lodash-es: 4.17.21 - mime: 4.0.4 + mime: 4.0.7 p-filter: 4.1.0 - semantic-release: 24.2.3(typescript@5.7.3) + semantic-release: 24.2.7(typescript@5.9.2) url-join: 5.0.0 transitivePeerDependencies: - supports-color - "@semantic-release/gitlab@13.2.4(semantic-release@24.2.3(typescript@5.7.3))": + "@semantic-release/gitlab@13.2.8(semantic-release@24.2.7(typescript@5.9.2))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 - debug: 4.4.0 + debug: 4.4.1 dir-glob: 3.0.1 escape-string-regexp: 5.0.0 formdata-node: 6.0.3 - fs-extra: 11.2.0 - globby: 14.0.2 - got: 14.4.4 + fs-extra: 11.3.1 + globby: 14.1.0 + got: 14.4.7 hpagent: 1.2.0 lodash-es: 4.17.21 - parse-url: 9.2.0 - semantic-release: 24.2.3(typescript@5.7.3) + parse-url: 10.0.3 + semantic-release: 24.2.7(typescript@5.9.2) url-join: 4.0.1 transitivePeerDependencies: - supports-color - "@semantic-release/npm@12.0.1(semantic-release@24.2.3(typescript@5.7.3))": + "@semantic-release/npm@12.0.2(semantic-release@24.2.7(typescript@5.9.2))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 - execa: 9.5.1 - fs-extra: 11.2.0 + execa: 9.6.0 + fs-extra: 11.3.1 lodash-es: 4.17.21 nerf-dart: 1.0.0 - normalize-url: 8.0.1 - npm: 10.9.0 + normalize-url: 8.0.2 + npm: 10.9.3 rc: 1.2.8 read-pkg: 9.0.1 - registry-auth-token: 5.0.2 - semantic-release: 24.2.3(typescript@5.7.3) - semver: 7.6.3 + registry-auth-token: 5.1.0 + semantic-release: 24.2.7(typescript@5.9.2) + semver: 7.7.2 tempy: 3.1.0 - "@semantic-release/release-notes-generator@14.0.1(semantic-release@24.2.3(typescript@5.7.3))": + "@semantic-release/release-notes-generator@14.0.3(semantic-release@24.2.7(typescript@5.9.2))": dependencies: conventional-changelog-angular: 8.0.0 - conventional-changelog-writer: 8.0.0 + conventional-changelog-writer: 8.2.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.0.0 - debug: 4.4.0 + conventional-commits-parser: 6.2.0 + debug: 4.4.1 get-stream: 7.0.1 - import-from-esm: 1.3.4 + import-from-esm: 2.0.0 into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 24.2.3(typescript@5.7.3) + semantic-release: 24.2.7(typescript@5.9.2) transitivePeerDependencies: - supports-color "@sindresorhus/is@4.6.0": {} - "@sindresorhus/is@7.0.1": {} + "@sindresorhus/is@7.0.2": {} "@sindresorhus/merge-streams@2.3.0": {} @@ -11562,7 +11668,7 @@ snapshots: ejs: 3.1.10 json5: 2.2.3 magic-string: 0.25.9 - string.prototype.matchall: 4.0.11 + string.prototype.matchall: 4.0.12 "@szmarczak/http-timer@5.0.1": dependencies: @@ -11581,124 +11687,134 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.17 - "@trysound/sax@0.2.0": {} - - "@types/conventional-commits-parser@5.0.0": + "@types/conventional-commits-parser@5.0.1": dependencies: - "@types/node": 22.9.0 + "@types/node": 24.3.0 "@types/eslint@9.6.1": dependencies: - "@types/estree": 1.0.6 + "@types/estree": 1.0.8 "@types/json-schema": 7.0.15 optional: true "@types/estree@0.0.39": {} - "@types/estree@1.0.6": {} + "@types/estree@1.0.8": {} "@types/fscreen@1.0.4": {} - "@types/geojson@7946.0.14": {} + "@types/geojson@7946.0.16": {} "@types/http-cache-semantics@4.0.4": {} "@types/json-schema@7.0.15": {} - "@types/leaflet@1.9.16": + "@types/leaflet@1.9.20": dependencies: - "@types/geojson": 7946.0.14 + "@types/geojson": 7946.0.16 - "@types/node@22.9.0": + "@types/node@24.3.0": dependencies: - undici-types: 6.19.8 + undici-types: 7.10.0 "@types/normalize-package-data@2.4.4": {} - "@types/parse-path@7.0.3": {} - "@types/resolve@1.20.2": {} - "@types/semver@7.5.8": {} - "@types/trusted-types@2.0.7": {} - "@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3))(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3)": + "@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)": dependencies: "@eslint-community/regexpp": 4.12.1 - "@typescript-eslint/parser": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) - "@typescript-eslint/scope-manager": 8.26.1 - "@typescript-eslint/type-utils": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) - "@typescript-eslint/utils": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) - "@typescript-eslint/visitor-keys": 8.26.1 - eslint: 9.22.0(jiti@2.4.1) + "@typescript-eslint/parser": 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + "@typescript-eslint/scope-manager": 8.41.0 + "@typescript-eslint/type-utils": 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + "@typescript-eslint/utils": 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + "@typescript-eslint/visitor-keys": 8.41.0 + eslint: 9.34.0(jiti@2.5.1) graphemer: 1.4.0 - ignore: 5.3.2 + ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3)": + "@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)": dependencies: - "@typescript-eslint/scope-manager": 8.26.1 - "@typescript-eslint/types": 8.26.1 - "@typescript-eslint/typescript-estree": 8.26.1(typescript@5.7.3) - "@typescript-eslint/visitor-keys": 8.26.1 - debug: 4.4.0 - eslint: 9.22.0(jiti@2.4.1) - typescript: 5.7.3 + "@typescript-eslint/scope-manager": 8.41.0 + "@typescript-eslint/types": 8.41.0 + "@typescript-eslint/typescript-estree": 8.41.0(typescript@5.9.2) + "@typescript-eslint/visitor-keys": 8.41.0 + debug: 4.4.1 + eslint: 9.34.0(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.26.1": + "@typescript-eslint/project-service@8.41.0(typescript@5.9.2)": dependencies: - "@typescript-eslint/types": 8.26.1 - "@typescript-eslint/visitor-keys": 8.26.1 - - "@typescript-eslint/type-utils@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3)": - dependencies: - "@typescript-eslint/typescript-estree": 8.26.1(typescript@5.7.3) - "@typescript-eslint/utils": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) - debug: 4.4.0 - eslint: 9.22.0(jiti@2.4.1) - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + "@typescript-eslint/tsconfig-utils": 8.41.0(typescript@5.9.2) + "@typescript-eslint/types": 8.41.0 + debug: 4.4.1 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.26.1": {} - - "@typescript-eslint/typescript-estree@8.26.1(typescript@5.7.3)": + "@typescript-eslint/scope-manager@8.41.0": dependencies: - "@typescript-eslint/types": 8.26.1 - "@typescript-eslint/visitor-keys": 8.26.1 - debug: 4.4.0 + "@typescript-eslint/types": 8.41.0 + "@typescript-eslint/visitor-keys": 8.41.0 + + "@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.9.2)": + dependencies: + typescript: 5.9.2 + + "@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)": + dependencies: + "@typescript-eslint/types": 8.41.0 + "@typescript-eslint/typescript-estree": 8.41.0(typescript@5.9.2) + "@typescript-eslint/utils": 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + debug: 4.4.1 + eslint: 9.34.0(jiti@2.5.1) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/types@8.41.0": {} + + "@typescript-eslint/typescript-estree@8.41.0(typescript@5.9.2)": + dependencies: + "@typescript-eslint/project-service": 8.41.0(typescript@5.9.2) + "@typescript-eslint/tsconfig-utils": 8.41.0(typescript@5.9.2) + "@typescript-eslint/types": 8.41.0 + "@typescript-eslint/visitor-keys": 8.41.0 + debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3)": + "@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)": dependencies: - "@eslint-community/eslint-utils": 4.4.1(eslint@9.22.0(jiti@2.4.1)) - "@typescript-eslint/scope-manager": 8.26.1 - "@typescript-eslint/types": 8.26.1 - "@typescript-eslint/typescript-estree": 8.26.1(typescript@5.7.3) - eslint: 9.22.0(jiti@2.4.1) - typescript: 5.7.3 + "@eslint-community/eslint-utils": 4.7.0(eslint@9.34.0(jiti@2.5.1)) + "@typescript-eslint/scope-manager": 8.41.0 + "@typescript-eslint/types": 8.41.0 + "@typescript-eslint/typescript-estree": 8.41.0(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.26.1": + "@typescript-eslint/visitor-keys@8.41.0": dependencies: - "@typescript-eslint/types": 8.26.1 - eslint-visitor-keys: 4.2.0 + "@typescript-eslint/types": 8.41.0 + eslint-visitor-keys: 4.2.1 "@vime/core@5.4.1": dependencies: @@ -11713,17 +11829,13 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.0 + acorn: 8.15.0 - acorn@8.14.0: {} + acorn@8.15.0: {} - agent-base@7.1.1: - dependencies: - debug: 4.4.0 - transitivePeerDependencies: - - supports-color + agent-base@7.1.4: {} aggregate-error@3.1.0: dependencies: @@ -11745,13 +11857,13 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 all-contributors-cli@6.26.1: dependencies: - "@babel/runtime": 7.26.0 + "@babel/runtime": 7.28.3 async: 3.2.6 chalk: 4.1.2 didyoumean: 1.2.2 @@ -11776,7 +11888,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.0: {} ansi-styles@3.2.1: dependencies: @@ -11788,7 +11900,7 @@ snapshots: ansi-styles@6.2.1: {} - ansis@3.16.0: {} + ansis@4.1.0: {} any-promise@1.3.0: {} @@ -11803,67 +11915,68 @@ snapshots: argv-formatter@1.0.0: {} - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.2: dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 + call-bound: 1.0.4 + is-array-buffer: 3.0.5 array-ify@1.0.0: {} array-union@2.1.0: {} - arraybuffer.prototype.slice@1.0.3: + arraybuffer.prototype.slice@1.0.4: dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 astral-regex@2.0.0: {} + async-function@1.0.0: {} + async@3.2.6: {} at-least-node@1.0.0: {} - autoprefixer@10.4.20(postcss@8.5.3): + autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001677 + browserslist: 4.25.3 + caniuse-lite: 1.0.30001737 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.3): dependencies: - "@babel/compat-data": 7.26.2 - "@babel/core": 7.26.0 - "@babel/helper-define-polyfill-provider": 0.6.2(@babel/core@7.26.0) + "@babel/compat-data": 7.28.0 + "@babel/core": 7.28.3 + "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.3) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.3): dependencies: - "@babel/core": 7.26.0 - "@babel/helper-define-polyfill-provider": 0.6.2(@babel/core@7.26.0) - core-js-compat: 3.39.0 + "@babel/core": 7.28.3 + "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.3) + core-js-compat: 3.45.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.3): dependencies: - "@babel/core": 7.26.0 - "@babel/helper-define-polyfill-provider": 0.6.2(@babel/core@7.26.0) + "@babel/core": 7.28.3 + "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.3) transitivePeerDependencies: - supports-color @@ -11875,11 +11988,11 @@ snapshots: base64-js@1.5.1: {} - before-after-hook@3.0.2: {} + before-after-hook@4.0.0: {} binary-extensions@2.3.0: {} - birpc@2.2.0: {} + birpc@2.5.0: {} bl@4.1.0: dependencies: @@ -11891,12 +12004,12 @@ snapshots: bottleneck@2.19.5: {} - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -11908,19 +12021,12 @@ snapshots: dependencies: base64-js: 1.5.1 - browserslist@4.24.2: + browserslist@4.25.3: dependencies: - caniuse-lite: 1.0.30001677 - electron-to-chromium: 1.5.52 - node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.2) - - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001700 - electron-to-chromium: 1.5.104 + caniuse-lite: 1.0.30001737 + electron-to-chromium: 1.5.208 node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.4) + update-browserslist-db: 1.1.3(browserslist@4.25.3) buffer-from@1.1.2: {} @@ -11929,11 +12035,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - bundle-name@4.1.0: dependencies: run-applescript: 7.0.0 @@ -11944,27 +12045,36 @@ snapshots: dependencies: "@types/http-cache-semantics": 4.0.4 get-stream: 9.0.1 - http-cache-semantics: 4.1.1 + http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.1 + normalize-url: 8.0.2 responselike: 3.0.0 - cacheable@1.8.8: + cacheable@1.10.4: dependencies: - hookified: 1.7.0 - keyv: 5.2.3 + hookified: 1.12.0 + keyv: 5.5.0 cachedir@2.3.0: {} - call-bind@1.0.7: + call-bind-apply-helpers@1.0.2: dependencies: - es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 set-function-length: 1.2.2 + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + callsites@3.1.0: {} camelcase-css@2.0.1: {} @@ -11973,14 +12083,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001677 + browserslist: 4.25.3 + caniuse-lite: 1.0.30001737 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001677: {} - - caniuse-lite@1.0.30001700: {} + caniuse-lite@1.0.30001737: {} chalk@2.4.2: dependencies: @@ -11993,10 +12101,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: - optional: true - - chalk@5.4.1: {} + chalk@5.6.0: {} char-regex@1.0.2: {} @@ -12004,7 +12109,7 @@ snapshots: choices.js@11.1.0: dependencies: - fuse.js: 7.0.0 + fuse.js: 7.1.0 chokidar@3.6.0: dependencies: @@ -12018,7 +12123,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - ci-info@4.1.0: {} + ci-info@4.3.0: {} clean-stack@2.2.0: {} @@ -12078,17 +12183,15 @@ snapshots: clone@1.0.4: {} - codemirror@6.0.1(@lezer/common@1.2.3): + codemirror@6.0.2: dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.4)(@lezer/common@1.2.3) - "@codemirror/commands": 6.8.0 - "@codemirror/language": 6.11.0 - "@codemirror/lint": 6.8.2 - "@codemirror/search": 6.5.7 + "@codemirror/autocomplete": 6.18.6 + "@codemirror/commands": 6.8.1 + "@codemirror/language": 6.11.3 + "@codemirror/lint": 6.8.5 + "@codemirror/search": 6.5.11 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.36.4 - transitivePeerDependencies: - - "@lezer/common" + "@codemirror/view": 6.38.1 color-convert@1.9.3: dependencies: @@ -12116,7 +12219,9 @@ snapshots: colorette@2.0.20: {} - commander@13.1.0: {} + commander@11.1.0: {} + + commander@14.0.0: {} commander@2.20.3: {} @@ -12124,10 +12229,10 @@ snapshots: commander@7.2.0: {} - commitizen@4.3.1(@types/node@22.9.0)(typescript@5.7.3): + commitizen@4.3.1(@types/node@24.3.0)(typescript@5.9.2): dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@22.9.0)(typescript@5.7.3) + cz-conventional-changelog: 3.3.0(@types/node@24.3.0)(typescript@5.9.2) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -12170,17 +12275,16 @@ snapshots: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@8.0.0: + conventional-changelog-conventionalcommits@9.1.0: dependencies: compare-func: 2.0.0 - conventional-changelog-writer@8.0.0: + conventional-changelog-writer@8.2.0: dependencies: - "@types/semver": 7.5.8 conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 - semver: 7.6.3 + semver: 7.7.2 conventional-commit-types@3.0.0: {} @@ -12193,7 +12297,7 @@ snapshots: meow: 12.1.1 split2: 4.2.0 - conventional-commits-parser@6.0.0: + conventional-commits-parser@6.2.0: dependencies: meow: 13.2.0 @@ -12201,49 +12305,36 @@ snapshots: convert-source-map@2.0.0: {} - core-js-compat@3.39.0: + core-js-compat@3.45.1: dependencies: - browserslist: 4.24.2 + browserslist: 4.25.3 - core-js@3.39.0: {} + core-js@3.45.1: {} core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): + cosmiconfig-typescript-loader@6.1.0(@types/node@24.3.0)(cosmiconfig@9.0.0(typescript@5.9.2))(typescript@5.9.2): dependencies: - "@types/node": 22.9.0 - cosmiconfig: 9.0.0(typescript@5.7.3) - jiti: 1.21.6 - typescript: 5.7.3 - optional: true + "@types/node": 24.3.0 + cosmiconfig: 9.0.0(typescript@5.9.2) + jiti: 2.5.1 + typescript: 5.9.2 - cosmiconfig-typescript-loader@6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): - dependencies: - "@types/node": 22.9.0 - cosmiconfig: 9.0.0(typescript@5.7.3) - jiti: 2.4.1 - typescript: 5.7.3 - - cosmiconfig@9.0.0(typescript@5.7.3): + cosmiconfig@9.0.0(typescript@5.9.2): dependencies: env-paths: 2.2.1 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.7.3 + typescript: 5.9.2 crelt@1.0.6: {} - cross-env@7.0.3: + cross-env@10.0.0: dependencies: - cross-spawn: 7.0.3 - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + "@epic-web/invariant": 1.0.0 + cross-spawn: 7.0.6 cross-spawn@7.0.6: dependencies: @@ -12259,34 +12350,34 @@ snapshots: dependencies: type-fest: 1.4.0 - css-blank-pseudo@7.0.1(postcss@8.5.3): + css-blank-pseudo@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - css-declaration-sorter@7.2.0(postcss@8.5.3): + css-declaration-sorter@7.2.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 css-functions-list@3.2.3: {} - css-has-pseudo@7.0.2(postcss@8.5.3): + css-has-pseudo@7.0.2(postcss@8.5.6): dependencies: - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - css-prefers-color-scheme@10.0.0(postcss@8.5.3): + css-prefers-color-scheme@10.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - css-select@5.1.0: + css-select@5.2.2: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 nth-check: 2.1.1 css-tree@2.2.1: @@ -12294,80 +12385,75 @@ snapshots: mdn-data: 2.0.28 source-map-js: 1.2.1 - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - css-tree@3.1.0: dependencies: mdn-data: 2.12.2 source-map-js: 1.2.1 - css-what@6.1.0: {} + css-what@6.2.2: {} - cssdb@8.2.3: {} + cssdb@8.4.0: {} cssesc@3.0.0: {} - cssnano-preset-default@7.0.6(postcss@8.5.3): + cssnano-preset-default@7.0.9(postcss@8.5.6): dependencies: - browserslist: 4.24.2 - css-declaration-sorter: 7.2.0(postcss@8.5.3) - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-calc: 10.0.2(postcss@8.5.3) - postcss-colormin: 7.0.2(postcss@8.5.3) - postcss-convert-values: 7.0.4(postcss@8.5.3) - postcss-discard-comments: 7.0.3(postcss@8.5.3) - postcss-discard-duplicates: 7.0.1(postcss@8.5.3) - postcss-discard-empty: 7.0.0(postcss@8.5.3) - postcss-discard-overridden: 7.0.0(postcss@8.5.3) - postcss-merge-longhand: 7.0.4(postcss@8.5.3) - postcss-merge-rules: 7.0.4(postcss@8.5.3) - postcss-minify-font-values: 7.0.0(postcss@8.5.3) - postcss-minify-gradients: 7.0.0(postcss@8.5.3) - postcss-minify-params: 7.0.2(postcss@8.5.3) - postcss-minify-selectors: 7.0.4(postcss@8.5.3) - postcss-normalize-charset: 7.0.0(postcss@8.5.3) - postcss-normalize-display-values: 7.0.0(postcss@8.5.3) - postcss-normalize-positions: 7.0.0(postcss@8.5.3) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.3) - postcss-normalize-string: 7.0.0(postcss@8.5.3) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.3) - postcss-normalize-unicode: 7.0.2(postcss@8.5.3) - postcss-normalize-url: 7.0.0(postcss@8.5.3) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.3) - postcss-ordered-values: 7.0.1(postcss@8.5.3) - postcss-reduce-initial: 7.0.2(postcss@8.5.3) - postcss-reduce-transforms: 7.0.0(postcss@8.5.3) - postcss-svgo: 7.0.1(postcss@8.5.3) - postcss-unique-selectors: 7.0.3(postcss@8.5.3) + browserslist: 4.25.3 + css-declaration-sorter: 7.2.0(postcss@8.5.6) + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 10.1.1(postcss@8.5.6) + postcss-colormin: 7.0.4(postcss@8.5.6) + postcss-convert-values: 7.0.7(postcss@8.5.6) + postcss-discard-comments: 7.0.4(postcss@8.5.6) + postcss-discard-duplicates: 7.0.2(postcss@8.5.6) + postcss-discard-empty: 7.0.1(postcss@8.5.6) + postcss-discard-overridden: 7.0.1(postcss@8.5.6) + postcss-merge-longhand: 7.0.5(postcss@8.5.6) + postcss-merge-rules: 7.0.6(postcss@8.5.6) + postcss-minify-font-values: 7.0.1(postcss@8.5.6) + postcss-minify-gradients: 7.0.1(postcss@8.5.6) + postcss-minify-params: 7.0.4(postcss@8.5.6) + postcss-minify-selectors: 7.0.5(postcss@8.5.6) + postcss-normalize-charset: 7.0.1(postcss@8.5.6) + postcss-normalize-display-values: 7.0.1(postcss@8.5.6) + postcss-normalize-positions: 7.0.1(postcss@8.5.6) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) + postcss-normalize-string: 7.0.1(postcss@8.5.6) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) + postcss-normalize-unicode: 7.0.4(postcss@8.5.6) + postcss-normalize-url: 7.0.1(postcss@8.5.6) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) + postcss-ordered-values: 7.0.2(postcss@8.5.6) + postcss-reduce-initial: 7.0.4(postcss@8.5.6) + postcss-reduce-transforms: 7.0.1(postcss@8.5.6) + postcss-svgo: 7.1.0(postcss@8.5.6) + postcss-unique-selectors: 7.0.4(postcss@8.5.6) - cssnano-utils@5.0.0(postcss@8.5.3): + cssnano-utils@5.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - cssnano@7.0.6(postcss@8.5.3): + cssnano@7.1.1(postcss@8.5.6): dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.3) - lilconfig: 3.1.2 - postcss: 8.5.3 + cssnano-preset-default: 7.0.9(postcss@8.5.6) + lilconfig: 3.1.3 + postcss: 8.5.6 csso@5.0.5: dependencies: css-tree: 2.2.1 - cz-conventional-changelog@3.3.0(@types/node@22.9.0)(typescript@5.7.3): + cz-conventional-changelog@3.3.0(@types/node@24.3.0)(typescript@5.9.2): dependencies: chalk: 2.4.2 - commitizen: 4.3.1(@types/node@22.9.0)(typescript@5.7.3) + commitizen: 4.3.1(@types/node@24.3.0)(typescript@5.9.2) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - "@commitlint/load": 19.5.0(@types/node@22.9.0)(typescript@5.7.3) + "@commitlint/load": 19.8.1(@types/node@24.3.0)(typescript@5.9.2) transitivePeerDependencies: - "@types/node" - typescript @@ -12419,29 +12505,25 @@ snapshots: dargs@8.1.0: {} - data-view-buffer@1.0.1: + data-view-buffer@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 - data-view-byte-length@1.0.1: + data-view-byte-length@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 - data-view-byte-offset@1.0.0: + data-view-byte-offset@1.0.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 - debug@4.3.7: - dependencies: - ms: 2.1.3 - - debug@4.4.0: + debug@4.4.1: dependencies: ms: 2.1.3 @@ -12455,12 +12537,12 @@ snapshots: deep-equal@1.1.2: dependencies: - is-arguments: 1.1.1 - is-date-object: 1.0.5 - is-regex: 1.1.4 + is-arguments: 1.2.0 + is-date-object: 1.1.0 + is-regex: 1.2.1 object-is: 1.1.6 object-keys: 1.1.1 - regexp.prototype.flags: 1.5.3 + regexp.prototype.flags: 1.5.4 deep-extend@0.6.0: {} @@ -12483,9 +12565,9 @@ snapshots: define-data-property@1.1.4: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 define-lazy-prop@3.0.0: {} @@ -12499,7 +12581,7 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@2.0.3: {} + detect-libc@2.0.4: {} dfa@1.2.0: {} @@ -12523,7 +12605,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - domutils@3.1.0: + domutils@3.2.2: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 @@ -12533,6 +12615,12 @@ snapshots: dependencies: is-obj: 2.0.0 + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + duplexer2@0.1.4: dependencies: readable-stream: 2.3.8 @@ -12541,11 +12629,9 @@ snapshots: ejs@3.1.10: dependencies: - jake: 10.9.2 + jake: 10.9.4 - electron-to-chromium@1.5.104: {} - - electron-to-chromium@1.5.52: {} + electron-to-chromium@1.5.208: {} emoji-regex@10.4.0: {} @@ -12557,7 +12643,7 @@ snapshots: entities@4.5.0: {} - env-ci@11.1.0: + env-ci@11.1.1: dependencies: execa: 8.0.1 java-properties: 1.0.2 @@ -12572,104 +12658,112 @@ snapshots: error-stack-parser-es@1.0.5: {} - es-abstract@1.23.3: + es-abstract@1.24.0: dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 globalthis: 1.0.4 - gopd: 1.0.1 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + has-proto: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 is-callable: 1.2.7 - is-data-view: 1.0.1 + is-data-view: 1.0.2 is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.2 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.3 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-object-atoms@1.0.0: + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.0.3: + es-set-tostringtag@2.1.0: dependencies: - get-intrinsic: 1.2.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 hasown: 2.0.2 - es-to-primitive@1.2.1: + es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + is-date-object: 1.1.0 + is-symbol: 1.1.1 - esbuild@0.25.0: + esbuild@0.25.9: optionalDependencies: - "@esbuild/aix-ppc64": 0.25.0 - "@esbuild/android-arm": 0.25.0 - "@esbuild/android-arm64": 0.25.0 - "@esbuild/android-x64": 0.25.0 - "@esbuild/darwin-arm64": 0.25.0 - "@esbuild/darwin-x64": 0.25.0 - "@esbuild/freebsd-arm64": 0.25.0 - "@esbuild/freebsd-x64": 0.25.0 - "@esbuild/linux-arm": 0.25.0 - "@esbuild/linux-arm64": 0.25.0 - "@esbuild/linux-ia32": 0.25.0 - "@esbuild/linux-loong64": 0.25.0 - "@esbuild/linux-mips64el": 0.25.0 - "@esbuild/linux-ppc64": 0.25.0 - "@esbuild/linux-riscv64": 0.25.0 - "@esbuild/linux-s390x": 0.25.0 - "@esbuild/linux-x64": 0.25.0 - "@esbuild/netbsd-arm64": 0.25.0 - "@esbuild/netbsd-x64": 0.25.0 - "@esbuild/openbsd-arm64": 0.25.0 - "@esbuild/openbsd-x64": 0.25.0 - "@esbuild/sunos-x64": 0.25.0 - "@esbuild/win32-arm64": 0.25.0 - "@esbuild/win32-ia32": 0.25.0 - "@esbuild/win32-x64": 0.25.0 + "@esbuild/aix-ppc64": 0.25.9 + "@esbuild/android-arm": 0.25.9 + "@esbuild/android-arm64": 0.25.9 + "@esbuild/android-x64": 0.25.9 + "@esbuild/darwin-arm64": 0.25.9 + "@esbuild/darwin-x64": 0.25.9 + "@esbuild/freebsd-arm64": 0.25.9 + "@esbuild/freebsd-x64": 0.25.9 + "@esbuild/linux-arm": 0.25.9 + "@esbuild/linux-arm64": 0.25.9 + "@esbuild/linux-ia32": 0.25.9 + "@esbuild/linux-loong64": 0.25.9 + "@esbuild/linux-mips64el": 0.25.9 + "@esbuild/linux-ppc64": 0.25.9 + "@esbuild/linux-riscv64": 0.25.9 + "@esbuild/linux-s390x": 0.25.9 + "@esbuild/linux-x64": 0.25.9 + "@esbuild/netbsd-arm64": 0.25.9 + "@esbuild/netbsd-x64": 0.25.9 + "@esbuild/openbsd-arm64": 0.25.9 + "@esbuild/openbsd-x64": 0.25.9 + "@esbuild/openharmony-arm64": 0.25.9 + "@esbuild/sunos-x64": 0.25.9 + "@esbuild/win32-arm64": 0.25.9 + "@esbuild/win32-ia32": 0.25.9 + "@esbuild/win32-x64": 0.25.9 escalade@3.2.0: {} @@ -12679,52 +12773,52 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.1)): + eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.5.1)): dependencies: - eslint: 9.22.0(jiti@2.4.1) + eslint: 9.34.0(jiti@2.5.1) - eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.1)))(eslint@9.22.0(jiti@2.4.1))(prettier@3.5.3): + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1))(prettier@3.6.2): dependencies: - eslint: 9.22.0(jiti@2.4.1) - prettier: 3.5.3 + eslint: 9.34.0(jiti@2.5.1) + prettier: 3.6.2 prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 + synckit: 0.11.11 optionalDependencies: "@types/eslint": 9.6.1 - eslint-config-prettier: 10.1.1(eslint@9.22.0(jiti@2.4.1)) + eslint-config-prettier: 10.1.8(eslint@9.34.0(jiti@2.5.1)) - eslint-scope@8.3.0: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.0: {} + eslint-visitor-keys@4.2.1: {} - eslint@9.22.0(jiti@2.4.1): + eslint@9.34.0(jiti@2.5.1): dependencies: - "@eslint-community/eslint-utils": 4.4.1(eslint@9.22.0(jiti@2.4.1)) + "@eslint-community/eslint-utils": 4.7.0(eslint@9.34.0(jiti@2.5.1)) "@eslint-community/regexpp": 4.12.1 - "@eslint/config-array": 0.19.2 - "@eslint/config-helpers": 0.1.0 - "@eslint/core": 0.12.0 - "@eslint/eslintrc": 3.3.0 - "@eslint/js": 9.22.0 - "@eslint/plugin-kit": 0.2.7 + "@eslint/config-array": 0.21.0 + "@eslint/config-helpers": 0.3.1 + "@eslint/core": 0.15.2 + "@eslint/eslintrc": 3.3.1 + "@eslint/js": 9.34.0 + "@eslint/plugin-kit": 0.3.5 "@humanfs/node": 0.16.6 "@humanwhocodes/module-importer": 1.0.1 - "@humanwhocodes/retry": 0.4.2 - "@types/estree": 1.0.6 + "@humanwhocodes/retry": 0.4.3 + "@types/estree": 1.0.8 "@types/json-schema": 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.1 escape-string-regexp: 4.0.0 - eslint-scope: 8.3.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -12740,15 +12834,15 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.4.1 + jiti: 2.5.1 transitivePeerDependencies: - supports-color - espree@10.3.0: + espree@10.4.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 esquery@1.6.0: dependencies: @@ -12770,7 +12864,7 @@ snapshots: execa@5.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -12792,20 +12886,20 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.5.1: + execa@9.6.0: dependencies: "@sindresorhus/merge-streams": 4.0.0 cross-spawn: 7.0.6 figures: 6.1.0 get-stream: 9.0.1 - human-signals: 8.0.0 + human-signals: 8.0.1 is-plain-obj: 4.1.0 is-stream: 4.0.1 npm-run-path: 6.0.0 - pretty-ms: 9.1.0 + pretty-ms: 9.2.0 signal-exit: 4.1.0 strip-final-newline: 4.0.0 - yoctocolors: 2.1.1 + yoctocolors: 2.1.2 expand-tilde@2.0.2: dependencies: @@ -12817,18 +12911,12 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + fast-content-type-parse@3.0.0: {} + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} - fast-glob@3.3.2: - dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - fast-glob@3.3.3: dependencies: "@nodelib/fs.stat": 2.0.5 @@ -12841,17 +12929,17 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.0.3: {} + fast-uri@3.1.0: {} fastest-levenshtein@1.0.16: {} - fastq@1.17.1: + fastq@1.19.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 - fdir@6.4.2(picomatch@4.0.2): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 figures@2.0.0: dependencies: @@ -12865,9 +12953,9 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-entry-cache@10.0.6: + file-entry-cache@10.1.4: dependencies: - flat-cache: 6.1.6 + flat-cache: 6.1.13 file-entry-cache@8.0.0: dependencies: @@ -12888,7 +12976,7 @@ snapshots: find-root@1.1.0: {} - find-up-simple@1.0.0: {} + find-up-simple@1.0.1: {} find-up@2.1.0: dependencies: @@ -12924,29 +13012,29 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.2 + flatted: 3.3.3 keyv: 4.5.4 - flat-cache@6.1.6: + flat-cache@6.1.13: dependencies: - cacheable: 1.8.8 - flatted: 3.3.2 - hookified: 1.7.0 + cacheable: 1.10.4 + flatted: 3.3.3 + hookified: 1.12.0 flatpickr@4.6.13: {} - flatted@3.3.2: {} + flatted@3.3.3: {} - for-each@0.3.3: + for-each@0.3.5: dependencies: is-callable: 1.2.7 - foreground-child@3.3.0: + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data-encoder@4.0.2: {} + form-data-encoder@4.1.0: {} formdata-node@6.0.3: {} @@ -12957,17 +13045,17 @@ snapshots: inherits: 2.0.4 readable-stream: 2.3.8 - fs-extra@11.2.0: + fs-extra@11.3.1: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs.realpath@1.0.0: {} @@ -12981,16 +13069,18 @@ snapshots: function-timeout@1.0.2: {} - function.prototype.name@1.1.6: + function.prototype.name@1.1.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 functions-have-names@1.2.3: {} - fuse.js@7.0.0: {} + fuse.js@7.1.0: {} gensync@1.0.0-beta.2: {} @@ -12998,16 +13088,26 @@ snapshots: get-east-asian-width@1.3.0: {} - get-intrinsic@1.2.4: + get-intrinsic@1.3.0: dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.1.0 get-own-enumerable-property-symbols@3.0.2: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@6.0.1: {} get-stream@7.0.1: {} @@ -13019,11 +13119,11 @@ snapshots: "@sec-ant/readable-stream": 0.4.1 is-stream: 4.0.1 - get-symbol-description@1.0.2: + get-symbol-description@1.1.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 git-log-parser@1.2.1: dependencies: @@ -13050,18 +13150,18 @@ snapshots: glob@10.4.5: dependencies: - foreground-child: 3.3.0 + foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.1: + glob@11.0.3: dependencies: - foreground-child: 3.3.0 - jackspeak: 4.0.2 - minimatch: 10.0.1 + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.0.3 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.0 @@ -13103,16 +13203,14 @@ snapshots: kind-of: 6.0.3 which: 1.3.1 - globals@11.12.0: {} - globals@14.0.0: {} - globals@16.0.0: {} + globals@16.3.0: {} globalthis@1.0.4: dependencies: define-properties: 1.2.1 - gopd: 1.0.1 + gopd: 1.2.0 globby@11.1.0: dependencies: @@ -13123,34 +13221,32 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@14.0.2: + globby@14.1.0: dependencies: "@sindresorhus/merge-streams": 2.3.0 - fast-glob: 3.3.2 - ignore: 5.3.2 - path-type: 5.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + path-type: 6.0.0 slash: 5.1.0 - unicorn-magic: 0.1.0 + unicorn-magic: 0.3.0 globjoin@0.1.4: {} - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 + gopd@1.2.0: {} - got@14.4.4: + got@14.4.7: dependencies: - "@sindresorhus/is": 7.0.1 + "@sindresorhus/is": 7.0.2 "@szmarczak/http-timer": 5.0.1 cacheable-lookup: 7.0.0 cacheable-request: 12.0.1 decompress-response: 6.0.0 - form-data-encoder: 4.0.2 + form-data-encoder: 4.1.0 http2-wrapper: 2.2.1 lowercase-keys: 3.0.0 p-cancelable: 4.0.1 responselike: 3.0.0 - type-fest: 4.26.1 + type-fest: 4.41.0 graceful-fs@4.2.10: {} @@ -13167,7 +13263,7 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - has-bigints@1.0.2: {} + has-bigints@1.1.0: {} has-flag@3.0.0: {} @@ -13175,15 +13271,17 @@ snapshots: has-property-descriptors@1.0.2: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 - has-proto@1.0.3: {} + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 - has-symbols@1.0.3: {} + has-symbols@1.1.0: {} has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 hasown@2.0.2: dependencies: @@ -13197,13 +13295,13 @@ snapshots: hook-std@3.0.0: {} - hookified@1.7.0: {} + hookified@1.12.0: {} hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 - hosted-git-info@8.0.0: + hosted-git-info@8.1.0: dependencies: lru-cache: 10.4.3 @@ -13211,14 +13309,14 @@ snapshots: html-tags@3.3.1: {} - htmlfy@0.6.2: {} + htmlfy@1.0.0: {} - http-cache-semantics@4.1.1: {} + http-cache-semantics@4.2.0: {} http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.1 - debug: 4.4.0 + agent-base: 7.1.4 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -13227,10 +13325,10 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - https-proxy-agent@7.0.5: + https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.1 - debug: 4.4.0 + agent-base: 7.1.4 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -13238,7 +13336,7 @@ snapshots: human-signals@5.0.0: {} - human-signals@8.0.0: {} + human-signals@8.0.1: {} husky@9.1.7: {} @@ -13256,23 +13354,16 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.3: {} + ignore@7.0.5: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - import-from-esm@1.3.4: - dependencies: - debug: 4.4.0 - import-meta-resolve: 4.1.0 - transitivePeerDependencies: - - supports-color - import-from-esm@2.0.0: dependencies: - debug: 4.4.0 + debug: 4.4.1 import-meta-resolve: 4.1.0 transitivePeerDependencies: - supports-color @@ -13285,7 +13376,7 @@ snapshots: indent-string@5.0.0: {} - index-to-position@0.1.2: {} + index-to-position@1.1.0: {} inflight@1.0.6: dependencies: @@ -13326,17 +13417,17 @@ snapshots: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.8.1 + rxjs: 7.8.2 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 wrap-ansi: 7.0.0 - internal-slot@1.0.7: + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 internmap@2.0.3: {} @@ -13345,55 +13436,71 @@ snapshots: from2: 2.3.0 p-is-promise: 3.0.0 - is-arguments@1.1.1: + is-arguments@1.2.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: + is-array-buffer@3.0.5: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-arrayish@0.2.1: {} is-arrayish@0.3.2: {} - is-bigint@1.0.4: + is-async-function@2.1.1: dependencies: - has-bigints: 1.0.2 + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.1.2: + is-boolean-object@1.2.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-callable@1.2.7: {} is-ci@4.1.0: dependencies: - ci-info: 4.1.0 + ci-info: 4.3.0 - is-core-module@2.15.1: + is-core-module@2.16.1: dependencies: hasown: 2.0.2 - is-data-view@1.0.1: + is-data-view@1.0.2: dependencies: - is-typed-array: 1.1.13 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 - is-date-object@1.0.5: + is-date-object@1.1.0: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-docker@3.0.0: {} is-extglob@2.1.1: {} + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@4.0.0: {} @@ -13402,6 +13509,13 @@ snapshots: dependencies: get-east-asian-width: 1.3.0 + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -13412,12 +13526,15 @@ snapshots: is-interactive@1.0.0: {} + is-map@2.0.3: {} + is-module@1.0.0: {} is-negative-zero@2.0.3: {} - is-number-object@1.0.7: + is-number-object@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-number@7.0.0: {} @@ -13430,16 +13547,20 @@ snapshots: is-plain-object@5.0.0: {} - is-regex@1.1.4: + is-regex@1.2.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 + gopd: 1.2.0 has-tostringtag: 1.0.2 + hasown: 2.0.2 is-regexp@1.0.0: {} - is-shared-array-buffer@1.0.3: + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 is-stream@2.0.1: {} @@ -13447,21 +13568,24 @@ snapshots: is-stream@4.0.1: {} - is-string@1.0.7: + is-string@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-symbol@1.0.4: + is-symbol@1.1.1: dependencies: - has-symbols: 1.0.3 + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 is-text-path@2.0.0: dependencies: text-extensions: 2.4.0 - is-typed-array@1.1.13: + is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.15 + which-typed-array: 1.1.19 is-unicode-supported@0.1.0: {} @@ -13469,9 +13593,16 @@ snapshots: is-utf8@0.2.1: {} - is-weakref@1.0.2: + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-windows@1.0.2: {} @@ -13499,22 +13630,21 @@ snapshots: optionalDependencies: "@pkgjs/parseargs": 0.11.0 - jackspeak@4.0.2: + jackspeak@4.1.1: dependencies: "@isaacs/cliui": 8.0.2 - jake@10.9.2: + jake@10.9.4: dependencies: async: 3.2.6 - chalk: 4.1.2 filelist: 1.0.4 - minimatch: 3.1.2 + picocolors: 1.1.1 java-properties@1.0.2: {} - jiti@1.21.6: {} + jiti@1.21.7: {} - jiti@2.4.1: {} + jiti@2.5.1: {} jpeg-exif@1.1.4: {} @@ -13526,11 +13656,13 @@ snapshots: jsesc@3.0.2: {} + jsesc@3.1.0: {} + json-buffer@3.0.1: {} json-fixer@1.6.15: dependencies: - "@babel/runtime": 7.26.0 + "@babel/runtime": 7.28.3 chalk: 4.1.2 pegjs: 0.10.0 @@ -13548,7 +13680,7 @@ snapshots: json5@2.2.3: {} - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -13562,13 +13694,13 @@ snapshots: dependencies: json-buffer: 3.0.1 - keyv@5.2.3: + keyv@5.5.0: dependencies: - "@keyv/serialize": 1.0.2 + "@keyv/serialize": 1.1.0 kind-of@6.0.3: {} - known-css-properties@0.35.0: {} + known-css-properties@0.37.0: {} leaflet.markercluster@1.5.3(leaflet@1.9.4): dependencies: @@ -13583,28 +13715,26 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lilconfig@3.1.2: {} - lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} - lint-staged@15.5.0: + lint-staged@16.1.5: dependencies: - chalk: 5.4.1 - commander: 13.1.0 - debug: 4.4.0 - execa: 8.0.1 + chalk: 5.6.0 + commander: 14.0.0 + debug: 4.4.1 lilconfig: 3.1.3 - listr2: 8.2.5 + listr2: 9.0.2 micromatch: 4.0.8 + nano-spawn: 1.0.2 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.7.0 + yaml: 2.8.1 transitivePeerDependencies: - supports-color - listr2@8.2.5: + listr2@9.0.2: dependencies: cli-truncate: 4.0.0 colorette: 2.0.20 @@ -13613,21 +13743,21 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.0 - lit-element@4.1.1: + lit-element@4.2.1: dependencies: - "@lit-labs/ssr-dom-shim": 1.2.1 - "@lit/reactive-element": 2.0.4 - lit-html: 3.2.1 + "@lit-labs/ssr-dom-shim": 1.4.0 + "@lit/reactive-element": 2.1.1 + lit-html: 3.3.1 - lit-html@3.2.1: + lit-html@3.3.1: dependencies: "@types/trusted-types": 2.0.7 - lit@3.2.1: + lit@3.3.1: dependencies: - "@lit/reactive-element": 2.0.4 - lit-element: 4.1.1 - lit-html: 3.2.1 + "@lit/reactive-element": 2.1.1 + lit-element: 4.2.1 + lit-html: 3.3.1 load-json-file@4.0.0: dependencies: @@ -13714,7 +13844,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.0.2: {} + lru-cache@11.1.0: {} lru-cache@5.1.1: dependencies: @@ -13724,27 +13854,27 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 - marked-terminal@7.2.1(marked@12.0.2): + marked-terminal@7.3.0(marked@15.0.12): dependencies: ansi-escapes: 7.0.0 - ansi-regex: 6.1.0 - chalk: 5.4.1 + ansi-regex: 6.2.0 + chalk: 5.6.0 cli-highlight: 2.1.11 cli-table3: 0.6.5 - marked: 12.0.2 - node-emoji: 2.1.3 - supports-hyperlinks: 3.1.0 + marked: 15.0.12 + node-emoji: 2.2.0 + supports-hyperlinks: 3.2.0 - marked@12.0.2: {} + marked@15.0.12: {} - marked@15.0.7: {} + marked@16.2.0: {} + + math-intrinsics@1.1.0: {} mathml-tag-names@2.1.3: {} mdn-data@2.0.28: {} - mdn-data@2.0.30: {} - mdn-data@2.12.2: {} meow@12.1.1: {} @@ -13762,7 +13892,7 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime@4.0.4: {} + mime@4.0.7: {} mimic-fn@2.1.0: {} @@ -13776,21 +13906,21 @@ snapshots: mini-svg-data-uri@1.4.4: {} - minimatch@10.0.1: + minimatch@10.0.3: dependencies: - brace-expansion: 2.0.1 + "@isaacs/brace-expansion": 5.0.0 minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@5.1.6: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist@1.2.7: {} @@ -13800,7 +13930,7 @@ snapshots: mitt@3.0.1: {} - mrmime@2.0.0: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -13812,7 +13942,9 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.8: {} + nano-spawn@1.0.2: {} + + nanoid@3.3.11: {} natural-compare@1.4.0: {} @@ -13820,7 +13952,7 @@ snapshots: nerf-dart@1.0.0: {} - node-emoji@2.1.3: + node-emoji@2.2.0: dependencies: "@sindresorhus/is": 4.6.0 char-regex: 1.0.2 @@ -13831,21 +13963,19 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-releases@2.0.18: {} - node-releases@2.0.19: {} normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.6.3 + semver: 7.7.2 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} normalize-range@0.1.2: {} - normalize-url@8.0.1: {} + normalize-url@8.0.2: {} npm-run-path@4.0.1: dependencies: @@ -13860,7 +13990,7 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 - npm@10.9.0: {} + npm@10.9.3: {} nth-check@2.1.1: dependencies: @@ -13870,23 +14000,25 @@ snapshots: object-hash@3.0.0: {} - object-inspect@1.13.2: {} + object-inspect@1.13.4: {} object-is@1.1.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 object-keys@1.1.1: {} - object.assign@4.1.5: + object.assign@4.1.7: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - has-symbols: 1.0.3 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 object-keys: 1.1.1 - ohash@2.0.4: {} + ohash@2.0.11: {} once@1.4.0: dependencies: @@ -13904,12 +14036,12 @@ snapshots: dependencies: mimic-function: 5.0.1 - open@10.1.0: + open@10.2.0: dependencies: default-browser: 5.2.1 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 - is-wsl: 3.1.0 + wsl-utils: 0.1.0 optionator@0.9.4: dependencies: @@ -13934,13 +14066,19 @@ snapshots: os-tmpdir@1.0.2: {} + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-cancelable@4.0.1: {} p-each-series@3.0.0: {} p-filter@4.1.0: dependencies: - p-map: 7.0.2 + p-map: 7.0.3 p-is-promise@3.0.0: {} @@ -13958,7 +14096,7 @@ snapshots: p-limit@4.0.0: dependencies: - yocto-queue: 1.1.1 + yocto-queue: 1.2.1 p-locate@2.0.0: dependencies: @@ -13976,8 +14114,6 @@ snapshots: dependencies: p-limit: 4.0.0 - p-map@7.0.2: {} - p-map@7.0.3: {} p-reduce@2.1.0: {} @@ -14003,29 +14139,28 @@ snapshots: parse-json@5.2.0: dependencies: - "@babel/code-frame": 7.26.2 + "@babel/code-frame": 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-json@8.1.0: + parse-json@8.3.0: dependencies: - "@babel/code-frame": 7.26.2 - index-to-position: 0.1.2 - type-fest: 4.26.1 + "@babel/code-frame": 7.27.1 + index-to-position: 1.1.0 + type-fest: 4.41.0 parse-ms@4.0.0: {} parse-passwd@1.0.0: {} - parse-path@7.0.0: + parse-path@7.1.0: dependencies: - protocols: 2.0.1 + protocols: 2.0.2 - parse-url@9.2.0: + parse-url@10.0.3: dependencies: - "@types/parse-path": 7.0.3 - parse-path: 7.0.0 + parse-path: 7.1.0 parse5-htmlparser2-tree-adapter@6.0.1: dependencies: @@ -14056,25 +14191,25 @@ snapshots: path-scurry@2.0.0: dependencies: - lru-cache: 11.0.2 + lru-cache: 11.1.0 minipass: 7.1.2 path-type@4.0.0: {} - path-type@5.0.0: {} + path-type@6.0.0: {} pathe@2.0.3: {} - pdfmake@0.2.15: + pdfmake@0.2.20: dependencies: "@foliojs-fork/linebreak": 1.1.2 - "@foliojs-fork/pdfkit": 0.15.1 + "@foliojs-fork/pdfkit": 0.15.3 iconv-lite: 0.6.3 - xmldoc: 1.3.0 + xmldoc: 2.0.2 pegjs@0.10.0: {} - perfect-debounce@1.0.0: {} + perfect-debounce@2.0.0: {} performance-now@2.1.0: {} @@ -14082,7 +14217,7 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} + picomatch@4.0.3: {} pidtree@0.6.0: {} @@ -14092,7 +14227,7 @@ snapshots: pify@5.0.0: {} - pirates@4.0.6: {} + pirates@4.0.7: {} pkg-conf@2.1.0: dependencies: @@ -14105,400 +14240,403 @@ snapshots: dependencies: tinyqueue: 2.0.3 - possible-typed-array-names@1.0.0: {} + possible-typed-array-names@1.1.0: {} - postcss-attribute-case-insensitive@7.0.1(postcss@8.5.3): + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-calc@10.0.2(postcss@8.5.3): + postcss-calc@10.1.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-clamp@4.1.0(postcss@8.5.3): + postcss-clamp@4.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.8(postcss@8.5.3): + postcss-color-functional-notation@7.0.11(postcss@8.5.6): dependencies: - "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - postcss-color-hex-alpha@10.0.0(postcss@8.5.3): + postcss-color-hex-alpha@10.0.0(postcss@8.5.6): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@10.0.0(postcss@8.5.3): + postcss-color-rebeccapurple@10.0.0(postcss@8.5.6): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.5.3): + postcss-colormin@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.24.2 + browserslist: 4.25.3 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.5.3): + postcss-convert-values@7.0.7(postcss@8.5.6): dependencies: - browserslist: 4.24.2 - postcss: 8.5.3 + browserslist: 4.25.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.5(postcss@8.5.3): + postcss-custom-media@11.0.6(postcss@8.5.6): dependencies: - "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.3 + "@csstools/cascade-layer-name-parser": 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/media-query-list-parser": 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 - postcss-custom-properties@14.0.4(postcss@8.5.3): + postcss-custom-properties@14.0.6(postcss@8.5.6): dependencies: - "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/cascade-layer-name-parser": 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.4(postcss@8.5.3): + postcss-custom-selectors@8.0.5(postcss@8.5.6): dependencies: - "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + "@csstools/cascade-layer-name-parser": 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-dir-pseudo-class@9.0.1(postcss@8.5.3): + postcss-dir-pseudo-class@9.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-discard-comments@7.0.3(postcss@8.5.3): + postcss-discard-comments@7.0.4(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-discard-duplicates@7.0.1(postcss@8.5.3): + postcss-discard-duplicates@7.0.2(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-discard-empty@7.0.0(postcss@8.5.3): + postcss-discard-empty@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-discard-overridden@7.0.0(postcss@8.5.3): + postcss-discard-overridden@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-double-position-gradients@6.0.0(postcss@8.5.3): + postcss-double-position-gradients@6.0.3(postcss@8.5.6): dependencies: - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-focus-visible@10.0.1(postcss@8.5.3): + postcss-focus-visible@10.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-focus-within@9.0.1(postcss@8.5.3): + postcss-focus-within@9.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-font-variant@5.0.0(postcss@8.5.3): + postcss-font-variant@5.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-gap-properties@6.0.0(postcss@8.5.3): + postcss-gap-properties@6.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-image-set-function@7.0.0(postcss@8.5.3): + postcss-image-set-function@7.0.0(postcss@8.5.6): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-import@15.1.0(postcss@8.5.3): + postcss-import@15.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.10 - postcss-import@16.1.0(postcss@8.5.3): + postcss-import@16.1.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.10 - postcss-js@4.0.1(postcss@8.5.3): + postcss-js@4.0.1(postcss@8.5.6): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.3 + postcss: 8.5.6 - postcss-lab-function@7.0.8(postcss@8.5.3): + postcss-lab-function@7.0.11(postcss@8.5.6): dependencies: - "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/utilities": 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 - postcss-load-config@4.0.2(postcss@8.5.3): + postcss-load-config@4.0.2(postcss@8.5.6): dependencies: lilconfig: 3.1.3 - yaml: 2.7.0 + yaml: 2.8.1 optionalDependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-logical@8.1.0(postcss@8.5.3): + postcss-logical@8.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-merge-longhand@7.0.4(postcss@8.5.3): + postcss-merge-longhand@7.0.5(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.3) + stylehacks: 7.0.6(postcss@8.5.6) - postcss-merge-rules@7.0.4(postcss@8.5.3): + postcss-merge-rules@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.24.2 + browserslist: 4.25.3 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-minify-font-values@7.0.0(postcss@8.5.3): + postcss-minify-font-values@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.5.3): + postcss-minify-gradients@7.0.1(postcss@8.5.6): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.5.3): + postcss-minify-params@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.24.2 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 + browserslist: 4.25.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.5.3): + postcss-minify-selectors@7.0.5(postcss@8.5.6): dependencies: cssesc: 3.0.0 - postcss: 8.5.3 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-nested@6.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 postcss-selector-parser: 6.1.2 - postcss-nested@6.2.0(postcss@8.5.3): + postcss-nesting@13.0.2(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + "@csstools/selector-resolve-nested": 3.1.0(postcss-selector-parser@7.1.0) + "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-nesting@13.0.1(postcss@8.5.3): + postcss-normalize-charset@7.0.1(postcss@8.5.6): dependencies: - "@csstools/selector-resolve-nested": 3.0.0(postcss-selector-parser@7.0.0) - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + postcss: 8.5.6 - postcss-normalize-charset@7.0.0(postcss@8.5.3): + postcss-normalize-display-values@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - - postcss-normalize-display-values@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.5.3): + postcss-normalize-positions@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.5.3): + postcss-normalize-repeat-style@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.5.3): + postcss-normalize-string@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.5.3): + postcss-normalize-timing-functions@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.5.3): + postcss-normalize-unicode@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.24.2 - postcss: 8.5.3 + browserslist: 4.25.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.5.3): + postcss-normalize-url@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.5.3): + postcss-normalize-whitespace@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-opacity-percentage@3.0.0(postcss@8.5.3): + postcss-opacity-percentage@3.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-ordered-values@7.0.1(postcss@8.5.3): + postcss-ordered-values@7.0.2(postcss@8.5.6): dependencies: - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-overflow-shorthand@6.0.0(postcss@8.5.3): + postcss-overflow-shorthand@6.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.5.3): + postcss-page-break@3.0.4(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-place@10.0.0(postcss@8.5.3): + postcss-place@10.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-preset-env@10.1.5(postcss@8.5.3): + postcss-preset-env@10.3.0(postcss@8.5.6): dependencies: - "@csstools/postcss-cascade-layers": 5.0.1(postcss@8.5.3) - "@csstools/postcss-color-function": 4.0.8(postcss@8.5.3) - "@csstools/postcss-color-mix-function": 3.0.8(postcss@8.5.3) - "@csstools/postcss-content-alt-text": 2.0.4(postcss@8.5.3) - "@csstools/postcss-exponential-functions": 2.0.7(postcss@8.5.3) - "@csstools/postcss-font-format-keywords": 4.0.0(postcss@8.5.3) - "@csstools/postcss-gamut-mapping": 2.0.8(postcss@8.5.3) - "@csstools/postcss-gradients-interpolation-method": 5.0.8(postcss@8.5.3) - "@csstools/postcss-hwb-function": 4.0.8(postcss@8.5.3) - "@csstools/postcss-ic-unit": 4.0.0(postcss@8.5.3) - "@csstools/postcss-initial": 2.0.1(postcss@8.5.3) - "@csstools/postcss-is-pseudo-class": 5.0.1(postcss@8.5.3) - "@csstools/postcss-light-dark-function": 2.0.7(postcss@8.5.3) - "@csstools/postcss-logical-float-and-clear": 3.0.0(postcss@8.5.3) - "@csstools/postcss-logical-overflow": 2.0.0(postcss@8.5.3) - "@csstools/postcss-logical-overscroll-behavior": 2.0.0(postcss@8.5.3) - "@csstools/postcss-logical-resize": 3.0.0(postcss@8.5.3) - "@csstools/postcss-logical-viewport-units": 3.0.3(postcss@8.5.3) - "@csstools/postcss-media-minmax": 2.0.7(postcss@8.5.3) - "@csstools/postcss-media-queries-aspect-ratio-number-values": 3.0.4(postcss@8.5.3) - "@csstools/postcss-nested-calc": 4.0.0(postcss@8.5.3) - "@csstools/postcss-normalize-display-values": 4.0.0(postcss@8.5.3) - "@csstools/postcss-oklab-function": 4.0.8(postcss@8.5.3) - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) - "@csstools/postcss-random-function": 1.0.3(postcss@8.5.3) - "@csstools/postcss-relative-color-syntax": 3.0.8(postcss@8.5.3) - "@csstools/postcss-scope-pseudo-class": 4.0.1(postcss@8.5.3) - "@csstools/postcss-sign-functions": 1.1.2(postcss@8.5.3) - "@csstools/postcss-stepped-value-functions": 4.0.7(postcss@8.5.3) - "@csstools/postcss-text-decoration-shorthand": 4.0.2(postcss@8.5.3) - "@csstools/postcss-trigonometric-functions": 4.0.7(postcss@8.5.3) - "@csstools/postcss-unset-value": 4.0.0(postcss@8.5.3) - autoprefixer: 10.4.20(postcss@8.5.3) - browserslist: 4.24.4 - css-blank-pseudo: 7.0.1(postcss@8.5.3) - css-has-pseudo: 7.0.2(postcss@8.5.3) - css-prefers-color-scheme: 10.0.0(postcss@8.5.3) - cssdb: 8.2.3 - postcss: 8.5.3 - postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.3) - postcss-clamp: 4.1.0(postcss@8.5.3) - postcss-color-functional-notation: 7.0.8(postcss@8.5.3) - postcss-color-hex-alpha: 10.0.0(postcss@8.5.3) - postcss-color-rebeccapurple: 10.0.0(postcss@8.5.3) - postcss-custom-media: 11.0.5(postcss@8.5.3) - postcss-custom-properties: 14.0.4(postcss@8.5.3) - postcss-custom-selectors: 8.0.4(postcss@8.5.3) - postcss-dir-pseudo-class: 9.0.1(postcss@8.5.3) - postcss-double-position-gradients: 6.0.0(postcss@8.5.3) - postcss-focus-visible: 10.0.1(postcss@8.5.3) - postcss-focus-within: 9.0.1(postcss@8.5.3) - postcss-font-variant: 5.0.0(postcss@8.5.3) - postcss-gap-properties: 6.0.0(postcss@8.5.3) - postcss-image-set-function: 7.0.0(postcss@8.5.3) - postcss-lab-function: 7.0.8(postcss@8.5.3) - postcss-logical: 8.1.0(postcss@8.5.3) - postcss-nesting: 13.0.1(postcss@8.5.3) - postcss-opacity-percentage: 3.0.0(postcss@8.5.3) - postcss-overflow-shorthand: 6.0.0(postcss@8.5.3) - postcss-page-break: 3.0.4(postcss@8.5.3) - postcss-place: 10.0.0(postcss@8.5.3) - postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.3) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.3) - postcss-selector-not: 8.0.1(postcss@8.5.3) + "@csstools/postcss-alpha-function": 1.0.0(postcss@8.5.6) + "@csstools/postcss-cascade-layers": 5.0.2(postcss@8.5.6) + "@csstools/postcss-color-function": 4.0.11(postcss@8.5.6) + "@csstools/postcss-color-function-display-p3-linear": 1.0.0(postcss@8.5.6) + "@csstools/postcss-color-mix-function": 3.0.11(postcss@8.5.6) + "@csstools/postcss-color-mix-variadic-function-arguments": 1.0.1(postcss@8.5.6) + "@csstools/postcss-content-alt-text": 2.0.7(postcss@8.5.6) + "@csstools/postcss-exponential-functions": 2.0.9(postcss@8.5.6) + "@csstools/postcss-font-format-keywords": 4.0.0(postcss@8.5.6) + "@csstools/postcss-gamut-mapping": 2.0.11(postcss@8.5.6) + "@csstools/postcss-gradients-interpolation-method": 5.0.11(postcss@8.5.6) + "@csstools/postcss-hwb-function": 4.0.11(postcss@8.5.6) + "@csstools/postcss-ic-unit": 4.0.3(postcss@8.5.6) + "@csstools/postcss-initial": 2.0.1(postcss@8.5.6) + "@csstools/postcss-is-pseudo-class": 5.0.3(postcss@8.5.6) + "@csstools/postcss-light-dark-function": 2.0.10(postcss@8.5.6) + "@csstools/postcss-logical-float-and-clear": 3.0.0(postcss@8.5.6) + "@csstools/postcss-logical-overflow": 2.0.0(postcss@8.5.6) + "@csstools/postcss-logical-overscroll-behavior": 2.0.0(postcss@8.5.6) + "@csstools/postcss-logical-resize": 3.0.0(postcss@8.5.6) + "@csstools/postcss-logical-viewport-units": 3.0.4(postcss@8.5.6) + "@csstools/postcss-media-minmax": 2.0.9(postcss@8.5.6) + "@csstools/postcss-media-queries-aspect-ratio-number-values": 3.0.5(postcss@8.5.6) + "@csstools/postcss-nested-calc": 4.0.0(postcss@8.5.6) + "@csstools/postcss-normalize-display-values": 4.0.0(postcss@8.5.6) + "@csstools/postcss-oklab-function": 4.0.11(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/postcss-random-function": 2.0.1(postcss@8.5.6) + "@csstools/postcss-relative-color-syntax": 3.0.11(postcss@8.5.6) + "@csstools/postcss-scope-pseudo-class": 4.0.1(postcss@8.5.6) + "@csstools/postcss-sign-functions": 1.1.4(postcss@8.5.6) + "@csstools/postcss-stepped-value-functions": 4.0.9(postcss@8.5.6) + "@csstools/postcss-text-decoration-shorthand": 4.0.3(postcss@8.5.6) + "@csstools/postcss-trigonometric-functions": 4.0.9(postcss@8.5.6) + "@csstools/postcss-unset-value": 4.0.0(postcss@8.5.6) + autoprefixer: 10.4.21(postcss@8.5.6) + browserslist: 4.25.3 + css-blank-pseudo: 7.0.1(postcss@8.5.6) + css-has-pseudo: 7.0.2(postcss@8.5.6) + css-prefers-color-scheme: 10.0.0(postcss@8.5.6) + cssdb: 8.4.0 + postcss: 8.5.6 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.6) + postcss-clamp: 4.1.0(postcss@8.5.6) + postcss-color-functional-notation: 7.0.11(postcss@8.5.6) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.6) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.6) + postcss-custom-media: 11.0.6(postcss@8.5.6) + postcss-custom-properties: 14.0.6(postcss@8.5.6) + postcss-custom-selectors: 8.0.5(postcss@8.5.6) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.6) + postcss-double-position-gradients: 6.0.3(postcss@8.5.6) + postcss-focus-visible: 10.0.1(postcss@8.5.6) + postcss-focus-within: 9.0.1(postcss@8.5.6) + postcss-font-variant: 5.0.0(postcss@8.5.6) + postcss-gap-properties: 6.0.0(postcss@8.5.6) + postcss-image-set-function: 7.0.0(postcss@8.5.6) + postcss-lab-function: 7.0.11(postcss@8.5.6) + postcss-logical: 8.1.0(postcss@8.5.6) + postcss-nesting: 13.0.2(postcss@8.5.6) + postcss-opacity-percentage: 3.0.0(postcss@8.5.6) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.6) + postcss-page-break: 3.0.4(postcss@8.5.6) + postcss-place: 10.0.0(postcss@8.5.6) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.6) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.6) + postcss-selector-not: 8.0.1(postcss@8.5.6) - postcss-pseudo-class-any-link@10.0.1(postcss@8.5.3): + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-reduce-initial@7.0.2(postcss@8.5.3): + postcss-reduce-initial@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.24.2 + browserslist: 4.25.3 caniuse-api: 3.0.0 - postcss: 8.5.3 + postcss: 8.5.6 - postcss-reduce-transforms@7.0.0(postcss@8.5.3): + postcss-reduce-transforms@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-replace-overflow-wrap@4.0.0(postcss@8.5.3): + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-reporter@7.1.0(postcss@8.5.3): + postcss-reporter@7.1.0(postcss@8.5.6): dependencies: picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.6 thenby: 1.3.4 postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.0.1(postcss@8.5.3): + postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-selector-not@8.0.1(postcss@8.5.3): + postcss-selector-not@8.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 postcss-selector-parser@6.0.10: dependencies: @@ -14510,32 +14648,27 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.0.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-selector-parser@7.1.0: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.5.3): + postcss-svgo@7.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - svgo: 3.3.2 + svgo: 4.0.0 - postcss-unique-selectors@7.0.3(postcss@8.5.3): + postcss-unique-selectors@7.0.4(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 postcss-value-parser@4.2.0: {} - postcss@8.5.3: + postcss@8.5.6: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -14545,21 +14678,21 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-organize-imports@4.1.0(prettier@3.5.3)(typescript@5.7.3): + prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2): dependencies: - prettier: 3.5.3 - typescript: 5.7.3 + prettier: 3.6.2 + typescript: 5.9.2 prettier@2.8.8: optional: true - prettier@3.5.3: {} + prettier@3.6.2: {} pretty-bytes@5.6.0: {} pretty-bytes@6.1.1: {} - pretty-ms@9.1.0: + pretty-ms@9.2.0: dependencies: parse-ms: 4.0.0 @@ -14567,7 +14700,7 @@ snapshots: proto-list@1.2.4: {} - protocols@2.0.1: {} + protocols@2.0.2: {} punycode@2.3.1: {} @@ -14596,16 +14729,16 @@ snapshots: read-package-up@11.0.0: dependencies: - find-up-simple: 1.0.0 + find-up-simple: 1.0.1 read-pkg: 9.0.1 - type-fest: 4.26.1 + type-fest: 4.41.0 read-pkg@9.0.1: dependencies: "@types/normalize-package-data": 2.4.4 normalize-package-data: 6.0.2 - parse-json: 8.1.0 - type-fest: 4.26.1 + parse-json: 8.3.0 + type-fest: 4.41.0 unicorn-magic: 0.1.0 readable-stream@2.3.8: @@ -14628,41 +14761,48 @@ snapshots: dependencies: picomatch: 2.3.1 + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + regenerate-unicode-properties@10.2.0: dependencies: regenerate: 1.4.2 regenerate@1.4.2: {} - regenerator-runtime@0.14.1: {} - - regenerator-transform@0.15.2: + regexp.prototype.flags@1.5.4: dependencies: - "@babel/runtime": 7.26.0 - - regexp.prototype.flags@1.5.3: - dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 set-function-name: 2.0.2 - regexpu-core@6.1.1: + regexpu-core@6.2.0: dependencies: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.0 regjsgen: 0.8.0 - regjsparser: 0.11.2 + regjsparser: 0.12.0 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.0 - registry-auth-token@5.0.2: + registry-auth-token@5.1.0: dependencies: "@pnpm/npm-conf": 2.3.1 regjsgen@0.8.0: {} - regjsparser@0.11.2: + regjsparser@0.12.0: dependencies: jsesc: 3.0.2 @@ -14685,9 +14825,9 @@ snapshots: resolve-from@5.0.0: {} - resolve@1.22.8: + resolve@1.22.10: dependencies: - is-core-module: 2.15.1 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -14705,7 +14845,7 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 - reusify@1.0.4: {} + reusify@1.1.0: {} rfdc@1.4.1: {} @@ -14715,29 +14855,30 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.34.8: + rollup@4.48.1: dependencies: - "@types/estree": 1.0.6 + "@types/estree": 1.0.8 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.34.8 - "@rollup/rollup-android-arm64": 4.34.8 - "@rollup/rollup-darwin-arm64": 4.34.8 - "@rollup/rollup-darwin-x64": 4.34.8 - "@rollup/rollup-freebsd-arm64": 4.34.8 - "@rollup/rollup-freebsd-x64": 4.34.8 - "@rollup/rollup-linux-arm-gnueabihf": 4.34.8 - "@rollup/rollup-linux-arm-musleabihf": 4.34.8 - "@rollup/rollup-linux-arm64-gnu": 4.34.8 - "@rollup/rollup-linux-arm64-musl": 4.34.8 - "@rollup/rollup-linux-loongarch64-gnu": 4.34.8 - "@rollup/rollup-linux-powerpc64le-gnu": 4.34.8 - "@rollup/rollup-linux-riscv64-gnu": 4.34.8 - "@rollup/rollup-linux-s390x-gnu": 4.34.8 - "@rollup/rollup-linux-x64-gnu": 4.34.8 - "@rollup/rollup-linux-x64-musl": 4.34.8 - "@rollup/rollup-win32-arm64-msvc": 4.34.8 - "@rollup/rollup-win32-ia32-msvc": 4.34.8 - "@rollup/rollup-win32-x64-msvc": 4.34.8 + "@rollup/rollup-android-arm-eabi": 4.48.1 + "@rollup/rollup-android-arm64": 4.48.1 + "@rollup/rollup-darwin-arm64": 4.48.1 + "@rollup/rollup-darwin-x64": 4.48.1 + "@rollup/rollup-freebsd-arm64": 4.48.1 + "@rollup/rollup-freebsd-x64": 4.48.1 + "@rollup/rollup-linux-arm-gnueabihf": 4.48.1 + "@rollup/rollup-linux-arm-musleabihf": 4.48.1 + "@rollup/rollup-linux-arm64-gnu": 4.48.1 + "@rollup/rollup-linux-arm64-musl": 4.48.1 + "@rollup/rollup-linux-loongarch64-gnu": 4.48.1 + "@rollup/rollup-linux-ppc64-gnu": 4.48.1 + "@rollup/rollup-linux-riscv64-gnu": 4.48.1 + "@rollup/rollup-linux-riscv64-musl": 4.48.1 + "@rollup/rollup-linux-s390x-gnu": 4.48.1 + "@rollup/rollup-linux-x64-gnu": 4.48.1 + "@rollup/rollup-linux-x64-musl": 4.48.1 + "@rollup/rollup-win32-arm64-msvc": 4.48.1 + "@rollup/rollup-win32-ia32-msvc": 4.48.1 + "@rollup/rollup-win32-x64-msvc": 4.48.1 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -14752,59 +14893,65 @@ snapshots: dependencies: tslib: 1.14.1 - rxjs@7.8.1: + rxjs@7.8.2: dependencies: tslib: 2.8.1 - safe-array-concat@1.1.2: + safe-array-concat@1.1.3: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 isarray: 2.0.5 safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} - safe-regex-test@1.0.3: + safe-push-apply@1.0.0: dependencies: - call-bind: 1.0.7 es-errors: 1.3.0 - is-regex: 1.1.4 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 safer-buffer@2.1.2: {} sax@1.4.1: {} - semantic-release@24.2.3(typescript@5.7.3): + semantic-release@24.2.7(typescript@5.9.2): dependencies: - "@semantic-release/commit-analyzer": 13.0.0(semantic-release@24.2.3(typescript@5.7.3)) + "@semantic-release/commit-analyzer": 13.0.1(semantic-release@24.2.7(typescript@5.9.2)) "@semantic-release/error": 4.0.0 - "@semantic-release/github": 11.0.0(semantic-release@24.2.3(typescript@5.7.3)) - "@semantic-release/npm": 12.0.1(semantic-release@24.2.3(typescript@5.7.3)) - "@semantic-release/release-notes-generator": 14.0.1(semantic-release@24.2.3(typescript@5.7.3)) + "@semantic-release/github": 11.0.4(semantic-release@24.2.7(typescript@5.9.2)) + "@semantic-release/npm": 12.0.2(semantic-release@24.2.7(typescript@5.9.2)) + "@semantic-release/release-notes-generator": 14.0.3(semantic-release@24.2.7(typescript@5.9.2)) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.7.3) - debug: 4.4.0 - env-ci: 11.1.0 - execa: 9.5.1 + cosmiconfig: 9.0.0(typescript@5.9.2) + debug: 4.4.1 + env-ci: 11.1.1 + execa: 9.6.0 figures: 6.1.0 find-versions: 6.0.0 get-stream: 6.0.1 git-log-parser: 1.2.1 hook-std: 3.0.0 - hosted-git-info: 8.0.0 + hosted-git-info: 8.1.0 import-from-esm: 2.0.0 lodash-es: 4.17.21 - marked: 12.0.2 - marked-terminal: 7.2.1(marked@12.0.2) + marked: 15.0.12 + marked-terminal: 7.3.0(marked@15.0.12) micromatch: 4.0.8 p-each-series: 3.0.0 p-reduce: 3.0.0 read-package-up: 11.0.0 resolve-from: 5.0.0 - semver: 7.6.3 + semver: 7.7.2 semver-diff: 4.0.0 signale: 1.4.0 yargs: 17.7.2 @@ -14814,13 +14961,13 @@ snapshots: semver-diff@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.7.2 semver-regex@4.0.5: {} semver@6.3.1: {} - semver@7.6.3: {} + semver@7.7.2: {} serialize-javascript@6.0.2: dependencies: @@ -14833,8 +14980,8 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 has-property-descriptors: 1.0.2 set-function-name@2.0.2: @@ -14844,31 +14991,40 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - sharp@0.33.5: + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + sharp@0.34.3: dependencies: color: 4.2.3 - detect-libc: 2.0.3 - semver: 7.6.3 + detect-libc: 2.0.4 + semver: 7.7.2 optionalDependencies: - "@img/sharp-darwin-arm64": 0.33.5 - "@img/sharp-darwin-x64": 0.33.5 - "@img/sharp-libvips-darwin-arm64": 1.0.4 - "@img/sharp-libvips-darwin-x64": 1.0.4 - "@img/sharp-libvips-linux-arm": 1.0.5 - "@img/sharp-libvips-linux-arm64": 1.0.4 - "@img/sharp-libvips-linux-s390x": 1.0.4 - "@img/sharp-libvips-linux-x64": 1.0.4 - "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 - "@img/sharp-libvips-linuxmusl-x64": 1.0.4 - "@img/sharp-linux-arm": 0.33.5 - "@img/sharp-linux-arm64": 0.33.5 - "@img/sharp-linux-s390x": 0.33.5 - "@img/sharp-linux-x64": 0.33.5 - "@img/sharp-linuxmusl-arm64": 0.33.5 - "@img/sharp-linuxmusl-x64": 0.33.5 - "@img/sharp-wasm32": 0.33.5 - "@img/sharp-win32-ia32": 0.33.5 - "@img/sharp-win32-x64": 0.33.5 + "@img/sharp-darwin-arm64": 0.34.3 + "@img/sharp-darwin-x64": 0.34.3 + "@img/sharp-libvips-darwin-arm64": 1.2.0 + "@img/sharp-libvips-darwin-x64": 1.2.0 + "@img/sharp-libvips-linux-arm": 1.2.0 + "@img/sharp-libvips-linux-arm64": 1.2.0 + "@img/sharp-libvips-linux-ppc64": 1.2.0 + "@img/sharp-libvips-linux-s390x": 1.2.0 + "@img/sharp-libvips-linux-x64": 1.2.0 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.0 + "@img/sharp-libvips-linuxmusl-x64": 1.2.0 + "@img/sharp-linux-arm": 0.34.3 + "@img/sharp-linux-arm64": 0.34.3 + "@img/sharp-linux-ppc64": 0.34.3 + "@img/sharp-linux-s390x": 0.34.3 + "@img/sharp-linux-x64": 0.34.3 + "@img/sharp-linuxmusl-arm64": 0.34.3 + "@img/sharp-linuxmusl-x64": 0.34.3 + "@img/sharp-wasm32": 0.34.3 + "@img/sharp-win32-arm64": 0.34.3 + "@img/sharp-win32-ia32": 0.34.3 + "@img/sharp-win32-x64": 0.34.3 shebang-command@2.0.0: dependencies: @@ -14876,12 +15032,33 @@ snapshots: shebang-regex@3.0.0: {} - side-channel@1.0.6: + side-channel-list@1.0.0: dependencies: - call-bind: 1.0.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 signal-exit@3.0.7: {} @@ -14899,8 +15076,8 @@ snapshots: sirv@3.0.1: dependencies: - "@polka/url": 1.0.0-next.28 - mrmime: 2.0.0 + "@polka/url": 1.0.0-next.29 + mrmime: 2.0.1 totalist: 3.0.1 skin-tone@2.0.0: @@ -14949,16 +15126,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.22 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.22 - spdx-license-ids@3.0.20: {} + spdx-license-ids@3.0.22: {} split2@1.0.0: dependencies: @@ -14970,6 +15147,11 @@ snapshots: stencil-wormhole@3.4.1: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + stream-combiner2@1.1.1: dependencies: duplexer2: 0.1.4 @@ -14995,39 +15177,44 @@ snapshots: get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 - string.prototype.matchall@4.0.11: + string.prototype.matchall@4.0.12: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.3 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 set-function-name: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 - string.prototype.trim@1.2.9: + string.prototype.trim@1.2.10: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 - string.prototype.trimend@1.0.8: + string.prototype.trimend@1.0.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string_decoder@1.1.1: dependencies: @@ -15049,7 +15236,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.0 strip-bom@3.0.0: {} @@ -15069,53 +15256,53 @@ snapshots: style-mod@4.1.2: {} - stylehacks@7.0.4(postcss@8.5.3): + stylehacks@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.24.2 - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + browserslist: 4.25.3 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - stylelint-config-recommended@15.0.0(stylelint@16.15.0(typescript@5.7.3)): + stylelint-config-recommended@17.0.0(stylelint@16.23.1(typescript@5.9.2)): dependencies: - stylelint: 16.15.0(typescript@5.7.3) + stylelint: 16.23.1(typescript@5.9.2) - stylelint-config-standard@37.0.0(stylelint@16.15.0(typescript@5.7.3)): + stylelint-config-standard@39.0.0(stylelint@16.23.1(typescript@5.9.2)): dependencies: - stylelint: 16.15.0(typescript@5.7.3) - stylelint-config-recommended: 15.0.0(stylelint@16.15.0(typescript@5.7.3)) + stylelint: 16.23.1(typescript@5.9.2) + stylelint-config-recommended: 17.0.0(stylelint@16.23.1(typescript@5.9.2)) - stylelint@16.15.0(typescript@5.7.3): + stylelint@16.23.1(typescript@5.9.2): dependencies: - "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) - "@csstools/css-tokenizer": 3.0.3 - "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 + "@csstools/media-query-list-parser": 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) "@dual-bundle/import-meta-resolve": 4.1.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.7.3) + cosmiconfig: 9.0.0(typescript@5.9.2) css-functions-list: 3.2.3 css-tree: 3.1.0 - debug: 4.4.0 + debug: 4.4.1 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 10.0.6 + file-entry-cache: 10.1.4 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 7.0.3 + ignore: 7.0.5 imurmurhash: 0.1.4 is-plain-object: 5.0.0 - known-css-properties: 0.35.0 + known-css-properties: 0.37.0 mathml-tag-names: 2.1.3 meow: 13.2.0 micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.6 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 7.0.1(postcss@8.5.3) + postcss-safe-parser: 7.0.1(postcss@8.5.6) postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 @@ -15130,12 +15317,12 @@ snapshots: sucrase@3.35.0: dependencies: - "@jridgewell/gen-mapping": 0.3.5 + "@jridgewell/gen-mapping": 0.3.13 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 - pirates: 4.0.6 + pirates: 4.0.7 ts-interface-checker: 0.1.13 super-regex@1.0.0: @@ -15151,11 +15338,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@3.1.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - supports-hyperlinks@3.2.0: dependencies: has-flag: 4.0.0 @@ -15165,20 +15347,19 @@ snapshots: svg-tags@1.0.0: {} - svgo@3.3.2: + svgo@4.0.0: dependencies: - "@trysound/sax": 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.1.0 + css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 + sax: 1.4.1 - synckit@0.9.2: + synckit@0.11.11: dependencies: - "@pkgr/core": 0.1.1 - tslib: 2.8.1 + "@pkgr/core": 0.2.9 table@6.9.0: dependencies: @@ -15198,19 +15379,19 @@ snapshots: fast-glob: 3.3.3 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.6 + jiti: 1.21.7 lilconfig: 3.1.3 micromatch: 4.0.8 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.3 - postcss-import: 15.1.0(postcss@8.5.3) - postcss-js: 4.0.1(postcss@8.5.3) - postcss-load-config: 4.0.2(postcss@8.5.3) - postcss-nested: 6.2.0(postcss@8.5.3) + postcss: 8.5.6 + postcss-import: 15.1.0(postcss@8.5.6) + postcss-js: 4.0.1(postcss@8.5.6) + postcss-load-config: 4.0.2(postcss@8.5.6) + postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 - resolve: 1.22.8 + resolve: 1.22.10 sucrase: 3.35.0 transitivePeerDependencies: - ts-node @@ -15233,10 +15414,10 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - terser@5.36.0: + terser@5.43.1: dependencies: - "@jridgewell/source-map": 0.3.6 - acorn: 8.14.0 + "@jridgewell/source-map": 0.3.11 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -15265,12 +15446,12 @@ snapshots: tiny-inflate@1.0.3: {} - tinyexec@0.3.1: {} + tinyexec@1.0.1: {} - tinyglobby@0.2.10: + tinyglobby@0.2.14: dependencies: - fdir: 6.4.2(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 tinyqueue@2.0.3: {} @@ -15292,9 +15473,9 @@ snapshots: traverse@0.6.8: {} - ts-api-utils@2.0.1(typescript@5.7.3): + ts-api-utils@2.1.0(typescript@5.9.2): dependencies: - typescript: 5.7.3 + typescript: 5.9.2 ts-interface-checker@0.1.13: {} @@ -15314,63 +15495,65 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.26.1: {} + type-fest@4.41.0: {} - typed-array-buffer@1.0.2: + typed-array-buffer@1.0.3: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 - typed-array-byte-length@1.0.1: + typed-array-byte-length@1.0.3: dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 - typed-array-byte-offset@1.0.2: + typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 - typed-array-length@1.0.6: + typed-array-length@1.0.7: dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 - typescript-eslint@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3): + typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - "@typescript-eslint/eslint-plugin": 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3))(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) - "@typescript-eslint/parser": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) - "@typescript-eslint/utils": 8.26.1(eslint@9.22.0(jiti@2.4.1))(typescript@5.7.3) - eslint: 9.22.0(jiti@2.4.1) - typescript: 5.7.3 + "@typescript-eslint/eslint-plugin": 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + "@typescript-eslint/parser": 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + "@typescript-eslint/typescript-estree": 8.41.0(typescript@5.9.2) + "@typescript-eslint/utils": 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - typescript@5.7.3: {} + typescript@5.9.2: {} uglify-js@3.19.3: optional: true - unbox-primitive@1.0.2: + unbox-primitive@1.1.0: dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 - undici-types@6.19.8: {} + undici-types@7.10.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -15407,26 +15590,20 @@ snapshots: dependencies: crypto-random-string: 4.0.0 - universal-user-agent@7.0.2: {} + universal-user-agent@7.0.3: {} universalify@2.0.1: {} - unplugin-utils@0.2.4: + unplugin-utils@0.3.0: dependencies: pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 upath@1.2.0: {} - update-browserslist-db@1.1.1(browserslist@4.24.2): + update-browserslist-db@1.1.3(browserslist@4.25.3): dependencies: - browserslist: 4.24.2 - escalade: 3.2.0 - picocolors: 1.1.1 - - update-browserslist-db@1.1.1(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 + browserslist: 4.25.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -15445,75 +15622,78 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-dev-rpc@1.0.7(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + vite-dev-rpc@1.1.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)): dependencies: - birpc: 2.2.0 - vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) - vite-hot-client: 2.0.4(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + birpc: 2.5.0 + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) + vite-hot-client: 2.1.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)) - vite-hot-client@2.0.4(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + vite-hot-client@2.1.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)): dependencies: - vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) - vite-plugin-codeigniter@1.0.1(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + vite-plugin-codeigniter@2.0.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)): dependencies: - glob: 11.0.1 + glob: 11.0.3 picocolors: 1.1.1 - sharp: 0.33.5 - vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) - vite-plugin-static-copy: 2.3.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) - zod: 3.24.2 + sharp: 0.34.3 + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) + vite-plugin-static-copy: 3.1.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)) + zod: 4.1.1 - vite-plugin-inspect@11.0.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + vite-plugin-inspect@11.3.3(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)): dependencies: - ansis: 3.16.0 - debug: 4.4.0 + ansis: 4.1.0 + debug: 4.4.1 error-stack-parser-es: 1.0.5 - ohash: 2.0.4 - open: 10.1.0 - perfect-debounce: 1.0.0 + ohash: 2.0.11 + open: 10.2.0 + perfect-debounce: 2.0.0 sirv: 3.0.1 - unplugin-utils: 0.2.4 - vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) - vite-dev-rpc: 1.0.7(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + unplugin-utils: 0.3.0 + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) + vite-dev-rpc: 1.1.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)) transitivePeerDependencies: - supports-color - vite-plugin-pwa@0.21.1(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0): + vite-plugin-pwa@1.0.3(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.3.0)(workbox-window@7.3.0): dependencies: - debug: 4.3.7 + debug: 4.4.1 pretty-bytes: 6.1.1 - tinyglobby: 0.2.10 - vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + tinyglobby: 0.2.14 + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) workbox-build: 7.3.0 workbox-window: 7.3.0 transitivePeerDependencies: - supports-color - vite-plugin-static-copy@2.3.0(vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + vite-plugin-static-copy@3.1.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)): dependencies: chokidar: 3.6.0 - fast-glob: 3.3.3 - fs-extra: 11.2.0 + fs-extra: 11.3.1 p-map: 7.0.3 picocolors: 1.1.1 - vite: 6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + tinyglobby: 0.2.14 + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) - vite@6.2.2(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0): + vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1): dependencies: - esbuild: 0.25.0 - postcss: 8.5.3 - rollup: 4.34.8 + esbuild: 0.25.9 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.48.1 + tinyglobby: 0.2.14 optionalDependencies: - "@types/node": 22.9.0 + "@types/node": 24.3.0 fsevents: 2.3.3 - jiti: 2.4.1 - terser: 5.36.0 - yaml: 2.7.0 + jiti: 2.5.1 + terser: 5.43.1 + yaml: 2.8.1 w3c-keyname@2.2.8: {} - wavesurfer.js@7.9.1: {} + wavesurfer.js@7.10.1: {} wcwidth@1.0.1: dependencies: @@ -15534,22 +15714,47 @@ snapshots: tr46: 1.0.1 webidl-conversions: 4.0.2 - which-boxed-primitive@1.0.2: + which-boxed-primitive@1.1.1: dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 which-module@2.0.1: {} - which-typed-array@1.1.15: + which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 which@1.3.1: @@ -15576,11 +15781,11 @@ snapshots: workbox-build@7.3.0: dependencies: "@apideck/better-ajv-errors": 0.3.6(ajv@8.17.1) - "@babel/core": 7.26.0 - "@babel/preset-env": 7.26.0(@babel/core@7.26.0) - "@babel/runtime": 7.26.0 - "@rollup/plugin-babel": 5.3.1(@babel/core@7.26.0)(rollup@2.79.2) - "@rollup/plugin-node-resolve": 15.3.0(rollup@2.79.2) + "@babel/core": 7.28.3 + "@babel/preset-env": 7.28.3(@babel/core@7.28.3) + "@babel/runtime": 7.28.3 + "@rollup/plugin-babel": 5.3.1(@babel/core@7.28.3)(rollup@2.79.2) + "@rollup/plugin-node-resolve": 15.3.1(rollup@2.79.2) "@rollup/plugin-replace": 2.4.2(rollup@2.79.2) "@rollup/plugin-terser": 0.4.4(rollup@2.79.2) "@surma/rollup-plugin-off-main-thread": 2.2.3 @@ -15708,13 +15913,17 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - xml-formatter@3.6.4: + wsl-utils@0.1.0: dependencies: - xml-parser-xo: 4.1.2 + is-wsl: 3.1.0 - xml-parser-xo@4.1.2: {} + xml-formatter@3.6.6: + dependencies: + xml-parser-xo: 4.1.4 - xmldoc@1.3.0: + xml-parser-xo@4.1.4: {} + + xmldoc@2.0.2: dependencies: sax: 1.4.1 @@ -15726,7 +15935,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.7.0: {} + yaml@2.8.1: {} yargs-parser@18.1.3: dependencies: @@ -15773,8 +15982,8 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.1.1: {} + yocto-queue@1.2.1: {} - yoctocolors@2.1.1: {} + yoctocolors@2.1.2: {} - zod@3.24.2: {} + zod@4.1.1: {} diff --git a/preload.php b/preload.php index 45efcdf7..e98cac07 100644 --- a/preload.php +++ b/preload.php @@ -2,6 +2,9 @@ declare(strict_types=1); +use CodeIgniter\Boot; +use Config\Paths; + /** * This file is part of CodeIgniter 4 framework. * @@ -56,6 +59,7 @@ class preload '/system/Config/Routes.php', '/system/Language/', '/system/bootstrap.php', + '/system/util_bootstrap.php', '/system/rewrite.php', '/Views/', // Errors occur. @@ -94,10 +98,10 @@ class preload private function loadAutoloader(): void { - $paths = new Config\Paths(); + $paths = new Paths(); require rtrim($paths->systemDirectory, '\\/ ') . DIRECTORY_SEPARATOR . 'Boot.php'; - CodeIgniter\Boot::preload($paths); + Boot::preload($paths); } } diff --git a/resources/styles/_modules/custom.css b/resources/styles/_modules/custom.css index 55f09725..e327b2ca 100644 --- a/resources/styles/_modules/custom.css +++ b/resources/styles/_modules/custom.css @@ -50,15 +50,15 @@ .backdrop-gradient { background-image: linear-gradient( 180deg, - hsla(0deg 0% 35.29% / 0%) 0%, - hsla(0deg 0% 34.53% / 3.44%) 16.36%, - hsla(0deg 0% 32.42% / 12.5%) 33.34%, - hsla(0deg 0% 29.18% / 25.3%) 50.1%, - hsla(0deg 0% 24.96% / 40%) 65.75%, - hsla(0deg 0% 19.85% / 54.7%) 79.43%, - hsla(0deg 0% 13.95% / 67.5%) 90.28%, - hsla(0deg 0% 7.32% / 76.6%) 97.43%, - hsla(0deg 0% 0% / 80%) 100% + hsl(0deg 0% 35.29% / 0%) 0%, + hsl(0deg 0% 34.53% / 3.44%) 16.36%, + hsl(0deg 0% 32.42% / 12.5%) 33.34%, + hsl(0deg 0% 29.18% / 25.3%) 50.1%, + hsl(0deg 0% 24.96% / 40%) 65.75%, + hsl(0deg 0% 19.85% / 54.7%) 79.43%, + hsl(0deg 0% 13.95% / 67.5%) 90.28%, + hsl(0deg 0% 7.32% / 76.6%) 97.43%, + hsl(0deg 0% 0% / 80%) 100% ); } diff --git a/resources/styles/_modules/readMore.css b/resources/styles/_modules/readMore.css index 27241de4..38f40e02 100644 --- a/resources/styles/_modules/readMore.css +++ b/resources/styles/_modules/readMore.css @@ -22,8 +22,7 @@ Read more component (basic unstyled component) .read-more__checkbox { @apply absolute overflow-hidden whitespace-nowrap; - clip: rect(0 0 0 0); - clip-path: inset(100%); + clip-path: inset(50%); height: 1px; width: 1px; } diff --git a/resources/styles/_modules/seeMore.css b/resources/styles/_modules/seeMore.css index 7cecde17..6a191f57 100644 --- a/resources/styles/_modules/seeMore.css +++ b/resources/styles/_modules/seeMore.css @@ -22,8 +22,7 @@ .see-more__checkbox { @apply absolute overflow-hidden whitespace-nowrap; - clip: rect(0 0 0 0); - clip-path: inset(100%); + clip-path: inset(50%); height: 1px; width: 1px; } diff --git a/spark b/spark index bd996920..f64a8297 100644 --- a/spark +++ b/spark @@ -3,6 +3,9 @@ declare(strict_types=1); +use CodeIgniter\Boot; +use Config\Paths; + /** * This file is part of CodeIgniter 4 framework. * @@ -78,9 +81,9 @@ chdir(FCPATH); require FCPATH . '../app/Config/Paths.php'; // ^^^ Change this line if you move your application folder -$paths = new Config\Paths(); +$paths = new Paths(); // LOAD THE FRAMEWORK BOOTSTRAP FILE require $paths->systemDirectory . '/Boot.php'; -exit(CodeIgniter\Boot::bootSpark($paths)); +exit(Boot::bootSpark($paths)); diff --git a/tests/unit/HealthTest.php b/tests/unit/HealthTest.php index 0c2dd382..db2b46eb 100644 --- a/tests/unit/HealthTest.php +++ b/tests/unit/HealthTest.php @@ -13,6 +13,7 @@ final class HealthTest extends CIUnitTestCase { public function testIsDefinedAppPath(): void { + /** @phpstan-ignore method.alreadyNarrowedType */ $this->assertTrue(defined('APPPATH')); } diff --git a/themes/cp_admin/_partials/_nav_header.php b/themes/cp_admin/_partials/_nav_header.php index 6bfc3f29..38e25d2b 100644 --- a/themes/cp_admin/_partials/_nav_header.php +++ b/themes/cp_admin/_partials/_nav_header.php @@ -11,15 +11,15 @@ $userPodcasts = get_podcasts_user_can_interact_with(auth()->user()); ?> 'admin', ) ?>" class="inline-flex items-center h-full px-2 border-r border-navigation"> 'mr-2', - ]) : '') . svg('castopod-logo-base', 'h-6') ?> + 'class' => 'mr-2', + ]) : '') . svg('castopod-logo-base', 'h-6') ?> 'sm:ml-1 text-xl sm:text-base sm:opacity-60', + 'class' => 'sm:ml-1 text-xl sm:text-base sm:opacity-60', ]) ?>
diff --git a/themes/cp_admin/_partials/_nav_menu.php b/themes/cp_admin/_partials/_nav_menu.php index 04f8227b..a646b81c 100644 --- a/themes/cp_admin/_partials/_nav_menu.php +++ b/themes/cp_admin/_partials/_nav_menu.php @@ -27,7 +27,7 @@
- + diff --git a/themes/cp_admin/episode/list.php b/themes/cp_admin/episode/list.php index a9055b29..7c6f6e80 100644 --- a/themes/cp_admin/episode/list.php +++ b/themes/cp_admin/episode/list.php @@ -37,8 +37,7 @@
- lang('Episode.list.episode'), diff --git a/themes/cp_admin/episode/publish.php b/themes/cp_admin/episode/publish.php index 525c4bdb..c06d60cc 100644 --- a/themes/cp_admin/episode/publish.php +++ b/themes/cp_admin/episode/publish.php @@ -62,14 +62,14 @@
'mr-1 text-xl opacity-40', - ]) ?>0 + 'class' => 'mr-1 text-xl opacity-40', + ]) ?>0 'mr-1 text-xl opacity-40', - ]) ?>0 + 'class' => 'mr-1 text-xl opacity-40', + ]) ?>0 'mr-1 text-xl opacity-40', - ]) ?>0 + 'class' => 'mr-1 text-xl opacity-40', + ]) ?>0
diff --git a/themes/cp_admin/episode/view.php b/themes/cp_admin/episode/view.php index d42e8514..c6392a36 100644 --- a/themes/cp_admin/episode/view.php +++ b/themes/cp_admin/episode/view.php @@ -56,5 +56,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts', 'js') ?> endSection() ?> diff --git a/themes/cp_admin/plugins/_plugin.php b/themes/cp_admin/plugins/_plugin.php index ed1dff47..66f94684 100644 --- a/themes/cp_admin/plugins/_plugin.php +++ b/themes/cp_admin/plugins/_plugin.php @@ -5,16 +5,16 @@ use Modules\Plugins\Core\PluginStatus; ?>
- getStatus() === PluginStatus::ACTIVE): ?> + getStatus() === PluginStatus::ACTIVE): ?> - getStatus() === PluginStatus::INACTIVE): ?> + getStatus() === PluginStatus::INACTIVE): ?> - getStatus() === PluginStatus::INVALID): ?> + getStatus() === PluginStatus::INVALID): ?> - getStatus() === PluginStatus::INCOMPATIBLE): ?> + getStatus() === PluginStatus::INCOMPATIBLE): ?> - getStatus() === PluginStatus::ACTIVE): ?> + getStatus() === PluginStatus::ACTIVE): ?>
- getStatus() === PluginStatus::INACTIVE): ?> + getStatus() === PluginStatus::INACTIVE): ?>
diff --git a/themes/cp_admin/plugins/view.php b/themes/cp_admin/plugins/view.php index 25f90adb..1f054505 100644 --- a/themes/cp_admin/plugins/view.php +++ b/themes/cp_admin/plugins/view.php @@ -9,20 +9,20 @@ endSection() ?> section('headerLeft') ?> -getStatus() === PluginStatus::ACTIVE): ?> +getStatus() === PluginStatus::ACTIVE): ?> -getStatus() === PluginStatus::INACTIVE): ?> +getStatus() === PluginStatus::INACTIVE): ?> -getStatus() === PluginStatus::INVALID): ?> +getStatus() === PluginStatus::INVALID): ?> endSection() ?> section('headerRight') ?> -getStatus() === PluginStatus::ACTIVE): ?> +getStatus() === PluginStatus::ACTIVE): ?> @@ -31,7 +31,7 @@
-getStatus() === PluginStatus::INVALID): ?> +getStatus() === PluginStatus::INVALID): ?>
@@ -116,7 +116,7 @@ 'icon', ]) ?>README.md - getReadmeHTML()): ?> + getReadmeHTML()): ?> getReadmeHTML() ?> @@ -130,7 +130,7 @@
- getLicenseHTML()): ?> + getLicenseHTML()): ?> 'icon', ]) ?>LICENSE.md diff --git a/themes/cp_admin/podcast/analytics/listening_time.php b/themes/cp_admin/podcast/analytics/listening_time.php index e84615a3..aa70fdcd 100644 --- a/themes/cp_admin/podcast/analytics/listening_time.php +++ b/themes/cp_admin/podcast/analytics/listening_time.php @@ -23,5 +23,5 @@
asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts', 'js') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/time_periods.php b/themes/cp_admin/podcast/analytics/time_periods.php index 83e7a023..4a2e9ef0 100644 --- a/themes/cp_admin/podcast/analytics/time_periods.php +++ b/themes/cp_admin/podcast/analytics/time_periods.php @@ -21,5 +21,5 @@
asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts', 'js') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/unique_listeners.php b/themes/cp_admin/podcast/analytics/unique_listeners.php index df2cdeec..935f1961 100644 --- a/themes/cp_admin/podcast/analytics/unique_listeners.php +++ b/themes/cp_admin/podcast/analytics/unique_listeners.php @@ -23,5 +23,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts', 'js') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/latest_episodes.php b/themes/cp_admin/podcast/latest_episodes.php index 9835e997..d51926dc 100644 --- a/themes/cp_admin/podcast/latest_episodes.php +++ b/themes/cp_admin/podcast/latest_episodes.php @@ -7,16 +7,16 @@ ) ?>" class="inline-flex items-center text-sm underline hover:no-underline"> 'ml-2', - ]) ?> + 'class' => 'ml-2', + ]) ?>
$episode, - ]) ?> + 'episode' => $episode, + ]) ?>
diff --git a/themes/cp_admin/subscription/list.php b/themes/cp_admin/subscription/list.php index d634a0e2..6b9f09ae 100644 --- a/themes/cp_admin/subscription/list.php +++ b/themes/cp_admin/subscription/list.php @@ -41,19 +41,19 @@ 'cell' => function ($subscription) { return esc($subscription->email); }, - ], + ], [ 'header' => lang('Subscription.list.expiration_date'), 'cell' => function ($subscription) { return $subscription->expires_at ? local_date($subscription->expires_at) : lang('Subscription.list.unlimited'); }, - ], + ], [ 'header' => lang('Subscription.list.downloads'), 'cell' => function ($subscription) { return $subscription->downloads_last_3_months; }, - ], + ], [ 'header' => lang('Subscription.list.status'), 'cell' => function ($subscription) { @@ -65,7 +65,7 @@ return '' . lang('Subscription.status.' . $subscription->status) . ''; }, - ], + ], [ 'header' => lang('Common.actions'), 'cell' => function ($subscription, $podcast) { @@ -117,7 +117,7 @@ '' . ''; }, - ], + ], ], $podcast->subscriptions, '', diff --git a/themes/cp_app/episode/_layout-preview.php b/themes/cp_app/episode/_layout-preview.php index b9a043b8..2aeed3b4 100644 --- a/themes/cp_app/episode/_layout-preview.php +++ b/themes/cp_app/episode/_layout-preview.php @@ -59,8 +59,8 @@ parental_advisory === 'explicit', 'rounded absolute left-0 bottom-0 ml-2 mb-2 bg-black/75 text-accent-contrast') ?> is_premium): ?> 'absolute left-0 w-8 pl-2 text-2xl rounded-r-full rounded-tl-lg top-2 text-accent-contrast bg-accent-base', - ]) ?> + 'class' => 'absolute left-0 w-8 pl-2 text-2xl rounded-r-full rounded-tl-lg top-2 text-accent-contrast bg-accent-base', + ]) ?> <?= esc($episode->title) ?> diff --git a/themes/cp_app/episode/_layout.php b/themes/cp_app/episode/_layout.php index 849ae8f0..0c9255e2 100644 --- a/themes/cp_app/episode/_layout.php +++ b/themes/cp_app/episode/_layout.php @@ -59,8 +59,8 @@ parental_advisory === 'explicit', 'rounded absolute left-0 bottom-0 ml-2 mb-2 bg-black/75 text-accent-contrast') ?> is_premium): ?> 'absolute left-0 w-8 pl-2 text-2xl rounded-r-full rounded-tl-lg top-2 text-accent-contrast bg-accent-base', - ]) ?> + 'class' => 'absolute left-0 w-8 pl-2 text-2xl rounded-r-full rounded-tl-lg top-2 text-accent-contrast bg-accent-base', + ]) ?> <?= esc($episode->title) ?> diff --git a/themes/cp_app/home.php b/themes/cp_app/home.php index bd47be02..ee4ebea8 100644 --- a/themes/cp_app/home.php +++ b/themes/cp_app/home.php @@ -28,8 +28,8 @@ $podcasts, ) ?>) + 'class' => 'mr-1 text-xl opacity-50', + ]) . lang('Home.sort_by') ?> 'w-8 pl-2 text-2xl rounded-r-full rounded-tl-lg text-accent-contrast bg-accent-base', - ]) ?> + 'class' => 'w-8 pl-2 text-2xl rounded-r-full rounded-tl-lg text-accent-contrast bg-accent-base', + ]) ?> parental_advisory === 'explicit', 'rounded bg-black/75') ?> diff --git a/themes/cp_app/pages/credits.php b/themes/cp_app/pages/credits.php index 35bfda9d..e323b803 100644 --- a/themes/cp_app/pages/credits.php +++ b/themes/cp_app/pages/credits.php @@ -64,7 +64,7 @@
'Castopod', - ], null, false) ?> + 'castopod' => 'Castopod', + ], null, false) ?>
diff --git a/themes/cp_app/pages/map.php b/themes/cp_app/pages/map.php index 2796dd13..3d98cccf 100644 --- a/themes/cp_app/pages/map.php +++ b/themes/cp_app/pages/map.php @@ -35,9 +35,9 @@ diff --git a/themes/cp_app/pages/page.php b/themes/cp_app/pages/page.php index a58072f3..580a4805 100644 --- a/themes/cp_app/pages/page.php +++ b/themes/cp_app/pages/page.php @@ -34,7 +34,7 @@
'Castopod', - ], null, false) ?> + 'castopod' => 'Castopod', + ], null, false) ?>
diff --git a/themes/cp_app/podcast/_partials/sidebar.php b/themes/cp_app/podcast/_partials/sidebar.php index 5ceb6580..1292ce7f 100644 --- a/themes/cp_app/podcast/_partials/sidebar.php +++ b/themes/cp_app/podcast/_partials/sidebar.php @@ -58,10 +58,10 @@ diff --git a/themes/cp_app/podcast/episodes.php b/themes/cp_app/podcast/episodes.php index 5326dac6..6adcf32a 100644 --- a/themes/cp_app/podcast/episodes.php +++ b/themes/cp_app/podcast/episodes.php @@ -42,8 +42,8 @@
$episode, - 'podcast' => $podcast, + 'episode' => $episode, + 'podcast' => $podcast, ]) ?>
diff --git a/themes/cp_app/podcast/follow.php b/themes/cp_app/podcast/follow.php index 52a3cd51..8253fd23 100644 --- a/themes/cp_app/podcast/follow.php +++ b/themes/cp_app/podcast/follow.php @@ -47,9 +47,9 @@ diff --git a/themes/cp_app/podcast/links.php b/themes/cp_app/podcast/links.php index ca7b1dd8..0e3b7b81 100644 --- a/themes/cp_app/podcast/links.php +++ b/themes/cp_app/podcast/links.php @@ -62,7 +62,7 @@ href="link_url ?>" target="_blank" rel="noopener noreferrer">type . ':' . $podcastingPlatform->slug, [ - 'class' => 'text-xl mr-auto', + 'class' => 'text-xl mr-auto', ]) ?>label ?> diff --git a/themes/cp_app/post/_partials/reblog.php b/themes/cp_app/post/_partials/reblog.php index 0f424fcb..95eaf4da 100644 --- a/themes/cp_app/post/_partials/reblog.php +++ b/themes/cp_app/post/_partials/reblog.php @@ -22,13 +22,13 @@
message_html ?>
episode_id) : ?> $index, - 'episode' => $post->episode, - ]) ?> + 'index' => $index, + 'episode' => $post->episode, + ]) ?> preview_card_id) : ?> $post->preview_card, - ]) ?> + 'preview_card' => $post->preview_card, + ]) ?> include('post/_partials/actions') ?> diff --git a/themes/cp_app/post/post.php b/themes/cp_app/post/post.php index 4fe2f20e..a9cd34b2 100644 --- a/themes/cp_app/post/post.php +++ b/themes/cp_app/post/post.php @@ -10,14 +10,14 @@ ], ) . lang('Post.back_to_actor_posts', [ - 'actor' => esc($post->actor->display_name), - ]) ?> + 'actor' => esc($post->actor->display_name), + ]) ?>
1, - 'post' => $post, - 'podcast' => $podcast, - ]) ?> + 'index' => 1, + 'post' => $post, + 'podcast' => $podcast, + ]) ?>
endSection() ?> diff --git a/themes/cp_app/post/remote_action.php b/themes/cp_app/post/remote_action.php index 5f07da47..be338675 100644 --- a/themes/cp_app/post/remote_action.php +++ b/themes/cp_app/post/remote_action.php @@ -16,10 +16,10 @@
1, - 'podcast' => $podcast, - 'post' => $post, - ]) ?> + 'index' => 1, + 'podcast' => $podcast, + 'post' => $post, + ]) ?> @@ -37,9 +37,9 @@ diff --git a/themes/cp_auth/_layout.php b/themes/cp_auth/_layout.php index b542c01c..7ea7d7b2 100644 --- a/themes/cp_auth/_layout.php +++ b/themes/cp_auth/_layout.php @@ -26,9 +26,9 @@ diff --git a/themes/cp_install/cache_config.php b/themes/cp_install/cache_config.php index 0ff58fc3..f8f4e02d 100644 --- a/themes/cp_install/cache_config.php +++ b/themes/cp_install/cache_config.php @@ -21,10 +21,10 @@ name="cache_handler" label="" options=" lang('Install.form.cacheHandlerOptions.file'), - 'redis' => lang('Install.form.cacheHandlerOptions.redis'), - 'predis' => lang('Install.form.cacheHandlerOptions.predis'), - ])) ?>" + 'file' => lang('Install.form.cacheHandlerOptions.file'), + 'redis' => lang('Install.form.cacheHandlerOptions.redis'), + 'predis' => lang('Install.form.cacheHandlerOptions.predis'), + ])) ?>" defaultValue="file" isRequired="true" /> diff --git a/writable/debugbar/index.html b/writable/debugbar/index.html new file mode 100644 index 00000000..cf672743 --- /dev/null +++ b/writable/debugbar/index.html @@ -0,0 +1,9 @@ + + + + 403 Forbidden + + +

Directory access is forbidden.

+ + From 8ec42c33ff23053b86bd35a1b8787c3a0bd06e5d Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Fri, 22 Aug 2025 09:56:45 +0000 Subject: [PATCH 100/128] fix(fediverse): add is_private field to posts to flag private posts and hide them from public views --- app/Config/Routes.php | 4 +- app/Controllers/PostController.php | 6 +++ ...70000_drop_deprecated_podcasts_fields.php} | 0 ...80000_drop_deprecated_episodes_fields.php} | 0 app/Entities/Post.php | 1 + app/Language/en/Post.php | 3 ++ app/Models/EpisodeCommentModel.php | 14 +++++-- app/Models/PostModel.php | 1 + app/Resources/icons/custom/_index.php | 7 ++++ app/Resources/icons/custom/repeat-off.svg | 1 + docs/src/content/docs/en/plugins/create.mdx | 20 +++++----- modules/Auth/Config/Routes.php | 5 +-- .../Fediverse/Controllers/ActorController.php | 1 + ...-01-02-120000_update_activities_status.php | 13 +++++++ ...5-07-31-120000_add_is_private_to_posts.php | 35 +++++++++++++++++ modules/Fediverse/Entities/Post.php | 4 ++ modules/Fediverse/Filters/FediverseFilter.php | 2 + .../Fediverse/Helpers/fediverse_helper.php | 25 +++++++++++- modules/Fediverse/Models/PostModel.php | 38 ++++++++++++++----- modules/Fediverse/Objects/NoteObject.php | 10 ++++- php-icons.php | 7 ++-- pnpm-lock.yaml | 8 ++-- themes/cp_app/episode/comment.php | 4 +- themes/cp_app/post/_partials/actions.php | 28 +++++++++----- themes/cp_app/post/_partials/card.php | 4 +- themes/cp_app/post/_partials/reply.php | 4 +- .../cp_app/post/_partials/reply_actions.php | 24 ++++++++---- 27 files changed, 207 insertions(+), 62 deletions(-) rename app/Database/Migrations/{2024-12-10-170000_drop_deprecated_podcasts_fields.php => 2025-08-25-170000_drop_deprecated_podcasts_fields.php} (100%) rename app/Database/Migrations/{2024-12-10-180000_drop_deprecated_episodes_fields.php => 2025-08-25-180000_drop_deprecated_episodes_fields.php} (100%) create mode 100644 app/Resources/icons/custom/_index.php create mode 100644 app/Resources/icons/custom/repeat-off.svg create mode 100644 modules/Fediverse/Database/Migrations/2025-07-31-120000_add_is_private_to_posts.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index a21a8f52..b18bc5b2 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -5,13 +5,11 @@ declare(strict_types=1); use CodeIgniter\Router\RouteCollection; /** - * @var RouteCollection - * * -------------------------------------------------------------------- * Placeholder definitions * -------------------------------------------------------------------- */ - +/** @var RouteCollection $routes */ $routes->addPlaceholder('podcastHandle', '[a-zA-Z0-9\_]{1,32}'); $routes->addPlaceholder('slug', '[a-zA-Z0-9\-]{1,128}'); $routes->addPlaceholder('base64', '[A-Za-z0-9\.\_]+\-{0,2}'); diff --git a/app/Controllers/PostController.php b/app/Controllers/PostController.php index 84b831fd..e19dcb18 100644 --- a/app/Controllers/PostController.php +++ b/app/Controllers/PostController.php @@ -69,6 +69,11 @@ class PostController extends FediversePostController $this->post = $post; + // show 404 if post is private + if ($this->post->is_private && ! can_user_interact()) { + throw PageNotFoundException::forPageNotFound(); + } + unset($params[0]); unset($params[1]); @@ -185,6 +190,7 @@ class PostController extends FediversePostController 'actor_id' => interact_as_actor_id(), 'in_reply_to_id' => $this->post->id, 'message' => $validData['message'], + 'is_private' => $this->post->is_private, 'published_at' => Time::now(), 'created_by' => user_id(), ]); diff --git a/app/Database/Migrations/2024-12-10-170000_drop_deprecated_podcasts_fields.php b/app/Database/Migrations/2025-08-25-170000_drop_deprecated_podcasts_fields.php similarity index 100% rename from app/Database/Migrations/2024-12-10-170000_drop_deprecated_podcasts_fields.php rename to app/Database/Migrations/2025-08-25-170000_drop_deprecated_podcasts_fields.php diff --git a/app/Database/Migrations/2024-12-10-180000_drop_deprecated_episodes_fields.php b/app/Database/Migrations/2025-08-25-180000_drop_deprecated_episodes_fields.php similarity index 100% rename from app/Database/Migrations/2024-12-10-180000_drop_deprecated_episodes_fields.php rename to app/Database/Migrations/2025-08-25-180000_drop_deprecated_episodes_fields.php diff --git a/app/Entities/Post.php b/app/Entities/Post.php index 07793a51..fa0fa3c6 100644 --- a/app/Entities/Post.php +++ b/app/Entities/Post.php @@ -34,6 +34,7 @@ class Post extends FediversePost 'episode_id' => '?integer', 'message' => 'string', 'message_html' => 'string', + 'is_private' => 'boolean', 'favourites_count' => 'integer', 'reblogs_count' => 'integer', 'replies_count' => 'integer', diff --git a/app/Language/en/Post.php b/app/Language/en/Post.php index 58d1cf80..df54cef8 100644 --- a/app/Language/en/Post.php +++ b/app/Language/en/Post.php @@ -37,4 +37,7 @@ return [ 'block_actor' => 'Block user @{actorUsername}', 'block_domain' => 'Block domain @{actorDomain}', 'delete' => 'Delete post', + 'is_public' => 'Post is public', + 'is_private' => 'Post is private', + 'cannot_reblog' => 'This private post cannot be shared.', ]; diff --git a/app/Models/EpisodeCommentModel.php b/app/Models/EpisodeCommentModel.php index 1929335c..5ba48d5f 100644 --- a/app/Models/EpisodeCommentModel.php +++ b/app/Models/EpisodeCommentModel.php @@ -204,7 +204,7 @@ class EpisodeCommentModel extends UuidModel { // TODO: merge with replies from posts linked to episode linked $episodeCommentsBuilder = $this->builder(); - $episodeComments = $episodeCommentsBuilder->select('*, 0 as is_from_post') + $episodeComments = $episodeCommentsBuilder->select('*, 0 as is_private, 0 as is_from_post') ->where([ 'episode_id' => $episodeId, 'in_reply_to_id' => null, @@ -214,7 +214,7 @@ class EpisodeCommentModel extends UuidModel $postModel = new PostModel(); $episodePostsRepliesBuilder = $postModel->builder(); $episodePostsReplies = $episodePostsRepliesBuilder->select( - 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, favourites_count as likes_count, replies_count, published_at as created_at, created_by, 1 as is_from_post', + 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, is_private, favourites_count as likes_count, replies_count, published_at as created_at, created_by, 1 as is_from_post', ) ->whereIn('in_reply_to_id', static function (BaseBuilder $builder) use (&$episodeId): BaseBuilder { return $builder->select('id') @@ -224,8 +224,14 @@ class EpisodeCommentModel extends UuidModel 'in_reply_to_id' => null, ]); }) - ->where('`created_at` <= UTC_TIMESTAMP()', null, false) - ->getCompiledSelect(); + ->where('`created_at` <= UTC_TIMESTAMP()', null, false); + + // do not get private replies if public + if (! can_user_interact()) { + $episodePostsRepliesBuilder->where('is_private', false); + } + + $episodePostsReplies = $episodePostsRepliesBuilder->getCompiledSelect(); /** @var BaseResult $allEpisodeComments */ $allEpisodeComments = $this->db->query( diff --git a/app/Models/PostModel.php b/app/Models/PostModel.php index 25a834a7..8e1a97b0 100644 --- a/app/Models/PostModel.php +++ b/app/Models/PostModel.php @@ -32,6 +32,7 @@ class PostModel extends FediversePostModel 'episode_id', 'message', 'message_html', + 'is_private', 'favourites_count', 'reblogs_count', 'replies_count', diff --git a/app/Resources/icons/custom/_index.php b/app/Resources/icons/custom/_index.php new file mode 100644 index 00000000..0ef2821e --- /dev/null +++ b/app/Resources/icons/custom/_index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/docs/src/content/docs/en/plugins/create.mdx b/docs/src/content/docs/en/plugins/create.mdx index 43566991..198425e4 100644 --- a/docs/src/content/docs/en/plugins/create.mdx +++ b/docs/src/content/docs/en/plugins/create.mdx @@ -39,22 +39,22 @@ project generated for you! 2. add a manifest.json file - - - hello-world - - **manifest.json** + + - hello-world + - **manifest.json** - + - See the [manifest reference](./manifest). +See the [manifest reference](./manifest). 3. add the Plugin.php class - - - hello-world - - manifest.json - - **Plugin.php** + + - hello-world + - manifest.json + - **Plugin.php** - + diff --git a/modules/Auth/Config/Routes.php b/modules/Auth/Config/Routes.php index e9c46c34..0b386995 100644 --- a/modules/Auth/Config/Routes.php +++ b/modules/Auth/Config/Routes.php @@ -6,10 +6,7 @@ namespace Modules\Auth\Config; use CodeIgniter\Router\RouteCollection; -/** - * @var RouteCollection - */ - +/** @var RouteCollection $routes */ service('auth') ->routes($routes); diff --git a/modules/Fediverse/Controllers/ActorController.php b/modules/Fediverse/Controllers/ActorController.php index 90031eaa..adc37cfd 100644 --- a/modules/Fediverse/Controllers/ActorController.php +++ b/modules/Fediverse/Controllers/ActorController.php @@ -111,6 +111,7 @@ class ActorController extends Controller 'actor_id' => $payloadActor->id, 'in_reply_to_id' => $replyToPost->id, 'message' => $message, + 'is_private' => ! is_note_public($payload->object), 'published_at' => Time::parse($payload->object->published), ]); } diff --git a/modules/Fediverse/Database/Migrations/2018-01-02-120000_update_activities_status.php b/modules/Fediverse/Database/Migrations/2018-01-02-120000_update_activities_status.php index c8ccf0e9..2d7adac0 100644 --- a/modules/Fediverse/Database/Migrations/2018-01-02-120000_update_activities_status.php +++ b/modules/Fediverse/Database/Migrations/2018-01-02-120000_update_activities_status.php @@ -28,4 +28,17 @@ class UpdateActivitiesStatus extends BaseMigration $this->forge->modifyColumn('fediverse_activities', $fields); } + + public function down(): void + { + $fields = [ + 'status' => [ + 'type' => 'ENUM', + 'constraint' => ['queued', 'delivered'], + 'null' => true, + ], + ]; + + $this->forge->modifyColumn('fediverse_activities', $fields); + } } diff --git a/modules/Fediverse/Database/Migrations/2025-07-31-120000_add_is_private_to_posts.php b/modules/Fediverse/Database/Migrations/2025-07-31-120000_add_is_private_to_posts.php new file mode 100644 index 00000000..d1ac9327 --- /dev/null +++ b/modules/Fediverse/Database/Migrations/2025-07-31-120000_add_is_private_to_posts.php @@ -0,0 +1,35 @@ + [ + 'type' => 'TINYINT', + 'constraint' => 1, + 'default' => 0, + 'after' => 'message_html', + ], + ]; + + $this->forge->addColumn('fediverse_posts', $fields); + } + + public function down(): void + { + $this->forge->dropColumn('fediverse_posts', 'is_private'); + } +} diff --git a/modules/Fediverse/Entities/Post.php b/modules/Fediverse/Entities/Post.php index f791d57f..c1b5e3ac 100644 --- a/modules/Fediverse/Entities/Post.php +++ b/modules/Fediverse/Entities/Post.php @@ -25,9 +25,12 @@ use RuntimeException; * @property Post|null $reblog_of_post * @property string $message * @property string $message_html + * @property bool $is_private + * * @property int $favourites_count * @property int $reblogs_count * @property int $replies_count + * * @property Time $published_at * @property Time $created_at * @@ -80,6 +83,7 @@ class Post extends UuidEntity 'reblog_of_id' => '?string', 'message' => 'string', 'message_html' => 'string', + 'is_private' => 'boolean', 'favourites_count' => 'integer', 'reblogs_count' => 'integer', 'replies_count' => 'integer', diff --git a/modules/Fediverse/Filters/FediverseFilter.php b/modules/Fediverse/Filters/FediverseFilter.php index 355546b2..2e9b32ba 100644 --- a/modules/Fediverse/Filters/FediverseFilter.php +++ b/modules/Fediverse/Filters/FediverseFilter.php @@ -59,6 +59,8 @@ class FediverseFilter implements FilterInterface } } + log_message('critical', 'ITS HEEEEEEEEEEEERE'); + if (in_array('verify-signature', $params, true)) { try { // securityCheck: check activity signature before handling it diff --git a/modules/Fediverse/Helpers/fediverse_helper.php b/modules/Fediverse/Helpers/fediverse_helper.php index d73bbe14..c842d8e5 100644 --- a/modules/Fediverse/Helpers/fediverse_helper.php +++ b/modules/Fediverse/Helpers/fediverse_helper.php @@ -345,7 +345,7 @@ if (! function_exists('get_message_from_object')) { */ function get_message_from_object(stdClass $object): string | false { - if (property_exists($object, 'content')) { + if (property_exists($object, 'content') && is_string($object->content)) { extract_text_from_html($object->content); return $object->content; } @@ -365,6 +365,29 @@ if (! function_exists('get_message_from_object')) { } } +if (! function_exists('is_note_public')) { + /** + * Check whether note is public or not + */ + function is_note_public(stdClass $object): bool + { + $isPublic = false; + if (property_exists($object, 'to') && is_array($object->to)) { + $isPublic = in_array('https://www.w3.org/ns/activitystreams#Public', $object->to, true); + } + + if ($isPublic) { + return true; + } + + if (property_exists($object, 'cc') && is_array($object->cc)) { + return in_array('https://www.w3.org/ns/activitystreams#Public', $object->cc, true); + } + + return $isPublic; + } +} + if (! function_exists('linkify')) { /** * Turn all link elements in clickable links. Transforms urls and handles diff --git a/modules/Fediverse/Models/PostModel.php b/modules/Fediverse/Models/PostModel.php index a1b4a54d..80169b76 100644 --- a/modules/Fediverse/Models/PostModel.php +++ b/modules/Fediverse/Models/PostModel.php @@ -52,6 +52,7 @@ class PostModel extends UuidModel 'reblog_of_id', 'message', 'message_html', + 'is_private', 'favourites_count', 'reblogs_count', 'replies_count', @@ -183,6 +184,12 @@ class PostModel extends UuidModel $this->where('in_reply_to_id', $this->uuid->fromString($postId) ->getBytes()) ->where('`published_at` <= UTC_TIMESTAMP()', null, false) ->orderBy('published_at', 'ASC'); + + // do not get private replies if public + if (! can_user_interact()) { + $this->where('is_private', false); + } + $found = $this->findAll(); cache() @@ -284,6 +291,10 @@ class PostModel extends UuidModel ->set('actor', $post->actor->uri) ->set('object', new $noteObjectClass($post)); + if ($post->in_reply_to_id !== null && $post->is_private) { + $createActivity->set('to', [$post->reply_to_post->actor->uri]); + } + $activityId = model('ActivityModel', false) ->newActivity( 'Create', @@ -410,11 +421,13 @@ class PostModel extends UuidModel Events::trigger('on_post_remove', $post); } elseif ($post->in_reply_to_id !== null) { - // Post to remove is a reply - model('PostModel', false) - ->builder() - ->where('id', $this->uuid->fromString($post->in_reply_to_id) ->getBytes()) - ->decrement('replies_count'); + if (! $post->is_private) { + // Post to remove is a reply + model('PostModel', false) + ->builder() + ->where('id', $this->uuid->fromString($post->in_reply_to_id) ->getBytes()) + ->decrement('replies_count'); + } Events::trigger('on_reply_remove', $post); } @@ -442,10 +455,12 @@ class PostModel extends UuidModel $postId = $this->addPost($reply, $createPreviewCard, $registerActivity); - model('PostModel', false) - ->builder() - ->where('id', $this->uuid->fromString($reply->in_reply_to_id) ->getBytes()) - ->increment('replies_count'); + if (! $reply->is_private) { + model('PostModel', false) + ->builder() + ->where('id', $this->uuid->fromString($reply->in_reply_to_id) ->getBytes()) + ->increment('replies_count'); + } Events::trigger('on_post_reply', $reply); @@ -458,6 +473,11 @@ class PostModel extends UuidModel public function reblog(Actor $actor, Post $post, bool $registerActivity = true): string | false { + // cannot reblog a private post + if ($post->is_private) { + return false; + } + $this->db->transStart(); $userId = null; diff --git a/modules/Fediverse/Objects/NoteObject.php b/modules/Fediverse/Objects/NoteObject.php index 561ce89b..73af27a3 100644 --- a/modules/Fediverse/Objects/NoteObject.php +++ b/modules/Fediverse/Objects/NoteObject.php @@ -39,13 +39,19 @@ class NoteObject extends ObjectType $this->attributedTo = $post->actor->uri; if ($post->in_reply_to_id !== null) { - $this->to[] = $post->reply_to_post->actor->uri; + if ($post->is_private) { + $this->to = [$post->reply_to_post->actor->uri]; + } else { + $this->to[] = $post->reply_to_post->actor->uri; + } $this->inReplyTo = $post->reply_to_post->uri; } $this->replies = url_to('post-replies', esc($post->actor->username), $post->id); - $this->cc = [$post->actor->followers_url]; + if (! $post->is_private) { + $this->cc = [$post->actor->followers_url]; + } } } diff --git a/php-icons.php b/php-icons.php index f3f59198..1c6b6915 100644 --- a/php-icons.php +++ b/php-icons.php @@ -7,9 +7,10 @@ use PHPIcons\Config\PHPIconsConfig; return PHPIconsConfig::configure() ->withPaths([__DIR__ . '/app', __DIR__ . '/themes', __DIR__ . '/resources']) ->withLocalIconSets([ - 'funding' => __DIR__ . '/resources/icons/funding', - 'podcasting' => __DIR__ . '/resources/icons/podcasting', - 'social' => __DIR__ . '/resources/icons/social', + 'funding' => __DIR__ . '/app/Resources/icons/funding', + 'podcasting' => __DIR__ . '/app/Resources/icons/podcasting', + 'social' => __DIR__ . '/app/Resources/icons/social', + 'custom' => __DIR__ . '/app/Resources/icons/custom', ]) ->withDefaultIconPerSet([ 'funding' => 'funding:default', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85ca7049..5ee4bc85 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4400,10 +4400,10 @@ packages: engines: { node: ">=0.10.0" } hasBin: true - electron-to-chromium@1.5.208: + electron-to-chromium@1.5.209: resolution: { - integrity: sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==, + integrity: sha512-Xoz0uMrim9ZETCQt8UgM5FxQF9+imA7PBpokoGcZloA1uw2LeHzTlip5cb5KOAsXZLjh/moN2vReN3ZjJmjI9A==, } emoji-regex@10.4.0: @@ -12024,7 +12024,7 @@ snapshots: browserslist@4.25.3: dependencies: caniuse-lite: 1.0.30001737 - electron-to-chromium: 1.5.208 + electron-to-chromium: 1.5.209 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.3) @@ -12631,7 +12631,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.208: {} + electron-to-chromium@1.5.209: {} emoji-regex@10.4.0: {} diff --git a/themes/cp_app/episode/comment.php b/themes/cp_app/episode/comment.php index ea038878..9031d033 100644 --- a/themes/cp_app/episode/comment.php +++ b/themes/cp_app/episode/comment.php @@ -6,7 +6,9 @@ 'mr-2 text-lg', + ], ) . lang('Comment.back_to_comments') ?>
diff --git a/themes/cp_app/post/_partials/actions.php b/themes/cp_app/post/_partials/actions.php index 55a3774d..456cbae8 100644 --- a/themes/cp_app/post/_partials/actions.php +++ b/themes/cp_app/post/_partials/actions.php @@ -14,14 +14,22 @@ ]), ], ) ?> - + is_private): ?> + + + +
diff --git a/themes/cp_app/post/_partials/reply.php b/themes/cp_app/post/_partials/reply.php index fecee07a..6c3db6d5 100644 --- a/themes/cp_app/post/_partials/reply.php +++ b/themes/cp_app/post/_partials/reply.php @@ -11,7 +11,9 @@ ->display_name) ?>@actor->username) . ($reply->actor->is_local ? '' : '@' . esc($reply->actor->domain)) ?> - published_at, 'flex-shrink-0 ml-auto text-xs text-skin-muted') ?> + + published_at) ?>is_private ? icon('lock-fill') : icon('earth-fill') ?> +

message_html ?>

preview_card_id): ?> diff --git a/themes/cp_app/post/_partials/reply_actions.php b/themes/cp_app/post/_partials/reply_actions.php index 2078efe9..0fe3560a 100644 --- a/themes/cp_app/post/_partials/reply_actions.php +++ b/themes/cp_app/post/_partials/reply_actions.php @@ -16,14 +16,22 @@ if (can_user_interact()): ?> ]), ], ) ?> - + is_private): ?> + + + + + handle)), diff --git a/themes/cp_app/episode/_layout.php b/themes/cp_app/episode/_layout.php index 0c9255e2..36601b8c 100644 --- a/themes/cp_app/episode/_layout.php +++ b/themes/cp_app/episode/_layout.php @@ -33,7 +33,7 @@
fundingPlatforms, 'is_visible'), true)): ?> - + handle)), diff --git a/themes/cp_app/podcast/_layout.php b/themes/cp_app/podcast/_layout.php index 7dc7315c..7afd77c7 100644 --- a/themes/cp_app/podcast/_layout.php +++ b/themes/cp_app/podcast/_layout.php @@ -32,7 +32,7 @@ fundingPlatforms, 'is_visible'), true)): ?> + ]) ?> handle)), diff --git a/themes/cp_app/podcast/links.php b/themes/cp_app/podcast/links.php index 0e3b7b81..14ea641e 100644 --- a/themes/cp_app/podcast/links.php +++ b/themes/cp_app/podcast/links.php @@ -29,7 +29,7 @@ fundingPlatforms, 'is_visible'), true)): ?> + ]) ?> handle)), @@ -53,7 +53,7 @@ target="_blank" rel="noopener noreferrer"> 'text-xl mr-auto', - ]) ?> + ]) ?> podcastingPlatforms as $podcastingPlatform): ?> is_visible && $podcastingPlatform->slug !== 'castopod'): ?> diff --git a/themes/cp_app/podcast/unlock.php b/themes/cp_app/podcast/unlock.php index 492c6d6e..5c77e95c 100644 --- a/themes/cp_app/podcast/unlock.php +++ b/themes/cp_app/podcast/unlock.php @@ -66,7 +66,7 @@
fundingPlatforms, 'is_visible'), true)): ?> - +
From 950d42c83847893205a3ee270659b2c7a4abbe3a Mon Sep 17 00:00:00 2001 From: kloo kloo Date: Mon, 13 Oct 2025 12:34:47 +0000 Subject: [PATCH 112/128] fix: edit Podcast.php to clarify the followers are Fediverse followers --- app/Language/en/Podcast.php | 6 +++--- themes/cp_app/episode/_layout-preview.php | 2 +- themes/cp_app/episode/_layout.php | 2 +- themes/cp_app/podcast/_layout.php | 2 +- themes/cp_app/podcast/unlock.php | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/Language/en/Podcast.php b/app/Language/en/Podcast.php index bad993fc..f03347cb 100644 --- a/app/Language/en/Podcast.php +++ b/app/Language/en/Podcast.php @@ -17,9 +17,9 @@ return [ 'no_episode' => 'No episode found!', 'follow' => 'Follow', 'followTitle' => 'Follow {actorDisplayName} on the fediverse!', - 'followers' => '{numberOfFollowers, plural, - one {# follower} - other {# followers} + 'fediverseFollowers' => '{numberOfFollowers, plural, + one {# Fediverse follower} + other {# Fediverse followers} }', 'posts' => '{numberOfPosts, plural, one {# post} diff --git a/themes/cp_app/episode/_layout-preview.php b/themes/cp_app/episode/_layout-preview.php index 21f311a0..9e03250e 100644 --- a/themes/cp_app/episode/_layout-preview.php +++ b/themes/cp_app/episode/_layout-preview.php @@ -25,7 +25,7 @@ <?= esc($episode->podcast->title) ?>
podcast->title) ?> - $podcast->actor->followers_count, ]) ?>
diff --git a/themes/cp_app/episode/_layout.php b/themes/cp_app/episode/_layout.php index 36601b8c..fcd8a7ac 100644 --- a/themes/cp_app/episode/_layout.php +++ b/themes/cp_app/episode/_layout.php @@ -25,7 +25,7 @@ <?= esc($episode->podcast->title) ?>
podcast->title) ?> - $podcast->actor->followers_count, ]) ?>
diff --git a/themes/cp_app/podcast/_layout.php b/themes/cp_app/podcast/_layout.php index 7afd77c7..66545203 100644 --- a/themes/cp_app/podcast/_layout.php +++ b/themes/cp_app/podcast/_layout.php @@ -22,7 +22,7 @@

title) ?>@handle) ?>

parental_advisory === 'explicit', 'mr-1') ?> - $podcast->actor->followers_count, ]) ?>
diff --git a/themes/cp_app/podcast/unlock.php b/themes/cp_app/podcast/unlock.php index 5c77e95c..5033c098 100644 --- a/themes/cp_app/podcast/unlock.php +++ b/themes/cp_app/podcast/unlock.php @@ -58,7 +58,7 @@
title) ?>@handle) ?>
parental_advisory === 'explicit', 'mr-1') ?> - $podcast->actor->followers_count, ]) ?>
From 89d0fe4a7eb7ba6e39e2300a8b30b48ec79904be Mon Sep 17 00:00:00 2001 From: Andreas Grupp Date: Mon, 3 Nov 2025 10:35:35 +0100 Subject: [PATCH 113/128] fix(fediverse): access to URI in 'object' instead of going down with '->id' in delete case --- modules/Fediverse/Controllers/ActorController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/Fediverse/Controllers/ActorController.php b/modules/Fediverse/Controllers/ActorController.php index adc37cfd..6ae7410c 100644 --- a/modules/Fediverse/Controllers/ActorController.php +++ b/modules/Fediverse/Controllers/ActorController.php @@ -135,7 +135,7 @@ class ActorController extends Controller ->setJSON([]); case 'Delete': $postToDelete = model('PostModel', false) - ->getPostByUri($payload->object->id); + ->getPostByUri($payload->object); if ($postToDelete instanceof Post) { model('PostModel', false) From 49a43d08cc8db91100cfe29222b37106d97d8088 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sat, 20 Dec 2025 15:59:02 +0000 Subject: [PATCH 114/128] fix(fediverse): match episode posts replies fields with comments in union query fixes #577 --- app/Models/EpisodeCommentModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/EpisodeCommentModel.php b/app/Models/EpisodeCommentModel.php index 5ba48d5f..54691abf 100644 --- a/app/Models/EpisodeCommentModel.php +++ b/app/Models/EpisodeCommentModel.php @@ -214,7 +214,7 @@ class EpisodeCommentModel extends UuidModel $postModel = new PostModel(); $episodePostsRepliesBuilder = $postModel->builder(); $episodePostsReplies = $episodePostsRepliesBuilder->select( - 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, is_private, favourites_count as likes_count, replies_count, published_at as created_at, created_by, 1 as is_from_post', + 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, favourites_count as likes_count, replies_count, published_at as created_at, created_by, is_private, 1 as is_from_post', ) ->whereIn('in_reply_to_id', static function (BaseBuilder $builder) use (&$episodeId): BaseBuilder { return $builder->select('id') From e5fb676cb640ef2cd7ba8d5c7f53ec72dac9b989 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sun, 15 Feb 2026 19:32:01 +0100 Subject: [PATCH 115/128] feat(docker): replace all-in-one image with FrankenPHP and Caddy based image + discard other images - use serversideup/php as a base image - remove nginx unit base - remove app / webserver images - add bundle stage to remove pipeline dependency - update docker setup docs - edit gitlabci rules and release logic --- .dockerignore | 68 + .gitignore | 9 - .gitlab-ci.yml | 84 +- .releaserc.json | 3 +- app/Controllers/MapController.php | 2 +- app/Entities/Clip/BaseClip.php | 8 - app/Helpers/seo_helper.php | 176 +- app/Libraries/RssFeed.php | 4 - app/Models/ClipModel.php | 1 - app/Models/EpisodeModel.php | 8 +- app/Models/PodcastModel.php | 2 +- app/Models/PostModel.php | 2 +- composer.json | 30 +- composer.lock | 1404 ++-- docker/production/.gitlab-ci.yml | 75 +- docker/production/Dockerfile | 135 + docker/production/app/entrypoint.sh | 12 - docker/production/app/supervisord.conf | 21 - .../production/castopod/config.template.json | 60 - docker/production/castopod/entrypoint.sh | 8 - docker/production/castopod/supervisord.conf | 20 - docker/production/common/crontab.txt | 1 - docker/production/common/uploads.template.ini | 6 - .../bootstrap/dependencies.d/frankenphp | 0 .../bootstrap/prepare-environment.sh} | 80 +- docker/production/s6-rc.d/bootstrap/type | 1 + docker/production/s6-rc.d/bootstrap/up | 2 + .../s6-rc.d/frankenphp/dependencies.d/base | 0 docker/production/s6-rc.d/frankenphp/run | 2 + docker/production/s6-rc.d/frankenphp/type | 1 + docker/production/s6-rc.d/supercronic/crontab | 1 + .../supercronic/dependencies.d/frankenphp | 0 docker/production/s6-rc.d/supercronic/run | 2 + docker/production/s6-rc.d/supercronic/type | 1 + .../s6-rc.d/user/contents.d/bootstrap | 0 .../s6-rc.d/user/contents.d/frankenphp | 0 .../s6-rc.d/user/contents.d/supercronic | 0 docker/production/web-server/Dockerfile | 18 - docker/production/web-server/entrypoint.sh | 20 - .../production/web-server/nginx.template.conf | 80 - docs/.gitlab-ci.yml | 26 +- docs/package.json | 8 +- docs/pnpm-lock.yaml | 2514 ++++--- .../docs/en/getting-started/docker.mdx | 152 +- .../docs/en/user-guide/instance/persons.mdx | 7 +- .../docs/en/user-guide/podcast/episodes.mdx | 6 +- .../Controllers/NotificationController.php | 2 +- .../Admin/Controllers/PodcastController.php | 6 +- .../Rest/V1/Controllers/EpisodeController.php | 2 +- .../Rest/V1/Controllers/PodcastController.php | 2 +- modules/Auth/Helpers/auth_helper.php | 2 +- modules/Fediverse/Core/AbstractObject.php | 2 +- .../Models/SubscriptionModel.php | 2 +- package.json | 82 +- pnpm-lock.yaml | 6049 +++++++++-------- rector.php | 4 +- resources/js/_modules/code-editor.ts | 20 +- scripts/bundle.sh | 3 - 58 files changed, 5874 insertions(+), 5362 deletions(-) create mode 100644 .dockerignore create mode 100644 docker/production/Dockerfile delete mode 100644 docker/production/app/entrypoint.sh delete mode 100644 docker/production/app/supervisord.conf delete mode 100644 docker/production/castopod/config.template.json delete mode 100644 docker/production/castopod/entrypoint.sh delete mode 100644 docker/production/castopod/supervisord.conf delete mode 100644 docker/production/common/crontab.txt delete mode 100644 docker/production/common/uploads.template.ini create mode 100644 docker/production/s6-rc.d/bootstrap/dependencies.d/frankenphp rename docker/production/{common/prepare_environment.sh => s6-rc.d/bootstrap/prepare-environment.sh} (76%) create mode 100644 docker/production/s6-rc.d/bootstrap/type create mode 100644 docker/production/s6-rc.d/bootstrap/up create mode 100644 docker/production/s6-rc.d/frankenphp/dependencies.d/base create mode 100644 docker/production/s6-rc.d/frankenphp/run create mode 100644 docker/production/s6-rc.d/frankenphp/type create mode 100644 docker/production/s6-rc.d/supercronic/crontab create mode 100644 docker/production/s6-rc.d/supercronic/dependencies.d/frankenphp create mode 100644 docker/production/s6-rc.d/supercronic/run create mode 100644 docker/production/s6-rc.d/supercronic/type create mode 100644 docker/production/s6-rc.d/user/contents.d/bootstrap create mode 100644 docker/production/s6-rc.d/user/contents.d/frankenphp create mode 100644 docker/production/s6-rc.d/user/contents.d/supercronic delete mode 100644 docker/production/web-server/Dockerfile delete mode 100644 docker/production/web-server/entrypoint.sh delete mode 100644 docker/production/web-server/nginx.template.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..1b773dc8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,68 @@ +.env + +.git/ +node_modules/ +vendor/ +build/ +docs/ +scripts/ +tests/ + +#------------------------- +# Temporary Files +#------------------------- +writable/cache/* +!writable/cache/index.html + +writable/logs/* +!writable/logs/index.html + +writable/session/* +!writable/session/index.html + +writable/temp/* +!writable/temp/index.html + +writable/uploads/* +!writable/uploads/index.html + +writable/debugbar/* +!writable/debugbar/index.html + +# public folder +public/* +!public/media +!public/.htaccess +!public/favicon.ico +!public/icon* +!public/castopod-banner* +!public/castopod-avatar* +!public/index.php +!public/robots.txt +!public/.well-known +!public/.well-known/GDPR.yml + +public/assets/* +!public/assets/index.html + +# public media folder +!public/media/podcasts +!public/media/persons +!public/media/site + +public/media/podcasts/* +!public/media/podcasts/index.html + +public/media/persons/* +!public/media/persons/index.html + +public/media/site/* +!public/media/site/index.html + +# Generated files +modules/Admin/Language/*/PersonsTaxonomy.php + +# Castopod bundle & packages +castopod/ +castopod-*.zip +castopod-*.tar.gz diff --git a/.gitignore b/.gitignore index c1fa291f..b7ea048c 100644 --- a/.gitignore +++ b/.gitignore @@ -175,15 +175,6 @@ public/media/site/* # Generated files modules/Admin/Language/*/PersonsTaxonomy.php -#------------------------- -# Docker volumes -#------------------------- - -mariadb -phpmyadmin -sessions -data - # Castopod bundle & packages castopod/ castopod-*.zip diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e8ff6dd5..e200a4c6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,6 +23,10 @@ php-dependencies: expire_in: 30 mins paths: - vendor/ + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success js-dependencies: stage: prepare @@ -39,6 +43,10 @@ js-dependencies: expire_in: 30 mins paths: - node_modules/ + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success lint-commit-msg: stage: quality @@ -48,12 +56,10 @@ lint-commit-msg: - ./scripts/lint-commit-msg.sh dependencies: - js-dependencies - only: - - develop - - main - - beta - - alpha - - next + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - if: $CI_COMMIT_BRANCH =~ /^(develop|main|alpha|beta|next)$/ lint-php: stage: quality @@ -66,6 +72,10 @@ lint-php: - vendor/bin/rector process --dry-run --ansi dependencies: - php-dependencies + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success lint-js: stage: quality @@ -76,6 +86,10 @@ lint-js: - pnpm run lint:css dependencies: - js-dependencies + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success tests: stage: quality @@ -94,6 +108,10 @@ tests: - vendor/bin/phpunit --no-coverage dependencies: - php-dependencies + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success bundle: stage: bundle @@ -114,14 +132,12 @@ bundle: name: "castopod-${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}" paths: - castopod - only: - variables: - - $CI_PROJECT_NAMESPACE == "adaures" - except: - - main - - beta - - alpha - - next + rules: + - if: $CI_PROJECT_NAMESPACE != "adaures" + when: never + - if: $CI_COMMIT_BRANCH =~ /^(main|alpha|beta|next)$/ || $CI_COMMIT_TAG + when: never + - when: on_success release: stage: release @@ -145,40 +161,38 @@ release: artifacts: paths: - castopod - - CP_VERSION.env - only: - - main - - beta - - alpha - - next + rules: + - if: $CI_PROJECT_NAMESPACE != "adaures" + when: never + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - if: $CI_COMMIT_BRANCH =~ /^(main|alpha|beta|next)$/ website: stage: deploy trigger: adaures/castopod.org - only: - - main - - beta - - alpha + rules: + - if: $CI_PROJECT_NAMESPACE != "adaures" + when: never + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ && $CI_COMMIT_TAG documentation: stage: deploy trigger: include: docs/.gitlab-ci.yml strategy: depend + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success docker: stage: build trigger: include: docker/production/.gitlab-ci.yml strategy: depend - variables: - PARENT_PIPELINE_ID: $CI_PIPELINE_ID - only: - refs: - - develop - - main - - beta - - alpha - - next - variables: - - $CI_PROJECT_NAMESPACE == "adaures" + rules: + - if: $CI_PROJECT_NAMESPACE != "adaures" + when: never + - if: $CI_COMMIT_BRANCH == "develop" + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ && $CI_COMMIT_TAG diff --git a/.releaserc.json b/.releaserc.json index 0d04820d..7a8b6584 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -93,7 +93,8 @@ "package.json", "package-lock.json", "CHANGELOG.md" - ] + ], + "message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}" } ], [ diff --git a/app/Controllers/MapController.php b/app/Controllers/MapController.php index 3eb74358..ada72926 100644 --- a/app/Controllers/MapController.php +++ b/app/Controllers/MapController.php @@ -45,7 +45,7 @@ class MapController extends BaseController if (! ($found = cache($cacheName))) { $episodes = new EpisodeModel() ->where('`published_at` <= UTC_TIMESTAMP()', null, false) - ->where('location_geo is not', null) + ->where('location_geo is not') ->findAll(); $found = []; foreach ($episodes as $episode) { diff --git a/app/Entities/Clip/BaseClip.php b/app/Entities/Clip/BaseClip.php index 8998c13e..cb40d0d1 100644 --- a/app/Entities/Clip/BaseClip.php +++ b/app/Entities/Clip/BaseClip.php @@ -81,14 +81,6 @@ class BaseClip extends Entity 'updated_by' => 'integer', ]; - /** - * @param array|null $data - */ - public function __construct(?array $data = null) - { - parent::__construct($data); - } - public function getJobDuration(): ?int { if ($this->job_duration === null && $this->job_started_at && $this->job_ended_at) { diff --git a/app/Helpers/seo_helper.php b/app/Helpers/seo_helper.php index f4383f4a..869730ae 100644 --- a/app/Helpers/seo_helper.php +++ b/app/Helpers/seo_helper.php @@ -30,22 +30,25 @@ if (! function_exists('set_podcast_metatags')) { $category .= $podcast->category->apple_category; $schema = new Schema( - new Thing('PodcastSeries', [ - 'name' => $podcast->title, - 'headline' => $podcast->title, - 'url' => current_url(), - 'sameAs' => $podcast->link, - 'identifier' => $podcast->guid, - 'image' => $podcast->cover->feed_url, - 'description' => $podcast->description, - 'webFeed' => $podcast->feed_url, - 'accessMode' => 'auditory', - 'author' => $podcast->owner_name, - 'creator' => $podcast->owner_name, - 'publisher' => $podcast->publisher, - 'inLanguage' => $podcast->language_code, - 'genre' => $category, - ]), + new Thing( + props: [ + 'name' => $podcast->title, + 'headline' => $podcast->title, + 'url' => current_url(), + 'sameAs' => $podcast->link, + 'identifier' => $podcast->guid, + 'image' => $podcast->cover->feed_url, + 'description' => $podcast->description, + 'webFeed' => $podcast->feed_url, + 'accessMode' => 'auditory', + 'author' => $podcast->owner_name, + 'creator' => $podcast->owner_name, + 'publisher' => $podcast->publisher, + 'inLanguage' => $podcast->language_code, + 'genre' => $category, + ], + type: 'PodcastSeries', + ), ); /** @var HtmlHead $head */ @@ -74,22 +77,31 @@ if (! function_exists('set_episode_metatags')) { function set_episode_metatags(Episode $episode): void { $schema = new Schema( - new Thing('PodcastEpisode', [ - 'url' => url_to('episode', esc($episode->podcast->handle), $episode->slug), - 'name' => $episode->title, - 'image' => $episode->cover->feed_url, - 'description' => $episode->description, - 'datePublished' => $episode->published_at->format(DATE_ATOM), - 'timeRequired' => iso8601_duration($episode->audio->duration), - 'duration' => iso8601_duration($episode->audio->duration), - 'associatedMedia' => new Thing('MediaObject', [ - 'contentUrl' => $episode->audio_url, - ]), - 'partOfSeries' => new Thing('PodcastSeries', [ - 'name' => $episode->podcast->title, - 'url' => $episode->podcast->link, - ]), - ]), + new Thing( + props: [ + 'url' => url_to('episode', esc($episode->podcast->handle), $episode->slug), + 'name' => $episode->title, + 'image' => $episode->cover->feed_url, + 'description' => $episode->description, + 'datePublished' => $episode->published_at->format(DATE_ATOM), + 'timeRequired' => iso8601_duration($episode->audio->duration), + 'duration' => iso8601_duration($episode->audio->duration), + 'associatedMedia' => new Thing( + props: [ + 'contentUrl' => $episode->audio_url, + ], + type: 'MediaObject', + ), + 'partOfSeries' => new Thing( + props: [ + 'name' => $episode->podcast->title, + 'url' => $episode->podcast->link, + ], + type: 'PodcastSeries', + ), + ], + type: 'PodcastEpisode', + ), ); /** @var HtmlHead $head */ @@ -131,32 +143,50 @@ if (! function_exists('set_episode_metatags')) { if (! function_exists('set_post_metatags')) { function set_post_metatags(Post $post): void { - $socialMediaPosting = new Thing('SocialMediaPosting', [ - '@id' => url_to('post', esc($post->actor->username), $post->id), - 'datePublished' => $post->published_at->format(DATE_ATOM), - 'author' => new Thing('Person', [ - 'name' => $post->actor->display_name, - 'url' => $post->actor->uri, - ]), - 'text' => $post->message, - ]); + $socialMediaPosting = new Thing( + props: [ + '@id' => url_to('post', esc($post->actor->username), $post->id), + 'datePublished' => $post->published_at->format(DATE_ATOM), + 'author' => new Thing( + props: [ + 'name' => $post->actor->display_name, + 'url' => $post->actor->uri, + ], + type: 'Person', + ), + 'text' => $post->message, + ], + type: 'SocialMediaPosting', + ); if ($post->episode_id !== null) { - $socialMediaPosting->__set('sharedContent', new Thing('Audio', [ - 'headline' => $post->episode->title, - 'url' => $post->episode->link, - 'author' => new Thing('Person', [ - 'name' => $post->episode->podcast->owner_name, - ]), - ])); + $socialMediaPosting->__set('sharedContent', new Thing( + props: [ + 'headline' => $post->episode->title, + 'url' => $post->episode->link, + 'author' => new Thing( + props: [ + 'name' => $post->episode->podcast->owner_name, + ], + type: 'Person', + ), + ], + type: 'Audio', + )); } elseif ($post->preview_card instanceof PreviewCard) { - $socialMediaPosting->__set('sharedContent', new Thing('WebPage', [ - 'headline' => $post->preview_card->title, - 'url' => $post->preview_card->url, - 'author' => new Thing('Person', [ - 'name' => $post->preview_card->author_name, - ]), - ])); + $socialMediaPosting->__set('sharedContent', new Thing( + props: [ + 'headline' => $post->preview_card->title, + 'url' => $post->preview_card->url, + 'author' => new Thing( + props: [ + 'name' => $post->preview_card->author_name, + ], + type: 'Person', + ), + ], + type: 'WebPage', + )); } $schema = new Schema($socialMediaPosting); @@ -183,21 +213,27 @@ if (! function_exists('set_post_metatags')) { if (! function_exists('set_episode_comment_metatags')) { function set_episode_comment_metatags(EpisodeComment $episodeComment): void { - $schema = new Schema(new Thing('SocialMediaPosting', [ - '@id' => url_to( - 'episode-comment', - esc($episodeComment->actor->username), - $episodeComment->episode->slug, - $episodeComment->id, - ), - 'datePublished' => $episodeComment->created_at->format(DATE_ATOM), - 'author' => new Thing('Person', [ - 'name' => $episodeComment->actor->display_name, - 'url' => $episodeComment->actor->uri, - ]), - 'text' => $episodeComment->message, - 'upvoteCount' => $episodeComment->likes_count, - ])); + $schema = new Schema(new Thing( + props: [ + '@id' => url_to( + 'episode-comment', + esc($episodeComment->actor->username), + $episodeComment->episode->slug, + $episodeComment->id, + ), + 'datePublished' => $episodeComment->created_at->format(DATE_ATOM), + 'author' => new Thing( + props: [ + 'name' => $episodeComment->actor->display_name, + 'url' => $episodeComment->actor->uri, + ], + type: 'Person', + ), + 'text' => $episodeComment->message, + 'upvoteCount' => $episodeComment->likes_count, + ], + type: 'SocialMediaPosting', + )); /** @var HtmlHead $head */ $head = service('html_head'); diff --git a/app/Libraries/RssFeed.php b/app/Libraries/RssFeed.php index 7c34040b..b01d7143 100644 --- a/app/Libraries/RssFeed.php +++ b/app/Libraries/RssFeed.php @@ -82,10 +82,6 @@ class RssFeed extends SimpleXMLElement return $newChild; } - if (is_array($value)) { - return $newChild; - } - $node->appendChild($no->createTextNode($value)); return $newChild; diff --git a/app/Models/ClipModel.php b/app/Models/ClipModel.php index d8a0b3c7..cc5209c9 100644 --- a/app/Models/ClipModel.php +++ b/app/Models/ClipModel.php @@ -122,7 +122,6 @@ class ClipModel extends Model $found[$key] = new VideoClip($videoClip->toArray()); } - // @phpstan-ignore-next-line return $found; } diff --git a/app/Models/EpisodeModel.php b/app/Models/EpisodeModel.php index 1999582b..f44010ed 100644 --- a/app/Models/EpisodeModel.php +++ b/app/Models/EpisodeModel.php @@ -371,7 +371,7 @@ class EpisodeModel extends UuidModel $episodeCommentsCount = new EpisodeCommentModel() ->builder() ->select('episode_id, COUNT(*) as `comments_count`') - ->where('in_reply_to_id', null) + ->where('in_reply_to_id') ->groupBy('episode_id') ->getCompiledSelect(); @@ -379,8 +379,8 @@ class EpisodeModel extends UuidModel ->builder() ->select('fediverse_posts.episode_id as episode_id, COUNT(*) as `comments_count`') ->join('fediverse_posts as fp', 'fediverse_posts.id = fp.in_reply_to_id') - ->where('fediverse_posts.in_reply_to_id', null) - ->where('fediverse_posts.episode_id IS NOT', null) + ->where('fediverse_posts.in_reply_to_id') + ->where('fediverse_posts.episode_id IS NOT') ->groupBy('fediverse_posts.episode_id') ->getCompiledSelect(); @@ -404,7 +404,7 @@ class EpisodeModel extends UuidModel $episodePostsCount = $this->builder() ->select('episodes.id, COUNT(*) as `posts_count`') ->join('fediverse_posts', 'episodes.id = fediverse_posts.episode_id') - ->where('in_reply_to_id', null) + ->where('in_reply_to_id') ->groupBy('episodes.id') ->get() ->getResultArray(); diff --git a/app/Models/PodcastModel.php b/app/Models/PodcastModel.php index a6c2e493..b2bc6d71 100644 --- a/app/Models/PodcastModel.php +++ b/app/Models/PodcastModel.php @@ -176,7 +176,7 @@ class PodcastModel extends Model '`' . $prefix . 'fediverse_posts`.`published_at` <= UTC_TIMESTAMP()', null, false, - )->orWhere('fediverse_posts.published_at', null) + )->orWhere('fediverse_posts.published_at') ->groupEnd() ->groupBy('podcasts.actor_id') ->orderBy('max_published_at', 'DESC'); diff --git a/app/Models/PostModel.php b/app/Models/PostModel.php index 8e1a97b0..88f41003 100644 --- a/app/Models/PostModel.php +++ b/app/Models/PostModel.php @@ -50,7 +50,7 @@ class PostModel extends FediversePostModel return $this->where([ 'episode_id' => $episodeId, ]) - ->where('in_reply_to_id', null) + ->where('in_reply_to_id') ->where('`published_at` <= UTC_TIMESTAMP()', null, false) ->orderBy('published_at', 'DESC') ->findAll(); diff --git a/composer.json b/composer.json index 3cb3f90b..468f1fc6 100644 --- a/composer.json +++ b/composer.json @@ -10,38 +10,38 @@ "adaures/castopod-plugins-manager": "dev-main", "adaures/ipcat-php": "^v1.0.0", "adaures/podcast-persons-taxonomy": "^v1.0.1", - "aws/aws-sdk-php": "^3.356.33", + "aws/aws-sdk-php": "^3.369.35", "chrisjean/php-ico": "^1.0.4", - "cocur/slugify": "^v4.6.0", - "codeigniter4/framework": "4.6.3", + "cocur/slugify": "4.7.1", + "codeigniter4/framework": "4.6.5", "codeigniter4/settings": "v2.2.0", "codeigniter4/shield": "1.2.0", "codeigniter4/tasks": "dev-develop", - "geoip2/geoip2": "3.2.0", + "geoip2/geoip2": "3.3.0", "james-heinrich/getid3": "^2.0.0-beta6", - "league/commonmark": "^2.7.1", + "league/commonmark": "^2.8.0", "league/html-to-markdown": "5.1.1", - "melbahja/seo": "^v2.1.1", - "michalsn/codeigniter4-uuid": "1.3.0", + "melbahja/seo": "3.0.2", + "michalsn/codeigniter4-uuid": "1.3.1", "mpratt/embera": "^2.0.42", "opawg/user-agents-v2-php": "dev-main", - "phpseclib/phpseclib": "~2.0.49", - "vlucas/phpdotenv": "5.6.2", + "phpseclib/phpseclib": "~2.0.51", + "vlucas/phpdotenv": "5.6.3", "whichbrowser/parser": "^v2.1.8", "yassinedoghri/codeigniter-vite": "^2.1.0", "yassinedoghri/php-icons": "1.3.0", "yassinedoghri/podcast-feed": "dev-main" }, "require-dev": { - "captainhook/captainhook": "^5.25.11", + "captainhook/captainhook": "^5.28.3", "codeigniter/phpstan-codeigniter": "1.5.4", "mikey179/vfsstream": "^v1.6.12", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.1.30", - "phpunit/phpunit": "^12.4.0", - "rector/rector": "^2.2.1", - "symplify/coding-standard": "^12.4.3", - "symplify/easy-coding-standard": "^12.6.0" + "phpstan/phpstan": "^2.1.39", + "phpunit/phpunit": "^13.0.3", + "rector/rector": "^2.3.6", + "symplify/coding-standard": "^13.0.0", + "symplify/easy-coding-standard": "^13.0.4" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index ecc23d07..7d1233ae 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e8c2a40051cf8753a69af8be525f7c8f", + "content-hash": "469f61ba87e9ecee8c664a7c48999320", "packages": [ { "name": "adaures/castopod-plugins-manager", @@ -261,16 +261,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.356.33", + "version": "3.369.35", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "b93da7b0eeec09b220daa9b598a94832f99cefa7" + "reference": "0f3e296342fe965271b5dd0bded4a18bdab8aba5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/b93da7b0eeec09b220daa9b598a94832f99cefa7", - "reference": "b93da7b0eeec09b220daa9b598a94832f99cefa7", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/0f3e296342fe965271b5dd0bded4a18bdab8aba5", + "reference": "0f3e296342fe965271b5dd0bded4a18bdab8aba5", "shasum": "" }, "require": { @@ -283,7 +283,8 @@ "guzzlehttp/psr7": "^2.4.5", "mtdowling/jmespath.php": "^2.8.0", "php": ">=8.1", - "psr/http-message": "^1.0 || ^2.0" + "psr/http-message": "^1.0 || ^2.0", + "symfony/filesystem": "^v5.4.45 || ^v6.4.3 || ^v7.1.0 || ^v8.0.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", @@ -294,13 +295,11 @@ "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", - "ext-pcntl": "*", "ext-sockets": "*", - "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", + "phpunit/phpunit": "^9.6", "psr/cache": "^2.0 || ^3.0", "psr/simple-cache": "^2.0 || ^3.0", "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", - "symfony/filesystem": "^v6.4.0 || ^v7.1.0", "yoast/phpunit-polyfills": "^2.0" }, "suggest": { @@ -308,6 +307,7 @@ "doctrine/cache": "To use the DoctrineCacheAdapter", "ext-curl": "To send requests using cURL", "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-pcntl": "To use client-side monitoring", "ext-sockets": "To use client-side monitoring" }, "type": "library", @@ -352,22 +352,22 @@ "support": { "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.356.33" + "source": "https://github.com/aws/aws-sdk-php/tree/3.369.35" }, - "time": "2025-10-06T19:01:41+00:00" + "time": "2026-02-16T19:15:41+00:00" }, { "name": "brick/math", - "version": "0.14.0", + "version": "0.14.8", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2" + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", - "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", + "url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629", + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629", "shasum": "" }, "require": { @@ -406,7 +406,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.0" + "source": "https://github.com/brick/math/tree/0.14.8" }, "funding": [ { @@ -414,7 +414,7 @@ "type": "github" } ], - "time": "2025-08-29T12:40:03+00:00" + "time": "2026-02-10T14:33:43+00:00" }, { "name": "chrisjean/php-ico", @@ -465,21 +465,21 @@ }, { "name": "cocur/slugify", - "version": "v4.6.0", + "version": "v4.7.1", "source": { "type": "git", "url": "https://github.com/cocur/slugify.git", - "reference": "1d674022e9cbefa80b4f51aa3e2375b6e3c14fdb" + "reference": "a860dab2b9f5f37775fc6414d4f049434848165f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cocur/slugify/zipball/1d674022e9cbefa80b4f51aa3e2375b6e3c14fdb", - "reference": "1d674022e9cbefa80b4f51aa3e2375b6e3c14fdb", + "url": "https://api.github.com/repos/cocur/slugify/zipball/a860dab2b9f5f37775fc6414d4f049434848165f", + "reference": "a860dab2b9f5f37775fc6414d4f049434848165f", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "symfony/config": "<3.4 || >=4,<4.3", @@ -533,22 +533,22 @@ ], "support": { "issues": "https://github.com/cocur/slugify/issues", - "source": "https://github.com/cocur/slugify/tree/v4.6.0" + "source": "https://github.com/cocur/slugify/tree/v4.7.1" }, - "time": "2024-09-10T14:09:25+00:00" + "time": "2025-11-27T18:57:36+00:00" }, { "name": "codeigniter4/framework", - "version": "v4.6.3", + "version": "v4.6.5", "source": { "type": "git", "url": "https://github.com/codeigniter4/framework.git", - "reference": "68d1a5896106f869452dd369a690dd5bc75160fb" + "reference": "116e0919590a412c09d2b9e4f6b8addda18224d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/framework/zipball/68d1a5896106f869452dd369a690dd5bc75160fb", - "reference": "68d1a5896106f869452dd369a690dd5bc75160fb", + "url": "https://api.github.com/repos/codeigniter4/framework/zipball/116e0919590a412c09d2b9e4f6b8addda18224d8", + "reference": "116e0919590a412c09d2b9e4f6b8addda18224d8", "shasum": "" }, "require": { @@ -562,7 +562,7 @@ "codeigniter/coding-standard": "^1.7", "fakerphp/faker": "^1.24", "friendsofphp/php-cs-fixer": "^3.47.1", - "kint-php/kint": "^6.0", + "kint-php/kint": "^6.1", "mikey179/vfsstream": "^1.6.12", "nexusphp/cs-config": "^3.6", "phpunit/phpunit": "^10.5.16 || ^11.2", @@ -609,7 +609,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/CodeIgniter4" }, - "time": "2025-08-02T13:36:13+00:00" + "time": "2026-02-01T17:59:34+00:00" }, { "name": "codeigniter4/queue", @@ -617,22 +617,22 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/queue.git", - "reference": "e0cd27943903e26c8fa8004cd57f88115798fc60" + "reference": "b44386ad29f0a2124e59582ef5ba170788b926ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/queue/zipball/e0cd27943903e26c8fa8004cd57f88115798fc60", - "reference": "e0cd27943903e26c8fa8004cd57f88115798fc60", + "url": "https://api.github.com/repos/codeigniter4/queue/zipball/b44386ad29f0a2124e59582ef5ba170788b926ed", + "reference": "b44386ad29f0a2124e59582ef5ba170788b926ed", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.2" }, "require-dev": { - "codeigniter4/devkit": "^1.0", + "codeigniter4/devkit": "^1.3", "codeigniter4/framework": "^4.3", "php-amqplib/php-amqplib": "^3.7", - "phpstan/phpstan-strict-rules": "^1.5", + "phpstan/phpstan-strict-rules": "^2.0", "predis/predis": "^2.0" }, "suggest": { @@ -675,7 +675,7 @@ "issues": "https://github.com/codeigniter4/queue/issues", "source": "https://github.com/codeigniter4/queue/tree/develop" }, - "time": "2025-09-15T07:03:57+00:00" + "time": "2026-02-15T08:22:24+00:00" }, { "name": "codeigniter4/settings", @@ -809,23 +809,23 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/tasks.git", - "reference": "e5aac87c3645e5173bb1c71f8fec0432f308b816" + "reference": "8d0c0f83d48dd1ac322d30a4c51ff309ab5368e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/e5aac87c3645e5173bb1c71f8fec0432f308b816", - "reference": "e5aac87c3645e5173bb1c71f8fec0432f308b816", + "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/8d0c0f83d48dd1ac322d30a4c51ff309ab5368e0", + "reference": "8d0c0f83d48dd1ac322d30a4c51ff309ab5368e0", "shasum": "" }, "require": { "codeigniter4/queue": "dev-develop", "codeigniter4/settings": "^2.0", "ext-json": "*", - "php": "^8.1" + "php": "^8.2" }, "require-dev": { "codeigniter4/devkit": "^1.3", - "codeigniter4/framework": "^4.1" + "codeigniter4/framework": "^4.3" }, "default-branch": true, "type": "library", @@ -910,20 +910,20 @@ "source": "https://github.com/codeigniter4/tasks/tree/develop", "issues": "https://github.com/codeigniter4/tasks/issues" }, - "time": "2025-09-05T08:41:42+00:00" + "time": "2026-02-15T08:22:03+00:00" }, { "name": "composer/ca-bundle", - "version": "1.5.8", + "version": "1.5.10", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "719026bb30813accb68271fee7e39552a58e9f65" + "reference": "961a5e4056dd2e4a2eedcac7576075947c28bf63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/719026bb30813accb68271fee7e39552a58e9f65", - "reference": "719026bb30813accb68271fee7e39552a58e9f65", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/961a5e4056dd2e4a2eedcac7576075947c28bf63", + "reference": "961a5e4056dd2e4a2eedcac7576075947c28bf63", "shasum": "" }, "require": { @@ -970,7 +970,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.8" + "source": "https://github.com/composer/ca-bundle/tree/1.5.10" }, "funding": [ { @@ -982,7 +982,7 @@ "type": "github" } ], - "time": "2025-08-20T18:49:47+00:00" + "time": "2025-12-08T15:06:51+00:00" }, { "name": "dflydev/dot-access-data", @@ -1061,29 +1061,29 @@ }, { "name": "geoip2/geoip2", - "version": "v3.2.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/maxmind/GeoIP2-php.git", - "reference": "b7aa58760a6bf89a608dd92ee2d9436b52557ce2" + "reference": "49fceddd694295e76e970a32848e03bb19e56b42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/b7aa58760a6bf89a608dd92ee2d9436b52557ce2", - "reference": "b7aa58760a6bf89a608dd92ee2d9436b52557ce2", + "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/49fceddd694295e76e970a32848e03bb19e56b42", + "reference": "49fceddd694295e76e970a32848e03bb19e56b42", "shasum": "" }, "require": { "ext-json": "*", - "maxmind-db/reader": "^1.12.1", - "maxmind/web-service-common": "~0.10", + "maxmind-db/reader": "^1.13.0", + "maxmind/web-service-common": "~0.11", "php": ">=8.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "3.*", "phpstan/phpstan": "*", "phpunit/phpunit": "^10.0", - "squizlabs/php_codesniffer": "3.*" + "squizlabs/php_codesniffer": "4.*" }, "type": "library", "autoload": { @@ -1113,30 +1113,30 @@ ], "support": { "issues": "https://github.com/maxmind/GeoIP2-php/issues", - "source": "https://github.com/maxmind/GeoIP2-php/tree/v3.2.0" + "source": "https://github.com/maxmind/GeoIP2-php/tree/v3.3.0" }, - "time": "2025-05-05T21:18:27+00:00" + "time": "2025-11-20T18:50:15+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.3", + "version": "v1.1.4", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3" + "phpoption/phpoption": "^1.9.5" }, "require-dev": { - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" }, "type": "library", "autoload": { @@ -1165,7 +1165,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" }, "funding": [ { @@ -1177,7 +1177,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:45:45+00:00" + "time": "2025-12-27T19:43:20+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1591,32 +1591,32 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.17.0", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba" + "reference": "06f211dfffff18d91844c1f55250d5d13c007e18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/df1ef9503299a8e3920079a16263b578eaf7c3ba", - "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/06f211dfffff18d91844c1f55250d5d13c007e18", + "reference": "06f211dfffff18d91844c1f55250d5d13c007e18", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.29.8", - "laminas/laminas-coding-standard": "~3.0.1", - "phpunit/phpunit": "^10.5.45", - "psalm/plugin-phpunit": "^0.19.2", - "vimeo/psalm": "^6.6.2" + "infection/infection": "^0.31.0", + "laminas/laminas-coding-standard": "~3.1.0", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "type": "library", "autoload": { @@ -1648,20 +1648,20 @@ "type": "community_bridge" } ], - "time": "2025-05-06T19:29:36+00:00" + "time": "2025-10-14T18:31:13+00:00" }, { "name": "league/commonmark", - "version": "2.7.1", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", - "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", "shasum": "" }, "require": { @@ -1698,7 +1698,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.8-dev" + "dev-main": "2.9-dev" } }, "autoload": { @@ -1755,7 +1755,7 @@ "type": "tidelift" } ], - "time": "2025-07-20T12:47:49+00:00" + "time": "2025-11-26T21:48:24+00:00" }, { "name": "league/config", @@ -1930,16 +1930,16 @@ }, { "name": "maxmind-db/reader", - "version": "v1.12.1", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", - "reference": "815939e006b7e68062b540ec9e86aaa8be2b6ce4" + "reference": "2194f58d0f024ce923e685cdf92af3daf9951908" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/815939e006b7e68062b540ec9e86aaa8be2b6ce4", - "reference": "815939e006b7e68062b540ec9e86aaa8be2b6ce4", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/2194f58d0f024ce923e685cdf92af3daf9951908", + "reference": "2194f58d0f024ce923e685cdf92af3daf9951908", "shasum": "" }, "require": { @@ -1952,12 +1952,13 @@ "friendsofphp/php-cs-fixer": "3.*", "phpstan/phpstan": "*", "phpunit/phpunit": ">=8.0.0,<10.0.0", - "squizlabs/php_codesniffer": "3.*" + "squizlabs/php_codesniffer": "4.*" }, "suggest": { "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", - "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups" + "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups", + "maxmind-db/reader-ext": "C extension for significantly faster IP lookups (install via PIE: pie install maxmind-db/reader-ext)" }, "type": "library", "autoload": { @@ -1987,22 +1988,22 @@ ], "support": { "issues": "https://github.com/maxmind/MaxMind-DB-Reader-php/issues", - "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.12.1" + "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.13.1" }, - "time": "2025-05-05T20:56:32+00:00" + "time": "2025-11-21T22:24:26+00:00" }, { "name": "maxmind/web-service-common", - "version": "v0.10.0", + "version": "v0.11.1", "source": { "type": "git", "url": "https://github.com/maxmind/web-service-common-php.git", - "reference": "d7c7c42fc31bff26e0ded73a6e187bcfb193f9c4" + "reference": "c309236b5a5555b96cf560089ec3cead12d845d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/d7c7c42fc31bff26e0ded73a6e187bcfb193f9c4", - "reference": "d7c7c42fc31bff26e0ded73a6e187bcfb193f9c4", + "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/c309236b5a5555b96cf560089ec3cead12d845d2", + "reference": "c309236b5a5555b96cf560089ec3cead12d845d2", "shasum": "" }, "require": { @@ -2014,8 +2015,8 @@ "require-dev": { "friendsofphp/php-cs-fixer": "3.*", "phpstan/phpstan": "*", - "phpunit/phpunit": "^8.0 || ^9.0", - "squizlabs/php_codesniffer": "3.*" + "phpunit/phpunit": "^10.0", + "squizlabs/php_codesniffer": "4.*" }, "type": "library", "autoload": { @@ -2038,32 +2039,32 @@ "homepage": "https://github.com/maxmind/web-service-common-php", "support": { "issues": "https://github.com/maxmind/web-service-common-php/issues", - "source": "https://github.com/maxmind/web-service-common-php/tree/v0.10.0" + "source": "https://github.com/maxmind/web-service-common-php/tree/v0.11.1" }, - "time": "2024-11-14T23:14:52+00:00" + "time": "2026-01-13T17:56:03+00:00" }, { "name": "melbahja/seo", - "version": "v2.1.1", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/melbahja/seo.git", - "reference": "22b0b3273bf9c8867cadf018e4daa3e426525929" + "reference": "e8d36b2c46e1b05af957c90beea19090f64d5bf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/melbahja/seo/zipball/22b0b3273bf9c8867cadf018e4daa3e426525929", - "reference": "22b0b3273bf9c8867cadf018e4daa3e426525929", + "url": "https://api.github.com/repos/melbahja/seo/zipball/e8d36b2c46e1b05af957c90beea19090f64d5bf9", + "reference": "e8d36b2c46e1b05af957c90beea19090f64d5bf9", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-xml": "*", - "php": ">=7.2" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "autoload": { @@ -2083,37 +2084,42 @@ "role": "Developer" } ], - "description": "Simple PHP library to help developers 🍻 do better on-page SEO optimization", + "description": "SEO library for PHP is a simple PHP library to help developers 🍻 do better on-page SEO optimizations.", "keywords": [ - "PHP7", + "images sitemaps", + "index sitemaps", "meta tags", + "news sitemaps", "open graph", + "php8", + "rich results", "schema.org", "search engine optimization", "seo", "sitemap index", "sitemap.xml", "sitemaps", - "twitter tags" + "twitter tags", + "video sitemaps" ], "support": { "issues": "https://github.com/melbahja/seo/issues", - "source": "https://github.com/melbahja/seo/tree/v2.1.1" + "source": "https://github.com/melbahja/seo/tree/v3.0.2" }, - "time": "2022-09-11T11:16:07+00:00" + "time": "2026-02-08T12:48:54+00:00" }, { "name": "michalsn/codeigniter4-uuid", - "version": "v1.3.0", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/michalsn/codeigniter4-uuid.git", - "reference": "16408c77bcaef920cb93a822018390f8a5674424" + "reference": "31457ec91f54e3c981762d9f06e87e417869c380" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/michalsn/codeigniter4-uuid/zipball/16408c77bcaef920cb93a822018390f8a5674424", - "reference": "16408c77bcaef920cb93a822018390f8a5674424", + "url": "https://api.github.com/repos/michalsn/codeigniter4-uuid/zipball/31457ec91f54e3c981762d9f06e87e417869c380", + "reference": "31457ec91f54e3c981762d9f06e87e417869c380", "shasum": "" }, "require": { @@ -2152,9 +2158,9 @@ ], "support": { "issues": "https://github.com/michalsn/codeigniter4-uuid/issues", - "source": "https://github.com/michalsn/codeigniter4-uuid/tree/v1.3.0" + "source": "https://github.com/michalsn/codeigniter4-uuid/tree/v1.3.1" }, - "time": "2025-06-13T05:40:55+00:00" + "time": "2025-10-16T10:20:23+00:00" }, { "name": "mpratt/embera", @@ -2295,25 +2301,25 @@ }, { "name": "nette/schema", - "version": "v1.3.2", + "version": "v1.3.4", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d" + "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d", + "url": "https://api.github.com/repos/nette/schema/zipball/086497a2f34b82fede9b5a41cc8e131d087cd8f7", + "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7", "shasum": "" }, "require": { "nette/utils": "^4.0", - "php": "8.1 - 8.4" + "php": "8.1 - 8.5" }, "require-dev": { - "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^1.0", + "nette/tester": "^2.6", + "phpstan/phpstan": "^2.0@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -2323,6 +2329,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -2351,26 +2360,26 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.2" + "source": "https://github.com/nette/schema/tree/v1.3.4" }, - "time": "2024-10-06T23:10:23+00:00" + "time": "2026-02-08T02:54:00+00:00" }, { "name": "nette/utils", - "version": "v4.0.8", + "version": "v4.1.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", "shasum": "" }, "require": { - "php": "8.0 - 8.5" + "php": "8.2 - 8.5" }, "conflict": { "nette/finder": "<3", @@ -2378,8 +2387,10 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^2.0@stable", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -2393,7 +2404,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2440,9 +2451,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.8" + "source": "https://github.com/nette/utils/tree/v4.1.3" }, - "time": "2025-08-06T21:43:34+00:00" + "time": "2026-02-13T03:05:33+00:00" }, { "name": "opawg/user-agents-v2-php", @@ -2486,16 +2497,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.4", + "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d" + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", - "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", "shasum": "" }, "require": { @@ -2545,7 +2556,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.4" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" }, "funding": [ { @@ -2557,20 +2568,20 @@ "type": "tidelift" } ], - "time": "2025-08-21T11:53:16+00:00" + "time": "2025-12-27T19:41:33+00:00" }, { "name": "phpseclib/phpseclib", - "version": "2.0.49", + "version": "2.0.51", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "4de468f48f0ab9709fc875aca0762abdc81cfa9b" + "reference": "ed661e7cdaeb8c419e609e2f3203551a13c2ed48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4de468f48f0ab9709fc875aca0762abdc81cfa9b", - "reference": "4de468f48f0ab9709fc875aca0762abdc81cfa9b", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/ed661e7cdaeb8c419e609e2f3203551a13c2ed48", + "reference": "ed661e7cdaeb8c419e609e2f3203551a13c2ed48", "shasum": "" }, "require": { @@ -2651,7 +2662,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/2.0.49" + "source": "https://github.com/phpseclib/phpseclib/tree/2.0.51" }, "funding": [ { @@ -2667,7 +2678,7 @@ "type": "tidelift" } ], - "time": "2025-10-06T01:05:33+00:00" + "time": "2026-01-27T09:11:52+00:00" }, { "name": "psr/cache", @@ -3100,20 +3111,20 @@ }, { "name": "ramsey/uuid", - "version": "4.9.1", + "version": "4.9.2", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440" + "reference": "8429c78ca35a09f27565311b98101e2826affde0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/81f941f6f729b1e3ceea61d9d014f8b6c6800440", - "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", + "reference": "8429c78ca35a09f27565311b98101e2826affde0", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -3172,9 +3183,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.9.1" + "source": "https://github.com/ramsey/uuid/tree/4.9.2" }, - "time": "2025-09-04T20:59:21+00:00" + "time": "2025-12-14T04:43:48+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3243,6 +3254,76 @@ ], "time": "2024-09-25T14:21:43+00:00" }, + { + "name": "symfony/filesystem", + "version": "v8.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "d937d400b980523dc9ee946bb69972b5e619058d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d937d400b980523dc9ee946bb69972b5e619058d", + "reference": "d937d400b980523dc9ee946bb69972b5e619058d", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v8.0.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-01T09:13:36+00:00" + }, { "name": "symfony/polyfill-ctype", "version": "v1.33.0", @@ -3497,26 +3578,26 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.6.2", + "version": "v5.6.3", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" + "reference": "955e7815d677a3eaa7075231212f2110983adecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", - "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.3", + "graham-campbell/result-type": "^1.1.4", "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", @@ -3565,7 +3646,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" }, "funding": [ { @@ -3577,7 +3658,7 @@ "type": "tidelift" } ], - "time": "2025-04-30T23:37:27+00:00" + "time": "2025-12-27T19:49:13+00:00" }, { "name": "whichbrowser/parser", @@ -3869,16 +3950,16 @@ "packages-dev": [ { "name": "captainhook/captainhook", - "version": "5.25.11", + "version": "5.28.3", "source": { "type": "git", "url": "https://github.com/captainhook-git/captainhook.git", - "reference": "f2278edde4b45af353861aae413fc3840515bb80" + "reference": "5d35b249f3843ef36ead119f4347e649278ad6d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhook-git/captainhook/zipball/f2278edde4b45af353861aae413fc3840515bb80", - "reference": "f2278edde4b45af353861aae413fc3840515bb80", + "url": "https://api.github.com/repos/captainhook-git/captainhook/zipball/5d35b249f3843ef36ead119f4347e649278ad6d8", + "reference": "5d35b249f3843ef36ead119f4347e649278ad6d8", "shasum": "" }, "require": { @@ -3889,10 +3970,10 @@ "php": ">=8.0", "sebastianfeldmann/camino": "^0.9.2", "sebastianfeldmann/cli": "^3.3", - "sebastianfeldmann/git": "^3.14", - "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + "sebastianfeldmann/git": "^3.16.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0" }, "replace": { "sebastianfeldmann/captainhook": "*" @@ -3929,7 +4010,7 @@ } ], "description": "PHP git hook manager", - "homepage": "http://php.captainhook.info/", + "homepage": "https://php.captainhook.info/", "keywords": [ "commit-msg", "git", @@ -3941,7 +4022,7 @@ ], "support": { "issues": "https://github.com/captainhook-git/captainhook/issues", - "source": "https://github.com/captainhook-git/captainhook/tree/5.25.11" + "source": "https://github.com/captainhook-git/captainhook/tree/5.28.3" }, "funding": [ { @@ -3949,7 +4030,7 @@ "type": "github" } ], - "time": "2025-08-12T12:14:57+00:00" + "time": "2026-02-16T14:08:58+00:00" }, { "name": "captainhook/secrets", @@ -4475,16 +4556,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.88.2", + "version": "v3.94.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "a8d15584bafb0f0d9d938827840060fd4a3ebc99" + "reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a8d15584bafb0f0d9d938827840060fd4a3ebc99", - "reference": "a8d15584bafb0f0d9d938827840060fd4a3ebc99", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/883b20fb38c7866de9844ab6d0a205c423bde2d4", + "reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4", "shasum": "" }, "require": { @@ -4499,34 +4580,34 @@ "php": "^7.4 || ^8.0", "react/child-process": "^0.6.6", "react/event-loop": "^1.5", - "react/promise": "^3.3", "react/socket": "^1.16", "react/stream": "^1.4", - "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", - "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0", - "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0", - "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0", - "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0", - "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0", + "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0 || ^8.0", + "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.33", "symfony/polyfill-php80": "^1.33", "symfony/polyfill-php81": "^1.33", "symfony/polyfill-php84": "^1.33", - "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2", - "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0" + "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2 || ^8.0", + "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" }, "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.7", - "infection/infection": "^0.31.0", - "justinrainbow/json-schema": "^6.5", - "keradus/cli-executor": "^2.2", + "facile-it/paraunit": "^1.3.1 || ^2.7.1", + "infection/infection": "^0.32.3", + "justinrainbow/json-schema": "^6.6.4", + "keradus/cli-executor": "^2.3", "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.8", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", - "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", - "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2", - "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2" + "php-coveralls/php-coveralls": "^2.9.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.7", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.7", + "phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.51", + "symfony/polyfill-php85": "^1.33", + "symfony/var-dumper": "^5.4.48 || ^6.4.32 || ^7.4.4 || ^8.0.4", + "symfony/yaml": "^5.4.45 || ^6.4.30 || ^7.4.1 || ^8.0.1" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -4541,7 +4622,7 @@ "PhpCsFixer\\": "src/" }, "exclude-from-classmap": [ - "src/Fixer/Internal/*" + "src/**/Internal/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4567,7 +4648,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.88.2" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.0" }, "funding": [ { @@ -4575,7 +4656,7 @@ "type": "github" } ], - "time": "2025-09-27T00:24:15+00:00" + "time": "2026-02-11T16:44:33+00:00" }, { "name": "mikey179/vfsstream", @@ -4691,16 +4772,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.6.1", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -4743,9 +4824,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2025-08-13T20:13:15+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "phar-io/manifest", @@ -4915,11 +4996,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.30", + "version": "2.1.39", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a4a7f159927983dd4f7c8020ed227d80b7f39d7d", - "reference": "a4a7f159927983dd4f7c8020ed227d80b7f39d7d", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6f73a2af4cbcd99c931d0fb8f08548cc0fa8224", + "reference": "c6f73a2af4cbcd99c931d0fb8f08548cc0fa8224", "shasum": "" }, "require": { @@ -4964,38 +5045,38 @@ "type": "github" } ], - "time": "2025-10-02T16:07:52+00:00" + "time": "2026-02-11T14:48:56+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "12.4.0", + "version": "13.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "67e8aed88f93d0e6e1cb7effe1a2dfc2fee6022c" + "reference": "a8b58fde2f4fbc69a064e1f80ff917607cf7737c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/67e8aed88f93d0e6e1cb7effe1a2dfc2fee6022c", - "reference": "67e8aed88f93d0e6e1cb7effe1a2dfc2fee6022c", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/a8b58fde2f4fbc69a064e1f80ff917607cf7737c", + "reference": "a8b58fde2f4fbc69a064e1f80ff917607cf7737c", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.6.1", - "php": ">=8.3", - "phpunit/php-file-iterator": "^6.0", - "phpunit/php-text-template": "^5.0", - "sebastian/complexity": "^5.0", - "sebastian/environment": "^8.0.3", - "sebastian/lines-of-code": "^4.0", - "sebastian/version": "^6.0", - "theseer/tokenizer": "^1.2.3" + "nikic/php-parser": "^5.7.0", + "php": ">=8.4", + "phpunit/php-file-iterator": "^7.0", + "phpunit/php-text-template": "^6.0", + "sebastian/complexity": "^6.0", + "sebastian/environment": "^9.0", + "sebastian/lines-of-code": "^5.0", + "sebastian/version": "^7.0", + "theseer/tokenizer": "^2.0.1" }, "require-dev": { - "phpunit/phpunit": "^12.3.7" + "phpunit/phpunit": "^13.0" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -5004,7 +5085,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "12.4.x-dev" + "dev-main": "13.0.x-dev" } }, "autoload": { @@ -5033,7 +5114,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.4.0" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/13.0.1" }, "funding": [ { @@ -5053,32 +5134,32 @@ "type": "tidelift" } ], - "time": "2025-09-24T13:44:41+00:00" + "time": "2026-02-06T06:05:15+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "6.0.0", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "961bc913d42fe24a257bfff826a5068079ac7782" + "reference": "6e5aa1fb0a95b1703d83e721299ee18bb4e2de50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782", - "reference": "961bc913d42fe24a257bfff826a5068079ac7782", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6e5aa1fb0a95b1703d83e721299ee18bb4e2de50", + "reference": "6e5aa1fb0a95b1703d83e721299ee18bb4e2de50", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -5106,36 +5187,48 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/7.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" } ], - "time": "2025-02-07T04:58:37+00:00" + "time": "2026-02-06T04:33:26+00:00" }, { "name": "phpunit/php-invoker", - "version": "6.0.0", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" + "reference": "42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406", - "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88", + "reference": "42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "suggest": { "ext-pcntl": "*" @@ -5143,7 +5236,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -5170,40 +5263,52 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/7.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-invoker", + "type": "tidelift" } ], - "time": "2025-02-07T04:58:58+00:00" + "time": "2026-02-06T04:34:47+00:00" }, { "name": "phpunit/php-text-template", - "version": "5.0.0", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53" + "reference": "a47af19f93f76aa3368303d752aa5272ca3299f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53", - "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/a47af19f93f76aa3368303d752aa5272ca3299f4", + "reference": "a47af19f93f76aa3368303d752aa5272ca3299f4", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -5230,40 +5335,52 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/6.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-text-template", + "type": "tidelift" } ], - "time": "2025-02-07T04:59:16+00:00" + "time": "2026-02-06T04:36:37+00:00" }, { "name": "phpunit/php-timer", - "version": "8.0.0", + "version": "9.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" + "reference": "a0e12065831f6ab0d83120dc61513eb8d9a966f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", - "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a0e12065831f6ab0d83120dc61513eb8d9a966f6", + "reference": "a0e12065831f6ab0d83120dc61513eb8d9a966f6", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "8.0-dev" + "dev-main": "9.0-dev" } }, "autoload": { @@ -5290,28 +5407,40 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" + "source": "https://github.com/sebastianbergmann/php-timer/tree/9.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-timer", + "type": "tidelift" } ], - "time": "2025-02-07T04:59:38+00:00" + "time": "2026-02-06T04:37:53+00:00" }, { "name": "phpunit/phpunit", - "version": "12.4.0", + "version": "13.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f62aab5794e36ccd26860db2d1bbf89ac19028d9" + "reference": "a9c20642ffd2098c0f9e687c00849afbce2f23c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f62aab5794e36ccd26860db2d1bbf89ac19028d9", - "reference": "f62aab5794e36ccd26860db2d1bbf89ac19028d9", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a9c20642ffd2098c0f9e687c00849afbce2f23c7", + "reference": "a9c20642ffd2098c0f9e687c00849afbce2f23c7", "shasum": "" }, "require": { @@ -5324,21 +5453,22 @@ "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", - "php": ">=8.3", - "phpunit/php-code-coverage": "^12.4.0", - "phpunit/php-file-iterator": "^6.0.0", - "phpunit/php-invoker": "^6.0.0", - "phpunit/php-text-template": "^5.0.0", - "phpunit/php-timer": "^8.0.0", - "sebastian/cli-parser": "^4.2.0", - "sebastian/comparator": "^7.1.3", - "sebastian/diff": "^7.0.0", - "sebastian/environment": "^8.0.3", - "sebastian/exporter": "^7.0.2", - "sebastian/global-state": "^8.0.2", - "sebastian/object-enumerator": "^7.0.0", - "sebastian/type": "^6.0.3", - "sebastian/version": "^6.0.0", + "php": ">=8.4.1", + "phpunit/php-code-coverage": "^13.0.1", + "phpunit/php-file-iterator": "^7.0.0", + "phpunit/php-invoker": "^7.0.0", + "phpunit/php-text-template": "^6.0.0", + "phpunit/php-timer": "^9.0.0", + "sebastian/cli-parser": "^5.0.0", + "sebastian/comparator": "^8.0.0", + "sebastian/diff": "^8.0.0", + "sebastian/environment": "^9.0.0", + "sebastian/exporter": "^8.0.0", + "sebastian/global-state": "^9.0.0", + "sebastian/object-enumerator": "^8.0.0", + "sebastian/recursion-context": "^8.0.0", + "sebastian/type": "^7.0.0", + "sebastian/version": "^7.0.0", "staabm/side-effects-detector": "^1.0.5" }, "bin": [ @@ -5347,7 +5477,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "12.4-dev" + "dev-main": "13.0-dev" } }, "autoload": { @@ -5379,7 +5509,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.4.0" + "source": "https://github.com/sebastianbergmann/phpunit/tree/13.0.3" }, "funding": [ { @@ -5403,7 +5533,7 @@ "type": "tidelift" } ], - "time": "2025-10-03T04:28:03+00:00" + "time": "2026-02-16T08:38:33+00:00" }, { "name": "psr/container", @@ -5532,16 +5662,16 @@ }, { "name": "react/child-process", - "version": "v0.6.6", + "version": "v0.6.7", "source": { "type": "git", "url": "https://github.com/reactphp/child-process.git", - "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" + "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", - "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/970f0e71945556422ee4570ccbabaedc3cf04ad3", + "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3", "shasum": "" }, "require": { @@ -5595,7 +5725,7 @@ ], "support": { "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.6" + "source": "https://github.com/reactphp/child-process/tree/v0.6.7" }, "funding": [ { @@ -5603,20 +5733,20 @@ "type": "open_collective" } ], - "time": "2025-01-01T16:37:48+00:00" + "time": "2025-12-23T15:25:20+00:00" }, { "name": "react/dns", - "version": "v1.13.0", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/reactphp/dns.git", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "url": "https://api.github.com/repos/reactphp/dns/zipball/7562c05391f42701c1fccf189c8225fece1cd7c3", + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3", "shasum": "" }, "require": { @@ -5671,7 +5801,7 @@ ], "support": { "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.13.0" + "source": "https://github.com/reactphp/dns/tree/v1.14.0" }, "funding": [ { @@ -5679,20 +5809,20 @@ "type": "open_collective" } ], - "time": "2024-06-13T14:18:03+00:00" + "time": "2025-11-18T19:34:28+00:00" }, { "name": "react/event-loop", - "version": "v1.5.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a", + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a", "shasum": "" }, "require": { @@ -5743,7 +5873,7 @@ ], "support": { "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + "source": "https://github.com/reactphp/event-loop/tree/v1.6.0" }, "funding": [ { @@ -5751,7 +5881,7 @@ "type": "open_collective" } ], - "time": "2023-11-13T13:48:05+00:00" + "time": "2025-11-17T20:46:25+00:00" }, { "name": "react/promise", @@ -5828,16 +5958,16 @@ }, { "name": "react/socket", - "version": "v1.16.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "url": "https://api.github.com/repos/reactphp/socket/zipball/ef5b17b81f6f60504c539313f94f2d826c5faa08", + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08", "shasum": "" }, "require": { @@ -5896,7 +6026,7 @@ ], "support": { "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.16.0" + "source": "https://github.com/reactphp/socket/tree/v1.17.0" }, "funding": [ { @@ -5904,7 +6034,7 @@ "type": "open_collective" } ], - "time": "2024-07-26T10:38:09+00:00" + "time": "2025-11-19T20:47:34+00:00" }, { "name": "react/stream", @@ -5986,21 +6116,21 @@ }, { "name": "rector/rector", - "version": "2.2.1", + "version": "2.3.6", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "e1aaf3061e9ae9342ed0824865e3a3360defddeb" + "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/e1aaf3061e9ae9342ed0824865e3a3360defddeb", - "reference": "e1aaf3061e9ae9342ed0824865e3a3360defddeb", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/ca9ebb81d280cd362ea39474dabd42679e32ca6b", + "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.26" + "phpstan/phpstan": "^2.1.38" }, "conflict": { "rector/rector-doctrine": "*", @@ -6034,7 +6164,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.2.1" + "source": "https://github.com/rectorphp/rector/tree/2.3.6" }, "funding": [ { @@ -6042,32 +6172,32 @@ "type": "github" } ], - "time": "2025-10-06T21:25:14+00:00" + "time": "2026-02-06T14:25:06+00:00" }, { "name": "sebastian/cli-parser", - "version": "4.2.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04" + "reference": "48a4654fa5e48c1c81214e9930048a572d4b23ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/90f41072d220e5c40df6e8635f5dafba2d9d4d04", - "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/48a4654fa5e48c1c81214e9930048a572d4b23ca", + "reference": "48a4654fa5e48c1c81214e9930048a572d4b23ca", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.2-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -6091,7 +6221,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.0" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/5.0.0" }, "funding": [ { @@ -6111,31 +6241,31 @@ "type": "tidelift" } ], - "time": "2025-09-14T09:36:45+00:00" + "time": "2026-02-06T04:39:44+00:00" }, { "name": "sebastian/comparator", - "version": "7.1.3", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148" + "reference": "29b232ddc29c2b114c0358c69b3084e7c3da0d58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148", - "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/29b232ddc29c2b114c0358c69b3084e7c3da0d58", + "reference": "29b232ddc29c2b114c0358c69b3084e7c3da0d58", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "php": ">=8.3", - "sebastian/diff": "^7.0", - "sebastian/exporter": "^7.0" + "php": ">=8.4", + "sebastian/diff": "^8.0", + "sebastian/exporter": "^8.0" }, "require-dev": { - "phpunit/phpunit": "^12.2" + "phpunit/phpunit": "^13.0" }, "suggest": { "ext-bcmath": "For comparing BcMath\\Number objects" @@ -6143,7 +6273,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "7.1-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -6183,7 +6313,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/8.0.0" }, "funding": [ { @@ -6203,33 +6333,33 @@ "type": "tidelift" } ], - "time": "2025-08-20T11:27:00+00:00" + "time": "2026-02-06T04:40:39+00:00" }, { "name": "sebastian/complexity", - "version": "5.0.0", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" + "reference": "c5651c795c98093480df79350cb050813fc7a2f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", - "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c5651c795c98093480df79350cb050813fc7a2f3", + "reference": "c5651c795c98093480df79350cb050813fc7a2f3", "shasum": "" }, "require": { "nikic/php-parser": "^5.0", - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -6253,41 +6383,53 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/6.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/complexity", + "type": "tidelift" } ], - "time": "2025-02-07T04:55:25+00:00" + "time": "2026-02-06T04:41:32+00:00" }, { "name": "sebastian/diff", - "version": "7.0.0", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7ab1ea946c012266ca32390913653d844ecd085f" + "reference": "a2b6d09d7729ee87d605a439469f9dcc39be5ea3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f", - "reference": "7ab1ea946c012266ca32390913653d844ecd085f", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/a2b6d09d7729ee87d605a439469f9dcc39be5ea3", + "reference": "a2b6d09d7729ee87d605a439469f9dcc39be5ea3", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0", + "phpunit/phpunit": "^13.0", "symfony/process": "^7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -6320,35 +6462,47 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0" + "source": "https://github.com/sebastianbergmann/diff/tree/8.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/diff", + "type": "tidelift" } ], - "time": "2025-02-07T04:55:46+00:00" + "time": "2026-02-06T04:42:27+00:00" }, { "name": "sebastian/environment", - "version": "8.0.3", + "version": "9.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68" + "reference": "bb64d08145b021b67d5f253308a498b73ab0461e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68", - "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/bb64d08145b021b67d5f253308a498b73ab0461e", + "reference": "bb64d08145b021b67d5f253308a498b73ab0461e", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "suggest": { "ext-posix": "*" @@ -6356,7 +6510,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "8.0-dev" + "dev-main": "9.0-dev" } }, "autoload": { @@ -6384,7 +6538,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/8.0.3" + "source": "https://github.com/sebastianbergmann/environment/tree/9.0.0" }, "funding": [ { @@ -6404,34 +6558,34 @@ "type": "tidelift" } ], - "time": "2025-08-12T14:11:56+00:00" + "time": "2026-02-06T04:43:29+00:00" }, { "name": "sebastian/exporter", - "version": "7.0.2", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "016951ae10980765e4e7aee491eb288c64e505b7" + "reference": "dc31f1f8e0186c8f0bb3e48fd4d51421d8905fea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/016951ae10980765e4e7aee491eb288c64e505b7", - "reference": "016951ae10980765e4e7aee491eb288c64e505b7", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/dc31f1f8e0186c8f0bb3e48fd4d51421d8905fea", + "reference": "dc31f1f8e0186c8f0bb3e48fd4d51421d8905fea", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=8.3", - "sebastian/recursion-context": "^7.0" + "php": ">=8.4", + "sebastian/recursion-context": "^8.0" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -6474,7 +6628,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.2" + "source": "https://github.com/sebastianbergmann/exporter/tree/8.0.0" }, "funding": [ { @@ -6494,35 +6648,35 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:16:11+00:00" + "time": "2026-02-06T04:44:28+00:00" }, { "name": "sebastian/global-state", - "version": "8.0.2", + "version": "9.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "ef1377171613d09edd25b7816f05be8313f9115d" + "reference": "e52e3dc22441e6218c710afe72c3042f8fc41ea7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d", - "reference": "ef1377171613d09edd25b7816f05be8313f9115d", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e52e3dc22441e6218c710afe72c3042f8fc41ea7", + "reference": "e52e3dc22441e6218c710afe72c3042f8fc41ea7", "shasum": "" }, "require": { - "php": ">=8.3", - "sebastian/object-reflector": "^5.0", - "sebastian/recursion-context": "^7.0" + "php": ">=8.4", + "sebastian/object-reflector": "^6.0", + "sebastian/recursion-context": "^8.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "8.0-dev" + "dev-main": "9.0-dev" } }, "autoload": { @@ -6548,7 +6702,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/9.0.0" }, "funding": [ { @@ -6568,33 +6722,33 @@ "type": "tidelift" } ], - "time": "2025-08-29T11:29:25+00:00" + "time": "2026-02-06T04:45:13+00:00" }, { "name": "sebastian/lines-of-code", - "version": "4.0.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f" + "reference": "4f21bb7768e1c997722ccc7efb1d6b5c11bfd471" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f", - "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/4f21bb7768e1c997722ccc7efb1d6b5c11bfd471", + "reference": "4f21bb7768e1c997722ccc7efb1d6b5c11bfd471", "shasum": "" }, "require": { "nikic/php-parser": "^5.0", - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -6618,42 +6772,54 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/5.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/lines-of-code", + "type": "tidelift" } ], - "time": "2025-02-07T04:57:28+00:00" + "time": "2026-02-06T04:45:54+00:00" }, { "name": "sebastian/object-enumerator", - "version": "7.0.0", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" + "reference": "b39ab125fd9a7434b0ecbc4202eebce11a98cfc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894", - "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/b39ab125fd9a7434b0ecbc4202eebce11a98cfc5", + "reference": "b39ab125fd9a7434b0ecbc4202eebce11a98cfc5", "shasum": "" }, "require": { - "php": ">=8.3", - "sebastian/object-reflector": "^5.0", - "sebastian/recursion-context": "^7.0" + "php": ">=8.4", + "sebastian/object-reflector": "^6.0", + "sebastian/recursion-context": "^8.0" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -6676,40 +6842,52 @@ "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/8.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/object-enumerator", + "type": "tidelift" } ], - "time": "2025-02-07T04:57:48+00:00" + "time": "2026-02-06T04:46:36+00:00" }, { "name": "sebastian/object-reflector", - "version": "5.0.0", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "4bfa827c969c98be1e527abd576533293c634f6a" + "reference": "3ca042c2c60b0eab094f8a1b6a7093f4d4c72200" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a", - "reference": "4bfa827c969c98be1e527abd576533293c634f6a", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/3ca042c2c60b0eab094f8a1b6a7093f4d4c72200", + "reference": "3ca042c2c60b0eab094f8a1b6a7093f4d4c72200", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -6732,40 +6910,52 @@ "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/6.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/object-reflector", + "type": "tidelift" } ], - "time": "2025-02-07T04:58:17+00:00" + "time": "2026-02-06T04:47:13+00:00" }, { "name": "sebastian/recursion-context", - "version": "7.0.1", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" + "reference": "74c5af21f6a5833e91767ca068c4d3dfec15317e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", - "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/74c5af21f6a5833e91767ca068c4d3dfec15317e", + "reference": "74c5af21f6a5833e91767ca068c4d3dfec15317e", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -6796,7 +6986,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/8.0.0" }, "funding": [ { @@ -6816,32 +7006,32 @@ "type": "tidelift" } ], - "time": "2025-08-13T04:44:59+00:00" + "time": "2026-02-06T04:51:28+00:00" }, { "name": "sebastian/type", - "version": "6.0.3", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d" + "reference": "42412224607bd3931241bbd17f38e0f972f5a916" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d", - "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/42412224607bd3931241bbd17f38e0f972f5a916", + "reference": "42412224607bd3931241bbd17f38e0f972f5a916", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -6865,7 +7055,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/type/issues", "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/6.0.3" + "source": "https://github.com/sebastianbergmann/type/tree/7.0.0" }, "funding": [ { @@ -6885,29 +7075,29 @@ "type": "tidelift" } ], - "time": "2025-08-09T06:57:12+00:00" + "time": "2026-02-06T04:52:09+00:00" }, { "name": "sebastian/version", - "version": "6.0.0", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c" + "reference": "ad37a5552c8e2b88572249fdc19b6da7792e021b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c", - "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ad37a5552c8e2b88572249fdc19b6da7792e021b", + "reference": "ad37a5552c8e2b88572249fdc19b6da7792e021b", "shasum": "" }, "require": { - "php": ">=8.3" + "php": ">=8.4" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -6931,15 +7121,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/version/issues", "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/6.0.0" + "source": "https://github.com/sebastianbergmann/version/tree/7.0.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/version", + "type": "tidelift" } ], - "time": "2025-02-07T05:00:38+00:00" + "time": "2026-02-06T04:52:52+00:00" }, { "name": "sebastianfeldmann/camino", @@ -7057,16 +7259,16 @@ }, { "name": "sebastianfeldmann/git", - "version": "3.15.1", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/sebastianfeldmann/git.git", - "reference": "90cb5a32f54dbb0d7dcd87d02e664ec2b50c0c96" + "reference": "40a5cc043f0957228767f639e370ec92590e940f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/90cb5a32f54dbb0d7dcd87d02e664ec2b50c0c96", - "reference": "90cb5a32f54dbb0d7dcd87d02e664ec2b50c0c96", + "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/40a5cc043f0957228767f639e370ec92590e940f", + "reference": "40a5cc043f0957228767f639e370ec92590e940f", "shasum": "" }, "require": { @@ -7107,7 +7309,7 @@ ], "support": { "issues": "https://github.com/sebastianfeldmann/git/issues", - "source": "https://github.com/sebastianfeldmann/git/tree/3.15.1" + "source": "https://github.com/sebastianfeldmann/git/tree/3.16.0" }, "funding": [ { @@ -7115,7 +7317,7 @@ "type": "github" } ], - "time": "2025-09-05T08:07:09+00:00" + "time": "2026-01-26T20:59:18+00:00" }, { "name": "staabm/side-effects-detector", @@ -7171,47 +7373,39 @@ }, { "name": "symfony/console", - "version": "v7.3.4", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" + "reference": "ace03c4cf9805080ff40cbeec69fca180c339a3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "url": "https://api.github.com/repos/symfony/console/zipball/ace03c4cf9805080ff40cbeec69fca180c339a3b", + "reference": "ace03c4cf9805080ff40cbeec69fca180c339a3b", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" + "symfony/string": "^7.4|^8.0" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -7245,7 +7439,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.4" + "source": "https://github.com/symfony/console/tree/v8.0.4" }, "funding": [ { @@ -7265,28 +7459,28 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2026-01-13T13:06:50+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.3", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + "reference": "99301401da182b6cfaa4700dbe9987bb75474b47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/99301401da182b6cfaa4700dbe9987bb75474b47", + "reference": "99301401da182b6cfaa4700dbe9987bb75474b47", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<6.4", + "symfony/security-http": "<7.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -7295,13 +7489,14 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -7329,7 +7524,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v8.0.4" }, "funding": [ { @@ -7349,7 +7544,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2026-01-05T11:45:55+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -7427,95 +7622,25 @@ ], "time": "2024-09-25T14:21:43+00:00" }, - { - "name": "symfony/filesystem", - "version": "v7.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "require-dev": { - "symfony/process": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-07-07T08:17:47+00:00" - }, { "name": "symfony/finder", - "version": "v7.3.2", + "version": "v8.0.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + "reference": "8bd576e97c67d45941365bf824e18dc8538e6eb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "url": "https://api.github.com/repos/symfony/finder/zipball/8bd576e97c67d45941365bf824e18dc8538e6eb0", + "reference": "8bd576e97c67d45941365bf824e18dc8538e6eb0", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -7543,7 +7668,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.2" + "source": "https://github.com/symfony/finder/tree/v8.0.5" }, "funding": [ { @@ -7563,24 +7688,24 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2026-01-26T15:08:38+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.3.3", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d" + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d2b592535ffa6600c265a3893a7f7fd2bad82dd7", + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -7614,7 +7739,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.3.3" + "source": "https://github.com/symfony/options-resolver/tree/v8.0.0" }, "funding": [ { @@ -7634,7 +7759,7 @@ "type": "tidelift" } ], - "time": "2025-08-05T10:16:07+00:00" + "time": "2025-11-12T15:55:31+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -7965,20 +8090,20 @@ }, { "name": "symfony/process", - "version": "v7.3.4", + "version": "v8.0.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "url": "https://api.github.com/repos/symfony/process/zipball/b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", + "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "type": "library", "autoload": { @@ -8006,7 +8131,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.4" + "source": "https://github.com/symfony/process/tree/v8.0.5" }, "funding": [ { @@ -8026,20 +8151,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2026-01-26T15:08:38+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { @@ -8093,7 +8218,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -8104,29 +8229,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-25T09:37:31+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.3.0", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/67df1914c6ccd2d7b52f70d40cf2aea02159d942", + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -8155,7 +8284,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v8.0.0" }, "funding": [ { @@ -8166,43 +8295,47 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-24T10:49:57+00:00" + "time": "2025-08-04T07:36:47+00:00" }, { "name": "symfony/string", - "version": "v7.3.4", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f96476035142921000338bad71e5247fbc138872" + "reference": "758b372d6882506821ed666032e43020c4f57194" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", - "reference": "f96476035142921000338bad71e5247fbc138872", + "url": "https://api.github.com/repos/symfony/string/zipball/758b372d6882506821ed666032e43020c4f57194", + "reference": "758b372d6882506821ed666032e43020c4f57194", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-grapheme": "^1.33", + "symfony/polyfill-intl-normalizer": "^1.0", + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -8241,7 +8374,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.4" + "source": "https://github.com/symfony/string/tree/v8.0.4" }, "funding": [ { @@ -8261,37 +8394,38 @@ "type": "tidelift" } ], - "time": "2025-09-11T14:36:48+00:00" + "time": "2026-01-12T12:37:40+00:00" }, { "name": "symplify/coding-standard", - "version": "12.4.3", + "version": "13.0.0", "source": { "type": "git", "url": "https://github.com/symplify/coding-standard.git", - "reference": "cd26aac22be7b757b492a7cc44824a447a03f4eb" + "reference": "bd7c36af1e96eecd08cfcc0a772a19767aa02300" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symplify/coding-standard/zipball/cd26aac22be7b757b492a7cc44824a447a03f4eb", - "reference": "cd26aac22be7b757b492a7cc44824a447a03f4eb", + "url": "https://api.github.com/repos/symplify/coding-standard/zipball/bd7c36af1e96eecd08cfcc0a772a19767aa02300", + "reference": "bd7c36af1e96eecd08cfcc0a772a19767aa02300", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^3.75.0", + "friendsofphp/php-cs-fixer": "^3.89", "nette/utils": "^4.0", "php": ">=8.2" }, "require-dev": { "phpstan/extension-installer": "^1.4", "phpstan/phpstan": "^2.1", - "phpunit/phpunit": "^11.5", - "rector/rector": "^2.0.13", - "squizlabs/php_codesniffer": "^3.12", - "symplify/easy-coding-standard": "^12.5", + "phpunit/phpunit": "^11.5|^12.0", + "rector/jack": "^0.2", + "rector/rector": "^2.2", + "squizlabs/php_codesniffer": "^4.0", + "symplify/easy-coding-standard": "^12.6", "symplify/phpstan-extensions": "^12.0", "tomasvotruba/class-leak": "^2.0", - "tracy/tracy": "^2.10" + "tracy/tracy": "^2.11" }, "type": "library", "autoload": { @@ -8306,7 +8440,7 @@ "description": "Set of Symplify rules for PHP_CodeSniffer and PHP CS Fixer.", "support": { "issues": "https://github.com/symplify/coding-standard/issues", - "source": "https://github.com/symplify/coding-standard/tree/12.4.3" + "source": "https://github.com/symplify/coding-standard/tree/13.0.0" }, "funding": [ { @@ -8318,28 +8452,28 @@ "type": "github" } ], - "time": "2025-05-18T07:59:44+00:00" + "time": "2025-10-30T21:46:47+00:00" }, { "name": "symplify/easy-coding-standard", - "version": "12.6.0", + "version": "13.0.4", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "781e6124dc7e14768ae999a8f5309566bbe62004" + "reference": "5c7e7a07e5d6a98b9dd2e6fc0a9155efb7c166c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/781e6124dc7e14768ae999a8f5309566bbe62004", - "reference": "781e6124dc7e14768ae999a8f5309566bbe62004", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/5c7e7a07e5d6a98b9dd2e6fc0a9155efb7c166c8", + "reference": "5c7e7a07e5d6a98b9dd2e6fc0a9155efb7c166c8", "shasum": "" }, "require": { "php": ">=7.2" }, "conflict": { - "friendsofphp/php-cs-fixer": "<3.46", - "phpcsstandards/php_codesniffer": "<3.8", + "friendsofphp/php-cs-fixer": "<3.92.4", + "phpcsstandards/php_codesniffer": "<4.0.1", "symplify/coding-standard": "<12.1" }, "suggest": { @@ -8367,7 +8501,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.6.0" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/13.0.4" }, "funding": [ { @@ -8379,27 +8513,27 @@ "type": "github" } ], - "time": "2025-09-10T14:21:58+00:00" + "time": "2026-01-05T09:10:04+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" + "php": "^8.1" }, "type": "library", "autoload": { @@ -8421,7 +8555,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/2.0.1" }, "funding": [ { @@ -8429,7 +8563,7 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-12-08T11:19:18+00:00" } ], "aliases": [], @@ -8446,5 +8580,5 @@ "php": "^8.4" }, "platform-dev": {}, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/docker/production/.gitlab-ci.yml b/docker/production/.gitlab-ci.yml index 634ceff1..3f467900 100644 --- a/docker/production/.gitlab-ci.yml +++ b/docker/production/.gitlab-ci.yml @@ -4,9 +4,9 @@ stages: docker-build-rolling: stage: build image: - name: docker.io/docker:23.0.3-dind + name: docker.io/docker:29.2-dind services: - - docker:23.0.3-dind + - docker:29.2-dind variables: TAG: $CI_COMMIT_BRANCH DOCKER_BUILDKIT: 1 @@ -17,22 +17,16 @@ docker-build-rolling: - cp ${DOCKER_HUB_CONFIG} /root/.docker/config.json - docker context create tls-environment - docker buildx create --use tls-environment - - docker buildx build --push --platform=linux/amd64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${TAG} . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/web-server/Dockerfile --tag=${DOCKER_IMAGE_WEB_SERVER}:${TAG} . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/app/Dockerfile --tag=${DOCKER_IMAGE_APP}:${TAG} . - needs: - - pipeline: $PARENT_PIPELINE_ID - job: bundle - only: - refs: - - develop + - docker buildx build --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY --push --platform=linux/amd64 --file=docker/production/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${TAG} . + rules: + - if: $CI_COMMIT_BRANCH == 'develop' -docker-build-main-release: +docker-build-release: stage: build image: - name: docker.io/docker:23.0.3-dind + name: docker.io/docker:29.2-dind services: - - docker:23.0.3-dind + - docker:29.2-dind variables: DOCKER_BUILDKIT: 1 DOCKER_HOST: tcp://docker:2376 @@ -40,50 +34,15 @@ docker-build-main-release: script: - mkdir -p /root/.docker - cp ${DOCKER_HUB_CONFIG} /root/.docker/config.json - - export CP_VERSION=$(cat CP_VERSION.env) + # extract Castopod version from tag (remove "v" prefix) + - export CP_VERSION=$(echo "$CI_COMMIT_TAG" | sed 's/^v//') + # extract pre release identifier (eg. alpha, beta, next, ...) from CP_VERSION or "latest" if none exists + - export CP_TAG=$(echo "$CP_VERSION" | sed 's/^[^-]*-\([^.]*\)\..*/\1/; t; s/.*/latest/') - docker context create tls-environment - docker buildx create --use tls-environment - - docker buildx build --push --platform=linux/amd64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:latest . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/web-server/Dockerfile --tag=${DOCKER_IMAGE_WEB_SERVER}:${CP_VERSION} --tag=${DOCKER_IMAGE_WEB_SERVER}:latest . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/app/Dockerfile --tag=${DOCKER_IMAGE_APP}:${CP_VERSION} --tag=${DOCKER_IMAGE_APP}:latest . + - docker buildx build --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY --push --platform=linux/amd64 --file=docker/production/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_TAG} . # when --platform=linux/amd64,linux/arm64: amd64 image takes too long to be pushed as it needs to wait for arm64 to be built - # --> build and push amd64 image to be pushed first, then overwrite manifest after building arm64 - - docker buildx build --push --platform=linux/amd64,linux/arm64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:latest . - needs: - - pipeline: $PARENT_PIPELINE_ID - job: release - only: - refs: - - main - -docker-build-prerelease: - stage: build - image: - name: docker.io/docker:23.0.3-dind - services: - - docker:23.0.3-dind - variables: - TAG: $CI_COMMIT_BRANCH - DOCKER_BUILDKIT: 1 - DOCKER_HOST: tcp://docker:2376 - DOCKER_TLS_CERTDIR: "/certs" - script: - - mkdir -p /root/.docker - - cp ${DOCKER_HUB_CONFIG} /root/.docker/config.json - - export CP_VERSION=$(cat CP_VERSION.env) - - docker context create tls-environment - - docker buildx create --use tls-environment - - docker buildx build --push --platform=linux/amd64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:${TAG} . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/web-server/Dockerfile --tag=${DOCKER_IMAGE_WEB_SERVER}:${CP_VERSION} --tag=${DOCKER_IMAGE_WEB_SERVER}:${TAG} . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/app/Dockerfile --tag=${DOCKER_IMAGE_APP}:${CP_VERSION} --tag=${DOCKER_IMAGE_APP}:${TAG} . - # when --platform=linux/amd64,linux/arm64: amd64 image takes too long to be pushed as it needs to wait for arm64 to be built - # --> build and push amd64 image to be pushed first, then overwrite manifest after building arm64 - - docker buildx build --push --platform=linux/amd64,linux/arm64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:${TAG} . - needs: - - pipeline: $PARENT_PIPELINE_ID - job: release - only: - refs: - - alpha - - beta - - next + # --> build and push amd64 image first, then overwrite manifest after building arm64 + - docker buildx build --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY --push --platform=linux/amd64,linux/arm64 --file=docker/production/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_TAG} . + rules: + - if: $CI_COMMIT_TAG diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile new file mode 100644 index 00000000..5088228f --- /dev/null +++ b/docker/production/Dockerfile @@ -0,0 +1,135 @@ +#################################################### +# Castopod's Production Dockerfile +#################################################### +# An optimized Dockerfile for production using +# multi-stage builds: +# 1. BUNDLE castopod +# 2. BUILD the FrankenPHP/debian based prod image +#--------------------------------------------------- + +ARG PHP_VERSION="8.4" + +#################################################### +# BUNDLE STAGE +# ------------------------------------------------- +# Bundle castopod for production using +# a PHP / Alpine image +#--------------------------------------------------- +FROM php:${PHP_VERSION}-alpine3.23 AS bundle + +LABEL maintainer="Yassine Doghri " + +COPY . /castopod-src +WORKDIR /castopod-src + +COPY --from=composer:2.9 /usr/bin/composer /usr/local/bin/composer + +RUN \ + # download GeoLite2-City archive and extract it to writable/uploads + --mount=type=secret,id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY \ + wget -c "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=$MAXMIND_LICENCE_KEY&suffix=tar.gz" -O - | tar -xz -C ./writable/uploads/ \ + # rename extracted archives' folders + && mv ./writable/uploads/GeoLite2-City* ./writable/uploads/GeoLite2-City + +RUN \ + # install composer globally + curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ + # install node and pnpm + && apk add --no-cache \ + nodejs \ + pnpm \ + git \ + rsync \ + # install production dependencies only using the --no-dev option + && composer install --no-dev --prefer-dist --no-ansi --no-interaction --no-progress --ignore-platform-reqs \ + # install js dependencies based on lockfile + && pnpm install --frozen-lockfile \ + # build all production static assets (css, js, images, icons, fonts, etc.) + && pnpm run build \ + # create castopod folder bundle: uses .rsync-filter (-F) file to copy only needed files + && rsync -aF . /castopod + + +#################################################### +# BUILD STAGE +# ------------------------------------------------- +# Define production image based on FrankenPHP / +# Debian with services managed by s6-overlay +#--------------------------------------------------- +FROM serversideup/php:${PHP_VERSION}-frankenphp-trixie AS build + +LABEL maintainer="Yassine Doghri " + +USER root + +# Latest releases available at https://github.com/aptible/supercronic/releases +ARG SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.2.42/supercronic-linux-amd64 \ + SUPERCRONIC_SHA1SUM=b444932b81583b7860849f59fdb921217572ece2 \ + SUPERCRONIC=supercronic-linux-amd64 + +# add supercronic to handle cron jobs +RUN \ + curl -fsSLO "$SUPERCRONIC_URL" \ + && echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \ + && chmod +x "$SUPERCRONIC" \ + && mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \ + && ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic + +ARG S6_OVERLAY_VERSION=3.2.2.0 + +# add s6-overlay process manager +ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp +RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz +ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-x86_64.tar.xz /tmp +RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64.tar.xz + +# copy s6-overlay services +COPY --chown=www-data:www-data docker/production/s6-rc.d /etc/s6-overlay/s6-rc.d + +# make prepare-environment executable for bootstrapping the Castopod environment +RUN chmod +x /etc/s6-overlay/s6-rc.d/bootstrap/prepare-environment.sh + +RUN \ + apt-get update \ + && apt-get install -y \ + ffmpeg \ + libfreetype6-dev \ + libjpeg62-turbo-dev \ + libpng-dev \ + libwebp-dev \ + libicu-dev \ + && install-php-extensions \ + intl \ + mysqli \ + exif \ + gd \ + # As of PHP 7.4 we don't need to add --with-png + && docker-php-ext-configure gd --with-webp --with-jpeg --with-freetype + +# copy castopod bundle from bundle stage +COPY --from=bundle --chown=www-data:www-data /castopod /app + +RUN \ + chmod -R 550 /app/ \ + && chmod -R 770 /app/public/media/ \ + && chmod -R 770 /app/writable/ \ + && chmod 750 /app/ + +ARG \ + PHP_MEMORY_LIMIT=512M \ + PHP_MAX_EXECUTION_TIME=300 \ + PHP_UPLOAD_MAX_FILE_SIZE=512M \ + PHP_POST_MAX_SIZE=512M \ + PHP_OPCACHE_ENABLE=1 + +ENV \ + PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} \ + PHP_MAX_EXECUTION_TIME=${PHP_MAX_EXECUTION_TIME} \ + PHP_UPLOAD_MAX_FILE_SIZE=${PHP_UPLOAD_MAX_FILE_SIZE} \ + PHP_POST_MAX_SIZE=${PHP_POST_MAX_SIZE} \ + PHP_OPCACHE_ENABLE=${PHP_OPCACHE_ENABLE} + +USER www-data + +ENTRYPOINT ["docker-php-serversideup-entrypoint"] +CMD ["/init"] diff --git a/docker/production/app/entrypoint.sh b/docker/production/app/entrypoint.sh deleted file mode 100644 index 0c8dc79d..00000000 --- a/docker/production/app/entrypoint.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -ENV_FILE_LOCATION=/var/www/castopod/.env - -# Fix ownership and permissions of castopod folders -chmod -R 750 /var/www/castopod -chown -R root:www-data /var/www/castopod -chown -R www-data:www-data /var/www/castopod/writable /var/www/castopod/public/media - -. /prepare_environment.sh - -supervisord diff --git a/docker/production/app/supervisord.conf b/docker/production/app/supervisord.conf deleted file mode 100644 index 9b2fb9bf..00000000 --- a/docker/production/app/supervisord.conf +++ /dev/null @@ -1,21 +0,0 @@ -[supervisord] -nodaemon=true - -[program:supercronic] -user=www-data -command=supercronic /crontab.txt -autostart=true -autorestart=unexpected -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 - -[program:fpm] -command=/usr/local/sbin/php-fpm -autostart=true -autorestart=unexpected -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 diff --git a/docker/production/castopod/config.template.json b/docker/production/castopod/config.template.json deleted file mode 100644 index e165e1fc..00000000 --- a/docker/production/castopod/config.template.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "listeners": { - "*:8000": { - "pass": "routes" - } - }, - "routes": [ - { - "match": { - "uri": "~^.+\\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map)$" - }, - "action": { - "share": "/var/www/castopod/public$uri", - "response_headers": { - "X-Content-Type-Options": "nosniff", - "Access-Control-Allow-Origin": "*", - "Cache-Control": "max-age=604800" - }, - "fallback": { - "pass": "applications/castopod" - } - } - }, - { - "action": { - "share": "/var/www/castopod/public$uri", - "response_headers": { - "X-Frame-Options": "sameorigin", - "X-Content-Type-Options": "nosniff", - "Access-Control-Allow-Origin": "*" - }, - "fallback": { - "pass": "applications/castopod" - } - } - } - ], - "applications": { - "castopod": { - "type": "php", - "root": "/var/www/castopod/public/", - "script": "index.php" - } - }, - "access_log": { - "path": "/dev/stdout" - }, - "settings": { - "http": { - "body_read_timeout": $CP_TIMEOUT, - "max_body_size": $CP_MAX_BODY_SIZE_BYTES, - "static": { - "mime_types": { - "text/vtt": [".vtt"], - "text/srt": [".srt"] - } - } - } - } -} diff --git a/docker/production/castopod/entrypoint.sh b/docker/production/castopod/entrypoint.sh deleted file mode 100644 index 51516b14..00000000 --- a/docker/production/castopod/entrypoint.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -ENV_FILE_LOCATION=/var/www/castopod/.env - -. /prepare_environment.sh -cat /config.template.json | envsubst '$CP_MAX_BODY_SIZE_BYTES$CP_TIMEOUT' > /usr/local/var/lib/unit/conf.json - -supervisord diff --git a/docker/production/castopod/supervisord.conf b/docker/production/castopod/supervisord.conf deleted file mode 100644 index 18600ee4..00000000 --- a/docker/production/castopod/supervisord.conf +++ /dev/null @@ -1,20 +0,0 @@ -[supervisord] -nodaemon=true - -[program:supercronic] -user=www-data -command=supercronic /crontab.txt -autostart=true -autorestart=unexpected -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 - -[program:unit] -command=unitd --no-daemon -autostart=true -autorestart=unexpected -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile_maxbytes=0 diff --git a/docker/production/common/crontab.txt b/docker/production/common/crontab.txt deleted file mode 100644 index 51409d9f..00000000 --- a/docker/production/common/crontab.txt +++ /dev/null @@ -1 +0,0 @@ -* * * * * /usr/local/bin/php /var/www/castopod/spark tasks:run >> /dev/null 2>&1 diff --git a/docker/production/common/uploads.template.ini b/docker/production/common/uploads.template.ini deleted file mode 100644 index 52ac70fc..00000000 --- a/docker/production/common/uploads.template.ini +++ /dev/null @@ -1,6 +0,0 @@ -file_uploads = On -memory_limit = $CP_PHP_MEMORY_LIMIT -upload_max_filesize = $CP_MAX_BODY_SIZE -post_max_size = $CP_MAX_BODY_SIZE -max_execution_time = $CP_TIMEOUT -max_input_time = $CP_TIMEOUT diff --git a/docker/production/s6-rc.d/bootstrap/dependencies.d/frankenphp b/docker/production/s6-rc.d/bootstrap/dependencies.d/frankenphp new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/common/prepare_environment.sh b/docker/production/s6-rc.d/bootstrap/prepare-environment.sh similarity index 76% rename from docker/production/common/prepare_environment.sh rename to docker/production/s6-rc.d/bootstrap/prepare-environment.sh index a27773d0..bb5a9a36 100644 --- a/docker/production/common/prepare_environment.sh +++ b/docker/production/s6-rc.d/bootstrap/prepare-environment.sh @@ -1,4 +1,6 @@ -#!/bin/sh +#!/command/with-contenv sh + +ENV_FILE_LOCATION=/app/.env log_error() { printf "\033[0;31mERROR:\033[0m $1\n" @@ -9,6 +11,13 @@ log_warning() { printf "\033[0;33mWARNING:\033[0m $1\n" } +log_info() { + printf "\033[0;34mINFO:\033[0m $1\n" +} + +# Remove .env file if exists to recreate it. +rm -f $ENV_FILE_LOCATION + if [ -z "${CP_BASEURL}" ] then log_error "CP_BASEURL must be set" @@ -16,19 +25,19 @@ fi if [ -z "${CP_MEDIA_BASEURL}" ] then - echo "CP_MEDIA_BASEURL is empty, using CP_BASEURL by default" + log_info "CP_MEDIA_BASEURL is empty, using CP_BASEURL by default" CP_MEDIA_BASEURL=$CP_BASEURL fi if [ -z "${CP_ADMIN_GATEWAY}" ] then - echo "CP_ADMIN_GATEWAY is empty, using default" + log_info "CP_ADMIN_GATEWAY is empty, using default \"cp-admin\"" CP_ADMIN_GATEWAY="cp-admin" fi if [ -z "${CP_AUTH_GATEWAY}" ] then - echo "CP_AUTH_GATEWAY is empty, using default" + log_info "CP_AUTH_GATEWAY is empty, using default \"cp-auth\"" CP_AUTH_GATEWAY="cp-auth" fi @@ -39,13 +48,13 @@ fi if [ -z "${CP_DATABASE_HOSTNAME}" ] then - log_warning "CP_DATABASE_HOSTNAME is empty, using default" + log_warning "CP_DATABASE_HOSTNAME is empty, using default \"mariadb\"" CP_DATABASE_HOSTNAME="mariadb" fi if [ -z "${CP_DATABASE_PREFIX}" ] then - echo "CP_DATABASE_PREFIX is empty, using default" + log_info "CP_DATABASE_PREFIX is empty, using default \"cp_\"" CP_DATABASE_PREFIX="cp_" fi @@ -84,29 +93,28 @@ fi if [ ! -z "${CP_REDIS_HOST}" ] then - echo "Using redis cache handler" + log_info "Using redis cache handler" CP_CACHE_HANDLER="redis" if [ -z "${CP_REDIS_PASSWORD}" ] then - echo "CP_REDIS_PASSWORD is empty, using default" - CP_REDIS_PASSWORD="null" + log_error "You must set CP_REDIS_PASSWORD when using redis as a cache handler." else CP_REDIS_PASSWORD="\"${CP_REDIS_PASSWORD}\"" fi if [ -z "${CP_REDIS_PORT}" ] then - echo "CP_REDIS_PORT is empty, using default" + log_info "CP_REDIS_PORT is empty, using default port \"6379\"" CP_REDIS_PORT="6379" fi if [ -z "${CP_REDIS_DATABASE}" ] then - echo "CP_REDIS_DATABASE is empty, using default" + log_info "CP_REDIS_DATABASE is empty, using default \"0\"" CP_REDIS_DATABASE="0" fi else - echo "Using file cache handler" + log_info "Using file cache handler" CP_CACHE_HANDLER="file" fi @@ -134,28 +142,6 @@ then fi fi -if [ -z "${CP_PHP_MEMORY_LIMIT}" ] -then - export CP_PHP_MEMORY_LIMIT="512M" -fi - -if [ -z "${CP_MAX_BODY_SIZE}" ] -then - export CP_MAX_BODY_SIZE="512M" -fi - -CP_MAX_BODY_SIZE_BYTES=$(numfmt --from=iec "$CP_MAX_BODY_SIZE") -if [ $? -ne 0 ] -then - log_error "Failed to parse CP_MAX_BODY_SIZE ($CP_MAX_BODY_SIZE) as human readable number" -fi -export CP_MAX_BODY_SIZE_BYTES=$CP_MAX_BODY_SIZE_BYTES - -if [ -z "${CP_TIMEOUT}" ] -then - export CP_TIMEOUT=900 -fi - cat << EOF > $ENV_FILE_LOCATION app.baseURL="${CP_BASEURL}" media.baseURL="${CP_MEDIA_BASEURL}" @@ -238,20 +224,17 @@ if [ ! -z "${CP_EMAIL_SMTP_HOST}" ] then if [ -z "${CP_EMAIL_SMTP_USERNAME}" ] then - echo "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_SMTP_USERNAME must be set" - exit 1 + log_error "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_SMTP_USERNAME must be set" fi if [ -z "${CP_EMAIL_SMTP_PASSWORD}" ] then - echo "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_SMTP_PASSWORD must be set" - exit 1 + log_error "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_SMTP_PASSWORD must be set" fi if [ -z "${CP_EMAIL_FROM}" ] then - echo "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_FROM must be set" - exit 1 + log_error "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_FROM must be set" fi cat << EOF >> $ENV_FILE_LOCATION @@ -273,8 +256,7 @@ EOF then if [ "${CP_EMAIL_SMTP_CRYPTO}" != "ssl" ] && [ "${CP_EMAIL_SMTP_CRYPTO}" != "tls" ] then - echo "CP_EMAIL_SMTP_CRYPTO must be ssl or tls" - exit 1 + log_error "CP_EMAIL_SMTP_CRYPTO must be ssl or tls" fi cat << EOF >> $ENV_FILE_LOCATION email.SMTPCrypto=${CP_EMAIL_SMTP_CRYPTO} @@ -282,14 +264,14 @@ EOF fi fi -echo "Using config:" +log_info "Using config:" cat $ENV_FILE_LOCATION -#Run database migrations after 10 seconds (to wait for the database to be started) -(sleep 10 && php spark castopod:database-update) & +# prevent .env from being writable +chmod -w $ENV_FILE_LOCATION + +#Run database migrations +/usr/local/bin/php /var/www/html/spark castopod:database-update # clear cache to account for new assets and any change in data structure -php spark cache:clear - -#Apply php configuration -cat /uploads.template.ini | envsubst '$CP_MAX_BODY_SIZE$CP_MAX_BODY_SIZE_BYTES$CP_TIMEOUT$CP_PHP_MEMORY_LIMIT' > /usr/local/etc/php/conf.d/uploads.ini +/usr/local/bin/php /var/www/html/spark cache:clear diff --git a/docker/production/s6-rc.d/bootstrap/type b/docker/production/s6-rc.d/bootstrap/type new file mode 100644 index 00000000..bdd22a18 --- /dev/null +++ b/docker/production/s6-rc.d/bootstrap/type @@ -0,0 +1 @@ +oneshot diff --git a/docker/production/s6-rc.d/bootstrap/up b/docker/production/s6-rc.d/bootstrap/up new file mode 100644 index 00000000..4abab1a4 --- /dev/null +++ b/docker/production/s6-rc.d/bootstrap/up @@ -0,0 +1,2 @@ +#!/command/with-contenv sh +/etc/s6-overlay/s6-rc.d/bootstrap/prepare-environment.sh diff --git a/docker/production/s6-rc.d/frankenphp/dependencies.d/base b/docker/production/s6-rc.d/frankenphp/dependencies.d/base new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/s6-rc.d/frankenphp/run b/docker/production/s6-rc.d/frankenphp/run new file mode 100644 index 00000000..1193fcc3 --- /dev/null +++ b/docker/production/s6-rc.d/frankenphp/run @@ -0,0 +1,2 @@ +#!/command/with-contenv sh +frankenphp run --config /etc/frankenphp/Caddyfile --adapter caddyfile diff --git a/docker/production/s6-rc.d/frankenphp/type b/docker/production/s6-rc.d/frankenphp/type new file mode 100644 index 00000000..5883cff0 --- /dev/null +++ b/docker/production/s6-rc.d/frankenphp/type @@ -0,0 +1 @@ +longrun diff --git a/docker/production/s6-rc.d/supercronic/crontab b/docker/production/s6-rc.d/supercronic/crontab new file mode 100644 index 00000000..8382f92f --- /dev/null +++ b/docker/production/s6-rc.d/supercronic/crontab @@ -0,0 +1 @@ +* * * * * /usr/local/bin/php /var/www/html/spark tasks:run >> /dev/null 2>&1 diff --git a/docker/production/s6-rc.d/supercronic/dependencies.d/frankenphp b/docker/production/s6-rc.d/supercronic/dependencies.d/frankenphp new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/s6-rc.d/supercronic/run b/docker/production/s6-rc.d/supercronic/run new file mode 100644 index 00000000..73b9b0cf --- /dev/null +++ b/docker/production/s6-rc.d/supercronic/run @@ -0,0 +1,2 @@ +#!/command/with-contenv sh +supercronic /etc/s6-overlay/s6-rc.d/supercronic/crontab diff --git a/docker/production/s6-rc.d/supercronic/type b/docker/production/s6-rc.d/supercronic/type new file mode 100644 index 00000000..5883cff0 --- /dev/null +++ b/docker/production/s6-rc.d/supercronic/type @@ -0,0 +1 @@ +longrun diff --git a/docker/production/s6-rc.d/user/contents.d/bootstrap b/docker/production/s6-rc.d/user/contents.d/bootstrap new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/s6-rc.d/user/contents.d/frankenphp b/docker/production/s6-rc.d/user/contents.d/frankenphp new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/s6-rc.d/user/contents.d/supercronic b/docker/production/s6-rc.d/user/contents.d/supercronic new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/web-server/Dockerfile b/docker/production/web-server/Dockerfile deleted file mode 100644 index f14e51bc..00000000 --- a/docker/production/web-server/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM docker.io/nginx:1.29 - -COPY docker/production/web-server/entrypoint.sh /entrypoint.sh -COPY docker/production/web-server/nginx.template.conf /nginx.template.conf -COPY castopod/public /var/www/html - -RUN chmod +x /entrypoint.sh && \ - apt-get update && \ - apt-get install -y curl gettext-base && \ - rm -rf /var/lib/apt/lists/* && \ - usermod -aG www-data nginx - -HEALTHCHECK --interval=30s --timeout=3s CMD curl --fail http://localhost || exit 1 -VOLUME /var/www/html/media -EXPOSE 80 -WORKDIR /var/www/html - -CMD ["/entrypoint.sh"] diff --git a/docker/production/web-server/entrypoint.sh b/docker/production/web-server/entrypoint.sh deleted file mode 100644 index 5f623781..00000000 --- a/docker/production/web-server/entrypoint.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -if [ -z "${CP_APP_HOSTNAME}" ] -then - echo "CP_APP_HOSTNAME is empty, using default" - export CP_APP_HOSTNAME="app" -fi - -if [ -z "${CP_MAX_BODY_SIZE}" ] -then - export CP_MAX_BODY_SIZE=512M -fi - -if [ -z "${CP_TIMEOUT}" ] -then - export CP_TIMEOUT=900 -fi - -cat /nginx.template.conf | envsubst '$CP_APP_HOSTNAME$CP_MAX_BODY_SIZE$CP_TIMEOUT' > /etc/nginx/nginx.conf - -nginx -g "daemon off;" diff --git a/docker/production/web-server/nginx.template.conf b/docker/production/web-server/nginx.template.conf deleted file mode 100644 index bb7b91ec..00000000 --- a/docker/production/web-server/nginx.template.conf +++ /dev/null @@ -1,80 +0,0 @@ -worker_processes auto; - -error_log /var/log/nginx/error.log warn; -pid /var/run/nginx.pid; - -events { - worker_connections 1024; -} - -http { - include /etc/nginx/mime.types; - types { - text/vtt vtt; - text/srt srt; - } - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - sendfile on; - - keepalive_timeout 65; - - set_real_ip_from 10.0.0.0/8; - set_real_ip_from 172.16.0.0/12; - set_real_ip_from 192.168.0.0/16; - real_ip_header X-Real-IP; - - upstream php-handler { - server $CP_APP_HOSTNAME:9000; - } - - server { - listen 80; - - root /var/www/html; - - server_tokens off; - add_header X-Frame-Options sameorigin always; - add_header Permissions-Policy interest-cohort=(); - add_header X-Content-Type-Options nosniff; - add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;"; - client_max_body_size $CP_MAX_BODY_SIZE; - client_body_timeout ${CP_TIMEOUT}s; - - fastcgi_buffers 64 4K; - - gzip on; - gzip_vary on; - gzip_comp_level 4; - gzip_min_length 256; - gzip_types application/atom+xml application/javascript application/rss+xml image/bmp image/svg+xml image/x-icon text/css text/plain text/html; - - try_files $uri $uri/ /index.php?$args; - index index.php index.html; - - location ~ \.php$ { - include fastcgi_params; - fastcgi_intercept_errors on; - fastcgi_index index.php; - fastcgi_param SERVER_NAME $host; - fastcgi_pass php-handler; - fastcgi_param SCRIPT_FILENAME /var/www/castopod/public/$fastcgi_script_name; - try_files $uri =404; - fastcgi_read_timeout 3600; - fastcgi_send_timeout 3600; - } - - location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map)$ { - add_header Access-Control-Allow-Origin "*"; - expires max; - access_log off; - } - - } -} diff --git a/docs/.gitlab-ci.yml b/docs/.gitlab-ci.yml index 92b5efb6..d0f1bde5 100644 --- a/docs/.gitlab-ci.yml +++ b/docs/.gitlab-ci.yml @@ -28,12 +28,10 @@ build: stage: build script: - pnpm run build - except: - - develop - - main - - beta - - alpha - - next + rules: + - if: $CI_COMMIT_BRANCH =~ /^(develop|main|alpha|beta|next)$/ + when: never + - when: on_success build-production: extends: .documentation-setup @@ -47,12 +45,8 @@ build-production: paths: - docs/dist/$CI_COMMIT_REF_SLUG expire_in: 30 mins - only: - - develop - - main - - beta - - alpha - - next + rules: + - if: $CI_COMMIT_BRANCH =~ /^(develop|main|alpha|beta|next)$/ deploy: stage: deploy @@ -78,9 +72,5 @@ deploy: script: - rsync -avzuh -e "ssh -p $SSH_PORT" $SOURCE_FOLDER $USER@$HOST:$TEMP_DIRECTORY --progress - ssh $USER@$HOST -p $SSH_PORT "rsync -rtv $TEMP_DIRECTORY $DIRECTORY" - only: - - develop - - main - - beta - - alpha - - next + rules: + - if: $CI_COMMIT_BRANCH =~ /^(develop|main|alpha|beta|next)$/ diff --git a/docs/package.json b/docs/package.json index cf5abc5e..9258fab6 100644 --- a/docs/package.json +++ b/docs/package.json @@ -11,11 +11,11 @@ "prepare": "astro telemetry disable" }, "dependencies": { - "@astrojs/starlight": "^0.36.0", + "@astrojs/starlight": "^0.37.6", "@fontsource/inter": "^5.2.8", "@fontsource/rubik": "^5.2.8", - "astro": "^5.14.1", - "sharp": "^0.34.4", - "starlight-openapi": "^0.20.0" + "astro": "^5.17.2", + "sharp": "^0.34.5", + "starlight-openapi": "^0.22.0" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 18d03571..45dac61d 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -8,8 +8,8 @@ importers: .: dependencies: "@astrojs/starlight": - specifier: ^0.36.0 - version: 0.36.0(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) + specifier: ^0.37.6 + version: 0.37.6(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3)) "@fontsource/inter": specifier: ^5.2.8 version: 5.2.8 @@ -17,14 +17,14 @@ importers: specifier: ^5.2.8 version: 5.2.8 astro: - specifier: ^5.14.1 - version: 5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + specifier: ^5.17.2 + version: 5.17.2(rollup@4.57.1)(typescript@5.9.3) sharp: - specifier: ^0.34.4 - version: 0.34.4 + specifier: ^0.34.5 + version: 0.34.5 starlight-openapi: - specifier: ^0.20.0 - version: 0.20.0(@astrojs/markdown-remark@6.3.7)(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)))(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))(openapi-types@12.1.3) + specifier: ^0.22.0 + version: 0.22.0(@astrojs/markdown-remark@6.3.10)(@astrojs/starlight@0.37.6(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3)))(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3))(openapi-types@12.1.3) packages: "@apidevtools/json-schema-ref-parser@13.0.5": @@ -34,40 +34,28 @@ packages: } engines: { node: ">= 16" } - "@astrojs/compiler@2.12.2": + "@astrojs/compiler@2.13.1": resolution: { - integrity: sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==, + integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==, } - "@astrojs/internal-helpers@0.7.2": + "@astrojs/internal-helpers@0.7.5": resolution: { - integrity: sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==, + integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==, } - "@astrojs/internal-helpers@0.7.3": + "@astrojs/markdown-remark@6.3.10": resolution: { - integrity: sha512-6Pl0bQEIChuW5wqN7jdKrzWfCscW2rG/Cz+fzt4PhSQX2ivBpnhXgFUCs0M3DCYvjYHnPVG2W36X5rmFjZ62sw==, + integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==, } - "@astrojs/markdown-remark@6.3.6": + "@astrojs/mdx@4.3.13": resolution: { - integrity: sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==, - } - - "@astrojs/markdown-remark@6.3.7": - resolution: - { - integrity: sha512-KXGdq6/BC18doBCYXp08alHlWChH0hdD2B1qv9wIyOHbvwI5K6I7FhSta8dq1hBQNdun8YkKPR013D/Hm8xd0g==, - } - - "@astrojs/mdx@4.3.4": - resolution: - { - integrity: sha512-Ew3iP+6zuzzJWNEH5Qr1iknrue1heEfgmfuMpuwLaSwqlUiJQ0NDb2oxKosgWU1ROYmVf1H4KCmS6QdMWKyFjw==, + integrity: sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==, } engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0 } peerDependencies: @@ -80,16 +68,16 @@ packages: } engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0 } - "@astrojs/sitemap@3.5.1": + "@astrojs/sitemap@3.7.0": resolution: { - integrity: sha512-uX5z52GLtQTgOe8r3jeGmFRYrFe52mdpLYJzqjvL1cdy5Kg3MLOZEvaZ/OCH0fSq0t7e50uJQ6oBMZG0ffszBg==, + integrity: sha512-+qxjUrz6Jcgh+D5VE1gKUJTA3pSthuPHe6Ao5JCxok794Lewx8hBFaWHtOnN0ntb2lfOf7gvOi9TefUswQ/ZVA==, } - "@astrojs/starlight@0.36.0": + "@astrojs/starlight@0.37.6": resolution: { - integrity: sha512-aVJVBfvFuE2avsMDhmRzn6I5GjDhUwIQFlu3qH9a1C0fNsPYDw2asxHQODAD7EfGiKGvvHCJgHb+9jbJ8lCfNQ==, + integrity: sha512-wQrKwH431q+8FsLBnNQeG+R36TMtEGxTQ2AuiVpcx9APcazvL3n7wVW8mMmYyxX0POjTnxlcWPkdMGR3Yj1L+w==, } peerDependencies: astro: ^5.5.0 @@ -101,10 +89,10 @@ packages: } engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0 } - "@babel/code-frame@7.27.1": + "@babel/code-frame@7.29.0": resolution: { - integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==, + integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==, } engines: { node: ">=6.9.0" } @@ -115,310 +103,545 @@ packages: } engines: { node: ">=6.9.0" } - "@babel/helper-validator-identifier@7.27.1": + "@babel/helper-validator-identifier@7.28.5": resolution: { - integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==, + integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==, } engines: { node: ">=6.9.0" } - "@babel/parser@7.28.3": + "@babel/parser@7.29.0": resolution: { - integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==, + integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==, } engines: { node: ">=6.0.0" } hasBin: true - "@babel/runtime@7.28.3": + "@babel/runtime@7.28.6": resolution: { - integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==, + integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==, } engines: { node: ">=6.9.0" } - "@babel/types@7.28.2": + "@babel/types@7.29.0": resolution: { - integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==, + integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==, } engines: { node: ">=6.9.0" } - "@capsizecss/unpack@2.4.0": + "@capsizecss/unpack@4.0.0": resolution: { - integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==, + integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==, } + engines: { node: ">=18" } - "@ctrl/tinycolor@4.1.0": + "@ctrl/tinycolor@4.2.0": resolution: { - integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==, + integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==, } engines: { node: ">=14" } - "@emnapi/runtime@1.5.0": + "@emnapi/runtime@1.8.1": resolution: { - integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==, + integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==, } - "@esbuild/aix-ppc64@0.25.9": + "@esbuild/aix-ppc64@0.25.12": resolution: { - integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==, + integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==, } engines: { node: ">=18" } cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.25.9": + "@esbuild/aix-ppc64@0.27.3": resolution: { - integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==, + integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==, + } + engines: { node: ">=18" } + cpu: [ppc64] + os: [aix] + + "@esbuild/android-arm64@0.25.12": + resolution: + { + integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==, } engines: { node: ">=18" } cpu: [arm64] os: [android] - "@esbuild/android-arm@0.25.9": + "@esbuild/android-arm64@0.27.3": resolution: { - integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==, + integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [android] + + "@esbuild/android-arm@0.25.12": + resolution: + { + integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==, } engines: { node: ">=18" } cpu: [arm] os: [android] - "@esbuild/android-x64@0.25.9": + "@esbuild/android-arm@0.27.3": resolution: { - integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==, + integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==, + } + engines: { node: ">=18" } + cpu: [arm] + os: [android] + + "@esbuild/android-x64@0.25.12": + resolution: + { + integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==, } engines: { node: ">=18" } cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.25.9": + "@esbuild/android-x64@0.27.3": resolution: { - integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==, + integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [android] + + "@esbuild/darwin-arm64@0.25.12": + resolution: + { + integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==, } engines: { node: ">=18" } cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.25.9": + "@esbuild/darwin-arm64@0.27.3": resolution: { - integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==, + integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [darwin] + + "@esbuild/darwin-x64@0.25.12": + resolution: + { + integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==, } engines: { node: ">=18" } cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.25.9": + "@esbuild/darwin-x64@0.27.3": resolution: { - integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==, + integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [darwin] + + "@esbuild/freebsd-arm64@0.25.12": + resolution: + { + integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==, } engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.25.9": + "@esbuild/freebsd-arm64@0.27.3": resolution: { - integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==, + integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [freebsd] + + "@esbuild/freebsd-x64@0.25.12": + resolution: + { + integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==, } engines: { node: ">=18" } cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.25.9": + "@esbuild/freebsd-x64@0.27.3": resolution: { - integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==, + integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [freebsd] + + "@esbuild/linux-arm64@0.25.12": + resolution: + { + integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==, } engines: { node: ">=18" } cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.25.9": + "@esbuild/linux-arm64@0.27.3": resolution: { - integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==, + integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [linux] + + "@esbuild/linux-arm@0.25.12": + resolution: + { + integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==, } engines: { node: ">=18" } cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.25.9": + "@esbuild/linux-arm@0.27.3": resolution: { - integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==, + integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==, + } + engines: { node: ">=18" } + cpu: [arm] + os: [linux] + + "@esbuild/linux-ia32@0.25.12": + resolution: + { + integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==, } engines: { node: ">=18" } cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.25.9": + "@esbuild/linux-ia32@0.27.3": resolution: { - integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==, + integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==, + } + engines: { node: ">=18" } + cpu: [ia32] + os: [linux] + + "@esbuild/linux-loong64@0.25.12": + resolution: + { + integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==, } engines: { node: ">=18" } cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.25.9": + "@esbuild/linux-loong64@0.27.3": resolution: { - integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==, + integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==, + } + engines: { node: ">=18" } + cpu: [loong64] + os: [linux] + + "@esbuild/linux-mips64el@0.25.12": + resolution: + { + integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==, } engines: { node: ">=18" } cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.25.9": + "@esbuild/linux-mips64el@0.27.3": resolution: { - integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==, + integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==, + } + engines: { node: ">=18" } + cpu: [mips64el] + os: [linux] + + "@esbuild/linux-ppc64@0.25.12": + resolution: + { + integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==, } engines: { node: ">=18" } cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.25.9": + "@esbuild/linux-ppc64@0.27.3": resolution: { - integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==, + integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==, + } + engines: { node: ">=18" } + cpu: [ppc64] + os: [linux] + + "@esbuild/linux-riscv64@0.25.12": + resolution: + { + integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==, } engines: { node: ">=18" } cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.25.9": + "@esbuild/linux-riscv64@0.27.3": resolution: { - integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==, + integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==, + } + engines: { node: ">=18" } + cpu: [riscv64] + os: [linux] + + "@esbuild/linux-s390x@0.25.12": + resolution: + { + integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==, } engines: { node: ">=18" } cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.25.9": + "@esbuild/linux-s390x@0.27.3": resolution: { - integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==, + integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==, + } + engines: { node: ">=18" } + cpu: [s390x] + os: [linux] + + "@esbuild/linux-x64@0.25.12": + resolution: + { + integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==, } engines: { node: ">=18" } cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.25.9": + "@esbuild/linux-x64@0.27.3": resolution: { - integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==, + integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [linux] + + "@esbuild/netbsd-arm64@0.25.12": + resolution: + { + integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==, } engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.25.9": + "@esbuild/netbsd-arm64@0.27.3": resolution: { - integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==, + integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [netbsd] + + "@esbuild/netbsd-x64@0.25.12": + resolution: + { + integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==, } engines: { node: ">=18" } cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.25.9": + "@esbuild/netbsd-x64@0.27.3": resolution: { - integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==, + integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [netbsd] + + "@esbuild/openbsd-arm64@0.25.12": + resolution: + { + integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==, } engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.25.9": + "@esbuild/openbsd-arm64@0.27.3": resolution: { - integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==, + integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [openbsd] + + "@esbuild/openbsd-x64@0.25.12": + resolution: + { + integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==, } engines: { node: ">=18" } cpu: [x64] os: [openbsd] - "@esbuild/openharmony-arm64@0.25.9": + "@esbuild/openbsd-x64@0.27.3": resolution: { - integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==, + integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [openbsd] + + "@esbuild/openharmony-arm64@0.25.12": + resolution: + { + integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==, } engines: { node: ">=18" } cpu: [arm64] os: [openharmony] - "@esbuild/sunos-x64@0.25.9": + "@esbuild/openharmony-arm64@0.27.3": resolution: { - integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==, + integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [openharmony] + + "@esbuild/sunos-x64@0.25.12": + resolution: + { + integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==, } engines: { node: ">=18" } cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.25.9": + "@esbuild/sunos-x64@0.27.3": resolution: { - integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==, + integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [sunos] + + "@esbuild/win32-arm64@0.25.12": + resolution: + { + integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==, } engines: { node: ">=18" } cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.25.9": + "@esbuild/win32-arm64@0.27.3": resolution: { - integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==, + integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [win32] + + "@esbuild/win32-ia32@0.25.12": + resolution: + { + integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==, } engines: { node: ">=18" } cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.25.9": + "@esbuild/win32-ia32@0.27.3": resolution: { - integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==, + integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==, + } + engines: { node: ">=18" } + cpu: [ia32] + os: [win32] + + "@esbuild/win32-x64@0.25.12": + resolution: + { + integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==, } engines: { node: ">=18" } cpu: [x64] os: [win32] - "@expressive-code/core@0.41.3": + "@esbuild/win32-x64@0.27.3": resolution: { - integrity: sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==, + integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [win32] + + "@expressive-code/core@0.41.6": + resolution: + { + integrity: sha512-FvJQP+hG0jWi/FLBSmvHInDqWR7jNANp9PUDjdMqSshHb0y7sxx3vHuoOr6SgXjWw+MGLqorZyPQ0aAlHEok6g==, } - "@expressive-code/plugin-frames@0.41.3": + "@expressive-code/plugin-frames@0.41.6": resolution: { - integrity: sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==, + integrity: sha512-d+hkSYXIQot6fmYnOmWAM+7TNWRv/dhfjMsNq+mIZz8Tb4mPHOcgcfZeEM5dV9TDL0ioQNvtcqQNuzA1sRPjxg==, } - "@expressive-code/plugin-shiki@0.41.3": + "@expressive-code/plugin-shiki@0.41.6": resolution: { - integrity: sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==, + integrity: sha512-Y6zmKBmsIUtWTzdefqlzm/h9Zz0Rc4gNdt2GTIH7fhHH2I9+lDYCa27BDwuBhjqcos6uK81Aca9dLUC4wzN+ng==, } - "@expressive-code/plugin-text-markers@0.41.3": + "@expressive-code/plugin-text-markers@0.41.6": resolution: { - integrity: sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==, + integrity: sha512-PBFa1wGyYzRExMDzBmAWC6/kdfG1oLn4pLpBeTfIRrALPjcGA/59HP3e7q9J0Smk4pC7U+lWkA2LHR8FYV8U7Q==, } "@fontsource/inter@5.2.8": @@ -447,189 +670,222 @@ packages: } engines: { node: ">=18" } - "@img/sharp-darwin-arm64@0.34.4": + "@img/sharp-darwin-arm64@0.34.5": resolution: { - integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==, + integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [darwin] - "@img/sharp-darwin-x64@0.34.4": + "@img/sharp-darwin-x64@0.34.5": resolution: { - integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==, + integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [darwin] - "@img/sharp-libvips-darwin-arm64@1.2.3": + "@img/sharp-libvips-darwin-arm64@1.2.4": resolution: { - integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==, + integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==, } cpu: [arm64] os: [darwin] - "@img/sharp-libvips-darwin-x64@1.2.3": + "@img/sharp-libvips-darwin-x64@1.2.4": resolution: { - integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==, + integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==, } cpu: [x64] os: [darwin] - "@img/sharp-libvips-linux-arm64@1.2.3": + "@img/sharp-libvips-linux-arm64@1.2.4": resolution: { - integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==, + integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==, } cpu: [arm64] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-arm@1.2.3": + "@img/sharp-libvips-linux-arm@1.2.4": resolution: { - integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==, + integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==, } cpu: [arm] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-ppc64@1.2.3": + "@img/sharp-libvips-linux-ppc64@1.2.4": resolution: { - integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==, + integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==, } cpu: [ppc64] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-s390x@1.2.3": + "@img/sharp-libvips-linux-riscv64@1.2.4": resolution: { - integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==, + integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==, + } + cpu: [riscv64] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-s390x@1.2.4": + resolution: + { + integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==, } cpu: [s390x] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-x64@1.2.3": + "@img/sharp-libvips-linux-x64@1.2.4": resolution: { - integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==, + integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==, } cpu: [x64] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linuxmusl-arm64@1.2.3": + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": resolution: { - integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==, + integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==, } cpu: [arm64] os: [linux] + libc: [musl] - "@img/sharp-libvips-linuxmusl-x64@1.2.3": + "@img/sharp-libvips-linuxmusl-x64@1.2.4": resolution: { - integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==, + integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==, } cpu: [x64] os: [linux] + libc: [musl] - "@img/sharp-linux-arm64@0.34.4": + "@img/sharp-linux-arm64@0.34.5": resolution: { - integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==, + integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [linux] + libc: [glibc] - "@img/sharp-linux-arm@0.34.4": + "@img/sharp-linux-arm@0.34.5": resolution: { - integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==, + integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm] os: [linux] + libc: [glibc] - "@img/sharp-linux-ppc64@0.34.4": + "@img/sharp-linux-ppc64@0.34.5": resolution: { - integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==, + integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [ppc64] os: [linux] + libc: [glibc] - "@img/sharp-linux-s390x@0.34.4": + "@img/sharp-linux-riscv64@0.34.5": resolution: { - integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==, + integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [riscv64] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-s390x@0.34.5": + resolution: + { + integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [s390x] os: [linux] + libc: [glibc] - "@img/sharp-linux-x64@0.34.4": + "@img/sharp-linux-x64@0.34.5": resolution: { - integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==, + integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] + libc: [glibc] - "@img/sharp-linuxmusl-arm64@0.34.4": + "@img/sharp-linuxmusl-arm64@0.34.5": resolution: { - integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==, + integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [linux] + libc: [musl] - "@img/sharp-linuxmusl-x64@0.34.4": + "@img/sharp-linuxmusl-x64@0.34.5": resolution: { - integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==, + integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] + libc: [musl] - "@img/sharp-wasm32@0.34.4": + "@img/sharp-wasm32@0.34.5": resolution: { - integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==, + integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [wasm32] - "@img/sharp-win32-arm64@0.34.4": + "@img/sharp-win32-arm64@0.34.5": resolution: { - integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==, + integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [win32] - "@img/sharp-win32-ia32@0.34.4": + "@img/sharp-win32-ia32@0.34.5": resolution: { - integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==, + integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [ia32] os: [win32] - "@img/sharp-win32-x64@0.34.4": + "@img/sharp-win32-x64@0.34.5": resolution: { - integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==, + integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] @@ -641,10 +897,10 @@ packages: integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, } - "@mdx-js/mdx@3.1.0": + "@mdx-js/mdx@3.1.1": resolution: { - integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==, + integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==, } "@oslojs/encoding@1.1.0": @@ -653,56 +909,64 @@ packages: integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==, } - "@pagefind/darwin-arm64@1.3.0": + "@pagefind/darwin-arm64@1.4.0": resolution: { - integrity: sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==, + integrity: sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ==, } cpu: [arm64] os: [darwin] - "@pagefind/darwin-x64@1.3.0": + "@pagefind/darwin-x64@1.4.0": resolution: { - integrity: sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==, + integrity: sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A==, } cpu: [x64] os: [darwin] - "@pagefind/default-ui@1.3.0": + "@pagefind/default-ui@1.4.0": resolution: { - integrity: sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==, + integrity: sha512-wie82VWn3cnGEdIjh4YwNESyS1G6vRHwL6cNjy9CFgNnWW/PGRjsLq300xjVH5sfPFK3iK36UxvIBymtQIEiSQ==, } - "@pagefind/linux-arm64@1.3.0": + "@pagefind/freebsd-x64@1.4.0": resolution: { - integrity: sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==, + integrity: sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q==, + } + cpu: [x64] + os: [freebsd] + + "@pagefind/linux-arm64@1.4.0": + resolution: + { + integrity: sha512-PIt8dkqt4W06KGmQjONw7EZbhDF+uXI7i0XtRLN1vjCUxM9vGPdtJc2mUyVPevjomrGz5M86M8bqTr6cgDp1Uw==, } cpu: [arm64] os: [linux] - "@pagefind/linux-x64@1.3.0": + "@pagefind/linux-x64@1.4.0": resolution: { - integrity: sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==, + integrity: sha512-z4oddcWwQ0UHrTHR8psLnVlz6USGJ/eOlDPTDYZ4cI8TK8PgwRUPQZp9D2iJPNIPcS6Qx/E4TebjuGJOyK8Mmg==, } cpu: [x64] os: [linux] - "@pagefind/windows-x64@1.3.0": + "@pagefind/windows-x64@1.4.0": resolution: { - integrity: sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==, + integrity: sha512-NkT+YAdgS2FPCn8mIA9bQhiBs+xmniMGq1LFPDhcFn0+2yIUEiIG06t7bsZlhdjknEQRTSdT7YitP6fC5qwP0g==, } cpu: [x64] os: [win32] - "@readme/better-ajv-errors@2.3.2": + "@readme/better-ajv-errors@2.4.0": resolution: { - integrity: sha512-T4GGnRAlY3C339NhoUpgJJFsMYko9vIgFAlhgV+/vEGFw66qEY4a4TRJIAZBcX/qT1pq5DvXSme+SQODHOoBrw==, + integrity: sha512-9WODaOAKSl/mU+MYNZ2aHCrkoRSvmQ+1YkLj589OEqqjOAhbn8j7Z+ilYoiTu/he6X63/clsxxAB4qny9/dDzg==, } engines: { node: ">=18" } peerDependencies: @@ -724,10 +988,10 @@ packages: } engines: { node: ">=18" } - "@rollup/pluginutils@5.2.0": + "@rollup/pluginutils@5.3.0": resolution: { - integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==, + integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==, } engines: { node: ">=14.0.0" } peerDependencies: @@ -736,236 +1000,253 @@ packages: rollup: optional: true - "@rollup/rollup-android-arm-eabi@4.48.1": + "@rollup/rollup-android-arm-eabi@4.57.1": resolution: { - integrity: sha512-rGmb8qoG/zdmKoYELCBwu7vt+9HxZ7Koos3pD0+sH5fR3u3Wb/jGcpnqxcnWsPEKDUyzeLSqksN8LJtgXjqBYw==, + integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==, } cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.48.1": + "@rollup/rollup-android-arm64@4.57.1": resolution: { - integrity: sha512-4e9WtTxrk3gu1DFE+imNJr4WsL13nWbD/Y6wQcyku5qadlKHY3OQ3LJ/INrrjngv2BJIHnIzbqMk1GTAC2P8yQ==, + integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==, } cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.48.1": + "@rollup/rollup-darwin-arm64@4.57.1": resolution: { - integrity: sha512-+XjmyChHfc4TSs6WUQGmVf7Hkg8ferMAE2aNYYWjiLzAS/T62uOsdfnqv+GHRjq7rKRnYh4mwWb4Hz7h/alp8A==, + integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==, } cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.48.1": + "@rollup/rollup-darwin-x64@4.57.1": resolution: { - integrity: sha512-upGEY7Ftw8M6BAJyGwnwMw91rSqXTcOKZnnveKrVWsMTF8/k5mleKSuh7D4v4IV1pLxKAk3Tbs0Lo9qYmii5mQ==, + integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==, } cpu: [x64] os: [darwin] - "@rollup/rollup-freebsd-arm64@4.48.1": + "@rollup/rollup-freebsd-arm64@4.57.1": resolution: { - integrity: sha512-P9ViWakdoynYFUOZhqq97vBrhuvRLAbN/p2tAVJvhLb8SvN7rbBnJQcBu8e/rQts42pXGLVhfsAP0k9KXWa3nQ==, + integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==, } cpu: [arm64] os: [freebsd] - "@rollup/rollup-freebsd-x64@4.48.1": + "@rollup/rollup-freebsd-x64@4.57.1": resolution: { - integrity: sha512-VLKIwIpnBya5/saccM8JshpbxfyJt0Dsli0PjXozHwbSVaHTvWXJH1bbCwPXxnMzU4zVEfgD1HpW3VQHomi2AQ==, + integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==, } cpu: [x64] os: [freebsd] - "@rollup/rollup-linux-arm-gnueabihf@4.48.1": + "@rollup/rollup-linux-arm-gnueabihf@4.57.1": resolution: { - integrity: sha512-3zEuZsXfKaw8n/yF7t8N6NNdhyFw3s8xJTqjbTDXlipwrEHo4GtIKcMJr5Ed29leLpB9AugtAQpAHW0jvtKKaQ==, + integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==, } cpu: [arm] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-arm-musleabihf@4.48.1": + "@rollup/rollup-linux-arm-musleabihf@4.57.1": resolution: { - integrity: sha512-leo9tOIlKrcBmmEypzunV/2w946JeLbTdDlwEZ7OnnsUyelZ72NMnT4B2vsikSgwQifjnJUbdXzuW4ToN1wV+Q==, + integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==, } cpu: [arm] os: [linux] + libc: [musl] - "@rollup/rollup-linux-arm64-gnu@4.48.1": + "@rollup/rollup-linux-arm64-gnu@4.57.1": resolution: { - integrity: sha512-Vy/WS4z4jEyvnJm+CnPfExIv5sSKqZrUr98h03hpAMbE2aI0aD2wvK6GiSe8Gx2wGp3eD81cYDpLLBqNb2ydwQ==, + integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==, } cpu: [arm64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-arm64-musl@4.48.1": + "@rollup/rollup-linux-arm64-musl@4.57.1": resolution: { - integrity: sha512-x5Kzn7XTwIssU9UYqWDB9VpLpfHYuXw5c6bJr4Mzv9kIv242vmJHbI5PJJEnmBYitUIfoMCODDhR7KoZLot2VQ==, + integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==, } cpu: [arm64] os: [linux] + libc: [musl] - "@rollup/rollup-linux-loongarch64-gnu@4.48.1": + "@rollup/rollup-linux-loong64-gnu@4.57.1": resolution: { - integrity: sha512-yzCaBbwkkWt/EcgJOKDUdUpMHjhiZT/eDktOPWvSRpqrVE04p0Nd6EGV4/g7MARXXeOqstflqsKuXVM3H9wOIQ==, + integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==, } cpu: [loong64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-ppc64-gnu@4.48.1": + "@rollup/rollup-linux-loong64-musl@4.57.1": resolution: { - integrity: sha512-UK0WzWUjMAJccHIeOpPhPcKBqax7QFg47hwZTp6kiMhQHeOYJeaMwzeRZe1q5IiTKsaLnHu9s6toSYVUlZ2QtQ==, + integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==, + } + cpu: [loong64] + os: [linux] + libc: [musl] + + "@rollup/rollup-linux-ppc64-gnu@4.57.1": + resolution: + { + integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==, } cpu: [ppc64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-riscv64-gnu@4.48.1": + "@rollup/rollup-linux-ppc64-musl@4.57.1": resolution: { - integrity: sha512-3NADEIlt+aCdCbWVZ7D3tBjBX1lHpXxcvrLt/kdXTiBrOds8APTdtk2yRL2GgmnSVeX4YS1JIf0imFujg78vpw==, + integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==, + } + cpu: [ppc64] + os: [linux] + libc: [musl] + + "@rollup/rollup-linux-riscv64-gnu@4.57.1": + resolution: + { + integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==, } cpu: [riscv64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-riscv64-musl@4.48.1": + "@rollup/rollup-linux-riscv64-musl@4.57.1": resolution: { - integrity: sha512-euuwm/QTXAMOcyiFCcrx0/S2jGvFlKJ2Iro8rsmYL53dlblp3LkUQVFzEidHhvIPPvcIsxDhl2wkBE+I6YVGzA==, + integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==, } cpu: [riscv64] os: [linux] + libc: [musl] - "@rollup/rollup-linux-s390x-gnu@4.48.1": + "@rollup/rollup-linux-s390x-gnu@4.57.1": resolution: { - integrity: sha512-w8mULUjmPdWLJgmTYJx/W6Qhln1a+yqvgwmGXcQl2vFBkWsKGUBRbtLRuKJUln8Uaimf07zgJNxOhHOvjSQmBQ==, + integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==, } cpu: [s390x] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-x64-gnu@4.48.1": + "@rollup/rollup-linux-x64-gnu@4.57.1": resolution: { - integrity: sha512-90taWXCWxTbClWuMZD0DKYohY1EovA+W5iytpE89oUPmT5O1HFdf8cuuVIylE6vCbrGdIGv85lVRzTcpTRZ+kA==, + integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==, } cpu: [x64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-x64-musl@4.48.1": + "@rollup/rollup-linux-x64-musl@4.57.1": resolution: { - integrity: sha512-2Gu29SkFh1FfTRuN1GR1afMuND2GKzlORQUP3mNMJbqdndOg7gNsa81JnORctazHRokiDzQ5+MLE5XYmZW5VWg==, + integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==, } cpu: [x64] os: [linux] + libc: [musl] - "@rollup/rollup-win32-arm64-msvc@4.48.1": + "@rollup/rollup-openbsd-x64@4.57.1": resolution: { - integrity: sha512-6kQFR1WuAO50bxkIlAVeIYsz3RUx+xymwhTo9j94dJ+kmHe9ly7muH23sdfWduD0BA8pD9/yhonUvAjxGh34jQ==, + integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==, + } + cpu: [x64] + os: [openbsd] + + "@rollup/rollup-openharmony-arm64@4.57.1": + resolution: + { + integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==, + } + cpu: [arm64] + os: [openharmony] + + "@rollup/rollup-win32-arm64-msvc@4.57.1": + resolution: + { + integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==, } cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.48.1": + "@rollup/rollup-win32-ia32-msvc@4.57.1": resolution: { - integrity: sha512-RUyZZ/mga88lMI3RlXFs4WQ7n3VyU07sPXmMG7/C1NOi8qisUg57Y7LRarqoGoAiopmGmChUhSwfpvQ3H5iGSQ==, + integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==, } cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.48.1": + "@rollup/rollup-win32-x64-gnu@4.57.1": resolution: { - integrity: sha512-8a/caCUN4vkTChxkaIJcMtwIVcBhi4X2PQRoT+yCK3qRYaZ7cURrmJFL5Ux9H9RaMIXj9RuihckdmkBX3zZsgg==, + integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==, } cpu: [x64] os: [win32] - "@shikijs/core@3.11.0": + "@rollup/rollup-win32-x64-msvc@4.57.1": resolution: { - integrity: sha512-oJwU+DxGqp6lUZpvtQgVOXNZcVsirN76tihOLBmwILkKuRuwHteApP8oTXmL4tF5vS5FbOY0+8seXmiCoslk4g==, + integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==, + } + cpu: [x64] + os: [win32] + + "@shikijs/core@3.22.0": + resolution: + { + integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==, } - "@shikijs/core@3.13.0": + "@shikijs/engine-javascript@3.22.0": resolution: { - integrity: sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==, + integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==, } - "@shikijs/engine-javascript@3.11.0": + "@shikijs/engine-oniguruma@3.22.0": resolution: { - integrity: sha512-6/ov6pxrSvew13k9ztIOnSBOytXeKs5kfIR7vbhdtVRg+KPzvp2HctYGeWkqv7V6YIoLicnig/QF3iajqyElZA==, + integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==, } - "@shikijs/engine-javascript@3.13.0": + "@shikijs/langs@3.22.0": resolution: { - integrity: sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==, + integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==, } - "@shikijs/engine-oniguruma@3.11.0": + "@shikijs/themes@3.22.0": resolution: { - integrity: sha512-4DwIjIgETK04VneKbfOE4WNm4Q7WC1wo95wv82PoHKdqX4/9qLRUwrfKlmhf0gAuvT6GHy0uc7t9cailk6Tbhw==, + integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==, } - "@shikijs/engine-oniguruma@3.13.0": + "@shikijs/types@3.22.0": resolution: { - integrity: sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==, - } - - "@shikijs/langs@3.11.0": - resolution: - { - integrity: sha512-Njg/nFL4HDcf/ObxcK2VeyidIq61EeLmocrwTHGGpOQx0BzrPWM1j55XtKQ1LvvDWH15cjQy7rg96aJ1/l63uw==, - } - - "@shikijs/langs@3.13.0": - resolution: - { - integrity: sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==, - } - - "@shikijs/themes@3.11.0": - resolution: - { - integrity: sha512-BhhWRzCTEk2CtWt4S4bgsOqPJRkapvxdsifAwqP+6mk5uxboAQchc0etiJ0iIasxnMsb764qGD24DK9albcU9Q==, - } - - "@shikijs/themes@3.13.0": - resolution: - { - integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==, - } - - "@shikijs/types@3.11.0": - resolution: - { - integrity: sha512-RB7IMo2E7NZHyfkqAuaf4CofyY8bPzjWPjJRzn6SEak3b46fIQyG6Vx5fG/obqkfppQ+g8vEsiD7Uc6lqQt32Q==, - } - - "@shikijs/types@3.13.0": - resolution: - { - integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==, + integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==, } "@shikijs/vscode-textmate@10.0.2": @@ -974,12 +1255,6 @@ packages: integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==, } - "@swc/helpers@0.5.17": - resolution: - { - integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==, - } - "@types/debug@4.1.12": resolution: { @@ -998,12 +1273,6 @@ packages: integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, } - "@types/fontkit@2.0.8": - resolution: - { - integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==, - } - "@types/hast@3.0.4": resolution: { @@ -1052,12 +1321,6 @@ packages: integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==, } - "@types/node@24.3.0": - resolution: - { - integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==, - } - "@types/sax@1.2.7": resolution: { @@ -1109,10 +1372,10 @@ packages: ajv: optional: true - ajv@8.17.1: + ajv@8.18.0: resolution: { - integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==, + integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==, } ansi-align@3.0.1: @@ -1128,17 +1391,17 @@ packages: } engines: { node: ">=8" } - ansi-regex@6.2.0: + ansi-regex@6.2.2: resolution: { - integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==, + integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, } engines: { node: ">=12" } - ansi-styles@6.2.1: + ansi-styles@6.2.3: resolution: { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, + integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==, } engines: { node: ">=12" } @@ -1181,18 +1444,18 @@ packages: } hasBin: true - astro-expressive-code@0.41.3: + astro-expressive-code@0.41.6: resolution: { - integrity: sha512-u+zHMqo/QNLE2eqYRCrK3+XMlKakv33Bzuz+56V1gs8H0y6TZ0hIi3VNbIxeTn51NLn+mJfUV/A0kMNfE4rANw==, + integrity: sha512-l47tb1uhmVIebHUkw+HEPtU/av0G4O8Q34g2cbkPvC7/e9ZhANcjUUciKt9Hp6gSVDdIuXBBLwJQn2LkeGMOAw==, } peerDependencies: - astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta - astro@5.14.1: + astro@5.17.2: resolution: { - integrity: sha512-gPa8NY7/lP8j8g81iy8UwANF3+aukKRWS68IlthZQNgykpg80ne6lbHOp6FErYycxQ1TUhgEfkXVDQZAoJx8Bg==, + integrity: sha512-7jnMqGo53hOQNwo1N/wqeOvUp8wwW/p+DeerSjSkHNx8L/1mhy6P7rVo7EhdmF8DpKqw0tl/B5Fx1WcIzg1ysA==, } engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0" } @@ -1217,12 +1480,6 @@ packages: integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==, } - base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } - bcp-47-match@2.0.3: resolution: { @@ -1235,12 +1492,6 @@ packages: integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==, } - blob-to-buffer@1.2.9: - resolution: - { - integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==, - } - boolbase@1.0.0: resolution: { @@ -1254,12 +1505,6 @@ packages: } engines: { node: ">=18" } - brotli@1.3.3: - resolution: - { - integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==, - } - camelcase@8.0.0: resolution: { @@ -1273,10 +1518,10 @@ packages: integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, } - chalk@5.6.0: + chalk@5.6.2: resolution: { - integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==, + integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==, } engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } @@ -1304,17 +1549,17 @@ packages: integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==, } - chokidar@4.0.3: + chokidar@5.0.0: resolution: { - integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==, + integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==, } - engines: { node: ">= 14.16.0" } + engines: { node: ">= 20.19.0" } - ci-info@4.3.0: + ci-info@4.4.0: resolution: { - integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==, + integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==, } engines: { node: ">=8" } @@ -1325,13 +1570,6 @@ packages: } engines: { node: ">=10" } - clone@2.1.2: - resolution: - { - integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==, - } - engines: { node: ">=0.8" } - clsx@2.1.1: resolution: { @@ -1351,6 +1589,13 @@ packages: integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, } + commander@11.1.0: + resolution: + { + integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, + } + engines: { node: ">=16" } + common-ancestor-path@1.0.1: resolution: { @@ -1363,31 +1608,38 @@ packages: integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==, } - cookie@1.0.2: + cookie@1.1.1: resolution: { - integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==, + integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==, } engines: { node: ">=18" } - cross-fetch@3.2.0: - resolution: - { - integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==, - } - crossws@0.3.5: resolution: { integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==, } - css-selector-parser@3.1.3: + css-select@5.2.2: resolution: { - integrity: sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==, + integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, } + css-selector-parser@3.3.0: + resolution: + { + integrity: sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==, + } + + css-tree@2.2.1: + resolution: + { + integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==, + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: ">=7.0.0" } + css-tree@3.1.0: resolution: { @@ -1395,6 +1647,13 @@ packages: } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } + css-what@6.2.2: + resolution: + { + integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, + } + engines: { node: ">= 6" } + cssesc@3.0.0: resolution: { @@ -1403,10 +1662,17 @@ packages: engines: { node: ">=4" } hasBin: true - debug@4.4.1: + csso@5.0.5: resolution: { - integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==, + integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==, + } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: ">=7.0.0" } + + debug@4.4.3: + resolution: + { + integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, } engines: { node: ">=6.0" } peerDependencies: @@ -1415,10 +1681,10 @@ packages: supports-color: optional: true - decode-named-character-reference@1.2.0: + decode-named-character-reference@1.3.0: resolution: { - integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==, + integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==, } defu@6.1.4: @@ -1440,10 +1706,10 @@ packages: integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==, } - detect-libc@2.1.1: + detect-libc@2.1.2: resolution: { - integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==, + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, } engines: { node: ">=8" } @@ -1454,10 +1720,10 @@ packages: } engines: { node: ">=18" } - devalue@5.3.2: + devalue@5.6.2: resolution: { - integrity: sha512-UDsjUbpQn9kvm68slnrs+mfxwFkIflOhkanmyabZ8zOYk8SMEIbJ3TK+88g70hSIeytu4y18f0z/hYHMTrXIWw==, + integrity: sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==, } devlop@1.1.0: @@ -1466,16 +1732,10 @@ packages: integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, } - dfa@1.2.0: + diff@8.0.3: resolution: { - integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==, - } - - diff@5.2.0: - resolution: - { - integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==, + integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==, } engines: { node: ">=0.3.1" } @@ -1492,6 +1752,31 @@ packages: integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, } + dom-serializer@2.0.0: + resolution: + { + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, + } + + domelementtype@2.3.0: + resolution: + { + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, + } + + domhandler@5.0.3: + resolution: + { + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, + } + engines: { node: ">= 4" } + + domutils@3.2.2: + resolution: + { + integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, + } + dset@3.1.4: resolution: { @@ -1499,10 +1784,10 @@ packages: } engines: { node: ">=4" } - emoji-regex@10.4.0: + emoji-regex@10.6.0: resolution: { - integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==, + integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==, } emoji-regex@8.0.0: @@ -1511,6 +1796,13 @@ packages: integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, } + entities@4.5.0: + resolution: + { + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, + } + engines: { node: ">=0.12" } + entities@6.0.1: resolution: { @@ -1536,10 +1828,18 @@ packages: integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==, } - esbuild@0.25.9: + esbuild@0.25.12: resolution: { - integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==, + integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==, + } + engines: { node: ">=18" } + hasBin: true + + esbuild@0.27.3: + resolution: + { + integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==, } engines: { node: ">=18" } hasBin: true @@ -1599,16 +1899,16 @@ packages: integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, } - eventemitter3@5.0.1: + eventemitter3@5.0.4: resolution: { - integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, + integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==, } - expressive-code@0.41.3: + expressive-code@0.41.6: resolution: { - integrity: sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==, + integrity: sha512-W/5+IQbrpCIM5KGLjO35wlp1NCwDOOVQb+PAvzEoGkW1xjGM807ZGfBKptNWH6UECvt6qgmLyWolCMYKh7eQmA==, } extend@3.0.2: @@ -1648,17 +1948,18 @@ packages: } engines: { node: ">=8" } - fontace@0.3.0: + fontace@0.4.1: resolution: { - integrity: sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==, + integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==, } - fontkit@2.0.4: + fontkitten@1.0.2: resolution: { - integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==, + integrity: sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==, } + engines: { node: ">=20" } fsevents@2.3.3: resolution: @@ -1668,10 +1969,10 @@ packages: engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] - get-east-asian-width@1.3.0: + get-east-asian-width@1.4.0: resolution: { - integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==, + integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==, } engines: { node: ">=18" } @@ -1681,10 +1982,10 @@ packages: integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==, } - h3@1.15.4: + h3@1.15.5: resolution: { - integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==, + integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==, } hast-util-embedded@3.0.0: @@ -1777,10 +2078,10 @@ packages: integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==, } - hast-util-to-parse5@8.0.0: + hast-util-to-parse5@8.0.1: resolution: { - integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==, + integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==, } hast-util-to-string@3.0.1: @@ -1837,22 +2138,16 @@ packages: integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==, } - import-meta-resolve@4.1.0: - resolution: - { - integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==, - } - import-meta-resolve@4.2.0: resolution: { integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==, } - inline-style-parser@0.2.4: + inline-style-parser@0.2.7: resolution: { - integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==, + integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==, } iron-webcrypto@1.2.1: @@ -1915,10 +2210,10 @@ packages: } engines: { node: ">=12" } - is-wsl@3.1.0: + is-wsl@3.1.1: resolution: { - integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==, + integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==, } engines: { node: ">=16" } @@ -1928,10 +2223,10 @@ packages: integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, } - js-yaml@4.1.0: + js-yaml@4.1.1: resolution: { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, } hasBin: true @@ -1955,13 +2250,6 @@ packages: } engines: { node: ">=6" } - kleur@4.1.5: - resolution: - { - integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, - } - engines: { node: ">=6" } - klona@2.0.6: resolution: { @@ -1982,22 +2270,23 @@ packages: integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, } - lru-cache@10.4.3: + lru-cache@11.2.6: resolution: { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, + integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==, + } + engines: { node: 20 || >=22 } + + magic-string@0.30.21: + resolution: + { + integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, } - magic-string@0.30.18: + magicast@0.5.2: resolution: { - integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==, - } - - magicast@0.3.5: - resolution: - { - integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==, + integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==, } markdown-extensions@2.0.0: @@ -2103,10 +2392,10 @@ packages: integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==, } - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: resolution: { - integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==, + integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==, } mdast-util-to-markdown@2.1.2: @@ -2121,6 +2410,12 @@ packages: integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==, } + mdn-data@2.0.28: + resolution: + { + integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==, + } + mdn-data@2.12.2: resolution: { @@ -2383,22 +2678,10 @@ packages: integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==, } - node-fetch@2.7.0: + node-mock-http@1.0.4: resolution: { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-mock-http@1.0.2: - resolution: - { - integrity: sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g==, + integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==, } normalize-path@3.0.0: @@ -2414,10 +2697,10 @@ packages: integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, } - ofetch@1.4.1: + ofetch@1.5.1: resolution: { - integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==, + integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==, } ohash@2.0.11: @@ -2432,10 +2715,10 @@ packages: integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==, } - oniguruma-to-es@4.3.3: + oniguruma-to-es@4.3.4: resolution: { - integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==, + integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==, } openapi-types@12.1.3: @@ -2451,10 +2734,10 @@ packages: } engines: { node: ">=18" } - p-queue@8.1.0: + p-queue@8.1.1: resolution: { - integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==, + integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==, } engines: { node: ">=18" } @@ -2465,25 +2748,19 @@ packages: } engines: { node: ">=14.16" } - package-manager-detector@1.3.0: + package-manager-detector@1.6.0: resolution: { - integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==, + integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==, } - pagefind@1.3.0: + pagefind@1.4.0: resolution: { - integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==, + integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==, } hasBin: true - pako@0.2.9: - resolution: - { - integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==, - } - parse-entities@4.0.2: resolution: { @@ -2502,6 +2779,12 @@ packages: integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, } + piccolore@0.1.3: + resolution: + { + integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==, + } + picocolors@1.1.1: resolution: { @@ -2559,12 +2842,6 @@ packages: } engines: { node: ">= 6" } - property-information@6.5.0: - resolution: - { - integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==, - } - property-information@7.1.0: resolution: { @@ -2577,12 +2854,12 @@ packages: integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==, } - readdirp@4.1.2: + readdirp@5.0.0: resolution: { - integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==, + integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==, } - engines: { node: ">= 14.18.0" } + engines: { node: ">= 20.19.0" } recma-build-jsx@1.0.0: resolution: @@ -2622,16 +2899,16 @@ packages: integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==, } - regex@6.0.1: + regex@6.1.0: resolution: { - integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==, + integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==, } - rehype-expressive-code@0.41.3: + rehype-expressive-code@0.41.6: resolution: { - integrity: sha512-8d9Py4c/V6I/Od2VIXFAdpiO2kc0SV2qTJsRAaqSIcM9aruW4ASLNe2kOEo1inXAAkIhpFzAHTc358HKbvpNUg==, + integrity: sha512-aBMX8kxPtjmDSFUdZlAWJkMvsQ4ZMASfee90JWIAV8tweltXLzkWC3q++43ToTelI8ac5iC0B3/S/Cl4Ql1y2g==, } rehype-format@5.0.1: @@ -2682,10 +2959,10 @@ packages: integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==, } - remark-mdx@3.1.0: + remark-mdx@3.1.1: resolution: { - integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==, + integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==, } remark-parse@11.0.0: @@ -2720,12 +2997,6 @@ packages: } engines: { node: ">=0.10.0" } - restructure@3.0.2: - resolution: - { - integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==, - } - retext-latin@4.0.0: resolution: { @@ -2750,45 +3021,40 @@ packages: integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==, } - rollup@4.48.1: + rollup@4.57.1: resolution: { - integrity: sha512-jVG20NvbhTYDkGAty2/Yh7HK6/q3DGSRH4o8ALKGArmMuaauM9kLfoMZ+WliPwA5+JHr2lTn3g557FxBV87ifg==, + integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==, } engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true - sax@1.4.1: + sax@1.4.4: resolution: { - integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, + integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==, } + engines: { node: ">=11.0.0" } - semver@7.7.2: + semver@7.7.4: resolution: { - integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==, + integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, } engines: { node: ">=10" } hasBin: true - sharp@0.34.4: + sharp@0.34.5: resolution: { - integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==, + integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - shiki@3.11.0: + shiki@3.22.0: resolution: { - integrity: sha512-VgKumh/ib38I1i3QkMn6mAQA6XjjQubqaAYhfge71glAll0/4xnt8L2oSuC45Qcr/G5Kbskj4RliMQddGmy/Og==, - } - - shiki@3.13.0: - resolution: - { - integrity: sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==, + integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==, } sisteransi@1.0.5: @@ -2797,18 +3063,18 @@ packages: integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, } - sitemap@8.0.0: + sitemap@8.0.2: resolution: { - integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==, + integrity: sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ==, } engines: { node: ">=14.0.0", npm: ">=6.0.0" } hasBin: true - smol-toml@1.4.2: + smol-toml@1.6.0: resolution: { - integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==, + integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==, } engines: { node: ">= 18" } @@ -2832,10 +3098,10 @@ packages: integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, } - starlight-openapi@0.20.0: + starlight-openapi@0.22.0: resolution: { - integrity: sha512-IA8mBbuscQPUN5Fy5+7xxJqW9851FhRlWajAD4GOm2RYlaCesO8qrIq7qElfTIdcfi7XP8m3a+zxrJ7yz1FzYA==, + integrity: sha512-4H/fywAoTcvKbcv+xBr9LdrjMc5geDOSnydvzpiOxjxkHvI6g+7uPhWNCejnJPyZUd/MC1MI23tvYug85d/WzA==, } engines: { node: ">=18.17.1" } peerDependencies: @@ -2876,50 +3142,53 @@ packages: } engines: { node: ">=8" } - strip-ansi@7.1.0: + strip-ansi@7.1.2: resolution: { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, + integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==, } engines: { node: ">=12" } - style-to-js@1.1.17: + style-to-js@1.1.21: resolution: { - integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==, + integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==, } - style-to-object@1.0.9: + style-to-object@1.0.14: resolution: { - integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==, + integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==, } + svgo@4.0.0: + resolution: + { + integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==, + } + engines: { node: ">=16" } + hasBin: true + tiny-inflate@1.0.3: resolution: { integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==, } - tinyexec@0.3.2: + tinyexec@1.0.2: resolution: { - integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==, + integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==, } + engines: { node: ">=18" } - tinyglobby@0.2.14: + tinyglobby@0.2.15: resolution: { - integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==, + integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==, } engines: { node: ">=12.0.0" } - tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } - trim-lines@3.0.1: resolution: { @@ -2958,18 +3227,18 @@ packages: } engines: { node: ">=16" } - typescript@5.9.2: + typescript@5.9.3: resolution: { - integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==, + integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, } engines: { node: ">=14.17" } hasBin: true - ufo@1.6.1: + ufo@1.6.3: resolution: { - integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==, + integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==, } ultrahtml@1.6.0: @@ -2984,34 +3253,16 @@ packages: integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==, } - undici-types@7.10.0: - resolution: - { - integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==, - } - - unicode-properties@1.4.1: - resolution: - { - integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==, - } - - unicode-trie@2.0.0: - resolution: - { - integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==, - } - unified@11.0.5: resolution: { integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==, } - unifont@0.5.2: + unifont@0.7.4: resolution: { - integrity: sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg==, + integrity: sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==, } unist-util-find-after@5.0.0: @@ -3020,10 +3271,10 @@ packages: integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==, } - unist-util-is@6.0.0: + unist-util-is@6.0.1: resolution: { - integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==, + integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==, } unist-util-modify-children@4.0.0: @@ -3062,22 +3313,22 @@ packages: integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==, } - unist-util-visit-parents@6.0.1: + unist-util-visit-parents@6.0.2: resolution: { - integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==, + integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==, } - unist-util-visit@5.0.0: + unist-util-visit@5.1.0: resolution: { - integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==, + integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==, } - unstorage@1.17.0: + unstorage@1.17.4: resolution: { - integrity: sha512-l9Z7lBiwtNp8ZmcoZ/dmPkFXFdtEdZtTZafCSnEIj3YvtkXeGAtL2rN8MQFy/0cs4eOLpuRJMp9ivdug7TCvww==, + integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==, } peerDependencies: "@azure/app-configuration": ^1.8.0 @@ -3086,14 +3337,14 @@ packages: "@azure/identity": ^4.6.0 "@azure/keyvault-secrets": ^4.9.0 "@azure/storage-blob": ^12.26.0 - "@capacitor/preferences": ^6.0.3 || ^7.0.0 + "@capacitor/preferences": ^6 || ^7 || ^8 "@deno/kv": ">=0.9.0" "@netlify/blobs": ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 "@planetscale/database": ^1.19.0 "@upstash/redis": ^1.34.3 "@vercel/blob": ">=0.27.1" - "@vercel/functions": ^2.2.12 - "@vercel/kv": ^1.0.1 + "@vercel/functions": ^2.2.12 || ^3.0.0 + "@vercel/kv": ^1 || ^2 || ^3 aws4fetch: ^1.0.20 db0: ">=0.2.1" idb-keyval: ^6.2.1 @@ -3170,10 +3421,10 @@ packages: integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, } - vite@6.3.6: + vite@6.4.1: resolution: { - integrity: sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==, + integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==, } engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } hasBin: true @@ -3230,18 +3481,6 @@ packages: integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==, } - webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } - - whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } - which-pm-runs@1.1.0: resolution: { @@ -3256,10 +3495,10 @@ packages: } engines: { node: ">=18" } - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: resolution: { - integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==, + integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==, } engines: { node: ">=18" } @@ -3276,10 +3515,10 @@ packages: } engines: { node: ">=12" } - yocto-queue@1.2.1: + yocto-queue@1.2.2: resolution: { - integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==, + integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==, } engines: { node: ">=12.20" } @@ -3297,13 +3536,13 @@ packages: } engines: { node: ">=18" } - zod-to-json-schema@3.24.6: + zod-to-json-schema@3.25.1: resolution: { - integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==, + integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==, } peerDependencies: - zod: ^3.24.1 + zod: ^3.25 || ^4 zod-to-ts@1.2.0: resolution: @@ -3330,49 +3569,21 @@ snapshots: "@apidevtools/json-schema-ref-parser@13.0.5": dependencies: "@types/json-schema": 7.0.15 - js-yaml: 4.1.0 + js-yaml: 4.1.1 - "@astrojs/compiler@2.12.2": {} + "@astrojs/compiler@2.13.1": {} - "@astrojs/internal-helpers@0.7.2": {} + "@astrojs/internal-helpers@0.7.5": {} - "@astrojs/internal-helpers@0.7.3": {} - - "@astrojs/markdown-remark@6.3.6": + "@astrojs/markdown-remark@6.3.10": dependencies: - "@astrojs/internal-helpers": 0.7.2 - "@astrojs/prism": 3.3.0 - github-slugger: 2.0.0 - hast-util-from-html: 2.0.3 - hast-util-to-text: 4.0.2 - import-meta-resolve: 4.1.0 - js-yaml: 4.1.0 - mdast-util-definitions: 6.0.0 - rehype-raw: 7.0.0 - rehype-stringify: 10.0.1 - remark-gfm: 4.0.1 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - remark-smartypants: 3.0.2 - shiki: 3.11.0 - smol-toml: 1.4.2 - unified: 11.0.5 - unist-util-remove-position: 5.0.0 - unist-util-visit: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - "@astrojs/markdown-remark@6.3.7": - dependencies: - "@astrojs/internal-helpers": 0.7.3 + "@astrojs/internal-helpers": 0.7.5 "@astrojs/prism": 3.3.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 import-meta-resolve: 4.2.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 @@ -3380,31 +3591,31 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - shiki: 3.13.0 - smol-toml: 1.4.2 + shiki: 3.22.0 + smol-toml: 1.6.0 unified: 11.0.5 unist-util-remove-position: 5.0.0 - unist-util-visit: 5.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 vfile: 6.0.3 transitivePeerDependencies: - supports-color - "@astrojs/mdx@4.3.4(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))": + "@astrojs/mdx@4.3.13(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3))": dependencies: - "@astrojs/markdown-remark": 6.3.6 - "@mdx-js/mdx": 3.1.0(acorn@8.15.0) + "@astrojs/markdown-remark": 6.3.10 + "@mdx-js/mdx": 3.1.1 acorn: 8.15.0 - astro: 5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + astro: 5.17.2(rollup@4.57.1)(typescript@5.9.3) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 - kleur: 4.1.5 + piccolore: 0.1.3 rehype-raw: 7.0.0 remark-gfm: 4.0.1 remark-smartypants: 3.0.2 source-map: 0.7.6 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - supports-color @@ -3413,195 +3624,270 @@ snapshots: dependencies: prismjs: 1.30.0 - "@astrojs/sitemap@3.5.1": + "@astrojs/sitemap@3.7.0": dependencies: - sitemap: 8.0.0 + sitemap: 8.0.2 stream-replace-string: 2.0.0 zod: 3.25.76 - "@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))": + "@astrojs/starlight@0.37.6(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3))": dependencies: - "@astrojs/markdown-remark": 6.3.6 - "@astrojs/mdx": 4.3.4(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) - "@astrojs/sitemap": 3.5.1 - "@pagefind/default-ui": 1.3.0 + "@astrojs/markdown-remark": 6.3.10 + "@astrojs/mdx": 4.3.13(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3)) + "@astrojs/sitemap": 3.7.0 + "@pagefind/default-ui": 1.4.0 "@types/hast": 3.0.4 "@types/js-yaml": 4.0.9 "@types/mdast": 4.0.4 - astro: 5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) - astro-expressive-code: 0.41.3(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) + astro: 5.17.2(rollup@4.57.1)(typescript@5.9.3) + astro-expressive-code: 0.41.6(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 hast-util-to-string: 3.0.1 hastscript: 9.0.1 i18next: 23.16.8 - js-yaml: 4.1.0 + js-yaml: 4.1.1 klona: 2.0.6 + magic-string: 0.30.21 mdast-util-directive: 3.1.0 mdast-util-to-markdown: 2.1.2 mdast-util-to-string: 4.0.0 - pagefind: 1.3.0 + pagefind: 1.4.0 rehype: 13.0.2 rehype-format: 5.0.1 remark-directive: 3.0.1 ultrahtml: 1.6.0 unified: 11.0.5 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - supports-color "@astrojs/telemetry@3.3.0": dependencies: - ci-info: 4.3.0 - debug: 4.4.1 + ci-info: 4.4.0 + debug: 4.4.3 dlv: 1.1.3 dset: 3.1.4 is-docker: 3.0.0 - is-wsl: 3.1.0 + is-wsl: 3.1.1 which-pm-runs: 1.1.0 transitivePeerDependencies: - supports-color - "@babel/code-frame@7.27.1": + "@babel/code-frame@7.29.0": dependencies: - "@babel/helper-validator-identifier": 7.27.1 + "@babel/helper-validator-identifier": 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 "@babel/helper-string-parser@7.27.1": {} - "@babel/helper-validator-identifier@7.27.1": {} + "@babel/helper-validator-identifier@7.28.5": {} - "@babel/parser@7.28.3": + "@babel/parser@7.29.0": dependencies: - "@babel/types": 7.28.2 + "@babel/types": 7.29.0 - "@babel/runtime@7.28.3": {} + "@babel/runtime@7.28.6": {} - "@babel/types@7.28.2": + "@babel/types@7.29.0": dependencies: "@babel/helper-string-parser": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 + "@babel/helper-validator-identifier": 7.28.5 - "@capsizecss/unpack@2.4.0": + "@capsizecss/unpack@4.0.0": dependencies: - blob-to-buffer: 1.2.9 - cross-fetch: 3.2.0 - fontkit: 2.0.4 - transitivePeerDependencies: - - encoding + fontkitten: 1.0.2 - "@ctrl/tinycolor@4.1.0": {} + "@ctrl/tinycolor@4.2.0": {} - "@emnapi/runtime@1.5.0": + "@emnapi/runtime@1.8.1": dependencies: tslib: 2.8.1 optional: true - "@esbuild/aix-ppc64@0.25.9": + "@esbuild/aix-ppc64@0.25.12": optional: true - "@esbuild/android-arm64@0.25.9": + "@esbuild/aix-ppc64@0.27.3": optional: true - "@esbuild/android-arm@0.25.9": + "@esbuild/android-arm64@0.25.12": optional: true - "@esbuild/android-x64@0.25.9": + "@esbuild/android-arm64@0.27.3": optional: true - "@esbuild/darwin-arm64@0.25.9": + "@esbuild/android-arm@0.25.12": optional: true - "@esbuild/darwin-x64@0.25.9": + "@esbuild/android-arm@0.27.3": optional: true - "@esbuild/freebsd-arm64@0.25.9": + "@esbuild/android-x64@0.25.12": optional: true - "@esbuild/freebsd-x64@0.25.9": + "@esbuild/android-x64@0.27.3": optional: true - "@esbuild/linux-arm64@0.25.9": + "@esbuild/darwin-arm64@0.25.12": optional: true - "@esbuild/linux-arm@0.25.9": + "@esbuild/darwin-arm64@0.27.3": optional: true - "@esbuild/linux-ia32@0.25.9": + "@esbuild/darwin-x64@0.25.12": optional: true - "@esbuild/linux-loong64@0.25.9": + "@esbuild/darwin-x64@0.27.3": optional: true - "@esbuild/linux-mips64el@0.25.9": + "@esbuild/freebsd-arm64@0.25.12": optional: true - "@esbuild/linux-ppc64@0.25.9": + "@esbuild/freebsd-arm64@0.27.3": optional: true - "@esbuild/linux-riscv64@0.25.9": + "@esbuild/freebsd-x64@0.25.12": optional: true - "@esbuild/linux-s390x@0.25.9": + "@esbuild/freebsd-x64@0.27.3": optional: true - "@esbuild/linux-x64@0.25.9": + "@esbuild/linux-arm64@0.25.12": optional: true - "@esbuild/netbsd-arm64@0.25.9": + "@esbuild/linux-arm64@0.27.3": optional: true - "@esbuild/netbsd-x64@0.25.9": + "@esbuild/linux-arm@0.25.12": optional: true - "@esbuild/openbsd-arm64@0.25.9": + "@esbuild/linux-arm@0.27.3": optional: true - "@esbuild/openbsd-x64@0.25.9": + "@esbuild/linux-ia32@0.25.12": optional: true - "@esbuild/openharmony-arm64@0.25.9": + "@esbuild/linux-ia32@0.27.3": optional: true - "@esbuild/sunos-x64@0.25.9": + "@esbuild/linux-loong64@0.25.12": optional: true - "@esbuild/win32-arm64@0.25.9": + "@esbuild/linux-loong64@0.27.3": optional: true - "@esbuild/win32-ia32@0.25.9": + "@esbuild/linux-mips64el@0.25.12": optional: true - "@esbuild/win32-x64@0.25.9": + "@esbuild/linux-mips64el@0.27.3": optional: true - "@expressive-code/core@0.41.3": + "@esbuild/linux-ppc64@0.25.12": + optional: true + + "@esbuild/linux-ppc64@0.27.3": + optional: true + + "@esbuild/linux-riscv64@0.25.12": + optional: true + + "@esbuild/linux-riscv64@0.27.3": + optional: true + + "@esbuild/linux-s390x@0.25.12": + optional: true + + "@esbuild/linux-s390x@0.27.3": + optional: true + + "@esbuild/linux-x64@0.25.12": + optional: true + + "@esbuild/linux-x64@0.27.3": + optional: true + + "@esbuild/netbsd-arm64@0.25.12": + optional: true + + "@esbuild/netbsd-arm64@0.27.3": + optional: true + + "@esbuild/netbsd-x64@0.25.12": + optional: true + + "@esbuild/netbsd-x64@0.27.3": + optional: true + + "@esbuild/openbsd-arm64@0.25.12": + optional: true + + "@esbuild/openbsd-arm64@0.27.3": + optional: true + + "@esbuild/openbsd-x64@0.25.12": + optional: true + + "@esbuild/openbsd-x64@0.27.3": + optional: true + + "@esbuild/openharmony-arm64@0.25.12": + optional: true + + "@esbuild/openharmony-arm64@0.27.3": + optional: true + + "@esbuild/sunos-x64@0.25.12": + optional: true + + "@esbuild/sunos-x64@0.27.3": + optional: true + + "@esbuild/win32-arm64@0.25.12": + optional: true + + "@esbuild/win32-arm64@0.27.3": + optional: true + + "@esbuild/win32-ia32@0.25.12": + optional: true + + "@esbuild/win32-ia32@0.27.3": + optional: true + + "@esbuild/win32-x64@0.25.12": + optional: true + + "@esbuild/win32-x64@0.27.3": + optional: true + + "@expressive-code/core@0.41.6": dependencies: - "@ctrl/tinycolor": 4.1.0 + "@ctrl/tinycolor": 4.2.0 hast-util-select: 6.0.4 hast-util-to-html: 9.0.5 hast-util-to-text: 4.0.2 hastscript: 9.0.1 postcss: 8.5.6 postcss-nested: 6.2.0(postcss@8.5.6) - unist-util-visit: 5.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 - "@expressive-code/plugin-frames@0.41.3": + "@expressive-code/plugin-frames@0.41.6": dependencies: - "@expressive-code/core": 0.41.3 + "@expressive-code/core": 0.41.6 - "@expressive-code/plugin-shiki@0.41.3": + "@expressive-code/plugin-shiki@0.41.6": dependencies: - "@expressive-code/core": 0.41.3 - shiki: 3.11.0 + "@expressive-code/core": 0.41.6 + shiki: 3.22.0 - "@expressive-code/plugin-text-markers@0.41.3": + "@expressive-code/plugin-text-markers@0.41.6": dependencies: - "@expressive-code/core": 0.41.3 + "@expressive-code/core": 0.41.6 "@fontsource/inter@5.2.8": {} @@ -3611,100 +3897,109 @@ snapshots: "@img/colour@1.0.0": {} - "@img/sharp-darwin-arm64@0.34.4": + "@img/sharp-darwin-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-arm64": 1.2.3 + "@img/sharp-libvips-darwin-arm64": 1.2.4 optional: true - "@img/sharp-darwin-x64@0.34.4": + "@img/sharp-darwin-x64@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-x64": 1.2.3 + "@img/sharp-libvips-darwin-x64": 1.2.4 optional: true - "@img/sharp-libvips-darwin-arm64@1.2.3": + "@img/sharp-libvips-darwin-arm64@1.2.4": optional: true - "@img/sharp-libvips-darwin-x64@1.2.3": + "@img/sharp-libvips-darwin-x64@1.2.4": optional: true - "@img/sharp-libvips-linux-arm64@1.2.3": + "@img/sharp-libvips-linux-arm64@1.2.4": optional: true - "@img/sharp-libvips-linux-arm@1.2.3": + "@img/sharp-libvips-linux-arm@1.2.4": optional: true - "@img/sharp-libvips-linux-ppc64@1.2.3": + "@img/sharp-libvips-linux-ppc64@1.2.4": optional: true - "@img/sharp-libvips-linux-s390x@1.2.3": + "@img/sharp-libvips-linux-riscv64@1.2.4": optional: true - "@img/sharp-libvips-linux-x64@1.2.3": + "@img/sharp-libvips-linux-s390x@1.2.4": optional: true - "@img/sharp-libvips-linuxmusl-arm64@1.2.3": + "@img/sharp-libvips-linux-x64@1.2.4": optional: true - "@img/sharp-libvips-linuxmusl-x64@1.2.3": + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": optional: true - "@img/sharp-linux-arm64@0.34.4": + "@img/sharp-libvips-linuxmusl-x64@1.2.4": + optional: true + + "@img/sharp-linux-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm64": 1.2.3 + "@img/sharp-libvips-linux-arm64": 1.2.4 optional: true - "@img/sharp-linux-arm@0.34.4": + "@img/sharp-linux-arm@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm": 1.2.3 + "@img/sharp-libvips-linux-arm": 1.2.4 optional: true - "@img/sharp-linux-ppc64@0.34.4": + "@img/sharp-linux-ppc64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-ppc64": 1.2.3 + "@img/sharp-libvips-linux-ppc64": 1.2.4 optional: true - "@img/sharp-linux-s390x@0.34.4": + "@img/sharp-linux-riscv64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-s390x": 1.2.3 + "@img/sharp-libvips-linux-riscv64": 1.2.4 optional: true - "@img/sharp-linux-x64@0.34.4": + "@img/sharp-linux-s390x@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-x64": 1.2.3 + "@img/sharp-libvips-linux-s390x": 1.2.4 optional: true - "@img/sharp-linuxmusl-arm64@0.34.4": + "@img/sharp-linux-x64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64": 1.2.3 + "@img/sharp-libvips-linux-x64": 1.2.4 optional: true - "@img/sharp-linuxmusl-x64@0.34.4": + "@img/sharp-linuxmusl-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64": 1.2.3 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.4 optional: true - "@img/sharp-wasm32@0.34.4": + "@img/sharp-linuxmusl-x64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.2.4 + optional: true + + "@img/sharp-wasm32@0.34.5": dependencies: - "@emnapi/runtime": 1.5.0 + "@emnapi/runtime": 1.8.1 optional: true - "@img/sharp-win32-arm64@0.34.4": + "@img/sharp-win32-arm64@0.34.5": optional: true - "@img/sharp-win32-ia32@0.34.4": + "@img/sharp-win32-ia32@0.34.5": optional: true - "@img/sharp-win32-x64@0.34.4": + "@img/sharp-win32-x64@0.34.5": optional: true "@jridgewell/sourcemap-codec@1.5.5": {} - "@mdx-js/mdx@3.1.0(acorn@8.15.0)": + "@mdx-js/mdx@3.1.1": dependencies: "@types/estree": 1.0.8 "@types/estree-jsx": 1.0.5 "@types/hast": 3.0.4 "@types/mdx": 2.0.13 + acorn: 8.15.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -3716,44 +4011,46 @@ snapshots: recma-jsx: 1.0.1(acorn@8.15.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.1.0 + remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 source-map: 0.7.6 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - - acorn - supports-color "@oslojs/encoding@1.1.0": {} - "@pagefind/darwin-arm64@1.3.0": + "@pagefind/darwin-arm64@1.4.0": optional: true - "@pagefind/darwin-x64@1.3.0": + "@pagefind/darwin-x64@1.4.0": optional: true - "@pagefind/default-ui@1.3.0": {} + "@pagefind/default-ui@1.4.0": {} - "@pagefind/linux-arm64@1.3.0": + "@pagefind/freebsd-x64@1.4.0": optional: true - "@pagefind/linux-x64@1.3.0": + "@pagefind/linux-arm64@1.4.0": optional: true - "@pagefind/windows-x64@1.3.0": + "@pagefind/linux-x64@1.4.0": optional: true - "@readme/better-ajv-errors@2.3.2(ajv@8.17.1)": + "@pagefind/windows-x64@1.4.0": + optional: true + + "@readme/better-ajv-errors@2.4.0(ajv@8.18.0)": dependencies: - "@babel/code-frame": 7.27.1 - "@babel/runtime": 7.28.3 + "@babel/code-frame": 7.29.0 + "@babel/runtime": 7.28.6 "@humanwhocodes/momoa": 2.0.4 - ajv: 8.17.1 + ajv: 8.18.0 jsonpointer: 5.0.1 leven: 3.1.0 picocolors: 1.1.1 @@ -3761,151 +4058,131 @@ snapshots: "@readme/openapi-parser@4.1.2(openapi-types@12.1.3)": dependencies: "@apidevtools/json-schema-ref-parser": 13.0.5 - "@readme/better-ajv-errors": 2.3.2(ajv@8.17.1) + "@readme/better-ajv-errors": 2.4.0(ajv@8.18.0) "@readme/openapi-schemas": 3.1.0 "@types/json-schema": 7.0.15 - ajv: 8.17.1 - ajv-draft-04: 1.0.0(ajv@8.17.1) + ajv: 8.18.0 + ajv-draft-04: 1.0.0(ajv@8.18.0) openapi-types: 12.1.3 "@readme/openapi-schemas@3.1.0": {} - "@rollup/pluginutils@5.2.0(rollup@4.48.1)": + "@rollup/pluginutils@5.3.0(rollup@4.57.1)": dependencies: "@types/estree": 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.48.1 + rollup: 4.57.1 - "@rollup/rollup-android-arm-eabi@4.48.1": + "@rollup/rollup-android-arm-eabi@4.57.1": optional: true - "@rollup/rollup-android-arm64@4.48.1": + "@rollup/rollup-android-arm64@4.57.1": optional: true - "@rollup/rollup-darwin-arm64@4.48.1": + "@rollup/rollup-darwin-arm64@4.57.1": optional: true - "@rollup/rollup-darwin-x64@4.48.1": + "@rollup/rollup-darwin-x64@4.57.1": optional: true - "@rollup/rollup-freebsd-arm64@4.48.1": + "@rollup/rollup-freebsd-arm64@4.57.1": optional: true - "@rollup/rollup-freebsd-x64@4.48.1": + "@rollup/rollup-freebsd-x64@4.57.1": optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.48.1": + "@rollup/rollup-linux-arm-gnueabihf@4.57.1": optional: true - "@rollup/rollup-linux-arm-musleabihf@4.48.1": + "@rollup/rollup-linux-arm-musleabihf@4.57.1": optional: true - "@rollup/rollup-linux-arm64-gnu@4.48.1": + "@rollup/rollup-linux-arm64-gnu@4.57.1": optional: true - "@rollup/rollup-linux-arm64-musl@4.48.1": + "@rollup/rollup-linux-arm64-musl@4.57.1": optional: true - "@rollup/rollup-linux-loongarch64-gnu@4.48.1": + "@rollup/rollup-linux-loong64-gnu@4.57.1": optional: true - "@rollup/rollup-linux-ppc64-gnu@4.48.1": + "@rollup/rollup-linux-loong64-musl@4.57.1": optional: true - "@rollup/rollup-linux-riscv64-gnu@4.48.1": + "@rollup/rollup-linux-ppc64-gnu@4.57.1": optional: true - "@rollup/rollup-linux-riscv64-musl@4.48.1": + "@rollup/rollup-linux-ppc64-musl@4.57.1": optional: true - "@rollup/rollup-linux-s390x-gnu@4.48.1": + "@rollup/rollup-linux-riscv64-gnu@4.57.1": optional: true - "@rollup/rollup-linux-x64-gnu@4.48.1": + "@rollup/rollup-linux-riscv64-musl@4.57.1": optional: true - "@rollup/rollup-linux-x64-musl@4.48.1": + "@rollup/rollup-linux-s390x-gnu@4.57.1": optional: true - "@rollup/rollup-win32-arm64-msvc@4.48.1": + "@rollup/rollup-linux-x64-gnu@4.57.1": optional: true - "@rollup/rollup-win32-ia32-msvc@4.48.1": + "@rollup/rollup-linux-x64-musl@4.57.1": optional: true - "@rollup/rollup-win32-x64-msvc@4.48.1": + "@rollup/rollup-openbsd-x64@4.57.1": optional: true - "@shikijs/core@3.11.0": + "@rollup/rollup-openharmony-arm64@4.57.1": + optional: true + + "@rollup/rollup-win32-arm64-msvc@4.57.1": + optional: true + + "@rollup/rollup-win32-ia32-msvc@4.57.1": + optional: true + + "@rollup/rollup-win32-x64-gnu@4.57.1": + optional: true + + "@rollup/rollup-win32-x64-msvc@4.57.1": + optional: true + + "@shikijs/core@3.22.0": dependencies: - "@shikijs/types": 3.11.0 + "@shikijs/types": 3.22.0 "@shikijs/vscode-textmate": 10.0.2 "@types/hast": 3.0.4 hast-util-to-html: 9.0.5 - "@shikijs/core@3.13.0": + "@shikijs/engine-javascript@3.22.0": dependencies: - "@shikijs/types": 3.13.0 + "@shikijs/types": 3.22.0 "@shikijs/vscode-textmate": 10.0.2 - "@types/hast": 3.0.4 - hast-util-to-html: 9.0.5 + oniguruma-to-es: 4.3.4 - "@shikijs/engine-javascript@3.11.0": + "@shikijs/engine-oniguruma@3.22.0": dependencies: - "@shikijs/types": 3.11.0 - "@shikijs/vscode-textmate": 10.0.2 - oniguruma-to-es: 4.3.3 - - "@shikijs/engine-javascript@3.13.0": - dependencies: - "@shikijs/types": 3.13.0 - "@shikijs/vscode-textmate": 10.0.2 - oniguruma-to-es: 4.3.3 - - "@shikijs/engine-oniguruma@3.11.0": - dependencies: - "@shikijs/types": 3.11.0 + "@shikijs/types": 3.22.0 "@shikijs/vscode-textmate": 10.0.2 - "@shikijs/engine-oniguruma@3.13.0": + "@shikijs/langs@3.22.0": dependencies: - "@shikijs/types": 3.13.0 - "@shikijs/vscode-textmate": 10.0.2 + "@shikijs/types": 3.22.0 - "@shikijs/langs@3.11.0": + "@shikijs/themes@3.22.0": dependencies: - "@shikijs/types": 3.11.0 + "@shikijs/types": 3.22.0 - "@shikijs/langs@3.13.0": - dependencies: - "@shikijs/types": 3.13.0 - - "@shikijs/themes@3.11.0": - dependencies: - "@shikijs/types": 3.11.0 - - "@shikijs/themes@3.13.0": - dependencies: - "@shikijs/types": 3.13.0 - - "@shikijs/types@3.11.0": - dependencies: - "@shikijs/vscode-textmate": 10.0.2 - "@types/hast": 3.0.4 - - "@shikijs/types@3.13.0": + "@shikijs/types@3.22.0": dependencies: "@shikijs/vscode-textmate": 10.0.2 "@types/hast": 3.0.4 "@shikijs/vscode-textmate@10.0.2": {} - "@swc/helpers@0.5.17": - dependencies: - tslib: 2.8.1 - "@types/debug@4.1.12": dependencies: "@types/ms": 2.1.0 @@ -3916,10 +4193,6 @@ snapshots: "@types/estree@1.0.8": {} - "@types/fontkit@2.0.8": - dependencies: - "@types/node": 24.3.0 - "@types/hast@3.0.4": dependencies: "@types/unist": 3.0.3 @@ -3942,13 +4215,9 @@ snapshots: "@types/node@17.0.45": {} - "@types/node@24.3.0": - dependencies: - undici-types: 7.10.0 - "@types/sax@1.2.7": dependencies: - "@types/node": 24.3.0 + "@types/node": 17.0.45 "@types/unist@2.0.11": {} @@ -3962,11 +4231,11 @@ snapshots: acorn@8.15.0: {} - ajv-draft-04@1.0.0(ajv@8.17.1): + ajv-draft-04@1.0.0(ajv@8.18.0): optionalDependencies: - ajv: 8.17.1 + ajv: 8.18.0 - ajv@8.17.1: + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 fast-uri: 3.1.0 @@ -3979,9 +4248,9 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.2.0: {} + ansi-regex@6.2.2: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} anymatch@3.1.3: dependencies: @@ -3998,77 +4267,78 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.3(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)): + astro-expressive-code@0.41.6(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3)): dependencies: - astro: 5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) - rehype-expressive-code: 0.41.3 + astro: 5.17.2(rollup@4.57.1)(typescript@5.9.3) + rehype-expressive-code: 0.41.6 - astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2): + astro@5.17.2(rollup@4.57.1)(typescript@5.9.3): dependencies: - "@astrojs/compiler": 2.12.2 - "@astrojs/internal-helpers": 0.7.3 - "@astrojs/markdown-remark": 6.3.7 + "@astrojs/compiler": 2.13.1 + "@astrojs/internal-helpers": 0.7.5 + "@astrojs/markdown-remark": 6.3.10 "@astrojs/telemetry": 3.3.0 - "@capsizecss/unpack": 2.4.0 + "@capsizecss/unpack": 4.0.0 "@oslojs/encoding": 1.1.0 - "@rollup/pluginutils": 5.2.0(rollup@4.48.1) + "@rollup/pluginutils": 5.3.0(rollup@4.57.1) acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 - ci-info: 4.3.0 + ci-info: 4.4.0 clsx: 2.1.1 common-ancestor-path: 1.0.1 - cookie: 1.0.2 + cookie: 1.1.1 cssesc: 3.0.0 - debug: 4.4.1 + debug: 4.4.3 deterministic-object-hash: 2.0.2 - devalue: 5.3.2 - diff: 5.2.0 + devalue: 5.6.2 + diff: 8.0.3 dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 1.7.0 - esbuild: 0.25.9 + esbuild: 0.27.3 estree-walker: 3.0.3 flattie: 1.1.1 - fontace: 0.3.0 + fontace: 0.4.1 github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.2.0 import-meta-resolve: 4.2.0 - js-yaml: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.18 - magicast: 0.3.5 + js-yaml: 4.1.1 + magic-string: 0.30.21 + magicast: 0.5.2 mrmime: 2.0.1 neotraverse: 0.6.18 p-limit: 6.2.0 - p-queue: 8.1.0 - package-manager-detector: 1.3.0 + p-queue: 8.1.1 + package-manager-detector: 1.6.0 + piccolore: 0.1.3 picomatch: 4.0.3 prompts: 2.4.2 rehype: 13.0.2 - semver: 7.7.2 - shiki: 3.13.0 - smol-toml: 1.4.2 - tinyexec: 0.3.2 - tinyglobby: 0.2.14 - tsconfck: 3.1.6(typescript@5.9.2) + semver: 7.7.4 + shiki: 3.22.0 + smol-toml: 1.6.0 + svgo: 4.0.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tsconfck: 3.1.6(typescript@5.9.3) ultrahtml: 1.6.0 - unifont: 0.5.2 - unist-util-visit: 5.0.0 - unstorage: 1.17.0 + unifont: 0.7.4 + unist-util-visit: 5.1.0 + unstorage: 1.17.4 vfile: 6.0.3 - vite: 6.3.6(@types/node@24.3.0) - vitefu: 1.1.1(vite@6.3.6(@types/node@24.3.0)) + vite: 6.4.1 + vitefu: 1.1.1(vite@6.4.1) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.3 zod: 3.25.76 - zod-to-json-schema: 3.24.6(zod@3.25.76) - zod-to-ts: 1.2.0(typescript@5.9.2)(zod@3.25.76) + zod-to-json-schema: 3.25.1(zod@3.25.76) + zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) optionalDependencies: - sharp: 0.34.4 + sharp: 0.34.5 transitivePeerDependencies: - "@azure/app-configuration" - "@azure/cosmos" @@ -4087,7 +4357,6 @@ snapshots: - "@vercel/kv" - aws4fetch - db0 - - encoding - idb-keyval - ioredis - jiti @@ -4111,8 +4380,6 @@ snapshots: base-64@1.0.0: {} - base64-js@1.5.1: {} - bcp-47-match@2.0.3: {} bcp-47@2.1.0: @@ -4121,30 +4388,24 @@ snapshots: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 - blob-to-buffer@1.2.9: {} - boolbase@1.0.0: {} boxen@8.0.1: dependencies: ansi-align: 3.0.1 camelcase: 8.0.0 - chalk: 5.6.0 + chalk: 5.6.2 cli-boxes: 3.0.0 string-width: 7.2.0 type-fest: 4.41.0 widest-line: 5.0.0 - wrap-ansi: 9.0.0 - - brotli@1.3.3: - dependencies: - base64-js: 1.5.1 + wrap-ansi: 9.0.2 camelcase@8.0.0: {} ccount@2.0.1: {} - chalk@5.6.0: {} + chalk@5.6.2: {} character-entities-html4@2.1.0: {} @@ -4154,52 +4415,65 @@ snapshots: character-reference-invalid@2.0.1: {} - chokidar@4.0.3: + chokidar@5.0.0: dependencies: - readdirp: 4.1.2 + readdirp: 5.0.0 - ci-info@4.3.0: {} + ci-info@4.4.0: {} cli-boxes@3.0.0: {} - clone@2.1.2: {} - clsx@2.1.1: {} collapse-white-space@2.1.0: {} comma-separated-tokens@2.0.3: {} + commander@11.1.0: {} + common-ancestor-path@1.0.1: {} cookie-es@1.2.2: {} - cookie@1.0.2: {} - - cross-fetch@3.2.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding + cookie@1.1.1: {} crossws@0.3.5: dependencies: uncrypto: 0.1.3 - css-selector-parser@3.1.3: {} + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-selector-parser@3.3.0: {} + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 css-tree@3.1.0: dependencies: mdn-data: 2.12.2 source-map-js: 1.2.1 + css-what@6.2.2: {} + cssesc@3.0.0: {} - debug@4.4.1: + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + debug@4.4.3: dependencies: ms: 2.1.3 - decode-named-character-reference@1.2.0: + decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 @@ -4209,32 +4483,50 @@ snapshots: destr@2.0.5: {} - detect-libc@2.1.1: {} + detect-libc@2.1.2: {} deterministic-object-hash@2.0.2: dependencies: base-64: 1.0.0 - devalue@5.3.2: {} + devalue@5.6.2: {} devlop@1.1.0: dependencies: dequal: 2.0.3 - dfa@1.2.0: {} - - diff@5.2.0: {} + diff@8.0.3: {} direction@2.0.1: {} dlv@1.1.3: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dset@3.1.4: {} - emoji-regex@10.4.0: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} + entities@4.5.0: {} + entities@6.0.1: {} es-module-lexer@1.7.0: {} @@ -4253,34 +4545,63 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild@0.25.9: + esbuild@0.25.12: optionalDependencies: - "@esbuild/aix-ppc64": 0.25.9 - "@esbuild/android-arm": 0.25.9 - "@esbuild/android-arm64": 0.25.9 - "@esbuild/android-x64": 0.25.9 - "@esbuild/darwin-arm64": 0.25.9 - "@esbuild/darwin-x64": 0.25.9 - "@esbuild/freebsd-arm64": 0.25.9 - "@esbuild/freebsd-x64": 0.25.9 - "@esbuild/linux-arm": 0.25.9 - "@esbuild/linux-arm64": 0.25.9 - "@esbuild/linux-ia32": 0.25.9 - "@esbuild/linux-loong64": 0.25.9 - "@esbuild/linux-mips64el": 0.25.9 - "@esbuild/linux-ppc64": 0.25.9 - "@esbuild/linux-riscv64": 0.25.9 - "@esbuild/linux-s390x": 0.25.9 - "@esbuild/linux-x64": 0.25.9 - "@esbuild/netbsd-arm64": 0.25.9 - "@esbuild/netbsd-x64": 0.25.9 - "@esbuild/openbsd-arm64": 0.25.9 - "@esbuild/openbsd-x64": 0.25.9 - "@esbuild/openharmony-arm64": 0.25.9 - "@esbuild/sunos-x64": 0.25.9 - "@esbuild/win32-arm64": 0.25.9 - "@esbuild/win32-ia32": 0.25.9 - "@esbuild/win32-x64": 0.25.9 + "@esbuild/aix-ppc64": 0.25.12 + "@esbuild/android-arm": 0.25.12 + "@esbuild/android-arm64": 0.25.12 + "@esbuild/android-x64": 0.25.12 + "@esbuild/darwin-arm64": 0.25.12 + "@esbuild/darwin-x64": 0.25.12 + "@esbuild/freebsd-arm64": 0.25.12 + "@esbuild/freebsd-x64": 0.25.12 + "@esbuild/linux-arm": 0.25.12 + "@esbuild/linux-arm64": 0.25.12 + "@esbuild/linux-ia32": 0.25.12 + "@esbuild/linux-loong64": 0.25.12 + "@esbuild/linux-mips64el": 0.25.12 + "@esbuild/linux-ppc64": 0.25.12 + "@esbuild/linux-riscv64": 0.25.12 + "@esbuild/linux-s390x": 0.25.12 + "@esbuild/linux-x64": 0.25.12 + "@esbuild/netbsd-arm64": 0.25.12 + "@esbuild/netbsd-x64": 0.25.12 + "@esbuild/openbsd-arm64": 0.25.12 + "@esbuild/openbsd-x64": 0.25.12 + "@esbuild/openharmony-arm64": 0.25.12 + "@esbuild/sunos-x64": 0.25.12 + "@esbuild/win32-arm64": 0.25.12 + "@esbuild/win32-ia32": 0.25.12 + "@esbuild/win32-x64": 0.25.12 + + esbuild@0.27.3: + optionalDependencies: + "@esbuild/aix-ppc64": 0.27.3 + "@esbuild/android-arm": 0.27.3 + "@esbuild/android-arm64": 0.27.3 + "@esbuild/android-x64": 0.27.3 + "@esbuild/darwin-arm64": 0.27.3 + "@esbuild/darwin-x64": 0.27.3 + "@esbuild/freebsd-arm64": 0.27.3 + "@esbuild/freebsd-x64": 0.27.3 + "@esbuild/linux-arm": 0.27.3 + "@esbuild/linux-arm64": 0.27.3 + "@esbuild/linux-ia32": 0.27.3 + "@esbuild/linux-loong64": 0.27.3 + "@esbuild/linux-mips64el": 0.27.3 + "@esbuild/linux-ppc64": 0.27.3 + "@esbuild/linux-riscv64": 0.27.3 + "@esbuild/linux-s390x": 0.27.3 + "@esbuild/linux-x64": 0.27.3 + "@esbuild/netbsd-arm64": 0.27.3 + "@esbuild/netbsd-x64": 0.27.3 + "@esbuild/openbsd-arm64": 0.27.3 + "@esbuild/openbsd-x64": 0.27.3 + "@esbuild/openharmony-arm64": 0.27.3 + "@esbuild/sunos-x64": 0.27.3 + "@esbuild/win32-arm64": 0.27.3 + "@esbuild/win32-ia32": 0.27.3 + "@esbuild/win32-x64": 0.27.3 escape-string-regexp@5.0.0: {} @@ -4319,14 +4640,14 @@ snapshots: dependencies: "@types/estree": 1.0.8 - eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} - expressive-code@0.41.3: + expressive-code@0.41.6: dependencies: - "@expressive-code/core": 0.41.3 - "@expressive-code/plugin-frames": 0.41.3 - "@expressive-code/plugin-shiki": 0.41.3 - "@expressive-code/plugin-text-markers": 0.41.3 + "@expressive-code/core": 0.41.6 + "@expressive-code/plugin-frames": 0.41.6 + "@expressive-code/plugin-shiki": 0.41.6 + "@expressive-code/plugin-text-markers": 0.41.6 extend@3.0.2: {} @@ -4340,40 +4661,31 @@ snapshots: flattie@1.1.1: {} - fontace@0.3.0: + fontace@0.4.1: dependencies: - "@types/fontkit": 2.0.8 - fontkit: 2.0.4 + fontkitten: 1.0.2 - fontkit@2.0.4: + fontkitten@1.0.2: dependencies: - "@swc/helpers": 0.5.17 - brotli: 1.3.3 - clone: 2.1.2 - dfa: 1.2.0 - fast-deep-equal: 3.1.3 - restructure: 3.0.2 tiny-inflate: 1.0.3 - unicode-properties: 1.4.1 - unicode-trie: 2.0.0 fsevents@2.3.3: optional: true - get-east-asian-width@1.3.0: {} + get-east-asian-width@1.4.0: {} github-slugger@2.0.0: {} - h3@1.15.4: + h3@1.15.5: dependencies: cookie-es: 1.2.2 crossws: 0.3.5 defu: 6.1.4 destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.2 + node-mock-http: 1.0.4 radix3: 1.1.2 - ufo: 1.6.1 + ufo: 1.6.3 uncrypto: 0.1.3 hast-util-embedded@3.0.0: @@ -4389,7 +4701,7 @@ snapshots: hast-util-phrasing: 3.0.1 hast-util-whitespace: 3.0.0 html-whitespace-sensitive-tag-names: 3.0.1 - unist-util-visit-parents: 6.0.1 + unist-util-visit-parents: 6.0.2 hast-util-from-html@2.0.3: dependencies: @@ -4429,7 +4741,7 @@ snapshots: hast-util-embedded: 3.0.0 hast-util-is-element: 3.0.0 hast-util-whitespace: 3.0.0 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 hast-util-parse-selector@4.0.0: dependencies: @@ -4449,12 +4761,12 @@ snapshots: "@types/unist": 3.0.3 "@ungap/structured-clone": 1.3.0 hast-util-from-parse5: 8.0.3 - hast-util-to-parse5: 8.0.0 + hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 parse5: 7.3.0 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -4465,7 +4777,7 @@ snapshots: "@types/unist": 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 3.1.3 + css-selector-parser: 3.3.0 devlop: 1.1.0 direction: 2.0.1 hast-util-has-property: 3.0.0 @@ -4474,7 +4786,7 @@ snapshots: nth-check: 2.1.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 zwitch: 2.0.4 hast-util-to-estree@3.1.3: @@ -4492,7 +4804,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.17 + style-to-js: 1.1.21 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -4506,7 +4818,7 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 @@ -4526,18 +4838,18 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.17 + style-to-js: 1.1.21 unist-util-position: 5.0.0 vfile-message: 4.0.3 transitivePeerDependencies: - supports-color - hast-util-to-parse5@8.0.0: + hast-util-to-parse5@8.0.1: dependencies: "@types/hast": 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.5.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -4575,13 +4887,11 @@ snapshots: i18next@23.16.8: dependencies: - "@babel/runtime": 7.28.3 - - import-meta-resolve@4.1.0: {} + "@babel/runtime": 7.28.6 import-meta-resolve@4.2.0: {} - inline-style-parser@0.2.4: {} + inline-style-parser@0.2.7: {} iron-webcrypto@1.2.1: {} @@ -4606,13 +4916,13 @@ snapshots: is-plain-obj@4.1.0: {} - is-wsl@3.1.0: + is-wsl@3.1.1: dependencies: is-inside-container: 1.0.0 js-tokens@4.0.0: {} - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -4622,24 +4932,22 @@ snapshots: kleur@3.0.3: {} - kleur@4.1.5: {} - klona@2.0.6: {} leven@3.1.0: {} longest-streak@3.1.0: {} - lru-cache@10.4.3: {} + lru-cache@11.2.6: {} - magic-string@0.30.18: + magic-string@0.30.21: dependencies: "@jridgewell/sourcemap-codec": 1.5.5 - magicast@0.3.5: + magicast@0.5.2: dependencies: - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 + "@babel/parser": 7.29.0 + "@babel/types": 7.29.0 source-map-js: 1.2.1 markdown-extensions@2.0.0: {} @@ -4650,7 +4958,7 @@ snapshots: dependencies: "@types/mdast": 4.0.4 "@types/unist": 3.0.3 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 mdast-util-directive@3.1.0: dependencies: @@ -4662,7 +4970,7 @@ snapshots: mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.1 + unist-util-visit-parents: 6.0.2 transitivePeerDependencies: - supports-color @@ -4670,14 +4978,14 @@ snapshots: dependencies: "@types/mdast": 4.0.4 escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 mdast-util-from-markdown@2.0.2: dependencies: "@types/mdast": 4.0.4 "@types/unist": 3.0.3 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 micromark: 4.0.2 @@ -4799,9 +5107,9 @@ snapshots: mdast-util-phrasing@4.1.0: dependencies: "@types/mdast": 4.0.4 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: dependencies: "@types/hast": 3.0.4 "@types/mdast": 4.0.4 @@ -4810,7 +5118,7 @@ snapshots: micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 mdast-util-to-markdown@2.1.2: @@ -4822,18 +5130,20 @@ snapshots: mdast-util-to-string: 4.0.0 micromark-util-classify-character: 2.0.1 micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 zwitch: 2.0.4 mdast-util-to-string@4.0.0: dependencies: "@types/mdast": 4.0.4 + mdn-data@2.0.28: {} + mdn-data@2.12.2: {} micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 @@ -5039,7 +5349,7 @@ snapshots: micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 micromark-util-character: 2.1.1 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 @@ -5086,8 +5396,8 @@ snapshots: micromark@4.0.2: dependencies: "@types/debug": 4.1.12 - debug: 4.4.1 - decode-named-character-reference: 1.2.0 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-factory-space: 2.0.1 @@ -5119,11 +5429,7 @@ snapshots: node-fetch-native@1.6.7: {} - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-mock-http@1.0.2: {} + node-mock-http@1.0.4: {} normalize-path@3.0.0: {} @@ -5131,53 +5437,52 @@ snapshots: dependencies: boolbase: 1.0.0 - ofetch@1.4.1: + ofetch@1.5.1: dependencies: destr: 2.0.5 node-fetch-native: 1.6.7 - ufo: 1.6.1 + ufo: 1.6.3 ohash@2.0.11: {} oniguruma-parser@0.12.1: {} - oniguruma-to-es@4.3.3: + oniguruma-to-es@4.3.4: dependencies: oniguruma-parser: 0.12.1 - regex: 6.0.1 + regex: 6.1.0 regex-recursion: 6.0.2 openapi-types@12.1.3: {} p-limit@6.2.0: dependencies: - yocto-queue: 1.2.1 + yocto-queue: 1.2.2 - p-queue@8.1.0: + p-queue@8.1.1: dependencies: - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 p-timeout: 6.1.4 p-timeout@6.1.4: {} - package-manager-detector@1.3.0: {} + package-manager-detector@1.6.0: {} - pagefind@1.3.0: + pagefind@1.4.0: optionalDependencies: - "@pagefind/darwin-arm64": 1.3.0 - "@pagefind/darwin-x64": 1.3.0 - "@pagefind/linux-arm64": 1.3.0 - "@pagefind/linux-x64": 1.3.0 - "@pagefind/windows-x64": 1.3.0 - - pako@0.2.9: {} + "@pagefind/darwin-arm64": 1.4.0 + "@pagefind/darwin-x64": 1.4.0 + "@pagefind/freebsd-x64": 1.4.0 + "@pagefind/linux-arm64": 1.4.0 + "@pagefind/linux-x64": 1.4.0 + "@pagefind/windows-x64": 1.4.0 parse-entities@4.0.2: dependencies: "@types/unist": 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 @@ -5195,6 +5500,8 @@ snapshots: dependencies: entities: 6.0.1 + piccolore@0.1.3: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -5224,13 +5531,11 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - property-information@6.5.0: {} - property-information@7.1.0: {} radix3@1.1.2: {} - readdirp@4.1.2: {} + readdirp@5.0.0: {} recma-build-jsx@1.0.0: dependencies: @@ -5267,13 +5572,13 @@ snapshots: regex-utilities@2.3.0: {} - regex@6.0.1: + regex@6.1.0: dependencies: regex-utilities: 2.3.0 - rehype-expressive-code@0.41.3: + rehype-expressive-code@0.41.6: dependencies: - expressive-code: 0.41.3 + expressive-code: 0.41.6 rehype-format@5.0.1: dependencies: @@ -5333,7 +5638,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx@3.1.0: + remark-mdx@3.1.1: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -5353,7 +5658,7 @@ snapshots: dependencies: "@types/hast": 3.0.4 "@types/mdast": 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 unified: 11.0.5 vfile: 6.0.3 @@ -5362,7 +5667,7 @@ snapshots: retext: 9.0.0 retext-smartypants: 6.2.0 unified: 11.0.5 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 remark-stringify@11.0.0: dependencies: @@ -5372,8 +5677,6 @@ snapshots: require-from-string@2.0.2: {} - restructure@3.0.2: {} - retext-latin@4.0.0: dependencies: "@types/nlcst": 2.0.3 @@ -5384,7 +5687,7 @@ snapshots: dependencies: "@types/nlcst": 2.0.3 nlcst-to-string: 4.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 retext-stringify@4.0.0: dependencies: @@ -5399,97 +5702,93 @@ snapshots: retext-stringify: 4.0.0 unified: 11.0.5 - rollup@4.48.1: + rollup@4.57.1: dependencies: "@types/estree": 1.0.8 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.48.1 - "@rollup/rollup-android-arm64": 4.48.1 - "@rollup/rollup-darwin-arm64": 4.48.1 - "@rollup/rollup-darwin-x64": 4.48.1 - "@rollup/rollup-freebsd-arm64": 4.48.1 - "@rollup/rollup-freebsd-x64": 4.48.1 - "@rollup/rollup-linux-arm-gnueabihf": 4.48.1 - "@rollup/rollup-linux-arm-musleabihf": 4.48.1 - "@rollup/rollup-linux-arm64-gnu": 4.48.1 - "@rollup/rollup-linux-arm64-musl": 4.48.1 - "@rollup/rollup-linux-loongarch64-gnu": 4.48.1 - "@rollup/rollup-linux-ppc64-gnu": 4.48.1 - "@rollup/rollup-linux-riscv64-gnu": 4.48.1 - "@rollup/rollup-linux-riscv64-musl": 4.48.1 - "@rollup/rollup-linux-s390x-gnu": 4.48.1 - "@rollup/rollup-linux-x64-gnu": 4.48.1 - "@rollup/rollup-linux-x64-musl": 4.48.1 - "@rollup/rollup-win32-arm64-msvc": 4.48.1 - "@rollup/rollup-win32-ia32-msvc": 4.48.1 - "@rollup/rollup-win32-x64-msvc": 4.48.1 + "@rollup/rollup-android-arm-eabi": 4.57.1 + "@rollup/rollup-android-arm64": 4.57.1 + "@rollup/rollup-darwin-arm64": 4.57.1 + "@rollup/rollup-darwin-x64": 4.57.1 + "@rollup/rollup-freebsd-arm64": 4.57.1 + "@rollup/rollup-freebsd-x64": 4.57.1 + "@rollup/rollup-linux-arm-gnueabihf": 4.57.1 + "@rollup/rollup-linux-arm-musleabihf": 4.57.1 + "@rollup/rollup-linux-arm64-gnu": 4.57.1 + "@rollup/rollup-linux-arm64-musl": 4.57.1 + "@rollup/rollup-linux-loong64-gnu": 4.57.1 + "@rollup/rollup-linux-loong64-musl": 4.57.1 + "@rollup/rollup-linux-ppc64-gnu": 4.57.1 + "@rollup/rollup-linux-ppc64-musl": 4.57.1 + "@rollup/rollup-linux-riscv64-gnu": 4.57.1 + "@rollup/rollup-linux-riscv64-musl": 4.57.1 + "@rollup/rollup-linux-s390x-gnu": 4.57.1 + "@rollup/rollup-linux-x64-gnu": 4.57.1 + "@rollup/rollup-linux-x64-musl": 4.57.1 + "@rollup/rollup-openbsd-x64": 4.57.1 + "@rollup/rollup-openharmony-arm64": 4.57.1 + "@rollup/rollup-win32-arm64-msvc": 4.57.1 + "@rollup/rollup-win32-ia32-msvc": 4.57.1 + "@rollup/rollup-win32-x64-gnu": 4.57.1 + "@rollup/rollup-win32-x64-msvc": 4.57.1 fsevents: 2.3.3 - sax@1.4.1: {} + sax@1.4.4: {} - semver@7.7.2: {} + semver@7.7.4: {} - sharp@0.34.4: + sharp@0.34.5: dependencies: "@img/colour": 1.0.0 - detect-libc: 2.1.1 - semver: 7.7.2 + detect-libc: 2.1.2 + semver: 7.7.4 optionalDependencies: - "@img/sharp-darwin-arm64": 0.34.4 - "@img/sharp-darwin-x64": 0.34.4 - "@img/sharp-libvips-darwin-arm64": 1.2.3 - "@img/sharp-libvips-darwin-x64": 1.2.3 - "@img/sharp-libvips-linux-arm": 1.2.3 - "@img/sharp-libvips-linux-arm64": 1.2.3 - "@img/sharp-libvips-linux-ppc64": 1.2.3 - "@img/sharp-libvips-linux-s390x": 1.2.3 - "@img/sharp-libvips-linux-x64": 1.2.3 - "@img/sharp-libvips-linuxmusl-arm64": 1.2.3 - "@img/sharp-libvips-linuxmusl-x64": 1.2.3 - "@img/sharp-linux-arm": 0.34.4 - "@img/sharp-linux-arm64": 0.34.4 - "@img/sharp-linux-ppc64": 0.34.4 - "@img/sharp-linux-s390x": 0.34.4 - "@img/sharp-linux-x64": 0.34.4 - "@img/sharp-linuxmusl-arm64": 0.34.4 - "@img/sharp-linuxmusl-x64": 0.34.4 - "@img/sharp-wasm32": 0.34.4 - "@img/sharp-win32-arm64": 0.34.4 - "@img/sharp-win32-ia32": 0.34.4 - "@img/sharp-win32-x64": 0.34.4 + "@img/sharp-darwin-arm64": 0.34.5 + "@img/sharp-darwin-x64": 0.34.5 + "@img/sharp-libvips-darwin-arm64": 1.2.4 + "@img/sharp-libvips-darwin-x64": 1.2.4 + "@img/sharp-libvips-linux-arm": 1.2.4 + "@img/sharp-libvips-linux-arm64": 1.2.4 + "@img/sharp-libvips-linux-ppc64": 1.2.4 + "@img/sharp-libvips-linux-riscv64": 1.2.4 + "@img/sharp-libvips-linux-s390x": 1.2.4 + "@img/sharp-libvips-linux-x64": 1.2.4 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.4 + "@img/sharp-libvips-linuxmusl-x64": 1.2.4 + "@img/sharp-linux-arm": 0.34.5 + "@img/sharp-linux-arm64": 0.34.5 + "@img/sharp-linux-ppc64": 0.34.5 + "@img/sharp-linux-riscv64": 0.34.5 + "@img/sharp-linux-s390x": 0.34.5 + "@img/sharp-linux-x64": 0.34.5 + "@img/sharp-linuxmusl-arm64": 0.34.5 + "@img/sharp-linuxmusl-x64": 0.34.5 + "@img/sharp-wasm32": 0.34.5 + "@img/sharp-win32-arm64": 0.34.5 + "@img/sharp-win32-ia32": 0.34.5 + "@img/sharp-win32-x64": 0.34.5 - shiki@3.11.0: + shiki@3.22.0: dependencies: - "@shikijs/core": 3.11.0 - "@shikijs/engine-javascript": 3.11.0 - "@shikijs/engine-oniguruma": 3.11.0 - "@shikijs/langs": 3.11.0 - "@shikijs/themes": 3.11.0 - "@shikijs/types": 3.11.0 - "@shikijs/vscode-textmate": 10.0.2 - "@types/hast": 3.0.4 - - shiki@3.13.0: - dependencies: - "@shikijs/core": 3.13.0 - "@shikijs/engine-javascript": 3.13.0 - "@shikijs/engine-oniguruma": 3.13.0 - "@shikijs/langs": 3.13.0 - "@shikijs/themes": 3.13.0 - "@shikijs/types": 3.13.0 + "@shikijs/core": 3.22.0 + "@shikijs/engine-javascript": 3.22.0 + "@shikijs/engine-oniguruma": 3.22.0 + "@shikijs/langs": 3.22.0 + "@shikijs/themes": 3.22.0 + "@shikijs/types": 3.22.0 "@shikijs/vscode-textmate": 10.0.2 "@types/hast": 3.0.4 sisteransi@1.0.5: {} - sitemap@8.0.0: + sitemap@8.0.2: dependencies: "@types/node": 17.0.45 "@types/sax": 1.2.7 arg: 5.0.2 - sax: 1.4.1 + sax: 1.4.4 - smol-toml@1.4.2: {} + smol-toml@1.6.0: {} source-map-js@1.2.1: {} @@ -5497,12 +5796,12 @@ snapshots: space-separated-tokens@2.0.2: {} - starlight-openapi@0.20.0(@astrojs/markdown-remark@6.3.7)(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)))(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))(openapi-types@12.1.3): + starlight-openapi@0.22.0(@astrojs/markdown-remark@6.3.10)(@astrojs/starlight@0.37.6(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3)))(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3))(openapi-types@12.1.3): dependencies: - "@astrojs/markdown-remark": 6.3.7 - "@astrojs/starlight": 0.36.0(astro@5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) + "@astrojs/markdown-remark": 6.3.10 + "@astrojs/starlight": 0.37.6(astro@5.17.2(rollup@4.57.1)(typescript@5.9.3)) "@readme/openapi-parser": 4.1.2(openapi-types@12.1.3) - astro: 5.14.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + astro: 5.17.2(rollup@4.57.1)(typescript@5.9.3) github-slugger: 2.0.0 url-template: 3.1.1 transitivePeerDependencies: @@ -5518,9 +5817,9 @@ snapshots: string-width@7.2.0: dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 + emoji-regex: 10.6.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 stringify-entities@4.0.4: dependencies: @@ -5531,61 +5830,58 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.2.0 + ansi-regex: 6.2.2 - style-to-js@1.1.17: + style-to-js@1.1.21: dependencies: - style-to-object: 1.0.9 + style-to-object: 1.0.14 - style-to-object@1.0.9: + style-to-object@1.0.14: dependencies: - inline-style-parser: 0.2.4 + inline-style-parser: 0.2.7 + + svgo@4.0.0: + dependencies: + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.1.0 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.4.4 tiny-inflate@1.0.3: {} - tinyexec@0.3.2: {} + tinyexec@1.0.2: {} - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tr46@0.0.3: {} - trim-lines@3.0.1: {} trough@2.2.0: {} - tsconfck@3.1.6(typescript@5.9.2): + tsconfck@3.1.6(typescript@5.9.3): optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 - tslib@2.8.1: {} + tslib@2.8.1: + optional: true type-fest@4.41.0: {} - typescript@5.9.2: {} + typescript@5.9.3: {} - ufo@1.6.1: {} + ufo@1.6.3: {} ultrahtml@1.6.0: {} uncrypto@0.1.3: {} - undici-types@7.10.0: {} - - unicode-properties@1.4.1: - dependencies: - base64-js: 1.5.1 - unicode-trie: 2.0.0 - - unicode-trie@2.0.0: - dependencies: - pako: 0.2.9 - tiny-inflate: 1.0.3 - unified@11.0.5: dependencies: "@types/unist": 3.0.3 @@ -5596,18 +5892,18 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unifont@0.5.2: + unifont@0.7.4: dependencies: css-tree: 3.1.0 - ofetch: 1.4.1 + ofetch: 1.5.1 ohash: 2.0.11 unist-util-find-after@5.0.0: dependencies: "@types/unist": 3.0.3 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 - unist-util-is@6.0.0: + unist-util-is@6.0.1: dependencies: "@types/unist": 3.0.3 @@ -5627,7 +5923,7 @@ snapshots: unist-util-remove-position@5.0.0: dependencies: "@types/unist": 3.0.3 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 unist-util-stringify-position@4.0.0: dependencies: @@ -5637,27 +5933,27 @@ snapshots: dependencies: "@types/unist": 3.0.3 - unist-util-visit-parents@6.0.1: + unist-util-visit-parents@6.0.2: dependencies: "@types/unist": 3.0.3 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 - unist-util-visit@5.0.0: + unist-util-visit@5.1.0: dependencies: "@types/unist": 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 - unstorage@1.17.0: + unstorage@1.17.4: dependencies: anymatch: 3.1.3 - chokidar: 4.0.3 + chokidar: 5.0.0 destr: 2.0.5 - h3: 1.15.4 - lru-cache: 10.4.3 + h3: 1.15.5 + lru-cache: 11.2.6 node-fetch-native: 1.6.7 - ofetch: 1.4.1 - ufo: 1.6.1 + ofetch: 1.5.1 + ufo: 1.6.3 url-template@3.1.1: {} @@ -5678,48 +5974,40 @@ snapshots: "@types/unist": 3.0.3 vfile-message: 4.0.3 - vite@6.3.6(@types/node@24.3.0): + vite@6.4.1: dependencies: - esbuild: 0.25.9 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.48.1 - tinyglobby: 0.2.14 + rollup: 4.57.1 + tinyglobby: 0.2.15 optionalDependencies: - "@types/node": 24.3.0 fsevents: 2.3.3 - vitefu@1.1.1(vite@6.3.6(@types/node@24.3.0)): + vitefu@1.1.1(vite@6.4.1): optionalDependencies: - vite: 6.3.6(@types/node@24.3.0) + vite: 6.4.1 web-namespaces@2.0.1: {} - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which-pm-runs@1.1.0: {} widest-line@5.0.0: dependencies: string-width: 7.2.0 - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 xxhash-wasm@1.1.0: {} yargs-parser@21.1.1: {} - yocto-queue@1.2.1: {} + yocto-queue@1.2.2: {} yocto-spinner@0.2.3: dependencies: @@ -5727,13 +6015,13 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.24.6(zod@3.25.76): + zod-to-json-schema@3.25.1(zod@3.25.76): dependencies: zod: 3.25.76 - zod-to-ts@1.2.0(typescript@5.9.2)(zod@3.25.76): + zod-to-ts@1.2.0(typescript@5.9.3)(zod@3.25.76): dependencies: - typescript: 5.9.2 + typescript: 5.9.3 zod: 3.25.76 zod@3.25.76: {} diff --git a/docs/src/content/docs/en/getting-started/docker.mdx b/docs/src/content/docs/en/getting-started/docker.mdx index deb2d4b6..4dbc93ce 100644 --- a/docs/src/content/docs/en/getting-started/docker.mdx +++ b/docs/src/content/docs/en/getting-started/docker.mdx @@ -1,19 +1,18 @@ --- -title: Official Docker images +title: Official Docker image --- -Castopod pushes 3 Docker images to the Docker Hub during its automated build -process: +Castopod publishes a single official Docker image to the Docker Hub as part of +its automated build process: -- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all - in one castopod image using nginx unit -- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): the app bundle - with all of Castopod dependencies -- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): an - Nginx configuration for Castopod +- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an + all-in-one image integrating [FrankenPHP](https://frankenphp.dev/) and + [Caddy](https://caddyserver.com/), optimized for production environments. It + is based on + [serversideup/php](https://serversideup.net/open-source/docker-php/docs/image-variations/frankenphp). -Additionally, Castopod requires a MySQL-compatible database. A Redis database -can be added as a cache handler. +Castopod requires a MySQL-compatible database to function. Optionally, a Redis +service can be configured as the caching layer. ## Supported tags @@ -25,18 +24,16 @@ can be added as a cache handler. ## Example usage 1. Install [docker](https://docs.docker.com/get-docker/) and - [docker-compose](https://docs.docker.com/compose/install/) -2. Create a `docker-compose.yml` file with the following: + [docker compose](https://docs.docker.com/compose/install/) +2. Create a `compose.yml` file with the following: ```yml - version: "3.7" - services: castopod: image: castopod/castopod:latest container_name: "castopod" volumes: - - castopod-media:/var/www/castopod/public/media + - castopod-media:/app/public/media environment: MYSQL_DATABASE: castopod MYSQL_USER: castopod @@ -47,14 +44,28 @@ can be added as a cache handler. CP_REDIS_HOST: redis CP_REDIS_PASSWORD: changeme networks: - - castopod + - castopod-app - castopod-db ports: - - 8000:8000 + - "8080:8080" # HTTP + - "8443:8443" # HTTPS + - "8443:8443/udp" # HTTP/3 restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s # allows bootstrap/migrations time + depends_on: + mariadb: + condition: service_healthy + restart: true + redis: + condition: service_started mariadb: - image: mariadb:11.2 + image: mariadb:12.1 container_name: "castopod-mariadb" networks: - castopod-db @@ -66,15 +77,21 @@ can be added as a cache handler. MYSQL_USER: castopod MYSQL_PASSWORD: changeme restart: unless-stopped + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + start_period: 10s + interval: 10s + timeout: 5s + retries: 3 redis: - image: redis:7.2-alpine + image: redis:8.4-alpine container_name: "castopod-redis" command: --requirepass changeme volumes: - castopod-cache:/data networks: - - castopod + - castopod-app volumes: castopod-media: @@ -82,8 +99,9 @@ can be added as a cache handler. castopod-cache: networks: - castopod: + castopod-app: castopod-db: + internal: true ``` You have to adapt some variables to your needs (e.g. `CP_BASEURL`, @@ -97,61 +115,53 @@ can be added as a cache handler. ``` #castopod castopod.example.com { - reverse_proxy localhost:8000 + reverse_proxy localhost:8080 } ``` -4. Run `docker-compose up -d`, wait for it to initialize and head on to +4. Run `docker compose up -d`, wait for it to initialize and head on to `https://castopod.example.com/cp-install` to finish setting up Castopod! 5. You're all set, start podcasting! 🎙️🚀 ## Environment Variables -- **castopod/castopod** and **castopod/app** - - | Variable name | Type (`default`) | Default | - | ------------------------------------- | ----------------------- | ---------------- | - | **`CP_BASEURL`** | string | `undefined` | - | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | - | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | - | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | - | **`CP_ANALYTICS_SALT`** | string | `undefined` | - | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | - | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | - | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | - | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | - | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | - | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | - | **`CP_REDIS_HOST`** | ?string | `"localhost"` | - | **`CP_REDIS_PASSWORD`** | ?string | `null` | - | **`CP_REDIS_PORT`** | ?number | `6379` | - | **`CP_REDIS_DATABASE`** | ?number | `0` | - | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | - | **`CP_EMAIL_FROM`** | ?string | `undefined` | - | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | - | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | - | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | - | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - | **`CP_ENABLE_2FA`** | ?boolean | `undefined` | - | **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` | - | **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` | - | **`CP_MEDIA_S3_KEY`** | ?string | `undefined` | - | **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` | - | **`CP_MEDIA_S3_REGION`** | ?string | `undefined` | - | **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` | - | **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` | - | **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` | - | **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` | - | **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` | - | **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` | - | **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` | - | **`CP_TIMEOUT`** | ?number | `900` | - -- **castopod/web-server** - - | Variable name | Type | Default | - | ---------------------- | --------------------- | ------- | - | **`CP_APP_HOSTNAME`** | ?string | `"app"` | - | **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` | - | **`CP_TIMEOUT`** | ?number | `900` | +| Variable name | Type (`default`) | Default | +| ------------------------------------- | ----------------------- | ---------------- | +| **`CP_BASEURL`** | string | `undefined` | +| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | +| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | +| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | +| **`CP_ANALYTICS_SALT`** | string | `undefined` | +| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | +| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | +| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | +| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | +| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | +| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | +| **`CP_REDIS_HOST`** | ?string | `"localhost"` | +| **`CP_REDIS_PASSWORD`** | ?string | `null` | +| **`CP_REDIS_PORT`** | ?number | `6379` | +| **`CP_REDIS_DATABASE`** | ?number | `0` | +| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | +| **`CP_EMAIL_FROM`** | ?string | `undefined` | +| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | +| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | +| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | +| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | +| **`CP_ENABLE_2FA`** | ?boolean | `undefined` | +| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` | +| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` | +| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` | +| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` | +| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` | +| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` | +| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` | +| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` | +| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` | +| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` | +| **`PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` | +| **`PHP_UPLOAD_MAX_FILE_SIZE`** | ?number (with suffix) | `512M` | +| **`PHP_POST_MAX_SIZE`** | ?number (with suffix) | `512M` | +| **`PHP_MAX_EXECUTION_TIME`** | ?number | `300` | +| **`PHP_OPCACHE_ENABLE`** | ?[`0` or `1`] | `1` | diff --git a/docs/src/content/docs/en/user-guide/instance/persons.mdx b/docs/src/content/docs/en/user-guide/instance/persons.mdx index df466786..7adb60da 100644 --- a/docs/src/content/docs/en/user-guide/instance/persons.mdx +++ b/docs/src/content/docs/en/user-guide/instance/persons.mdx @@ -5,10 +5,11 @@ title: Manage Podcast contributors The **Persons** section allows you to add podcast contributors. It is needed in the Podcast section to assign roles and is also used on the **Credits** page linked from your podcast's homepage. When Persons are assigned to a specific -episode, there will be a link on the episode's page to list all persons assigned. +episode, there will be a link on the episode's page to list all persons +assigned. -A Person must be created in the **Persons** section before it can be [assigned -to an episode](../podcast/episodes#persons). +A Person must be created in the **Persons** section before it can be +[assigned to an episode](../podcast/episodes#persons). From the left hand navigation, press `Persons` to expand the menu. To view a list of all people that have been added to Castopod, press `All Persons`. diff --git a/docs/src/content/docs/en/user-guide/podcast/episodes.mdx b/docs/src/content/docs/en/user-guide/podcast/episodes.mdx index 5618538a..d24ce22f 100644 --- a/docs/src/content/docs/en/user-guide/podcast/episodes.mdx +++ b/docs/src/content/docs/en/user-guide/podcast/episodes.mdx @@ -119,9 +119,9 @@ will be displayed. You can add a transcript to your episode by choosing a file in SRT or VTT format to upload. Transcripts will be shown in a tab on the episode page and some -podcast apps such as Apple Podcasts can display the transcript. -Transcripts help users who may have a hearing disability and can also help with -search engine optimization. +podcast apps such as Apple Podcasts can display the transcript. Transcripts help +users who may have a hearing disability and can also help with search engine +optimization. #### Chapters diff --git a/modules/Admin/Controllers/NotificationController.php b/modules/Admin/Controllers/NotificationController.php index c42f62e4..06f0cea1 100644 --- a/modules/Admin/Controllers/NotificationController.php +++ b/modules/Admin/Controllers/NotificationController.php @@ -75,7 +75,7 @@ class NotificationController extends BaseController { $notifications = new NotificationModel() ->where('target_actor_id', $podcast->actor_id) - ->where('read_at', null) + ->where('read_at') ->findAll(); foreach ($notifications as $notification) { diff --git a/modules/Admin/Controllers/PodcastController.php b/modules/Admin/Controllers/PodcastController.php index 0c5323d0..96204b66 100644 --- a/modules/Admin/Controllers/PodcastController.php +++ b/modules/Admin/Controllers/PodcastController.php @@ -677,7 +677,7 @@ class PodcastController extends BaseController $episodes = new EpisodeModel() ->where('podcast_id', $podcast->id) - ->where('published_at !=', null) + ->where('published_at !=') ->findAll(); foreach ($episodes as $episode) { @@ -846,7 +846,7 @@ class PodcastController extends BaseController $episodes = new EpisodeModel() ->where('podcast_id', $podcast->id) - ->where('published_at !=', null) + ->where('published_at !=') ->findAll(); foreach ($episodes as $episode) { @@ -914,7 +914,7 @@ class PodcastController extends BaseController $episodes = new EpisodeModel() ->where('podcast_id', $podcast->id) - ->where('published_at !=', null) + ->where('published_at !=') ->findAll(); foreach ($episodes as $episode) { diff --git a/modules/Api/Rest/V1/Controllers/EpisodeController.php b/modules/Api/Rest/V1/Controllers/EpisodeController.php index 9cb30a0c..efedbd23 100644 --- a/modules/Api/Rest/V1/Controllers/EpisodeController.php +++ b/modules/Api/Rest/V1/Controllers/EpisodeController.php @@ -52,7 +52,7 @@ class EpisodeController extends BaseApiController (int) $this->request->getGet('offset'), ); - array_map(static function ($episode): void { + array_map(static function (Episode $episode): void { self::mapEpisode($episode); }, $data); diff --git a/modules/Api/Rest/V1/Controllers/PodcastController.php b/modules/Api/Rest/V1/Controllers/PodcastController.php index f76398f7..8daf7c33 100644 --- a/modules/Api/Rest/V1/Controllers/PodcastController.php +++ b/modules/Api/Rest/V1/Controllers/PodcastController.php @@ -20,7 +20,7 @@ class PodcastController extends BaseApiController /** @var array $data */ $data = new PodcastModel() ->findAll(); - array_map(static function ($podcast): void { + array_map(static function (Podcast $podcast): void { self::mapPodcast($podcast); }, $data); return $this->respond($data); diff --git a/modules/Auth/Helpers/auth_helper.php b/modules/Auth/Helpers/auth_helper.php index 964cb440..36b6a075 100644 --- a/modules/Auth/Helpers/auth_helper.php +++ b/modules/Auth/Helpers/auth_helper.php @@ -283,7 +283,7 @@ if (! function_exists('get_actor_ids_with_unread_notifications')) { $unreadNotifications = new NotificationModel() ->whereIn('target_actor_id', array_column($userPodcasts, 'actor_id')) - ->where('read_at', null) + ->where('read_at') ->findAll(); return array_column($unreadNotifications, 'target_actor_id'); diff --git a/modules/Fediverse/Core/AbstractObject.php b/modules/Fediverse/Core/AbstractObject.php index 7870f60c..81a21b05 100644 --- a/modules/Fediverse/Core/AbstractObject.php +++ b/modules/Fediverse/Core/AbstractObject.php @@ -42,7 +42,7 @@ abstract class AbstractObject } // removes all NULL, FALSE and Empty Strings but leaves 0 (zero) values - return array_filter($array, static fn ($value): bool => $value !== null && $value !== false && $value !== ''); + return array_filter($array, static fn ($value): bool => ! in_array($value, [null, false, ''], true)); } public function toJSON(): string diff --git a/modules/PremiumPodcasts/Models/SubscriptionModel.php b/modules/PremiumPodcasts/Models/SubscriptionModel.php index afd7344f..32619b19 100644 --- a/modules/PremiumPodcasts/Models/SubscriptionModel.php +++ b/modules/PremiumPodcasts/Models/SubscriptionModel.php @@ -120,7 +120,7 @@ class SubscriptionModel extends Model 'status' => 'active', ]) ->groupStart() - ->where('expires_at', null) + ->where('expires_at') ->orWhere('`expires_at` > UTC_TIMESTAMP()', null, false) ->groupEnd() ->first(); diff --git a/package.json b/package.json index 6056a362..e6029abb 100644 --- a/package.json +++ b/package.json @@ -32,81 +32,81 @@ "dependencies": { "@amcharts/amcharts4": "^4.10.40", "@amcharts/amcharts4-geodata": "^4.1.31", - "@codemirror/commands": "^6.9.0", + "@codemirror/commands": "^6.10.2", "@codemirror/lang-html": "^6.4.11", "@codemirror/lang-xml": "^6.1.0", - "@codemirror/language": "^6.11.3", - "@codemirror/state": "^6.5.2", - "@codemirror/view": "^6.38.5", - "@floating-ui/dom": "^1.7.4", + "@codemirror/language": "^6.12.1", + "@codemirror/state": "^6.5.4", + "@codemirror/view": "^6.39.14", + "@floating-ui/dom": "^1.7.5", "@github/clipboard-copy-element": "^1.3.0", "@github/hotkey": "^3.1.1", "@github/markdown-toolbar-element": "^2.2.3", - "@github/relative-time-element": "^4.4.8", - "@patternfly/elements": "^4.2.0", + "@github/relative-time-element": "^5.0.0", + "@patternfly/elements": "^4.3.1", "@vime/core": "^5.4.1", "choices.js": "^11.1.0", "codemirror": "^6.0.2", "flatpickr": "^4.6.13", - "htmlfy": "^1.0.0", + "htmlfy": "^1.0.1", "leaflet": "^1.9.4", "leaflet.markercluster": "^1.5.3", - "lit": "^3.3.1", - "marked": "^16.4.0", - "wavesurfer.js": "^7.11.0", + "lit": "^3.3.2", + "marked": "^17.0.2", + "wavesurfer.js": "^7.12.1", "xml-formatter": "^3.6.7" }, "devDependencies": { - "@commitlint/cli": "^20.1.0", - "@commitlint/config-conventional": "^20.0.0", - "@csstools/css-tokenizer": "^3.0.4", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "^9.37.0", + "@commitlint/cli": "^20.4.1", + "@commitlint/config-conventional": "^20.4.1", + "@csstools/css-tokenizer": "^4.0.0", + "@eslint/eslintrc": "^3.3.3", + "@eslint/js": "^10.0.1", "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^7.1.0", "@semantic-release/git": "^10.0.1", - "@semantic-release/gitlab": "^13.2.9", - "@tailwindcss/forms": "^0.5.10", + "@semantic-release/gitlab": "^13.3.0", + "@tailwindcss/forms": "^0.5.11", "@tailwindcss/typography": "^0.5.19", - "@types/leaflet": "^1.9.20", + "@types/leaflet": "^1.9.21", "all-contributors-cli": "^6.26.1", "commitizen": "^4.3.1", "conventional-changelog-conventionalcommits": "^9.1.0", "cross-env": "^10.1.0", - "cssnano": "^7.1.1", + "cssnano": "^7.1.2", "cz-conventional-changelog": "^3.3.0", - "eslint": "^9.37.0", + "eslint": "^10.0.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "glob": "^11.0.3", - "globals": "^16.4.0", + "eslint-plugin-prettier": "^5.5.5", + "glob": "^13.0.5", + "globals": "^17.3.0", "husky": "^9.1.7", "is-ci": "^4.1.0", - "lint-staged": "^16.2.3", + "lint-staged": "^16.2.7", "postcss": "^8.5.6", "postcss-import": "^16.1.1", - "postcss-nesting": "^13.0.2", - "postcss-preset-env": "^10.4.0", + "postcss-nesting": "^14.0.0", + "postcss-preset-env": "^11.1.3", "postcss-reporter": "^7.1.0", - "prettier": "3.6.2", + "prettier": "3.8.1", "prettier-plugin-organize-imports": "^4.3.0", - "semantic-release": "^24.2.9", - "sharp": "^0.34.4", - "stylelint": "^16.25.0", - "stylelint-config-standard": "^39.0.1", + "semantic-release": "^25.0.3", + "sharp": "^0.34.5", + "stylelint": "^17.3.0", + "stylelint-config-standard": "^40.0.0", "svgo": "^4.0.0", - "tailwindcss": "^3.4.18", + "tailwindcss": "^3.4.19", "typescript": "~5.9.3", - "typescript-eslint": "^8.46.0", - "vite": "^7.1.9", + "typescript-eslint": "^8.56.0", + "vite": "^7.3.1", "vite-plugin-codeigniter": "^2.0.0", "vite-plugin-inspect": "^11.3.3", - "vite-plugin-pwa": "^1.0.3", - "vite-plugin-static-copy": "^3.1.3", - "workbox-build": "^7.3.0", - "workbox-core": "^7.3.0", - "workbox-routing": "^7.3.0", - "workbox-strategies": "^7.3.0" + "vite-plugin-pwa": "^1.2.0", + "vite-plugin-static-copy": "^3.2.0", + "workbox-build": "^7.4.0", + "workbox-core": "^7.4.0", + "workbox-routing": "^7.4.0", + "workbox-strategies": "^7.4.0" }, "lint-staged": { "*.{js,ts,css,md,json}": "prettier --write", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ee7e3d7..bb1ca417 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,8 +14,8 @@ importers: specifier: ^4.1.31 version: 4.1.31 "@codemirror/commands": - specifier: ^6.9.0 - version: 6.9.0 + specifier: ^6.10.2 + version: 6.10.2 "@codemirror/lang-html": specifier: ^6.4.11 version: 6.4.11 @@ -23,17 +23,17 @@ importers: specifier: ^6.1.0 version: 6.1.0 "@codemirror/language": - specifier: ^6.11.3 - version: 6.11.3 + specifier: ^6.12.1 + version: 6.12.1 "@codemirror/state": - specifier: ^6.5.2 - version: 6.5.2 + specifier: ^6.5.4 + version: 6.5.4 "@codemirror/view": - specifier: ^6.38.5 - version: 6.38.5 + specifier: ^6.39.14 + version: 6.39.14 "@floating-ui/dom": - specifier: ^1.7.4 - version: 1.7.4 + specifier: ^1.7.5 + version: 1.7.5 "@github/clipboard-copy-element": specifier: ^1.3.0 version: 1.3.0 @@ -44,11 +44,11 @@ importers: specifier: ^2.2.3 version: 2.2.3 "@github/relative-time-element": - specifier: ^4.4.8 - version: 4.4.8 + specifier: ^5.0.0 + version: 5.0.0 "@patternfly/elements": - specifier: ^4.2.0 - version: 4.2.0 + specifier: ^4.3.1 + version: 4.3.1 "@vime/core": specifier: ^5.4.1 version: 5.4.1 @@ -62,8 +62,8 @@ importers: specifier: ^4.6.13 version: 4.6.13 htmlfy: - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.0.1 + version: 1.0.1 leaflet: specifier: ^1.9.4 version: 1.9.4 @@ -71,54 +71,54 @@ importers: specifier: ^1.5.3 version: 1.5.3(leaflet@1.9.4) lit: - specifier: ^3.3.1 - version: 3.3.1 + specifier: ^3.3.2 + version: 3.3.2 marked: - specifier: ^16.4.0 - version: 16.4.0 + specifier: ^17.0.2 + version: 17.0.2 wavesurfer.js: - specifier: ^7.11.0 - version: 7.11.0 + specifier: ^7.12.1 + version: 7.12.1 xml-formatter: specifier: ^3.6.7 version: 3.6.7 devDependencies: "@commitlint/cli": - specifier: ^20.1.0 - version: 20.1.0(@types/node@24.7.0)(typescript@5.9.3) + specifier: ^20.4.1 + version: 20.4.1(@types/node@24.7.0)(typescript@5.9.3) "@commitlint/config-conventional": - specifier: ^20.0.0 - version: 20.0.0 + specifier: ^20.4.1 + version: 20.4.1 "@csstools/css-tokenizer": - specifier: ^3.0.4 - version: 3.0.4 + specifier: ^4.0.0 + version: 4.0.0 "@eslint/eslintrc": - specifier: ^3.3.1 - version: 3.3.1 + specifier: ^3.3.3 + version: 3.3.3 "@eslint/js": - specifier: ^9.37.0 - version: 9.37.0 + specifier: ^10.0.1 + version: 10.0.1(eslint@10.0.0(jiti@1.21.7)) "@semantic-release/changelog": specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.2.9(typescript@5.9.3)) + version: 6.0.3(semantic-release@25.0.3(typescript@5.9.3)) "@semantic-release/exec": specifier: ^7.1.0 - version: 7.1.0(semantic-release@24.2.9(typescript@5.9.3)) + version: 7.1.0(semantic-release@25.0.3(typescript@5.9.3)) "@semantic-release/git": specifier: ^10.0.1 - version: 10.0.1(semantic-release@24.2.9(typescript@5.9.3)) + version: 10.0.1(semantic-release@25.0.3(typescript@5.9.3)) "@semantic-release/gitlab": - specifier: ^13.2.9 - version: 13.2.9(semantic-release@24.2.9(typescript@5.9.3)) + specifier: ^13.3.0 + version: 13.3.0(semantic-release@25.0.3(typescript@5.9.3)) "@tailwindcss/forms": - specifier: ^0.5.10 - version: 0.5.10(tailwindcss@3.4.18(yaml@2.8.1)) + specifier: ^0.5.11 + version: 0.5.11(tailwindcss@3.4.19(yaml@2.8.2)) "@tailwindcss/typography": specifier: ^0.5.19 - version: 0.5.19(tailwindcss@3.4.18(yaml@2.8.1)) + version: 0.5.19(tailwindcss@3.4.19(yaml@2.8.2)) "@types/leaflet": - specifier: ^1.9.20 - version: 1.9.20 + specifier: ^1.9.21 + version: 1.9.21 all-contributors-cli: specifier: ^6.26.1 version: 6.26.1 @@ -132,26 +132,26 @@ importers: specifier: ^10.1.0 version: 10.1.0 cssnano: - specifier: ^7.1.1 - version: 7.1.1(postcss@8.5.6) + specifier: ^7.1.2 + version: 7.1.2(postcss@8.5.6) cz-conventional-changelog: specifier: ^3.3.0 version: 3.3.0(@types/node@24.7.0)(typescript@5.9.3) eslint: - specifier: ^9.37.0 - version: 9.37.0(jiti@1.21.7) + specifier: ^10.0.0 + version: 10.0.0(jiti@1.21.7) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.37.0(jiti@1.21.7)) + version: 10.1.8(eslint@10.0.0(jiti@1.21.7)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@1.21.7)))(eslint@9.37.0(jiti@1.21.7))(prettier@3.6.2) + specifier: ^5.5.5 + version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.0.0(jiti@1.21.7)))(eslint@10.0.0(jiti@1.21.7))(prettier@3.8.1) glob: - specifier: ^11.0.3 - version: 11.0.3 + specifier: ^13.0.5 + version: 13.0.5 globals: - specifier: ^16.4.0 - version: 16.4.0 + specifier: ^17.3.0 + version: 17.3.0 husky: specifier: ^9.1.7 version: 9.1.7 @@ -159,8 +159,8 @@ importers: specifier: ^4.1.0 version: 4.1.0 lint-staged: - specifier: ^16.2.3 - version: 16.2.3 + specifier: ^16.2.7 + version: 16.2.7 postcss: specifier: ^8.5.6 version: 8.5.6 @@ -168,73 +168,97 @@ importers: specifier: ^16.1.1 version: 16.1.1(postcss@8.5.6) postcss-nesting: - specifier: ^13.0.2 - version: 13.0.2(postcss@8.5.6) + specifier: ^14.0.0 + version: 14.0.0(postcss@8.5.6) postcss-preset-env: - specifier: ^10.4.0 - version: 10.4.0(postcss@8.5.6) + specifier: ^11.1.3 + version: 11.1.3(postcss@8.5.6) postcss-reporter: specifier: ^7.1.0 version: 7.1.0(postcss@8.5.6) prettier: - specifier: 3.6.2 - version: 3.6.2 + specifier: 3.8.1 + version: 3.8.1 prettier-plugin-organize-imports: specifier: ^4.3.0 - version: 4.3.0(prettier@3.6.2)(typescript@5.9.3) + version: 4.3.0(prettier@3.8.1)(typescript@5.9.3) semantic-release: - specifier: ^24.2.9 - version: 24.2.9(typescript@5.9.3) + specifier: ^25.0.3 + version: 25.0.3(typescript@5.9.3) sharp: - specifier: ^0.34.4 - version: 0.34.4 + specifier: ^0.34.5 + version: 0.34.5 stylelint: - specifier: ^16.25.0 - version: 16.25.0(typescript@5.9.3) + specifier: ^17.3.0 + version: 17.3.0(typescript@5.9.3) stylelint-config-standard: - specifier: ^39.0.1 - version: 39.0.1(stylelint@16.25.0(typescript@5.9.3)) + specifier: ^40.0.0 + version: 40.0.0(stylelint@17.3.0(typescript@5.9.3)) svgo: specifier: ^4.0.0 version: 4.0.0 tailwindcss: - specifier: ^3.4.18 - version: 3.4.18(yaml@2.8.1) + specifier: ^3.4.19 + version: 3.4.19(yaml@2.8.2) typescript: specifier: ~5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.46.0 - version: 8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + specifier: ^8.56.0 + version: 8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3) vite: - specifier: ^7.1.9 - version: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1) + specifier: ^7.3.1 + version: 7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2) vite-plugin-codeigniter: specifier: ^2.0.0 - version: 2.0.0(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)) + version: 2.0.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)) vite-plugin-inspect: specifier: ^11.3.3 - version: 11.3.3(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)) + version: 11.3.3(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)) vite-plugin-pwa: - specifier: ^1.0.3 - version: 1.0.3(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1))(workbox-build@7.3.0)(workbox-window@7.3.0) + specifier: ^1.2.0 + version: 1.2.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2))(workbox-build@7.4.0)(workbox-window@7.4.0) vite-plugin-static-copy: - specifier: ^3.1.3 - version: 3.1.3(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)) + specifier: ^3.2.0 + version: 3.2.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)) workbox-build: - specifier: ^7.3.0 - version: 7.3.0 + specifier: ^7.4.0 + version: 7.4.0 workbox-core: - specifier: ^7.3.0 - version: 7.3.0 + specifier: ^7.4.0 + version: 7.4.0 workbox-routing: - specifier: ^7.3.0 - version: 7.3.0 + specifier: ^7.4.0 + version: 7.4.0 workbox-strategies: - specifier: ^7.3.0 - version: 7.3.0 + specifier: ^7.4.0 + version: 7.4.0 packages: + "@actions/core@3.0.0": + resolution: + { + integrity: sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==, + } + + "@actions/exec@3.0.0": + resolution: + { + integrity: sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==, + } + + "@actions/http-client@4.0.0": + resolution: + { + integrity: sha512-QuwPsgVMsD6qaPD57GLZi9sqzAZCtiJT8kVBCDpLtxhL5MydQ4gS+DrejtZZPdIYyB1e95uCK9Luyds7ybHI3g==, + } + + "@actions/io@3.0.2": + resolution: + { + integrity: sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==, + } + "@alloc/quick-lru@5.2.0": resolution: { @@ -263,31 +287,31 @@ packages: peerDependencies: ajv: ">=8" - "@babel/code-frame@7.27.1": + "@babel/code-frame@7.29.0": resolution: { - integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==, + integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==, } engines: { node: ">=6.9.0" } - "@babel/compat-data@7.28.4": + "@babel/compat-data@7.29.0": resolution: { - integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==, + integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==, } engines: { node: ">=6.9.0" } - "@babel/core@7.28.4": + "@babel/core@7.29.0": resolution: { - integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==, + integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==, } engines: { node: ">=6.9.0" } - "@babel/generator@7.28.3": + "@babel/generator@7.29.1": resolution: { - integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==, + integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==, } engines: { node: ">=6.9.0" } @@ -298,35 +322,35 @@ packages: } engines: { node: ">=6.9.0" } - "@babel/helper-compilation-targets@7.27.2": + "@babel/helper-compilation-targets@7.28.6": resolution: { - integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==, + integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==, } engines: { node: ">=6.9.0" } - "@babel/helper-create-class-features-plugin@7.28.3": + "@babel/helper-create-class-features-plugin@7.28.6": resolution: { - integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==, + integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-create-regexp-features-plugin@7.27.1": + "@babel/helper-create-regexp-features-plugin@7.28.5": resolution: { - integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==, + integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-define-polyfill-provider@0.6.5": + "@babel/helper-define-polyfill-provider@0.6.6": resolution: { - integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==, + integrity: sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==, } peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -338,24 +362,24 @@ packages: } engines: { node: ">=6.9.0" } - "@babel/helper-member-expression-to-functions@7.27.1": + "@babel/helper-member-expression-to-functions@7.28.5": resolution: { - integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==, + integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==, } engines: { node: ">=6.9.0" } - "@babel/helper-module-imports@7.27.1": + "@babel/helper-module-imports@7.28.6": resolution: { - integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==, + integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==, } engines: { node: ">=6.9.0" } - "@babel/helper-module-transforms@7.28.3": + "@babel/helper-module-transforms@7.28.6": resolution: { - integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==, + integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -368,10 +392,10 @@ packages: } engines: { node: ">=6.9.0" } - "@babel/helper-plugin-utils@7.27.1": + "@babel/helper-plugin-utils@7.28.6": resolution: { - integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==, + integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==, } engines: { node: ">=6.9.0" } @@ -384,10 +408,10 @@ packages: peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-replace-supers@7.27.1": + "@babel/helper-replace-supers@7.28.6": resolution: { - integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==, + integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -407,10 +431,10 @@ packages: } engines: { node: ">=6.9.0" } - "@babel/helper-validator-identifier@7.27.1": + "@babel/helper-validator-identifier@7.28.5": resolution: { - integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==, + integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==, } engines: { node: ">=6.9.0" } @@ -421,32 +445,32 @@ packages: } engines: { node: ">=6.9.0" } - "@babel/helper-wrap-function@7.28.3": + "@babel/helper-wrap-function@7.28.6": resolution: { - integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==, + integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==, } engines: { node: ">=6.9.0" } - "@babel/helpers@7.28.4": + "@babel/helpers@7.28.6": resolution: { - integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==, + integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==, } engines: { node: ">=6.9.0" } - "@babel/parser@7.28.4": + "@babel/parser@7.29.0": resolution: { - integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==, + integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==, } engines: { node: ">=6.0.0" } hasBin: true - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1": + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5": resolution: { - integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==, + integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -479,10 +503,10 @@ packages: peerDependencies: "@babel/core": ^7.13.0 - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3": + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6": resolution: { - integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==, + integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -497,19 +521,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-syntax-import-assertions@7.27.1": + "@babel/plugin-syntax-import-assertions@7.28.6": resolution: { - integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==, + integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-syntax-import-attributes@7.27.1": + "@babel/plugin-syntax-import-attributes@7.28.6": resolution: { - integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==, + integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -533,19 +557,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-async-generator-functions@7.28.0": + "@babel/plugin-transform-async-generator-functions@7.29.0": resolution: { - integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==, + integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-async-to-generator@7.27.1": + "@babel/plugin-transform-async-to-generator@7.28.6": resolution: { - integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==, + integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -560,64 +584,64 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-block-scoping@7.28.4": + "@babel/plugin-transform-block-scoping@7.28.6": resolution: { - integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==, + integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-class-properties@7.27.1": + "@babel/plugin-transform-class-properties@7.28.6": resolution: { - integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==, + integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-class-static-block@7.28.3": + "@babel/plugin-transform-class-static-block@7.28.6": resolution: { - integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==, + integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.12.0 - "@babel/plugin-transform-classes@7.28.4": + "@babel/plugin-transform-classes@7.28.6": resolution: { - integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==, + integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-computed-properties@7.27.1": + "@babel/plugin-transform-computed-properties@7.28.6": resolution: { - integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==, + integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-destructuring@7.28.0": + "@babel/plugin-transform-destructuring@7.28.5": resolution: { - integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==, + integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-dotall-regex@7.27.1": + "@babel/plugin-transform-dotall-regex@7.28.6": resolution: { - integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==, + integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -632,10 +656,10 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1": + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0": resolution: { - integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==, + integrity: sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -650,19 +674,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-explicit-resource-management@7.28.0": + "@babel/plugin-transform-explicit-resource-management@7.28.6": resolution: { - integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==, + integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-exponentiation-operator@7.27.1": + "@babel/plugin-transform-exponentiation-operator@7.28.6": resolution: { - integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==, + integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -695,10 +719,10 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-json-strings@7.27.1": + "@babel/plugin-transform-json-strings@7.28.6": resolution: { - integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==, + integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -713,10 +737,10 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-logical-assignment-operators@7.27.1": + "@babel/plugin-transform-logical-assignment-operators@7.28.6": resolution: { - integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==, + integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -740,19 +764,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-commonjs@7.27.1": + "@babel/plugin-transform-modules-commonjs@7.28.6": resolution: { - integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==, + integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-modules-systemjs@7.27.1": + "@babel/plugin-transform-modules-systemjs@7.29.0": resolution: { - integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==, + integrity: sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -767,10 +791,10 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-named-capturing-groups-regex@7.27.1": + "@babel/plugin-transform-named-capturing-groups-regex@7.29.0": resolution: { - integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==, + integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -785,28 +809,28 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-nullish-coalescing-operator@7.27.1": + "@babel/plugin-transform-nullish-coalescing-operator@7.28.6": resolution: { - integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==, + integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-numeric-separator@7.27.1": + "@babel/plugin-transform-numeric-separator@7.28.6": resolution: { - integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==, + integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-object-rest-spread@7.28.4": + "@babel/plugin-transform-object-rest-spread@7.28.6": resolution: { - integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==, + integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -821,19 +845,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-optional-catch-binding@7.27.1": + "@babel/plugin-transform-optional-catch-binding@7.28.6": resolution: { - integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==, + integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-optional-chaining@7.27.1": + "@babel/plugin-transform-optional-chaining@7.28.6": resolution: { - integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==, + integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -848,19 +872,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-private-methods@7.27.1": + "@babel/plugin-transform-private-methods@7.28.6": resolution: { - integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==, + integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-private-property-in-object@7.27.1": + "@babel/plugin-transform-private-property-in-object@7.28.6": resolution: { - integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==, + integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -875,19 +899,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-regenerator@7.28.4": + "@babel/plugin-transform-regenerator@7.29.0": resolution: { - integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==, + integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-regexp-modifiers@7.27.1": + "@babel/plugin-transform-regexp-modifiers@7.28.6": resolution: { - integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==, + integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -911,10 +935,10 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-spread@7.27.1": + "@babel/plugin-transform-spread@7.28.6": resolution: { - integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==, + integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -956,10 +980,10 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-property-regex@7.27.1": + "@babel/plugin-transform-unicode-property-regex@7.28.6": resolution: { - integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==, + integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -974,19 +998,19 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-unicode-sets-regex@7.27.1": + "@babel/plugin-transform-unicode-sets-regex@7.28.6": resolution: { - integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==, + integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/preset-env@7.28.3": + "@babel/preset-env@7.29.0": resolution: { - integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==, + integrity: sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==, } engines: { node: ">=6.9.0" } peerDependencies: @@ -1000,62 +1024,56 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - "@babel/runtime@7.28.4": + "@babel/runtime@7.28.6": resolution: { - integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==, + integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==, } engines: { node: ">=6.9.0" } - "@babel/template@7.27.2": + "@babel/template@7.28.6": resolution: { - integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==, + integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==, } engines: { node: ">=6.9.0" } - "@babel/traverse@7.28.4": + "@babel/traverse@7.29.0": resolution: { - integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==, + integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==, } engines: { node: ">=6.9.0" } - "@babel/types@7.28.4": + "@babel/types@7.29.0": resolution: { - integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==, + integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==, } engines: { node: ">=6.9.0" } - "@cacheable/memoize@2.0.3": + "@cacheable/memory@2.0.7": resolution: { - integrity: sha512-hl9wfQgpiydhQEIv7fkjEzTGE+tcosCXLKFDO707wYJ/78FVOlowb36djex5GdbSyeHnG62pomYLMuV/OT8Pbw==, + integrity: sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==, } - "@cacheable/memory@2.0.3": + "@cacheable/utils@2.3.4": resolution: { - integrity: sha512-R3UKy/CKOyb1LZG/VRCTMcpiMDyLH7SH3JrraRdK6kf3GweWCOU3sgvE13W3TiDRbxnDKylzKJvhUAvWl9LQOA==, + integrity: sha512-knwKUJEYgIfwShABS1BX6JyJJTglAFcEU7EXqzTdiGCXur4voqkiJkdgZIQtWNFhynzDWERcTYv/sETMu3uJWA==, } - "@cacheable/utils@2.1.0": + "@codemirror/autocomplete@6.20.0": resolution: { - integrity: sha512-ZdxfOiaarMqMj+H7qwlt5EBKWaeGihSYVHdQv5lUsbn8MJJOTW82OIwirQ39U5tMZkNvy3bQE+ryzC+xTAb9/g==, + integrity: sha512-bOwvTOIJcG5FVo5gUUupiwYh8MioPLQ4UcqbcRf7UQ98X90tCa9E1kZ3Z7tqwpZxYyOvh1YTYbmZE9RTfTp5hg==, } - "@codemirror/autocomplete@6.19.0": + "@codemirror/commands@6.10.2": resolution: { - integrity: sha512-61Hfv3cF07XvUxNeC3E7jhG8XNi1Yom1G0lRC936oLnlF+jrbrv8rc/J98XlYzcsAoTVupfsf5fLej1aI8kyIg==, - } - - "@codemirror/commands@6.9.0": - resolution: - { - integrity: sha512-454TVgjhO6cMufsyyGN70rGIfJxJEjcqjBG2x2Y03Y/+Fm99d3O/Kv1QDYWuG6hvxsgmjXmBuATikIIYvERX+w==, + integrity: sha512-vvX1fsih9HledO1c9zdotZYUZnE4xV0m6i3m25s5DIfXofuprk6cRcLUZvSk3CASUbwjQX21tOGbkY2BH8TpnQ==, } "@codemirror/lang-css@6.3.1": @@ -1082,34 +1100,34 @@ packages: integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==, } - "@codemirror/language@6.11.3": + "@codemirror/language@6.12.1": resolution: { - integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==, + integrity: sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ==, } - "@codemirror/lint@6.9.0": + "@codemirror/lint@6.9.4": resolution: { - integrity: sha512-wZxW+9XDytH3SKvS8cQzMyQCaaazH8XL1EMHleHe00wVzsv7NBQKVW2yzEHrRhmM7ZOhVdItPbvlRBvMp9ej7A==, + integrity: sha512-ABc9vJ8DEmvOWuH26P3i8FpMWPQkduD9Rvba5iwb6O3hxASgclm3T3krGo8NASXkHCidz6b++LWlzWIUfEPSWw==, } - "@codemirror/search@6.5.11": + "@codemirror/search@6.6.0": resolution: { - integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==, + integrity: sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw==, } - "@codemirror/state@6.5.2": + "@codemirror/state@6.5.4": resolution: { - integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==, + integrity: sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw==, } - "@codemirror/view@6.38.5": + "@codemirror/view@6.39.14": resolution: { - integrity: sha512-SFVsNAgsAoou+BjRewMqN+m9jaztB9wCWN9RSRgePqUbq8UVlvJfku5zB2KVhLPgH/h0RLk38tvd4tGeAhygnw==, + integrity: sha512-WJcvgHm/6Q7dvGT0YFv/6PSkoc36QlR0VCESS6x9tGsnF1lWLmmYxOgX3HH6v8fo6AvSLgpcs+H0Olre6MKXlg==, } "@colors/colors@1.5.0": @@ -1119,32 +1137,32 @@ packages: } engines: { node: ">=0.1.90" } - "@commitlint/cli@20.1.0": + "@commitlint/cli@20.4.1": resolution: { - integrity: sha512-pW5ujjrOovhq5RcYv5xCpb4GkZxkO2+GtOdBW2/qrr0Ll9tl3PX0aBBobGQl3mdZUbOBgwAexEQLeH6uxL0VYg==, + integrity: sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==, } engines: { node: ">=v18" } hasBin: true - "@commitlint/config-conventional@20.0.0": + "@commitlint/config-conventional@20.4.1": resolution: { - integrity: sha512-q7JroPIkDBtyOkVe9Bca0p7kAUYxZMxkrBArCfuD3yN4KjRAenP9PmYwnn7rsw8Q+hHq1QB2BRmBh0/Z19ZoJw==, + integrity: sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA==, } engines: { node: ">=v18" } - "@commitlint/config-validator@20.0.0": + "@commitlint/config-validator@20.4.0": resolution: { - integrity: sha512-BeyLMaRIJDdroJuYM2EGhDMGwVBMZna9UiIqV9hxj+J551Ctc6yoGuGSmghOy/qPhBSuhA6oMtbEiTmxECafsg==, + integrity: sha512-zShmKTF+sqyNOfAE0vKcqnpvVpG0YX8F9G/ZIQHI2CoKyK+PSdladXMSns400aZ5/QZs+0fN75B//3Q5CHw++w==, } engines: { node: ">=v18" } - "@commitlint/ensure@20.0.0": + "@commitlint/ensure@20.4.1": resolution: { - integrity: sha512-WBV47Fffvabe68n+13HJNFBqiMH5U1Ryls4W3ieGwPC0C7kJqp3OVQQzG2GXqOALmzrgAB+7GXmyy8N9ct8/Fg==, + integrity: sha512-WLQqaFx1pBooiVvBrA1YfJNFqZF8wS/YGOtr5RzApDbV9tQ52qT5VkTsY65hFTnXhW8PcDfZLaknfJTmPejmlw==, } engines: { node: ">=v18" } @@ -1155,66 +1173,66 @@ packages: } engines: { node: ">=v18" } - "@commitlint/format@20.0.0": + "@commitlint/format@20.4.0": resolution: { - integrity: sha512-zrZQXUcSDmQ4eGGrd+gFESiX0Rw+WFJk7nW4VFOmxub4mAATNKBQ4vNw5FgMCVehLUKG2OT2LjOqD0Hk8HvcRg==, + integrity: sha512-i3ki3WR0rgolFVX6r64poBHXM1t8qlFel1G1eCBvVgntE3fCJitmzSvH5JD/KVJN/snz6TfaX2CLdON7+s4WVQ==, } engines: { node: ">=v18" } - "@commitlint/is-ignored@20.0.0": + "@commitlint/is-ignored@20.4.1": resolution: { - integrity: sha512-ayPLicsqqGAphYIQwh9LdAYOVAQ9Oe5QCgTNTj+BfxZb9b/JW222V5taPoIBzYnAP0z9EfUtljgBk+0BN4T4Cw==, + integrity: sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA==, } engines: { node: ">=v18" } - "@commitlint/lint@20.0.0": + "@commitlint/lint@20.4.1": resolution: { - integrity: sha512-kWrX8SfWk4+4nCexfLaQT3f3EcNjJwJBsSZ5rMBw6JCd6OzXufFHgel2Curos4LKIxwec9WSvs2YUD87rXlxNQ==, + integrity: sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==, } engines: { node: ">=v18" } - "@commitlint/load@20.1.0": + "@commitlint/load@20.4.0": resolution: { - integrity: sha512-qo9ER0XiAimATQR5QhvvzePfeDfApi/AFlC1G+YN+ZAY8/Ua6IRrDrxRvQAr+YXUKAxUsTDSp9KXeXLBPsNRWg==, + integrity: sha512-Dauup/GfjwffBXRJUdlX/YRKfSVXsXZLnINXKz0VZkXdKDcaEILAi9oflHGbfydonJnJAbXEbF3nXPm9rm3G6A==, } engines: { node: ">=v18" } - "@commitlint/message@20.0.0": + "@commitlint/message@20.4.0": resolution: { - integrity: sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==, + integrity: sha512-B5lGtvHgiLAIsK5nLINzVW0bN5hXv+EW35sKhYHE8F7V9Uz1fR4tx3wt7mobA5UNhZKUNgB/+ldVMQE6IHZRyA==, } engines: { node: ">=v18" } - "@commitlint/parse@20.0.0": + "@commitlint/parse@20.4.1": resolution: { - integrity: sha512-j/PHCDX2bGM5xGcWObOvpOc54cXjn9g6xScXzAeOLwTsScaL4Y+qd0pFC6HBwTtrH92NvJQc+2Lx9HFkVi48cg==, + integrity: sha512-XNtZjeRcFuAfUnhYrCY02+mpxwY4OmnvD3ETbVPs25xJFFz1nRo/25nHj+5eM+zTeRFvWFwD4GXWU2JEtoK1/w==, } engines: { node: ">=v18" } - "@commitlint/read@20.0.0": + "@commitlint/read@20.4.0": resolution: { - integrity: sha512-Ti7Y7aEgxsM1nkwA4ZIJczkTFRX/+USMjNrL9NXwWQHqNqrBX2iMi+zfuzZXqfZ327WXBjdkRaytJ+z5vNqTOA==, + integrity: sha512-QfpFn6/I240ySEGv7YWqho4vxqtPpx40FS7kZZDjUJ+eHxu3azfhy7fFb5XzfTqVNp1hNoI3tEmiEPbDB44+cg==, } engines: { node: ">=v18" } - "@commitlint/resolve-extends@20.1.0": + "@commitlint/resolve-extends@20.4.0": resolution: { - integrity: sha512-cxKXQrqHjZT3o+XPdqDCwOWVFQiae++uwd9dUBC7f2MdV58ons3uUvASdW7m55eat5sRiQ6xUHyMWMRm6atZWw==, + integrity: sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g==, } engines: { node: ">=v18" } - "@commitlint/rules@20.0.0": + "@commitlint/rules@20.4.1": resolution: { - integrity: sha512-gvg2k10I/RfvHn5I5sxvVZKM1fl72Sqrv2YY/BnM7lMHcYqO0E2jnRWoYguvBfEcZ39t+rbATlciggVe77E4zA==, + integrity: sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==, } engines: { node: ">=v18" } @@ -1225,444 +1243,489 @@ packages: } engines: { node: ">=v18" } - "@commitlint/top-level@20.0.0": + "@commitlint/top-level@20.4.0": resolution: { - integrity: sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==, + integrity: sha512-NDzq8Q6jmFaIIBC/GG6n1OQEaHdmaAAYdrZRlMgW6glYWGZ+IeuXmiymDvQNXPc82mVxq2KiE3RVpcs+1OeDeA==, } engines: { node: ">=v18" } - "@commitlint/types@20.0.0": + "@commitlint/types@20.4.0": resolution: { - integrity: sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==, + integrity: sha512-aO5l99BQJ0X34ft8b0h7QFkQlqxC6e7ZPVmBKz13xM9O8obDaM1Cld4sQlJDXXU/VFuUzQ30mVtHjVz74TuStw==, } engines: { node: ">=v18" } - "@csstools/cascade-layer-name-parser@2.0.5": + "@csstools/cascade-layer-name-parser@3.0.0": resolution: { - integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==, + integrity: sha512-/3iksyevwRfSJx5yH0RkcrcYXwuhMQx3Juqf40t97PeEy2/Mz2TItZ/z/216qpe4GgOyFBP8MKIwVvytzHmfIQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.5 - "@csstools/css-tokenizer": ^3.0.4 + "@csstools/css-parser-algorithms": ^4.0.0 + "@csstools/css-tokenizer": ^4.0.0 - "@csstools/color-helpers@5.1.0": + "@csstools/color-helpers@6.0.1": resolution: { - integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==, + integrity: sha512-NmXRccUJMk2AWA5A7e5a//3bCIMyOu2hAtdRYrhPPHjDxINuCwX1w6rnIZ4xjLcp0ayv6h8Pc3X0eJUGiAAXHQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } - "@csstools/css-calc@2.1.4": + "@csstools/css-calc@3.1.1": resolution: { - integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==, + integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.5 - "@csstools/css-tokenizer": ^3.0.4 + "@csstools/css-parser-algorithms": ^4.0.0 + "@csstools/css-tokenizer": ^4.0.0 - "@csstools/css-color-parser@3.1.0": + "@csstools/css-color-parser@4.0.1": resolution: { - integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==, + integrity: sha512-vYwO15eRBEkeF6xjAno/KQ61HacNhfQuuU/eGwH67DplL0zD5ZixUa563phQvUelA07yDczIXdtmYojCphKJcw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.5 - "@csstools/css-tokenizer": ^3.0.4 + "@csstools/css-parser-algorithms": ^4.0.0 + "@csstools/css-tokenizer": ^4.0.0 - "@csstools/css-parser-algorithms@3.0.5": + "@csstools/css-parser-algorithms@4.0.0": resolution: { - integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==, + integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: - "@csstools/css-tokenizer": ^3.0.4 + "@csstools/css-tokenizer": ^4.0.0 - "@csstools/css-tokenizer@3.0.4": + "@csstools/css-syntax-patches-for-csstree@1.0.27": resolution: { - integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==, + integrity: sha512-sxP33Jwg1bviSUXAV43cVYdmjt2TLnLXNqCWl9xmxHawWVjGz/kEbdkr7F9pxJNBN2Mh+dq0crgItbW6tQvyow==, } - engines: { node: ">=18" } - "@csstools/media-query-list-parser@4.0.3": + "@csstools/css-tokenizer@4.0.0": resolution: { - integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==, + integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } + + "@csstools/media-query-list-parser@5.0.0": + resolution: + { + integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==, + } + engines: { node: ">=20.19.0" } peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.5 - "@csstools/css-tokenizer": ^3.0.4 + "@csstools/css-parser-algorithms": ^4.0.0 + "@csstools/css-tokenizer": ^4.0.0 - "@csstools/postcss-alpha-function@1.0.1": + "@csstools/postcss-alpha-function@2.0.2": resolution: { - integrity: sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==, + integrity: sha512-EXdJC5fds0h1KqoioUBkcYPZvcNKR64jrGkbqlDNbMU3FP1MzLEr/QJR8bj/bu53TJFIgkc9WvKcpbwVqZ4WPg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-cascade-layers@5.0.2": + "@csstools/postcss-cascade-layers@6.0.0": resolution: { - integrity: sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==, + integrity: sha512-WhsECqmrEZQGqaPlBA7JkmF/CJ2/+wetL4fkL9sOPccKd32PQ1qToFM6gqSI5rkpmYqubvbxjEJhyMTHYK0vZQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-function-display-p3-linear@1.0.1": + "@csstools/postcss-color-function-display-p3-linear@2.0.1": resolution: { - integrity: sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==, + integrity: sha512-blnzzMkMswoagp1u3JS1OiiTuQCW1F+lQEtlxu2BXhTUmEeKHhSgrrAceF7s4bwZOwKYbkxuw/FC9Ni/zxB7Xw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-function@4.0.12": + "@csstools/postcss-color-function@5.0.1": resolution: { - integrity: sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==, + integrity: sha512-SNU4o63+oZpB7ufkTmj3FholvMtJwuyIWqTOVOxnZjNDFEg1hwdbnPjoytZVgKRQGkvkHdAS0uZWn0zH+ZwXCQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-mix-function@3.0.12": + "@csstools/postcss-color-mix-function@4.0.1": resolution: { - integrity: sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==, + integrity: sha512-B9XBCd8cmHVwnc5YTn2YVXOlNMTNwuPIpJQ87665vaNdfNorVWz8JhAAv7Vq0v66TA6htE7+QW0OidL/QV0tiA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-mix-variadic-function-arguments@1.0.2": + "@csstools/postcss-color-mix-variadic-function-arguments@2.0.1": resolution: { - integrity: sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==, + integrity: sha512-PV5nv9EHsEsvC5GlVqAHa1PznP/qZxFAIABImrkGJUbSoFUTwpnPch/dYSKw52CQ0aNnwCqMHoM29wDwmpVLqw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-content-alt-text@2.0.8": + "@csstools/postcss-content-alt-text@3.0.0": resolution: { - integrity: sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==, + integrity: sha512-OHa+4aCcrJtHpPWB3zptScHwpS1TUbeLR4uO0ntIz0Su/zw9SoWkVu+tDMSySSAsNtNSI3kut4fTliFwIsrHxA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-contrast-color-function@2.0.12": + "@csstools/postcss-contrast-color-function@3.0.1": resolution: { - integrity: sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==, + integrity: sha512-Zy2gyAPsUyoAUkmBjLbWcXJhglM+toBRpNegyJc/LTHpSpIbMKVmByGQ+VSw01E1Pov8Dk/fgEs9hd11xtGC8g==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-exponential-functions@2.0.9": + "@csstools/postcss-exponential-functions@3.0.0": resolution: { - integrity: sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==, + integrity: sha512-KCtnlZw1VrDCAbYxE44rUHONYAkjhh0/iS5T3L2K5OHuvoSEvxDjJO82pRwTmsRxVtSiC+syPjx2k2xsqHOM7w==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-font-format-keywords@4.0.0": + "@csstools/postcss-font-format-keywords@5.0.0": resolution: { - integrity: sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==, + integrity: sha512-M1EjCe/J3u8fFhOZgRci74cQhJ7R0UFBX6T+WqoEvjrr8hVfMiV+HTYrzxLY5OW8YllvXYr5Q5t5OvJbsUSeDg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-gamut-mapping@2.0.11": + "@csstools/postcss-gamut-mapping@3.0.1": resolution: { - integrity: sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==, + integrity: sha512-0S7D+gArVXsgRDxjoNv8g2QlaIi/SegqdlTMgVwowaPSyxaZsVnwrhShvmlpoLOVHmpJfHKGiXzn1Hc1BcZCzQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-gradients-interpolation-method@5.0.12": + "@csstools/postcss-gradients-interpolation-method@6.0.1": resolution: { - integrity: sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==, + integrity: sha512-Y5dxOstuUCdmU1tuEB/EgKxDw+/DAZes4gQeitb/H0S5khmjT24CfbVa/l2ZelNCEEq9KjxqO2cjwDV2vqj62w==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-hwb-function@4.0.12": + "@csstools/postcss-hwb-function@5.0.1": resolution: { - integrity: sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==, + integrity: sha512-9f8TA/B8iEpzF0y4Z6qPVfP9nMp2ti10OFbtyDtoBz3+eK0KPV4CCCjTwYIpPRopLgctFZt7xqmOxA7JgAJEug==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-ic-unit@4.0.4": + "@csstools/postcss-ic-unit@5.0.0": resolution: { - integrity: sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==, + integrity: sha512-/ws5d6c4uKqfM9zIL3ugcGI+3fvZEOOkJHNzAyTAGJIdZ+aSL9BVPNlHGV4QzmL0vqBSCOdU3+rhcMEj3+KzYw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-initial@2.0.1": + "@csstools/postcss-initial@3.0.0": resolution: { - integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==, + integrity: sha512-UVUrFmrTQyLomVepnjWlbBg7GoscLmXLwYFyjbcEnmpeGW7wde6lNpx5eM3eVwZI2M+7hCE3ykYnAsEPLcLa+Q==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-is-pseudo-class@5.0.3": + "@csstools/postcss-is-pseudo-class@6.0.0": resolution: { - integrity: sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==, + integrity: sha512-1Hdy/ykg9RDo8vU8RiM2o+RaXO39WpFPaIkHxlAEJFofle/lc33tdQMKhBk3jR/Fe+uZNLOs3HlowFafyFptVw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-light-dark-function@2.0.11": + "@csstools/postcss-light-dark-function@3.0.0": resolution: { - integrity: sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==, + integrity: sha512-s++V5/hYazeRUCYIn2lsBVzUsxdeC46gtwpgW6lu5U/GlPOS5UTDT14kkEyPgXmFbCvaWLREqV7YTMJq1K3G6w==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-logical-float-and-clear@3.0.0": + "@csstools/postcss-logical-float-and-clear@4.0.0": resolution: { - integrity: sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==, + integrity: sha512-NGzdIRVj/VxOa/TjVdkHeyiJoDihONV0+uB0csUdgWbFFr8xndtfqK8iIGP9IKJzco+w0hvBF2SSk2sDSTAnOQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-logical-overflow@2.0.0": + "@csstools/postcss-logical-overflow@3.0.0": resolution: { - integrity: sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==, + integrity: sha512-5cRg93QXVskM0MNepHpPcL0WLSf5Hncky0DrFDQY/4ozbH5lH7SX5ejayVpNTGSX7IpOvu7ykQDLOdMMGYzwpA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-logical-overscroll-behavior@2.0.0": + "@csstools/postcss-logical-overscroll-behavior@3.0.0": resolution: { - integrity: sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==, + integrity: sha512-82Jnl/5Wi5jb19nQE1XlBHrZcNL3PzOgcj268cDkfwf+xi10HBqufGo1Unwf5n8bbbEFhEKgyQW+vFsc9iY1jw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-logical-resize@3.0.0": + "@csstools/postcss-logical-resize@4.0.0": resolution: { - integrity: sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==, + integrity: sha512-L0T3q0gei/tGetCGZU0c7VN77VTivRpz1YZRNxjXYmW+85PKeI6U9YnSvDqLU2vBT2uN4kLEzfgZ0ThIZpN18A==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-logical-viewport-units@3.0.4": + "@csstools/postcss-logical-viewport-units@4.0.0": resolution: { - integrity: sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==, + integrity: sha512-TA3AqVN/1IH3dKRC2UUWvprvwyOs2IeD7FDZk5Hz20w4q33yIuSg0i0gjyTUkcn90g8A4n7QpyZ2AgBrnYPnnA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-media-minmax@2.0.9": + "@csstools/postcss-media-minmax@3.0.0": resolution: { - integrity: sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==, + integrity: sha512-42szvyZ/oqG7NSvBQOGq1IaJaHR6mr/iXqqjW8/JuIajIHRs9HcJR5ExC4vbyCqk+fr7/DIOhm5ZrELBytLDsw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5": + "@csstools/postcss-media-queries-aspect-ratio-number-values@4.0.0": resolution: { - integrity: sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==, + integrity: sha512-FDdC3lbrj8Vr0SkGIcSLTcRB7ApG6nlJFxOxkEF2C5hIZC1jtgjISFSGn/WjFdVkn8Dqe+Vx9QXI3axS2w1XHw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-nested-calc@4.0.0": + "@csstools/postcss-mixins@1.0.0": resolution: { - integrity: sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==, + integrity: sha512-rz6qjT2w9L3k65jGc2dX+3oGiSrYQ70EZPDrINSmSVoVys7lLBFH0tvEa8DW2sr9cbRVD/W+1sy8+7bfu0JUfg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-normalize-display-values@4.0.0": + "@csstools/postcss-nested-calc@5.0.0": resolution: { - integrity: sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==, + integrity: sha512-aPSw8P60e/i9BEfugauhikBqgjiwXcw3I9o4vXs+hktl4NSTgZRI0QHimxk9mst8N01A2TKDBxOln3mssRxiHQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-oklab-function@4.0.12": + "@csstools/postcss-normalize-display-values@5.0.1": resolution: { - integrity: sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==, + integrity: sha512-FcbEmoxDEGYvm2W3rQzVzcuo66+dDJjzzVDs+QwRmZLHYofGmMGwIKPqzF86/YW+euMDa7sh1xjWDvz/fzByZQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-progressive-custom-properties@4.2.1": + "@csstools/postcss-oklab-function@5.0.1": resolution: { - integrity: sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==, + integrity: sha512-Ql+X4zu29ITihxHKcCFEU84ww+Nkv44M2s0fT7Nv4iQYlQ4+liF6v9RL0ezeogeiLRNLLC6yh0ay1PHpmaNIgQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-random-function@2.0.1": + "@csstools/postcss-position-area-property@2.0.0": resolution: { - integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==, + integrity: sha512-TeEfzsJGB23Syv7yCm8AHCD2XTFujdjr9YYu9ebH64vnfCEvY4BG319jXAYSlNlf3Yc9PNJ6WnkDkUF5XVgSKQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-relative-color-syntax@3.0.12": + "@csstools/postcss-progressive-custom-properties@5.0.0": resolution: { - integrity: sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==, + integrity: sha512-NsJoZ89rxmDrUsITf8QIk5w+lQZQ8Xw5K6cLFG+cfiffsLYHb3zcbOOrHLetGl1WIhjWWQ4Cr8MMrg46Q+oACg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-scope-pseudo-class@4.0.1": + "@csstools/postcss-property-rule-prelude-list@2.0.0": resolution: { - integrity: sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==, + integrity: sha512-qcMAkc9AhpzHgmQCD8hoJgGYifcOAxd1exXjjxilMM6euwRE619xDa4UsKBCv/v4g+sS63sd6c29LPM8s2ylSQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-sign-functions@1.1.4": + "@csstools/postcss-random-function@3.0.0": resolution: { - integrity: sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==, + integrity: sha512-H/Zt5o9NAd8mowq3XRy8uU19wOEe8sbKyKOKxrzOdG0rz2maA4fLcXc9MQucdm3s4zMDfVJtCqvwrLP7lKWybA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-stepped-value-functions@4.0.9": + "@csstools/postcss-relative-color-syntax@4.0.1": resolution: { - integrity: sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==, + integrity: sha512-zRLO9xMGtCCT0FTpTsaGI6cmdzJKbwWjg92AuczlSDuriEAPEJL+ZJ4jDyw51p23DfoAFgK8soB/LyoY1kFOLQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-text-decoration-shorthand@4.0.3": + "@csstools/postcss-scope-pseudo-class@5.0.0": resolution: { - integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==, + integrity: sha512-kBrBFJcAji3MSHS4qQIihPvJfJC5xCabXLbejqDMiQi+86HD4eMBiTayAo46Urg7tlEmZZQFymFiJt+GH6nvXw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-trigonometric-functions@4.0.9": + "@csstools/postcss-sign-functions@2.0.0": resolution: { - integrity: sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==, + integrity: sha512-32Bw7++8ToSLMEOSJUuxJsAJJdsIfgeD1dYPKRCk9/fTciVZ8MjkPXypwiXIo7xIJk0h5CJz6QUkDoc6dcAJ7Q==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-unset-value@4.0.0": + "@csstools/postcss-stepped-value-functions@5.0.0": resolution: { - integrity: sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==, + integrity: sha512-NueCSNbaq7QtAj6QwseMqOlM3C8nN2GWaPwd2Uw+IOYAbGvO/84BxUtNeZljeOmqJX61hwSNhLfwmgJXgY0W5A==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/selector-resolve-nested@3.1.0": + "@csstools/postcss-syntax-descriptor-syntax-production@2.0.0": resolution: { - integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==, + integrity: sha512-elYcbdiBXAkPqvojB9kIBRuHY6htUhjSITtFQ+XiXnt6SvZCbNGxQmaaw6uZ7SPHu/+i/XVjzIt09/1k3SIerQ==, } - engines: { node: ">=18" } - peerDependencies: - postcss-selector-parser: ^7.0.0 - - "@csstools/selector-specificity@5.0.0": - resolution: - { - integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==, - } - engines: { node: ">=18" } - peerDependencies: - postcss-selector-parser: ^7.0.0 - - "@csstools/utilities@2.0.0": - resolution: - { - integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==, - } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@dual-bundle/import-meta-resolve@4.2.1": + "@csstools/postcss-system-ui-font-family@2.0.0": resolution: { - integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==, + integrity: sha512-FyGZCgchFImFyiHS2x3rD5trAqatf/x23veBLTIgbaqyFfna6RNBD+Qf8HRSjt6HGMXOLhAjxJ3OoZg0bbn7Qw==, } + engines: { node: ">=20.19.0" } + peerDependencies: + postcss: ^8.4 - "@emnapi/runtime@1.5.0": + "@csstools/postcss-text-decoration-shorthand@5.0.2": resolution: { - integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==, + integrity: sha512-0VUTt79lfQ2LGQLfyOBeqpinDLzOf3w+tlA1Re/KjSOc86H6tRz6TeXbISrBSJlfM1fYKNmBNw+ON8Ovy6aNeg==, + } + engines: { node: ">=20.19.0" } + peerDependencies: + postcss: ^8.4 + + "@csstools/postcss-trigonometric-functions@5.0.0": + resolution: + { + integrity: sha512-isjkD3l1MVjanGuaS7RIYP/9txZKbZ8eQPaUHoxEWmySm3k6KutSepzPINL6MXyyi0ZUijZcktA++/L66IK71A==, + } + engines: { node: ">=20.19.0" } + peerDependencies: + postcss: ^8.4 + + "@csstools/postcss-unset-value@5.0.0": + resolution: + { + integrity: sha512-EoO54sS2KCIfesvHyFYAW99RtzwHdgaJzhl7cqKZSaMYKZv3fXSOehDjAQx8WZBKn1JrMd7xJJI1T1BxPF7/jA==, + } + engines: { node: ">=20.19.0" } + peerDependencies: + postcss: ^8.4 + + "@csstools/selector-resolve-nested@4.0.0": + resolution: + { + integrity: sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==, + } + engines: { node: ">=20.19.0" } + peerDependencies: + postcss-selector-parser: ^7.1.1 + + "@csstools/selector-specificity@6.0.0": + resolution: + { + integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==, + } + engines: { node: ">=20.19.0" } + peerDependencies: + postcss-selector-parser: ^7.1.1 + + "@csstools/utilities@3.0.0": + resolution: + { + integrity: sha512-etDqA/4jYvOGBM6yfKCOsEXfH96BKztZdgGmGqKi2xHnDe0ILIBraRspwgYatJH9JsCZ5HCGoCst8w18EKOAdg==, + } + engines: { node: ">=20.19.0" } + peerDependencies: + postcss: ^8.4 + + "@emnapi/runtime@1.8.1": + resolution: + { + integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==, } "@epic-web/invariant@1.0.0": @@ -1671,315 +1734,320 @@ packages: integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==, } - "@esbuild/aix-ppc64@0.25.10": + "@esbuild/aix-ppc64@0.27.3": resolution: { - integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==, + integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==, } engines: { node: ">=18" } cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.25.10": + "@esbuild/android-arm64@0.27.3": resolution: { - integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==, + integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==, } engines: { node: ">=18" } cpu: [arm64] os: [android] - "@esbuild/android-arm@0.25.10": + "@esbuild/android-arm@0.27.3": resolution: { - integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==, + integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==, } engines: { node: ">=18" } cpu: [arm] os: [android] - "@esbuild/android-x64@0.25.10": + "@esbuild/android-x64@0.27.3": resolution: { - integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==, + integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==, } engines: { node: ">=18" } cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.25.10": + "@esbuild/darwin-arm64@0.27.3": resolution: { - integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==, + integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==, } engines: { node: ">=18" } cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.25.10": + "@esbuild/darwin-x64@0.27.3": resolution: { - integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==, + integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==, } engines: { node: ">=18" } cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.25.10": + "@esbuild/freebsd-arm64@0.27.3": resolution: { - integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==, + integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==, } engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.25.10": + "@esbuild/freebsd-x64@0.27.3": resolution: { - integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==, + integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==, } engines: { node: ">=18" } cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.25.10": + "@esbuild/linux-arm64@0.27.3": resolution: { - integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==, + integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==, } engines: { node: ">=18" } cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.25.10": + "@esbuild/linux-arm@0.27.3": resolution: { - integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==, + integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==, } engines: { node: ">=18" } cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.25.10": + "@esbuild/linux-ia32@0.27.3": resolution: { - integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==, + integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==, } engines: { node: ">=18" } cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.25.10": + "@esbuild/linux-loong64@0.27.3": resolution: { - integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==, + integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==, } engines: { node: ">=18" } cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.25.10": + "@esbuild/linux-mips64el@0.27.3": resolution: { - integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==, + integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==, } engines: { node: ">=18" } cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.25.10": + "@esbuild/linux-ppc64@0.27.3": resolution: { - integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==, + integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==, } engines: { node: ">=18" } cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.25.10": + "@esbuild/linux-riscv64@0.27.3": resolution: { - integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==, + integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==, } engines: { node: ">=18" } cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.25.10": + "@esbuild/linux-s390x@0.27.3": resolution: { - integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==, + integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==, } engines: { node: ">=18" } cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.25.10": + "@esbuild/linux-x64@0.27.3": resolution: { - integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==, + integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==, } engines: { node: ">=18" } cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.25.10": + "@esbuild/netbsd-arm64@0.27.3": resolution: { - integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==, + integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==, } engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.25.10": + "@esbuild/netbsd-x64@0.27.3": resolution: { - integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==, + integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==, } engines: { node: ">=18" } cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.25.10": + "@esbuild/openbsd-arm64@0.27.3": resolution: { - integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==, + integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==, } engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.25.10": + "@esbuild/openbsd-x64@0.27.3": resolution: { - integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==, + integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==, } engines: { node: ">=18" } cpu: [x64] os: [openbsd] - "@esbuild/openharmony-arm64@0.25.10": + "@esbuild/openharmony-arm64@0.27.3": resolution: { - integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==, + integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==, } engines: { node: ">=18" } cpu: [arm64] os: [openharmony] - "@esbuild/sunos-x64@0.25.10": + "@esbuild/sunos-x64@0.27.3": resolution: { - integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==, + integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==, } engines: { node: ">=18" } cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.25.10": + "@esbuild/win32-arm64@0.27.3": resolution: { - integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==, + integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==, } engines: { node: ">=18" } cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.25.10": + "@esbuild/win32-ia32@0.27.3": resolution: { - integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==, + integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==, } engines: { node: ">=18" } cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.25.10": + "@esbuild/win32-x64@0.27.3": resolution: { - integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==, + integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==, } engines: { node: ">=18" } cpu: [x64] os: [win32] - "@eslint-community/eslint-utils@4.9.0": + "@eslint-community/eslint-utils@4.9.1": resolution: { - integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==, + integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==, } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - "@eslint-community/regexpp@4.12.1": + "@eslint-community/regexpp@4.12.2": resolution: { - integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==, + integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, } engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - "@eslint/config-array@0.21.0": + "@eslint/config-array@0.23.1": resolution: { - integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==, + integrity: sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + "@eslint/config-helpers@0.5.2": + resolution: + { + integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + "@eslint/core@1.1.0": + resolution: + { + integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + "@eslint/eslintrc@3.3.3": + resolution: + { + integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/config-helpers@0.4.0": + "@eslint/js@10.0.1": resolution: { - integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==, + integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true - "@eslint/core@0.16.0": + "@eslint/object-schema@3.0.1": resolution: { - integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==, + integrity: sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - "@eslint/eslintrc@3.3.1": + "@eslint/plugin-kit@0.6.0": resolution: { - integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==, + integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - "@eslint/js@9.37.0": + "@floating-ui/core@1.7.4": resolution: { - integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/object-schema@2.1.6": - resolution: - { - integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/plugin-kit@0.4.0": - resolution: - { - integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@floating-ui/core@1.7.3": - resolution: - { - integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==, + integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==, } - "@floating-ui/dom@1.7.4": + "@floating-ui/dom@1.7.5": resolution: { - integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==, + integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==, } "@floating-ui/utils@0.2.10": @@ -2030,10 +2098,10 @@ packages: integrity: sha512-AlquKGee+IWiAMYVB0xyHFZRMnu4n3X4HTvJHu79GiVJ1ojTukCWyxMlF5NMsecoLcBKsuBhx3QPv2vkE/zQ0A==, } - "@github/relative-time-element@4.4.8": + "@github/relative-time-element@5.0.0": resolution: { - integrity: sha512-FSLYm6F3TSQnqHE1EMQUVVgi2XjbCvsESwwXfugHFpBnhyF1uhJOtu0Psp/BB/qqazfdkk7f5fVcu7WuXl3t8Q==, + integrity: sha512-L/2r0DNR/rMbmHWcsdmhtOiy2gESoGOhItNFD4zJ3nZfHl79Dx3N18Vfx/pYr2lruMOdk1cJZb4wEumm+Dxm1w==, } "@humanfs/core@0.19.1": @@ -2071,214 +2139,233 @@ packages: } engines: { node: ">=18" } - "@img/sharp-darwin-arm64@0.34.4": + "@img/sharp-darwin-arm64@0.34.5": resolution: { - integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==, + integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [darwin] - "@img/sharp-darwin-x64@0.34.4": + "@img/sharp-darwin-x64@0.34.5": resolution: { - integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==, + integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [darwin] - "@img/sharp-libvips-darwin-arm64@1.2.3": + "@img/sharp-libvips-darwin-arm64@1.2.4": resolution: { - integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==, + integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==, } cpu: [arm64] os: [darwin] - "@img/sharp-libvips-darwin-x64@1.2.3": + "@img/sharp-libvips-darwin-x64@1.2.4": resolution: { - integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==, + integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==, } cpu: [x64] os: [darwin] - "@img/sharp-libvips-linux-arm64@1.2.3": + "@img/sharp-libvips-linux-arm64@1.2.4": resolution: { - integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==, + integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==, } cpu: [arm64] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-arm@1.2.3": + "@img/sharp-libvips-linux-arm@1.2.4": resolution: { - integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==, + integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==, } cpu: [arm] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-ppc64@1.2.3": + "@img/sharp-libvips-linux-ppc64@1.2.4": resolution: { - integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==, + integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==, } cpu: [ppc64] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-s390x@1.2.3": + "@img/sharp-libvips-linux-riscv64@1.2.4": resolution: { - integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==, + integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==, + } + cpu: [riscv64] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-s390x@1.2.4": + resolution: + { + integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==, } cpu: [s390x] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-x64@1.2.3": + "@img/sharp-libvips-linux-x64@1.2.4": resolution: { - integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==, + integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==, } cpu: [x64] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linuxmusl-arm64@1.2.3": + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": resolution: { - integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==, + integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==, } cpu: [arm64] os: [linux] + libc: [musl] - "@img/sharp-libvips-linuxmusl-x64@1.2.3": + "@img/sharp-libvips-linuxmusl-x64@1.2.4": resolution: { - integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==, + integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==, } cpu: [x64] os: [linux] + libc: [musl] - "@img/sharp-linux-arm64@0.34.4": + "@img/sharp-linux-arm64@0.34.5": resolution: { - integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==, + integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [linux] + libc: [glibc] - "@img/sharp-linux-arm@0.34.4": + "@img/sharp-linux-arm@0.34.5": resolution: { - integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==, + integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm] os: [linux] + libc: [glibc] - "@img/sharp-linux-ppc64@0.34.4": + "@img/sharp-linux-ppc64@0.34.5": resolution: { - integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==, + integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [ppc64] os: [linux] + libc: [glibc] - "@img/sharp-linux-s390x@0.34.4": + "@img/sharp-linux-riscv64@0.34.5": resolution: { - integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==, + integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [riscv64] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-s390x@0.34.5": + resolution: + { + integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [s390x] os: [linux] + libc: [glibc] - "@img/sharp-linux-x64@0.34.4": + "@img/sharp-linux-x64@0.34.5": resolution: { - integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==, + integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] + libc: [glibc] - "@img/sharp-linuxmusl-arm64@0.34.4": + "@img/sharp-linuxmusl-arm64@0.34.5": resolution: { - integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==, + integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [linux] + libc: [musl] - "@img/sharp-linuxmusl-x64@0.34.4": + "@img/sharp-linuxmusl-x64@0.34.5": resolution: { - integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==, + integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] + libc: [musl] - "@img/sharp-wasm32@0.34.4": + "@img/sharp-wasm32@0.34.5": resolution: { - integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==, + integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [wasm32] - "@img/sharp-win32-arm64@0.34.4": + "@img/sharp-win32-arm64@0.34.5": resolution: { - integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==, + integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [win32] - "@img/sharp-win32-ia32@0.34.4": + "@img/sharp-win32-ia32@0.34.5": resolution: { - integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==, + integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [ia32] os: [win32] - "@img/sharp-win32-x64@0.34.4": + "@img/sharp-win32-x64@0.34.5": resolution: { - integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==, + integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [win32] - "@isaacs/balanced-match@4.0.1": + "@isaacs/cliui@9.0.0": resolution: { - integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==, + integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==, } - engines: { node: 20 || >=22 } - - "@isaacs/brace-expansion@5.0.0": - resolution: - { - integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==, - } - engines: { node: 20 || >=22 } - - "@isaacs/cliui@8.0.2": - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } "@jridgewell/gen-mapping@0.3.13": resolution: @@ -2317,12 +2404,14 @@ packages: integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, } - "@keyv/bigmap@1.0.2": + "@keyv/bigmap@1.3.1": resolution: { - integrity: sha512-KR03xkEZlAZNF4IxXgVXb+uNIVNvwdh8UwI0cnc7WI6a+aQcDp8GL80qVfeB4E5NpsKJzou5jU0r6yLSSbMOtA==, + integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==, } engines: { node: ">= 18" } + peerDependencies: + keyv: ^5.6.0 "@keyv/serialize@1.1.1": resolution: @@ -2330,28 +2419,28 @@ packages: integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==, } - "@lezer/common@1.2.3": + "@lezer/common@1.5.1": resolution: { - integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==, + integrity: sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==, } - "@lezer/css@1.3.0": + "@lezer/css@1.3.1": resolution: { - integrity: sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw==, + integrity: sha512-PYAKeUVBo3HFThruRyp/iK91SwiZJnzXh8QzkQlwijB5y+N5iB28+iLk78o2zmKqqV0uolNhCwFqB8LA7b0Svg==, } - "@lezer/highlight@1.2.1": + "@lezer/highlight@1.2.3": resolution: { - integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==, + integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==, } - "@lezer/html@1.3.12": + "@lezer/html@1.3.13": resolution: { - integrity: sha512-RJ7eRWdaJe3bsiiLLHjCFT1JMk8m1YP9kaUbvu2rMLEoOnke9mcTVDyfOslsln0LtujdWespjJ39w6zo+RsQYw==, + integrity: sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg==, } "@lezer/javascript@1.5.4": @@ -2360,10 +2449,10 @@ packages: integrity: sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==, } - "@lezer/lr@1.4.2": + "@lezer/lr@1.4.8": resolution: { - integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==, + integrity: sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA==, } "@lezer/xml@1.0.6": @@ -2372,10 +2461,10 @@ packages: integrity: sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==, } - "@lit-labs/ssr-dom-shim@1.4.0": + "@lit-labs/ssr-dom-shim@1.5.1": resolution: { - integrity: sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==, + integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==, } "@lit/context@1.1.6": @@ -2384,10 +2473,10 @@ packages: integrity: sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A==, } - "@lit/reactive-element@2.1.1": + "@lit/reactive-element@2.1.2": resolution: { - integrity: sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==, + integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==, } "@marijn/find-cluster-break@1.0.2": @@ -2424,84 +2513,84 @@ packages: } engines: { node: ">= 20" } - "@octokit/core@7.0.5": + "@octokit/core@7.0.6": resolution: { - integrity: sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==, + integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==, } engines: { node: ">= 20" } - "@octokit/endpoint@11.0.1": + "@octokit/endpoint@11.0.2": resolution: { - integrity: sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA==, + integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==, } engines: { node: ">= 20" } - "@octokit/graphql@9.0.2": + "@octokit/graphql@9.0.3": resolution: { - integrity: sha512-iz6KzZ7u95Fzy9Nt2L8cG88lGRMr/qy1Q36ih/XVzMIlPDMYwaNLE/ENhqmIzgPrlNWiYJkwmveEetvxAgFBJw==, + integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==, } engines: { node: ">= 20" } - "@octokit/openapi-types@26.0.0": + "@octokit/openapi-types@27.0.0": resolution: { - integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==, + integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==, } - "@octokit/plugin-paginate-rest@13.2.0": + "@octokit/plugin-paginate-rest@14.0.0": resolution: { - integrity: sha512-YuAlyjR8o5QoRSOvMHxSJzPtogkNMgeMv2mpccrvdUGeC3MKyfi/hS+KiFwyH/iRKIKyx+eIMsDjbt3p9r2GYA==, + integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==, } engines: { node: ">= 20" } peerDependencies: "@octokit/core": ">=6" - "@octokit/plugin-retry@8.0.2": + "@octokit/plugin-retry@8.0.3": resolution: { - integrity: sha512-mVPCe77iaD8g1lIX46n9bHPUirFLzc3BfIzsZOpB7bcQh1ecS63YsAgcsyMGqvGa2ARQWKEFTrhMJX2MLJVHVw==, + integrity: sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==, } engines: { node: ">= 20" } peerDependencies: "@octokit/core": ">=7" - "@octokit/plugin-throttling@11.0.2": + "@octokit/plugin-throttling@11.0.3": resolution: { - integrity: sha512-ntNIig4zZhQVOZF4fG9Wt8QCoz9ehb+xnlUwp74Ic2ANChCk8oKmRwV9zDDCtrvU1aERIOvtng8wsalEX7Jk5Q==, + integrity: sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==, } engines: { node: ">= 20" } peerDependencies: "@octokit/core": ^7.0.0 - "@octokit/request-error@7.0.1": + "@octokit/request-error@7.1.0": resolution: { - integrity: sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==, + integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==, } engines: { node: ">= 20" } - "@octokit/request@10.0.5": + "@octokit/request@10.0.7": resolution: { - integrity: sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ==, + integrity: sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==, } engines: { node: ">= 20" } - "@octokit/types@15.0.0": + "@octokit/types@16.0.0": resolution: { - integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==, + integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==, } - "@patternfly/elements@4.2.0": + "@patternfly/elements@4.3.1": resolution: { - integrity: sha512-GXVpEfiQzfZwEprUJ9QhSdRyIXDJRm1LT0r88+zlXCGGFDLzMdOlI3+krxQJlv1b+v3VPph4HY/VaGZT8Uxo+w==, + integrity: sha512-MRVwxcam+ACyy+0Xy5igPr+LcSVRbX422NGPE4I7WRuwAEhRBA3BayyLi8mNVKXpLLZbk8EtJ17kM30PcMziMw==, } "@patternfly/icons@1.0.3": @@ -2510,19 +2599,12 @@ packages: integrity: sha512-8BARaCFBUZU2/TxuOQb8R2/VIpxGMnFwdw5ddT1AMnR2KSifdo+d05SgZtVmFkOIAOA0oCo/YKRgSORDA47wig==, } - "@patternfly/pfe-core@5.0.3": + "@patternfly/pfe-core@5.0.6": resolution: { - integrity: sha512-tKc9YfbXD5kzUr6ssa5gKicKgWf+CEax3auvv0yv5jJ42RFMhDRVO0YWalPi5iBl70XHNentpMmdHioC00TJAw==, + integrity: sha512-95j0BDltTTVQzOSIqpiZXQYzm1kuwqpHeB/7/QOjmZP3wtvYcaccnE/2dldKF68rn0Rwgk9xbgz7MR8/CnKFgQ==, } - "@pkgjs/parseargs@0.11.0": - resolution: - { - integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, - } - engines: { node: ">=14" } - "@pkgr/core@0.2.9": resolution: { @@ -2544,10 +2626,10 @@ packages: } engines: { node: ">=12.22.0" } - "@pnpm/npm-conf@2.3.1": + "@pnpm/npm-conf@3.0.2": resolution: { - integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==, + integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==, } engines: { node: ">=12" } @@ -2624,178 +2706,215 @@ packages: rollup: optional: true - "@rollup/rollup-android-arm-eabi@4.52.4": + "@rollup/rollup-android-arm-eabi@4.57.1": resolution: { - integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==, + integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==, } cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.52.4": + "@rollup/rollup-android-arm64@4.57.1": resolution: { - integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==, + integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==, } cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.52.4": + "@rollup/rollup-darwin-arm64@4.57.1": resolution: { - integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==, + integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==, } cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.52.4": + "@rollup/rollup-darwin-x64@4.57.1": resolution: { - integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==, + integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==, } cpu: [x64] os: [darwin] - "@rollup/rollup-freebsd-arm64@4.52.4": + "@rollup/rollup-freebsd-arm64@4.57.1": resolution: { - integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==, + integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==, } cpu: [arm64] os: [freebsd] - "@rollup/rollup-freebsd-x64@4.52.4": + "@rollup/rollup-freebsd-x64@4.57.1": resolution: { - integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==, + integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==, } cpu: [x64] os: [freebsd] - "@rollup/rollup-linux-arm-gnueabihf@4.52.4": + "@rollup/rollup-linux-arm-gnueabihf@4.57.1": resolution: { - integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==, + integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==, } cpu: [arm] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-arm-musleabihf@4.52.4": + "@rollup/rollup-linux-arm-musleabihf@4.57.1": resolution: { - integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==, + integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==, } cpu: [arm] os: [linux] + libc: [musl] - "@rollup/rollup-linux-arm64-gnu@4.52.4": + "@rollup/rollup-linux-arm64-gnu@4.57.1": resolution: { - integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==, + integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==, } cpu: [arm64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-arm64-musl@4.52.4": + "@rollup/rollup-linux-arm64-musl@4.57.1": resolution: { - integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==, + integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==, } cpu: [arm64] os: [linux] + libc: [musl] - "@rollup/rollup-linux-loong64-gnu@4.52.4": + "@rollup/rollup-linux-loong64-gnu@4.57.1": resolution: { - integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==, + integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==, } cpu: [loong64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-ppc64-gnu@4.52.4": + "@rollup/rollup-linux-loong64-musl@4.57.1": resolution: { - integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==, + integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==, + } + cpu: [loong64] + os: [linux] + libc: [musl] + + "@rollup/rollup-linux-ppc64-gnu@4.57.1": + resolution: + { + integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==, } cpu: [ppc64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-riscv64-gnu@4.52.4": + "@rollup/rollup-linux-ppc64-musl@4.57.1": resolution: { - integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==, + integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==, + } + cpu: [ppc64] + os: [linux] + libc: [musl] + + "@rollup/rollup-linux-riscv64-gnu@4.57.1": + resolution: + { + integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==, } cpu: [riscv64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-riscv64-musl@4.52.4": + "@rollup/rollup-linux-riscv64-musl@4.57.1": resolution: { - integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==, + integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==, } cpu: [riscv64] os: [linux] + libc: [musl] - "@rollup/rollup-linux-s390x-gnu@4.52.4": + "@rollup/rollup-linux-s390x-gnu@4.57.1": resolution: { - integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==, + integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==, } cpu: [s390x] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-x64-gnu@4.52.4": + "@rollup/rollup-linux-x64-gnu@4.57.1": resolution: { - integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==, + integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==, } cpu: [x64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-x64-musl@4.52.4": + "@rollup/rollup-linux-x64-musl@4.57.1": resolution: { - integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==, + integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==, } cpu: [x64] os: [linux] + libc: [musl] - "@rollup/rollup-openharmony-arm64@4.52.4": + "@rollup/rollup-openbsd-x64@4.57.1": resolution: { - integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==, + integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==, + } + cpu: [x64] + os: [openbsd] + + "@rollup/rollup-openharmony-arm64@4.57.1": + resolution: + { + integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==, } cpu: [arm64] os: [openharmony] - "@rollup/rollup-win32-arm64-msvc@4.52.4": + "@rollup/rollup-win32-arm64-msvc@4.57.1": resolution: { - integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==, + integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==, } cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.52.4": + "@rollup/rollup-win32-ia32-msvc@4.57.1": resolution: { - integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==, + integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==, } cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-gnu@4.52.4": + "@rollup/rollup-win32-x64-gnu@4.57.1": resolution: { - integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==, + integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==, } cpu: [x64] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.52.4": + "@rollup/rollup-win32-x64-msvc@4.57.1": resolution: { - integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==, + integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==, } cpu: [x64] os: [win32] @@ -2856,30 +2975,30 @@ packages: peerDependencies: semantic-release: ">=18.0.0" - "@semantic-release/github@11.0.6": + "@semantic-release/github@12.0.6": resolution: { - integrity: sha512-ctDzdSMrT3H+pwKBPdyCPty6Y47X8dSrjd3aPZ5KKIKKWTwZBE9De8GtsH3TyAlw3Uyo2stegMx6rJMXKpJwJA==, + integrity: sha512-aYYFkwHW3c6YtHwQF0t0+lAjlU+87NFOZuH2CvWFD0Ylivc7MwhZMiHOJ0FMpIgPpCVib/VUAcOwvrW0KnxQtA==, } - engines: { node: ">=20.8.1" } + engines: { node: ^22.14.0 || >= 24.10.0 } peerDependencies: semantic-release: ">=24.1.0" - "@semantic-release/gitlab@13.2.9": + "@semantic-release/gitlab@13.3.0": resolution: { - integrity: sha512-oEWyNK3hfdGdoq6aoSunQ/VR1Svrjivmg1ochCIJ77b8pKMI5y5PPGSS8KozWGg07yqc2uudULk8lHtgTbZspQ==, + integrity: sha512-E0q4qbTdVQZW8Siqz1YQjfSSXE2U/Z7lJasUlpHGRu+OYXsLCIU6o18scquofyP7CBxyKLIx7TDiLVRko1ekGw==, } engines: { node: ">=20.8.1" } peerDependencies: semantic-release: ">=20.1.0" - "@semantic-release/npm@12.0.2": + "@semantic-release/npm@13.1.4": resolution: { - integrity: sha512-+M9/Lb35IgnlUO6OSJ40Ie+hUsZLuph2fqXC/qrKn0fMvUU/jiCjpoL6zEm69vzcmaZJ8yNKtMBEKHWN49WBbQ==, + integrity: sha512-z5Fn9ftK1QQgFxMSuOd3DtYbTl4hWI2trCEvZcEJMQJy1/OBR0WHcxqzfVun455FSkHML8KgvPxJEa9MtZIBsg==, } - engines: { node: ">=20.8.1" } + engines: { node: ^22.14.0 || >= 24.10.0 } peerDependencies: semantic-release: ">=20.1.0" @@ -2899,10 +3018,10 @@ packages: } engines: { node: ">=10" } - "@sindresorhus/is@7.1.0": + "@sindresorhus/is@7.2.0": resolution: { - integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==, + integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==, } engines: { node: ">=18" } @@ -2934,17 +3053,10 @@ packages: integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==, } - "@szmarczak/http-timer@5.0.1": + "@tailwindcss/forms@0.5.11": resolution: { - integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==, - } - engines: { node: ">=14.16" } - - "@tailwindcss/forms@0.5.10": - resolution: - { - integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==, + integrity: sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==, } peerDependencies: tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" @@ -2957,18 +3069,18 @@ packages: peerDependencies: tailwindcss: ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" - "@types/conventional-commits-parser@5.0.1": - resolution: - { - integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==, - } - "@types/eslint@9.6.1": resolution: { integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==, } + "@types/esrecurse@4.3.1": + resolution: + { + integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==, + } + "@types/estree@0.0.39": resolution: { @@ -2993,10 +3105,10 @@ packages: integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==, } - "@types/http-cache-semantics@4.0.4": + "@types/http-cache-semantics@4.2.0": resolution: { - integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==, + integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==, } "@types/json-schema@7.0.15": @@ -3005,10 +3117,10 @@ packages: integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, } - "@types/leaflet@1.9.20": + "@types/leaflet@1.9.21": resolution: { - integrity: sha512-rooalPMlk61LCaLOvBF2VIf9M47HgMQqi5xQ9QRi7c8PkdIe0WrIi5IxXUXQjAdL0c+vcQ01mYWbthzmp9GHWw==, + integrity: sha512-TbAd9DaPGSnzp6QvtYngntMZgcRk+igFELwR2N99XZn7RXUdKgsXMR+28bUO0rPsWp8MIu/f47luLIQuSLYv/w==, } "@types/node@24.7.0": @@ -3035,92 +3147,92 @@ packages: integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, } - "@typescript-eslint/eslint-plugin@8.46.0": + "@typescript-eslint/eslint-plugin@8.56.0": resolution: { - integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==, + integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - "@typescript-eslint/parser": ^8.46.0 - eslint: ^8.57.0 || ^9.0.0 + "@typescript-eslint/parser": ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/parser@8.46.0": + "@typescript-eslint/parser@8.56.0": resolution: { - integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==, + integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/project-service@8.46.0": + "@typescript-eslint/project-service@8.56.0": resolution: { - integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==, + integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/scope-manager@8.46.0": + "@typescript-eslint/scope-manager@8.56.0": resolution: { - integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==, + integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/tsconfig-utils@8.46.0": + "@typescript-eslint/tsconfig-utils@8.56.0": resolution: { - integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==, + integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/type-utils@8.46.0": + "@typescript-eslint/type-utils@8.56.0": resolution: { - integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==, + integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/types@8.46.0": + "@typescript-eslint/types@8.56.0": resolution: { - integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==, + integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/typescript-estree@8.46.0": + "@typescript-eslint/typescript-estree@8.56.0": resolution: { - integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==, + integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/utils@8.46.0": + "@typescript-eslint/utils@8.56.0": resolution: { - integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==, + integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/visitor-keys@8.46.0": + "@typescript-eslint/visitor-keys@8.56.0": resolution: { - integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==, + integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -3130,13 +3242,6 @@ packages: integrity: sha512-ZFpV3xqZJ5tvh5rZOYKRh8zFzNIKr2ZcK6L75nJjFjbWt/ZmFF2nMBxtD9/hC4Xjk9v7hp1+P9cmctL674VFgA==, } - JSONStream@1.3.5: - resolution: - { - integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, - } - hasBin: true - acorn-jsx@5.3.2: resolution: { @@ -3180,10 +3285,10 @@ packages: integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, } - ajv@8.17.1: + ajv@8.18.0: resolution: { - integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==, + integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==, } all-contributors-cli@6.26.1: @@ -3201,10 +3306,10 @@ packages: } engines: { node: ">=8" } - ansi-escapes@7.1.1: + ansi-escapes@7.3.0: resolution: { - integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==, + integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==, } engines: { node: ">=18" } @@ -3294,13 +3399,6 @@ packages: integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, } - array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, - } - engines: { node: ">=8" } - arraybuffer.prototype.slice@1.0.4: resolution: { @@ -3335,10 +3433,10 @@ packages: } engines: { node: ">= 4.0.0" } - autoprefixer@10.4.21: + autoprefixer@10.4.24: resolution: { - integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==, + integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==, } engines: { node: ^10 || ^12 || >=14 } hasBin: true @@ -3352,26 +3450,26 @@ packages: } engines: { node: ">= 0.4" } - babel-plugin-polyfill-corejs2@0.4.14: + babel-plugin-polyfill-corejs2@0.4.15: resolution: { - integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==, + integrity: sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==, } peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.13.0: + babel-plugin-polyfill-corejs3@0.14.0: resolution: { - integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, + integrity: sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==, } peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.5: + babel-plugin-polyfill-regenerator@0.6.6: resolution: { - integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==, + integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==, } peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -3382,11 +3480,19 @@ packages: integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, } - balanced-match@2.0.0: + balanced-match@3.0.1: resolution: { - integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==, + integrity: sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==, } + engines: { node: ">= 16" } + + balanced-match@4.0.2: + resolution: + { + integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==, + } + engines: { node: 20 || >=22 } base64-js@1.3.1: resolution: @@ -3400,10 +3506,10 @@ packages: integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, } - baseline-browser-mapping@2.8.12: + baseline-browser-mapping@2.9.19: resolution: { - integrity: sha512-vAPMQdnyKCBtkmQA6FMCBvU9qFIppS3nzyXnEM+Lo2IAhG4Mpjv9cCxMudhgV3YdNNJv6TNqXy97dfRVL2LmaQ==, + integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==, } hasBin: true @@ -3420,10 +3526,10 @@ packages: } engines: { node: ">=8" } - birpc@2.6.1: + birpc@2.9.0: resolution: { - integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==, + integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==, } bl@4.1.0: @@ -3456,6 +3562,13 @@ packages: integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==, } + brace-expansion@5.0.2: + resolution: + { + integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==, + } + engines: { node: 20 || >=22 } + braces@3.0.3: resolution: { @@ -3469,10 +3582,10 @@ packages: integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==, } - browserslist@4.26.3: + browserslist@4.28.1: resolution: { - integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==, + integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==, } engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true @@ -3496,6 +3609,13 @@ packages: } engines: { node: ">=18" } + byte-counter@0.1.0: + resolution: + { + integrity: sha512-jheRLVMeUKrDBjVw2O5+k4EvR4t9wtxHL+bo/LxfkxsVeuGMy3a5SEGgXdAFA4FSzTrU8rQXQIrsZ3oBq5a0pQ==, + } + engines: { node: ">=20" } + cacheable-lookup@7.0.0: resolution: { @@ -3503,17 +3623,17 @@ packages: } engines: { node: ">=14.16" } - cacheable-request@12.0.1: + cacheable-request@13.0.18: resolution: { - integrity: sha512-Yo9wGIQUaAfIbk+qY0X4cDQgCosecfBe3V9NSyeY4qPC2SAkbCS4Xj79VP8WOzitpJUZKc/wsRCYF5ariDIwkg==, + integrity: sha512-rFWadDRKJs3s2eYdXlGggnBZKG7MTblkFBB0YllFds+UYnfogDp2wcR6JN97FhRkHTvq59n2vhNoHNZn29dh/Q==, } engines: { node: ">=18" } - cacheable@2.1.0: + cacheable@2.3.2: resolution: { - integrity: sha512-zzL1BxdnqwD69JRT0dihnawAcLkBMwAH+hZSKjUzeBbPedVhk3qYPjRw9VOMYWwt5xRih5xd8S+3kEdGohZm/g==, + integrity: sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==, } cachedir@2.3.0: @@ -3571,10 +3691,10 @@ packages: integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==, } - caniuse-lite@1.0.30001748: + caniuse-lite@1.0.30001770: resolution: { - integrity: sha512-5P5UgAr0+aBmNiplks08JLw+AW/XG/SurlgZLgB1dDLfAw7EfRGxIwzPHxdSCGY/BTKDqIVyJL87cCN6s0ZR0w==, + integrity: sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==, } chalk@2.4.2: @@ -3624,10 +3744,10 @@ packages: } engines: { node: ">= 8.10.0" } - ci-info@4.3.1: + ci-info@4.4.0: resolution: { - integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==, + integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==, } engines: { node: ">=8" } @@ -3681,10 +3801,10 @@ packages: } engines: { node: 10.* || >= 12.* } - cli-truncate@5.1.0: + cli-truncate@5.1.1: resolution: { - integrity: sha512-7JDGG+4Zp0CsknDCedl0DYdaeOhc46QNpXi3NLQblkZpXXgA6LncLDUUyvrjSvZeF3VRQa+KiMGomazQrC1V8g==, + integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==, } engines: { node: ">=20" } @@ -3714,6 +3834,13 @@ packages: } engines: { node: ">=12" } + cliui@9.0.1: + resolution: + { + integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==, + } + engines: { node: ">=20" } + clone@1.0.4: resolution: { @@ -3771,10 +3898,10 @@ packages: } engines: { node: ">=16" } - commander@14.0.1: + commander@14.0.3: resolution: { - integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==, + integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==, } engines: { node: ">=20" } @@ -3831,27 +3958,13 @@ packages: integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==, } - conventional-changelog-angular@7.0.0: + conventional-changelog-angular@8.1.0: resolution: { - integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==, - } - engines: { node: ">=16" } - - conventional-changelog-angular@8.0.0: - resolution: - { - integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==, + integrity: sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==, } engines: { node: ">=18" } - conventional-changelog-conventionalcommits@7.0.2: - resolution: - { - integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==, - } - engines: { node: ">=16" } - conventional-changelog-conventionalcommits@9.1.0: resolution: { @@ -3880,18 +3993,10 @@ packages: } engines: { node: ">=18" } - conventional-commits-parser@5.0.0: + conventional-commits-parser@6.2.1: resolution: { - integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==, - } - engines: { node: ">=16" } - hasBin: true - - conventional-commits-parser@6.2.0: - resolution: - { - integrity: sha512-uLnoLeIW4XaoFtH37qEcg/SXMJmKF4vi7V0H2rnPueg+VEtFGA/asSCNTcq4M/GQ6QmlzchAEtOoDTtKqWeHag==, + integrity: sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==, } engines: { node: ">=18" } hasBin: true @@ -3909,16 +4014,16 @@ packages: integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, } - core-js-compat@3.45.1: + core-js-compat@3.48.0: resolution: { - integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==, + integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==, } - core-js@3.45.1: + core-js@3.48.0: resolution: { - integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==, + integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==, } core-util-is@1.0.3: @@ -3927,10 +4032,10 @@ packages: integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, } - cosmiconfig-typescript-loader@6.1.0: + cosmiconfig-typescript-loader@6.2.0: resolution: { - integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==, + integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==, } engines: { node: ">=v18" } peerDependencies: @@ -3991,46 +4096,46 @@ packages: } engines: { node: ">=12" } - css-blank-pseudo@7.0.1: + css-blank-pseudo@8.0.1: resolution: { - integrity: sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==, + integrity: sha512-C5B2e5hCM4llrQkUms+KnWEMVW8K1n2XvX9G7ppfMZJQ7KAS/4rNnkP1Cs+HhWriOz1mWWTMFD4j1J7s31Dgug==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - css-declaration-sorter@7.3.0: + css-declaration-sorter@7.3.1: resolution: { - integrity: sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==, + integrity: sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==, } engines: { node: ^14 || ^16 || >=18 } peerDependencies: postcss: ^8.0.9 - css-functions-list@3.2.3: + css-functions-list@3.3.3: resolution: { - integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==, + integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==, } - engines: { node: ">=12 || >=16" } + engines: { node: ">=12" } - css-has-pseudo@7.0.3: + css-has-pseudo@8.0.0: resolution: { - integrity: sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==, + integrity: sha512-Uz/bsHRbOeir/5Oeuz85tq/yLJLxX+3dpoRdjNTshs6jjqwUg8XaEZGDd0ci3fw7l53Srw0EkJ8mYan0eW5uGQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - css-prefers-color-scheme@10.0.0: + css-prefers-color-scheme@11.0.0: resolution: { - integrity: sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==, + integrity: sha512-fv0mgtwUhh2m9iio3Kxc2CkrogjIaRdMFaaqyzSFdii17JF4cfPyMNX72B15ZW2Nrr/NZUpxI4dec1VMHYJvdw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 @@ -4061,10 +4166,10 @@ packages: } engines: { node: ">= 6" } - cssdb@8.4.2: + cssdb@8.7.1: resolution: { - integrity: sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg==, + integrity: sha512-+F6LKx48RrdGOtE4DT5jz7Uo+VeyKXpK797FAevIkzjV8bMHz6xTO5F7gNDcRCHmPgD5jj2g6QCsY9zmVrh38A==, } cssesc@3.0.0: @@ -4075,10 +4180,10 @@ packages: engines: { node: ">=4" } hasBin: true - cssnano-preset-default@7.0.9: + cssnano-preset-default@7.0.10: resolution: { - integrity: sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA==, + integrity: sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -4093,10 +4198,10 @@ packages: peerDependencies: postcss: ^8.4.32 - cssnano@7.1.1: + cssnano@7.1.2: resolution: { - integrity: sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==, + integrity: sha512-HYOPBsNvoiFeR1eghKD5C3ASm64v9YVyJB4Ivnl2gqKoQYvjjN/G0rztvKQq8OxocUtC6sjqY8jwYngIB4AByA==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -4250,12 +4355,12 @@ packages: } engines: { node: ">=0.10.0" } - decompress-response@6.0.0: + decompress-response@10.0.0: resolution: { - integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==, + integrity: sha512-oj7KWToJuuxlPr7VV0vabvxEIiqNMo+q0NueIiL3XhtwC6FVOX7Hr1c0C4eD0bmf7Zr+S/dSf2xvkH3Ad6sU3Q==, } - engines: { node: ">=10" } + engines: { node: ">=20" } dedent@0.7.0: resolution: @@ -4290,17 +4395,17 @@ packages: } engines: { node: ">=0.10.0" } - default-browser-id@5.0.0: + default-browser-id@5.0.1: resolution: { - integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==, + integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==, } engines: { node: ">=18" } - default-browser@5.2.1: + default-browser@5.5.0: resolution: { - integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==, + integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==, } engines: { node: ">=18" } @@ -4310,13 +4415,6 @@ packages: integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, } - defer-to-connect@2.0.1: - resolution: - { - integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==, - } - engines: { node: ">=10" } - define-data-property@1.1.4: resolution: { @@ -4429,12 +4527,6 @@ packages: integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==, } - eastasianwidth@0.2.0: - resolution: - { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, - } - ejs@3.1.10: resolution: { @@ -4443,16 +4535,16 @@ packages: engines: { node: ">=0.10.0" } hasBin: true - electron-to-chromium@1.5.232: + electron-to-chromium@1.5.286: resolution: { - integrity: sha512-ENirSe7wf8WzyPCibqKUG1Cg43cPaxH4wRR7AJsX7MCABCHBIOFqvaYODSLKUuZdraxUTHRE/0A2Aq8BYKEHOg==, + integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==, } - emoji-regex@10.5.0: + emoji-regex@10.6.0: resolution: { - integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==, + integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==, } emoji-regex@8.0.0: @@ -4461,12 +4553,6 @@ packages: integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, } - emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, - } - emojilib@2.4.0: resolution: { @@ -4513,10 +4599,10 @@ packages: integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==, } - es-abstract@1.24.0: + es-abstract@1.24.1: resolution: { - integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==, + integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==, } engines: { node: ">= 0.4" } @@ -4555,10 +4641,10 @@ packages: } engines: { node: ">= 0.4" } - esbuild@0.25.10: + esbuild@0.27.3: resolution: { - integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==, + integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==, } engines: { node: ">=18" } hasBin: true @@ -4600,10 +4686,10 @@ packages: peerDependencies: eslint: ">=7.0.0" - eslint-plugin-prettier@5.5.4: + eslint-plugin-prettier@5.5.5: resolution: { - integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==, + integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==, } engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: @@ -4617,12 +4703,12 @@ packages: eslint-config-prettier: optional: true - eslint-scope@8.4.0: + eslint-scope@9.1.0: resolution: { - integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==, + integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } eslint-visitor-keys@3.4.3: resolution: @@ -4638,12 +4724,19 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eslint@9.37.0: + eslint-visitor-keys@5.0.0: resolution: { - integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==, + integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + eslint@10.0.0: + resolution: + { + integrity: sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } hasBin: true peerDependencies: jiti: "*" @@ -4658,10 +4751,17 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - esquery@1.6.0: + espree@11.1.0: resolution: { - integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==, + integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + esquery@1.7.0: + resolution: + { + integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, } engines: { node: ">=0.10" } @@ -4698,10 +4798,10 @@ packages: } engines: { node: ">=0.10.0" } - eventemitter3@5.0.1: + eventemitter3@5.0.4: resolution: { - integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, + integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==, } execa@5.1.1: @@ -4718,10 +4818,10 @@ packages: } engines: { node: ">=16.17" } - execa@9.6.0: + execa@9.6.1: resolution: { - integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==, + integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==, } engines: { node: ^18.19.0 || >=20.5.0 } @@ -4789,10 +4889,10 @@ packages: } engines: { node: ">= 4.9.1" } - fastq@1.19.1: + fastq@1.20.1: resolution: { - integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, + integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==, } fdir@6.5.0: @@ -4828,10 +4928,10 @@ packages: } engines: { node: ">=18" } - file-entry-cache@10.1.4: + file-entry-cache@11.1.2: resolution: { - integrity: sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==, + integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==, } file-entry-cache@8.0.0: @@ -4894,13 +4994,6 @@ packages: } engines: { node: ">=10" } - find-up@7.0.0: - resolution: - { - integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==, - } - engines: { node: ">=18" } - find-versions@6.0.0: resolution: { @@ -4922,10 +5015,10 @@ packages: } engines: { node: ">=16" } - flat-cache@6.1.17: + flat-cache@6.1.20: resolution: { - integrity: sha512-Jzse4YoiUJBVYTwz5Bwl4h/2VQM7e2KK3MVAMlXzX9uamIHAH/TXUlRKU1AQGQOryQhN0EsmufiiF40G057YXA==, + integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==, } flatpickr@4.6.13: @@ -4968,10 +5061,10 @@ packages: } engines: { node: ">= 18" } - fraction.js@4.3.7: + fraction.js@5.3.4: resolution: { - integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, + integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==, } from2@2.3.0: @@ -4980,10 +5073,10 @@ packages: integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==, } - fs-extra@11.3.2: + fs-extra@11.3.3: resolution: { - integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==, + integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==, } engines: { node: ">=14.14" } @@ -5158,27 +5251,28 @@ packages: } engines: { node: ">=10.13.0" } - glob@10.4.5: + glob@11.1.0: resolution: { - integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==, - } - hasBin: true - - glob@11.0.3: - resolution: - { - integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==, + integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==, } engines: { node: 20 || >=22 } + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true + glob@13.0.5: + resolution: + { + integrity: sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw==, + } + engines: { node: 20 || >=22 } + glob@7.2.3: resolution: { integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, } - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global-directory@4.0.1: resolution: @@ -5222,10 +5316,10 @@ packages: } engines: { node: ">=18" } - globals@16.4.0: + globals@17.3.0: resolution: { - integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==, + integrity: sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==, } engines: { node: ">=18" } @@ -5236,13 +5330,6 @@ packages: } engines: { node: ">= 0.4" } - globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, - } - engines: { node: ">=10" } - globby@14.1.0: resolution: { @@ -5250,6 +5337,13 @@ packages: } engines: { node: ">=18" } + globby@16.1.0: + resolution: + { + integrity: sha512-+A4Hq7m7Ze592k9gZRy4gJ27DrXRNnC1vPjxTt1qQxEY8RxagBkBxivkCwg7FxSTG0iLLEMaUx13oOr0R2/qcQ==, + } + engines: { node: ">=20" } + globjoin@0.1.4: resolution: { @@ -5263,10 +5357,10 @@ packages: } engines: { node: ">= 0.4" } - got@14.4.9: + got@14.6.6: resolution: { - integrity: sha512-Dbu075Jwm3QwNCIoCenqkqY8l2gd7e/TanuhMbzZIEsb1mpAneImSusKhZ+XdqqC3S91SDV/1SdWpGXKAlm8tA==, + integrity: sha512-QLV1qeYSo5l13mQzWgP/y0LbMr5Plr5fJilgAIwgnwseproEbtNym8xpLsDzeZ6MWXgNE6kdWGBjdh3zT/Qerg==, } engines: { node: ">=20" } @@ -5282,12 +5376,6 @@ packages: integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, } - graphemer@1.4.0: - resolution: - { - integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, - } - handlebars@4.7.8: resolution: { @@ -5317,6 +5405,13 @@ packages: } engines: { node: ">=8" } + has-flag@5.0.1: + resolution: + { + integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==, + } + engines: { node: ">=12" } + has-property-descriptors@1.0.2: resolution: { @@ -5344,6 +5439,13 @@ packages: } engines: { node: ">= 0.4" } + hashery@1.4.0: + resolution: + { + integrity: sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==, + } + engines: { node: ">=20" } + hasown@2.0.2: resolution: { @@ -5371,10 +5473,10 @@ packages: } engines: { node: ">=20" } - hookified@1.12.1: + hookified@1.15.1: resolution: { - integrity: sha512-xnKGl+iMIlhrZmGHB729MqlmPoWBznctSQTYCpFKqNsCgimJQmithcW0xSQMMFzYnV2iKUh25alswn6epgxS0Q==, + integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==, } hosted-git-info@7.0.2: @@ -5384,12 +5486,12 @@ packages: } engines: { node: ^16.14.0 || >=18.0.0 } - hosted-git-info@8.1.0: + hosted-git-info@9.0.2: resolution: { - integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==, + integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==, } - engines: { node: ^18.17.0 || >=20.5.0 } + engines: { node: ^20.17.0 || >=22.9.0 } hpagent@1.2.0: resolution: @@ -5398,17 +5500,17 @@ packages: } engines: { node: ">=14" } - html-tags@3.3.1: + html-tags@5.1.0: resolution: { - integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==, + integrity: sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==, } - engines: { node: ">=8" } + engines: { node: ">=20.10" } - htmlfy@1.0.0: + htmlfy@1.0.1: resolution: { - integrity: sha512-XM6zkMWIekSHqT55GhXXuf9BbIIsxidbIpj9uwY2I5MsnQPw4llWL1QD2BbzsmD5ozyi+t5gJQsuFIJj+shOYQ==, + integrity: sha512-M85PmyEpWUDqhlEknsnvqmqGLq67h8e86WuKLMdXQdUl8iyvOSDbAAyv0tv0IVmIfh7Py1Vsot/IU1skdswt6g==, } http-cache-semantics@4.2.0: @@ -5474,10 +5576,10 @@ packages: } engines: { node: ">=0.10.0" } - iconv-lite@0.6.3: + iconv-lite@0.7.2: resolution: { - integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, + integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==, } engines: { node: ">=0.10.0" } @@ -5812,6 +5914,13 @@ packages: } engines: { node: ">=8" } + is-path-inside@4.0.0: + resolution: + { + integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==, + } + engines: { node: ">=12" } + is-plain-obj@4.1.0: resolution: { @@ -5889,13 +5998,6 @@ packages: } engines: { node: ">= 0.4" } - is-text-path@2.0.0: - resolution: - { - integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==, - } - engines: { node: ">=8" } - is-typed-array@1.1.15: resolution: { @@ -5951,10 +6053,10 @@ packages: } engines: { node: ">=0.10.0" } - is-wsl@3.1.0: + is-wsl@3.1.1: resolution: { - integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==, + integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==, } engines: { node: ">=16" } @@ -5983,16 +6085,10 @@ packages: } engines: { node: ^18.17 || >=20.6.1 } - jackspeak@3.4.3: + jackspeak@4.2.3: resolution: { - integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, - } - - jackspeak@4.1.1: - resolution: - { - integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==, + integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==, } engines: { node: 20 || >=22 } @@ -6030,6 +6126,7 @@ packages: { integrity: sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ==, } + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. js-tokens@4.0.0: resolution: @@ -6037,10 +6134,10 @@ packages: integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, } - js-yaml@4.1.0: + js-yaml@4.1.1: resolution: { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, } hasBin: true @@ -6115,13 +6212,6 @@ packages: integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==, } - jsonparse@1.3.1: - resolution: - { - integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, - } - engines: { "0": node >= 0.2.0 } - jsonpointer@5.0.1: resolution: { @@ -6135,10 +6225,10 @@ packages: integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, } - keyv@5.5.3: + keyv@5.6.0: resolution: { - integrity: sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==, + integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==, } kind-of@6.0.3: @@ -6195,37 +6285,37 @@ packages: integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } - lint-staged@16.2.3: + lint-staged@16.2.7: resolution: { - integrity: sha512-1OnJEESB9zZqsp61XHH2fvpS1es3hRCxMplF/AJUDa8Ho8VrscYDIuxGrj3m8KPXbcWZ8fT9XTMUhEQmOVKpKw==, + integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==, } engines: { node: ">=20.17" } hasBin: true - listr2@9.0.4: + listr2@9.0.5: resolution: { - integrity: sha512-1wd/kpAdKRLwv7/3OKC8zZ5U8e/fajCfWMxacUvB79S5nLrYGPtUI/8chMQhn3LQjsRVErTb9i1ECAwW0ZIHnQ==, + integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==, } engines: { node: ">=20.0.0" } - lit-element@4.2.1: + lit-element@4.2.2: resolution: { - integrity: sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==, + integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==, } - lit-html@3.3.1: + lit-html@3.3.2: resolution: { - integrity: sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==, + integrity: sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==, } - lit@3.3.1: + lit@3.3.2: resolution: { - integrity: sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==, + integrity: sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==, } load-json-file@4.0.0: @@ -6256,17 +6346,10 @@ packages: } engines: { node: ">=10" } - locate-path@7.2.0: + lodash-es@4.17.23: resolution: { - integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - lodash-es@4.17.21: - resolution: - { - integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==, + integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==, } lodash.camelcase@4.3.0: @@ -6323,12 +6406,6 @@ packages: integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, } - lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } - lodash.mergewith@4.6.2: resolution: { @@ -6383,6 +6460,12 @@ packages: integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, } + lodash@4.17.23: + resolution: + { + integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==, + } + log-symbols@4.1.0: resolution: { @@ -6417,10 +6500,10 @@ packages: integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, } - lru-cache@11.2.2: + lru-cache@11.2.6: resolution: { - integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==, + integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==, } engines: { node: 20 || >=22 } @@ -6436,6 +6519,13 @@ packages: integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, } + make-asynchronous@1.0.1: + resolution: + { + integrity: sha512-T9BPOmEOhp6SmV25SwLVcHK4E6JyG/coH3C6F1NjNXSziv/fd4GmsqMk8YR6qpPOswfaOCApSNkZv6fxoaYFcQ==, + } + engines: { node: ">=18" } + marked-terminal@7.3.0: resolution: { @@ -6453,10 +6543,10 @@ packages: engines: { node: ">= 18" } hasBin: true - marked@16.4.0: + marked@17.0.2: resolution: { - integrity: sha512-CTPAcRBq57cn3R8n3hwc2REddc28hjR7RzDXQ+lXLmMJYqn20BaI2cGw6QjgZGIgVfp2Wdfw4aMzgNteQ6qJgQ==, + integrity: sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==, } engines: { node: ">= 20" } hasBin: true @@ -6468,10 +6558,10 @@ packages: } engines: { node: ">= 0.4" } - mathml-tag-names@2.1.3: + mathml-tag-names@4.0.0: resolution: { - integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==, + integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==, } mdn-data@2.0.28: @@ -6500,6 +6590,13 @@ packages: } engines: { node: ">=18" } + meow@14.0.0: + resolution: + { + integrity: sha512-JhC3R1f6dbspVtmF3vKjAWz1EVIvwFrGGPLSdU6rK79xBwHWTuHoLnRX/t1/zHS1Ch1Y2UtIrih7DAHuH9JFJA==, + } + engines: { node: ">=20" } + merge-stream@2.0.0: resolution: { @@ -6555,13 +6652,6 @@ packages: } engines: { node: ">=18" } - mimic-response@3.1.0: - resolution: - { - integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==, - } - engines: { node: ">=10" } - mimic-response@4.0.0: resolution: { @@ -6576,10 +6666,10 @@ packages: } hasBin: true - minimatch@10.0.3: + minimatch@10.2.1: resolution: { - integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==, + integrity: sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==, } engines: { node: 20 || >=22 } @@ -6653,10 +6743,10 @@ packages: integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, } - nano-spawn@1.0.3: + nano-spawn@2.0.0: resolution: { - integrity: sha512-jtpsQDetTnvS2Ts1fiRdci5rx0VYws5jGyC+4IYOTnIQ/wwdf6JdomlHBwqC3bJYOvaKu0C2GSZ1A60anrYpaA==, + integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==, } engines: { node: ">=20.17" } @@ -6705,10 +6795,10 @@ packages: encoding: optional: true - node-releases@2.0.23: + node-releases@2.0.27: resolution: { - integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==, + integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==, } normalize-package-data@6.0.2: @@ -6718,6 +6808,13 @@ packages: } engines: { node: ^16.14.0 || >=18.0.0 } + normalize-package-data@8.0.0: + resolution: + { + integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==, + } + engines: { node: ^20.17.0 || >=22.9.0 } + normalize-path@3.0.0: resolution: { @@ -6725,17 +6822,10 @@ packages: } engines: { node: ">=0.10.0" } - normalize-range@0.1.2: + normalize-url@8.1.1: resolution: { - integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, - } - engines: { node: ">=0.10.0" } - - normalize-url@8.1.0: - resolution: - { - integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==, + integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==, } engines: { node: ">=14.16" } @@ -6760,12 +6850,12 @@ packages: } engines: { node: ">=18" } - npm@10.9.4: + npm@11.10.0: resolution: { - integrity: sha512-OnUG836FwboQIbqtefDNlyR0gTHzIfwRfE3DuiNewBvnMnWEpB0VEXwBlFVgqpNzIgYo/MHh3d2Hel/pszapAA==, + integrity: sha512-i8hE43iSIAMFuYVi8TxsEISdELM4fIza600aLjJ0ankGPLqd0oTPKMJqAcO/QWm307MbSlWGzJcNZ0lGMQgHPA==, } - engines: { node: ^18.17.0 || >=20.5.0 } + engines: { node: ^20.17.0 || >=22.9.0 } hasBin: true bundledDependencies: - "@isaacs/string-locale-compare" @@ -6773,6 +6863,7 @@ packages: - "@npmcli/config" - "@npmcli/fs" - "@npmcli/map-workspaces" + - "@npmcli/metavuln-calculator" - "@npmcli/package-json" - "@npmcli/promise-spawn" - "@npmcli/redact" @@ -6797,7 +6888,6 @@ packages: - libnpmdiff - libnpmexec - libnpmfund - - libnpmhook - libnpmorg - libnpmpack - libnpmpublish @@ -6811,7 +6901,6 @@ packages: - ms - node-gyp - nopt - - normalize-package-data - npm-audit-report - npm-install-checks - npm-package-arg @@ -6835,7 +6924,6 @@ packages: - treeverse - validate-npm-package-name - which - - write-file-atomic nth-check@2.1.1: resolution: @@ -6967,6 +7055,13 @@ packages: } engines: { node: ">=12" } + p-event@6.0.1: + resolution: + { + integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==, + } + engines: { node: ">=16.17" } + p-filter@4.1.0: resolution: { @@ -7002,13 +7097,6 @@ packages: } engines: { node: ">=10" } - p-limit@4.0.0: - resolution: - { - integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - p-locate@2.0.0: resolution: { @@ -7030,17 +7118,10 @@ packages: } engines: { node: ">=10" } - p-locate@6.0.0: + p-map@7.0.4: resolution: { - integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - p-map@7.0.3: - resolution: - { - integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==, + integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==, } engines: { node: ">=18" } @@ -7058,6 +7139,13 @@ packages: } engines: { node: ">=12" } + p-timeout@6.1.4: + resolution: + { + integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==, + } + engines: { node: ">=14.16" } + p-try@1.0.0: resolution: { @@ -7171,13 +7259,6 @@ packages: } engines: { node: ">=8" } - path-exists@5.0.0: - resolution: - { - integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - path-is-absolute@1.0.1: resolution: { @@ -7205,17 +7286,10 @@ packages: integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, } - path-scurry@1.11.1: + path-scurry@2.0.1: resolution: { - integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, - } - engines: { node: ">=16 || 14 >=14.18" } - - path-scurry@2.0.0: - resolution: - { - integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==, + integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==, } engines: { node: 20 || >=22 } @@ -7239,10 +7313,10 @@ packages: integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, } - pdfmake@0.2.20: + pdfmake@0.2.23: resolution: { - integrity: sha512-bGbxbGFP5p8PWNT3Phsu1ZcRLnRfF6jmnuKTkgmt6i5PZzSdX6JaB+NeTz9q+aocfW8SE9GUjL3o/5GroBqGcQ==, + integrity: sha512-A/IksoKb/ikOZH1edSDJ/2zBbqJKDghD4+fXn3rT7quvCJDlsZMs3NmIB3eajLMMFU9Bd3bZPVvlUMXhvFI+bQ==, } engines: { node: ">=18" } @@ -7254,10 +7328,10 @@ packages: engines: { node: ">=0.10" } hasBin: true - perfect-debounce@2.0.0: + perfect-debounce@2.1.0: resolution: { - integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==, + integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==, } performance-now@2.1.0: @@ -7348,12 +7422,12 @@ packages: } engines: { node: ">= 0.4" } - postcss-attribute-case-insensitive@7.0.1: + postcss-attribute-case-insensitive@8.0.0: resolution: { - integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==, + integrity: sha512-fovIPEV35c2JzVXdmP+sp2xirbBMt54J+upU8u6TSj410kUU5+axgEzvBBSAX8KCybze8CFCelzFAw/FfWg2TA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 @@ -7375,91 +7449,91 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.12: + postcss-color-functional-notation@8.0.1: resolution: { - integrity: sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==, + integrity: sha512-f1itLOG10iAa9mBAAtIHj/wfDs3srsNv/vrAsiRrIOfTCjhjxHxL1g06vvpQ86he2BP5HwB4cN72EZQ8rkegpA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-color-hex-alpha@10.0.0: + postcss-color-hex-alpha@11.0.0: resolution: { - integrity: sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==, + integrity: sha512-NCGa6vjIyrjosz9GqRxVKbONBklz5TeipYqTJp3IqbnBWlBq5e5EMtG6MaX4vqk9LzocPfMQkuRK9tfk+OQuKg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-color-rebeccapurple@10.0.0: + postcss-color-rebeccapurple@11.0.0: resolution: { - integrity: sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==, + integrity: sha512-g9561mx7cbdqx7XeO/L+lJzVlzu7bICyXr72efBVKZGxIhvBBJf9fGXn3Cb6U4Bwh3LbzQO2e9NWBLVYdX5Eag==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-colormin@7.0.4: + postcss-colormin@7.0.5: resolution: { - integrity: sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==, + integrity: sha512-ekIBP/nwzRWhEMmIxHHbXHcMdzd1HIUzBECaj5KEdLz9DVP2HzT065sEhvOx1dkLjYW7jyD0CngThx6bpFi2fA==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: postcss: ^8.4.32 - postcss-convert-values@7.0.7: + postcss-convert-values@7.0.8: resolution: { - integrity: sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A==, + integrity: sha512-+XNKuPfkHTCEo499VzLMYn94TiL3r9YqRE3Ty+jP7UX4qjewUONey1t7CG21lrlTLN07GtGM8MqFVp86D4uKJg==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: postcss: ^8.4.32 - postcss-custom-media@11.0.6: + postcss-custom-media@12.0.0: resolution: { - integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==, + integrity: sha512-jIgEvqceN6ru2uQ0f75W1g+JDi0UyECFeJKjPG7UcSkW3+03LDKH2c6h+9C0XuDTV4y2pEHmD5AJtVBq1OGnZA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-custom-properties@14.0.6: + postcss-custom-properties@15.0.0: resolution: { - integrity: sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==, + integrity: sha512-FsD3VNtFr3qmspvIobDRszK9onKPHp8iHG4Aox2Nnm9SL93uw5GDw4z+NM7zWKiw6U+DSNm24JUm4coyIyanzQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-custom-selectors@8.0.5: + postcss-custom-selectors@9.0.0: resolution: { - integrity: sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==, + integrity: sha512-VuV5tLPAm6wq1u699dsrhGCzfLobKe0eD3G8bw3BcTJt6wqQ7RQdfaveJVsCAi23OaQbjIi3K1C7Fj3yZH3f1g==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-dir-pseudo-class@9.0.1: + postcss-dir-pseudo-class@10.0.0: resolution: { - integrity: sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==, + integrity: sha512-DmtIzULpyC8XaH4b5AaUgt4Jic4QmrECqidNCdR7u7naQFdnxX80YI06u238a+ZVRXwURDxVzy0s/UQnWmpVeg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-discard-comments@7.0.4: + postcss-discard-comments@7.0.5: resolution: { - integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==, + integrity: sha512-IR2Eja8WfYgN5n32vEGSctVQ1+JARfu4UH8M7bgGh1bC+xI/obsPJXaBpQF7MAByvgwZinhpHpdrmXtvVVlKcQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -7492,30 +7566,30 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-double-position-gradients@6.0.4: + postcss-double-position-gradients@7.0.0: resolution: { - integrity: sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==, + integrity: sha512-Msr/dxj8Os7KLJE5Hdhvprwm3K5Zrh1KTY0eFN3ngPKNkej/Usy4BM9JQmqE6CLAkDpHoQVsi4snbL72CPt6qg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-focus-visible@10.0.1: + postcss-focus-visible@11.0.0: resolution: { - integrity: sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==, + integrity: sha512-VG1a9kBKizUBWS66t5xyB4uLONBnvZLCmZXxT40FALu8EF0QgVZBYy5ApC0KhmpHsv+pvHMJHB3agKHwmocWjw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-focus-within@9.0.1: + postcss-focus-within@10.0.0: resolution: { - integrity: sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==, + integrity: sha512-dvql0fzUTG+gcJYp+KTbag5vAjuo94LDYZHkqDV1rnf5gPGer1v/SrmIZBdvKU8moep3HbcbujqGjzSb3DL53Q==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 @@ -7527,21 +7601,21 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-gap-properties@6.0.0: + postcss-gap-properties@7.0.0: resolution: { - integrity: sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==, + integrity: sha512-PSDF2QoZMRUbsINvXObQgxx4HExRP85QTT8qS/YN9fBsCPWCqUuwqAD6E6PNp0BqL/jU1eyWUBORaOK/J/9LDA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-image-set-function@7.0.0: + postcss-image-set-function@8.0.0: resolution: { - integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==, + integrity: sha512-rEGNkOkNusf4+IuMmfEoIdLuVmvbExGbmG+MIsyV6jR5UaWSoyPcAYHV/PxzVDCmudyF+2Nh/o6Ub2saqUdnuA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 @@ -7572,12 +7646,12 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-lab-function@7.0.12: + postcss-lab-function@8.0.1: resolution: { - integrity: sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==, + integrity: sha512-Q/ANnuCYtanAc+2NnCaZrYu+GofYQUV603JXL0KB6GlcXxpnm/UerPAmpKQdb9pxYUkpKovGxfL43aOUnpF/Hg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 @@ -7602,12 +7676,12 @@ packages: yaml: optional: true - postcss-logical@8.1.0: + postcss-logical@9.0.0: resolution: { - integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==, + integrity: sha512-A4LNd9dk3q/juEUA9Gd8ALhBO3TeOeYurnyHLlf2aAToD94VHR8c5Uv7KNmf8YVRhTxvWsyug4c5fKtARzyIRQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 @@ -7620,10 +7694,10 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-merge-rules@7.0.6: + postcss-merge-rules@7.0.7: resolution: { - integrity: sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==, + integrity: sha512-njWJrd/Ms6XViwowaaCc+/vqhPG3SmXn725AGrnl+BgTuRPEacjiLEaGq16J6XirMJbtKkTwnt67SS+e2WGoew==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -7647,10 +7721,10 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-minify-params@7.0.4: + postcss-minify-params@7.0.5: resolution: { - integrity: sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==, + integrity: sha512-FGK9ky02h6Ighn3UihsyeAH5XmLEE2MSGH5Tc4tXMFtEDx7B+zTG6hD/+/cT+fbF7PbYojsmmWjyTwFwW1JKQQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -7674,12 +7748,12 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-nesting@13.0.2: + postcss-nesting@14.0.0: resolution: { - integrity: sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==, + integrity: sha512-YGFOfVrjxYfeGTS5XctP1WCI5hu8Lr9SmntjfRC+iX5hCihEO+QZl9Ra+pkjqkgoVdDKvb2JccpElcowhZtzpw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 @@ -7737,10 +7811,10 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-normalize-unicode@7.0.4: + postcss-normalize-unicode@7.0.5: resolution: { - integrity: sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==, + integrity: sha512-X6BBwiRxVaFHrb2WyBMddIeB5HBjJcAaUHyhLrM2FsxSq5TFqcHSsK7Zu1otag+o0ZphQGJewGH1tAyrD0zX1Q==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -7782,12 +7856,12 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-overflow-shorthand@6.0.0: + postcss-overflow-shorthand@7.0.0: resolution: { - integrity: sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==, + integrity: sha512-9SLpjoUdGRoRrzoOdX66HbUs0+uDwfIAiXsRa7piKGOqPd6F4ZlON9oaDSP5r1Qpgmzw5L9Ht0undIK6igJPMA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 @@ -7799,37 +7873,37 @@ packages: peerDependencies: postcss: ^8 - postcss-place@10.0.0: + postcss-place@11.0.0: resolution: { - integrity: sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==, + integrity: sha512-fAifpyjQ+fuDRp2nmF95WbotqbpjdazebedahXdfBxy5sHembOLpBQ1cHveZD9ZmjK26tYM8tikeNaUlp/KfHA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-preset-env@10.4.0: + postcss-preset-env@11.1.3: resolution: { - integrity: sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw==, + integrity: sha512-kZOfgzUc52yq2fJRZig7sHgWaHJoDOLABBoswe6TPTHgW3581VkP3eRj+Silhc7cJTomMjZZsyRHNjQ+bW11Gg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-pseudo-class-any-link@10.0.1: + postcss-pseudo-class-any-link@11.0.0: resolution: { - integrity: sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==, + integrity: sha512-DNFZ4GMa3C3pU5dM+UCTG1CEeLtS1ZqV5DKSqCTJQMn1G5jnd/30fS8+A7H4o5bSD3MOcnx+VgI+xPE9Z5Wvig==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - postcss-reduce-initial@7.0.4: + postcss-reduce-initial@7.0.5: resolution: { - integrity: sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==, + integrity: sha512-RHagHLidG8hTZcnr4FpyMB2jtgd/OcyAazjMhoy5qmWJOx1uxKh4ntk0Pb46ajKM0rkf32lRH4C8c9qQiPR6IA==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -7861,12 +7935,6 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-resolve-nested-selector@0.1.6: - resolution: - { - integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==, - } - postcss-safe-parser@7.0.1: resolution: { @@ -7876,12 +7944,12 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-selector-not@8.0.1: + postcss-selector-not@9.0.0: resolution: { - integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==, + integrity: sha512-xhAtTdHnVU2M/CrpYOPyRUvg3njhVlKmn2GNYXDaRJV9Ygx4d5OkSkc7NINzjUqnbDFtaKXlISOBeyMXU/zyFQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 @@ -7899,10 +7967,10 @@ packages: } engines: { node: ">=4" } - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.1: resolution: { - integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==, + integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==, } engines: { node: ">=4" } @@ -7944,10 +8012,10 @@ packages: } engines: { node: ">= 0.8.0" } - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: resolution: { - integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, + integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==, } engines: { node: ">=6.0.0" } @@ -7972,10 +8040,10 @@ packages: engines: { node: ">=10.13.0" } hasBin: true - prettier@3.6.2: + prettier@3.8.1: resolution: { - integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, + integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==, } engines: { node: ">=14" } hasBin: true @@ -8026,10 +8094,10 @@ packages: } engines: { node: ">=6" } - qified@0.5.0: + qified@0.6.0: resolution: { - integrity: sha512-Zj6Q/Vc/SQ+Fzc87N90jJUzBzxD7MVQ2ZvGyMmYtnl2u1a07CejAhvtk4ZwASos+SiHKCAIylyGHJKIek75QBw==, + integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==, } engines: { node: ">=20" } @@ -8078,6 +8146,20 @@ packages: } engines: { node: ">=18" } + read-package-up@12.0.0: + resolution: + { + integrity: sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==, + } + engines: { node: ">=20" } + + read-pkg@10.1.0: + resolution: + { + integrity: sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==, + } + engines: { node: ">=20" } + read-pkg@9.0.1: resolution: { @@ -8139,10 +8221,10 @@ packages: } engines: { node: ">=4" } - registry-auth-token@5.1.0: + registry-auth-token@5.1.1: resolution: { - integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==, + integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==, } engines: { node: ">=14" } @@ -8212,20 +8294,20 @@ packages: } engines: { node: ">=8" } - resolve@1.22.10: + resolve@1.22.11: resolution: { - integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==, + integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==, } engines: { node: ">= 0.4" } hasBin: true - responselike@3.0.0: + responselike@4.0.2: resolution: { - integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==, + integrity: sha512-cGk8IbWEAnaCpdAt1BHzJ3Ahz5ewDJa0KseTsE3qIRMJ3C698W8psM7byCeWVpd/Ha7FUYzuRVzXoKoM6nRUbA==, } - engines: { node: ">=14.16" } + engines: { node: ">=20" } restore-cursor@3.1.0: resolution: @@ -8269,10 +8351,10 @@ packages: engines: { node: ">=10.0.0" } hasBin: true - rollup@4.52.4: + rollup@4.57.1: resolution: { - integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==, + integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==, } engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true @@ -8349,28 +8431,21 @@ packages: integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, } - sax@1.4.1: + sax@1.4.4: resolution: { - integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, + integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==, } + engines: { node: ">=11.0.0" } - semantic-release@24.2.9: + semantic-release@25.0.3: resolution: { - integrity: sha512-phCkJ6pjDi9ANdhuF5ElS10GGdAKY6R1Pvt9lT3SFhOwM4T7QZE7MLpBDbNruUx/Q3gFD92/UOFringGipRqZA==, + integrity: sha512-WRgl5GcypwramYX4HV+eQGzUbD7UUbljVmS+5G1uMwX/wLgYuJAxGeerXJDMO2xshng4+FXqCgyB5QfClV6WjA==, } - engines: { node: ">=20.8.1" } + engines: { node: ^22.14.0 || >= 24.10.0 } hasBin: true - semver-diff@5.0.0: - resolution: - { - integrity: sha512-0HbGtOm+S7T6NGQ/pxJSJipJvc4DK3FcRVMRkhsIwJDJ4Jcz5DQC1cPPzB5GhzyHjwttW878HaWQq46CkL3cqg==, - } - engines: { node: ">=12" } - deprecated: Deprecated as the semver package now supports this built-in. - semver-regex@4.0.5: resolution: { @@ -8385,10 +8460,10 @@ packages: } hasBin: true - semver@7.7.2: + semver@7.7.4: resolution: { - integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==, + integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, } engines: { node: ">=10" } hasBin: true @@ -8426,10 +8501,10 @@ packages: } engines: { node: ">= 0.4" } - sharp@0.34.4: + sharp@0.34.5: resolution: { - integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==, + integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } @@ -8509,13 +8584,6 @@ packages: } engines: { node: ">=8" } - slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: ">=8" } - slash@5.1.0: resolution: { @@ -8537,11 +8605,12 @@ packages: } engines: { node: ">=18" } - smob@1.5.0: + smob@1.6.1: resolution: { - integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==, + integrity: sha512-KAkBqZl3c2GvNgNhcoyJae1aKldDW0LO279wF9bk1PnluRTETKBq0WyzRXxEhoQLk56yHaOY4JCBEKDuJIET5g==, } + engines: { node: ">=20.0.0" } source-map-js@1.2.1: resolution: @@ -8661,13 +8730,6 @@ packages: } engines: { node: ">=8" } - string-width@5.1.2: - resolution: - { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, - } - engines: { node: ">=12" } - string-width@7.2.0: resolution: { @@ -8675,10 +8737,10 @@ packages: } engines: { node: ">=18" } - string-width@8.1.0: + string-width@8.1.1: resolution: { - integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==, + integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==, } engines: { node: ">=20" } @@ -8799,59 +8861,66 @@ packages: } engines: { node: ">=8" } - style-mod@4.1.2: + style-mod@4.1.3: resolution: { - integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==, + integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==, } - stylehacks@7.0.6: + stylehacks@7.0.7: resolution: { - integrity: sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==, + integrity: sha512-bJkD0JkEtbRrMFtwgpJyBbFIwfDDONQ1Ov3sDLZQP8HuJ73kBOyx66H4bOcAbVWmnfLdvQ0AJwXxOMkpujcO6g==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: postcss: ^8.4.32 - stylelint-config-recommended@17.0.0: + stylelint-config-recommended@18.0.0: resolution: { - integrity: sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==, + integrity: sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==, } - engines: { node: ">=18.12.0" } + engines: { node: ">=20.19.0" } peerDependencies: - stylelint: ^16.23.0 + stylelint: ^17.0.0 - stylelint-config-standard@39.0.1: + stylelint-config-standard@40.0.0: resolution: { - integrity: sha512-b7Fja59EYHRNOTa3aXiuWnhUWXFU2Nfg6h61bLfAb5GS5fX3LMUD0U5t4S8N/4tpHQg3Acs2UVPR9jy2l1g/3A==, + integrity: sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==, } - engines: { node: ">=18.12.0" } + engines: { node: ">=20.19.0" } peerDependencies: - stylelint: ^16.23.0 + stylelint: ^17.0.0 - stylelint@16.25.0: + stylelint@17.3.0: resolution: { - integrity: sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==, + integrity: sha512-1POV91lcEMhj6SLVaOeA0KlS9yattS+qq+cyWqP/nYzWco7K5jznpGH1ExngvPlTM9QF1Kjd2bmuzJu9TH2OcA==, } - engines: { node: ">=18.12.0" } + engines: { node: ">=20.19.0" } hasBin: true - sucrase@3.35.0: + sucrase@3.35.1: resolution: { - integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==, + integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==, } engines: { node: ">=16 || 14 >=14.17" } hasBin: true - super-regex@1.0.0: + super-regex@1.1.0: resolution: { - integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==, + integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==, + } + engines: { node: ">=18" } + + supports-color@10.2.2: + resolution: + { + integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==, } engines: { node: ">=18" } @@ -8876,6 +8945,13 @@ packages: } engines: { node: ">=14.18" } + supports-hyperlinks@4.4.0: + resolution: + { + integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==, + } + engines: { node: ">=20" } + supports-preserve-symlinks-flag@1.0.0: resolution: { @@ -8897,10 +8973,10 @@ packages: engines: { node: ">=16" } hasBin: true - synckit@0.11.11: + synckit@0.11.12: resolution: { - integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==, + integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==, } engines: { node: ^14.18.0 || >=16.0.0 } @@ -8911,10 +8987,17 @@ packages: } engines: { node: ">=10.0.0" } - tailwindcss@3.4.18: + tagged-tag@1.0.0: resolution: { - integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==, + integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==, + } + engines: { node: ">=20" } + + tailwindcss@3.4.19: + resolution: + { + integrity: sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==, } engines: { node: ">=14.0.0" } hasBin: true @@ -8940,28 +9023,21 @@ packages: } engines: { node: ">=10" } - tempy@3.1.0: + tempy@3.2.0: resolution: { - integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==, + integrity: sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==, } engines: { node: ">=14.16" } - terser@5.44.0: + terser@5.46.0: resolution: { - integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==, + integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==, } engines: { node: ">=10" } hasBin: true - text-extensions@2.4.0: - resolution: - { - integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==, - } - engines: { node: ">=8" } - thenby@1.3.4: resolution: { @@ -9006,11 +9082,12 @@ packages: integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==, } - tinyexec@1.0.1: + tinyexec@1.0.2: resolution: { - integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==, + integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==, } + engines: { node: ">=18" } tinyglobby@0.2.15: resolution: @@ -9065,10 +9142,10 @@ packages: } engines: { node: ">= 0.4" } - ts-api-utils@2.1.0: + ts-api-utils@2.4.0: resolution: { - integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==, + integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==, } engines: { node: ">=18.12" } peerDependencies: @@ -9092,6 +9169,13 @@ packages: integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, } + tunnel@0.0.6: + resolution: + { + integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==, + } + engines: { node: ">=0.6.11 <=0.7.0 || >=0.7.3" } + type-check@0.4.0: resolution: { @@ -9134,6 +9218,13 @@ packages: } engines: { node: ">=16" } + type-fest@5.4.4: + resolution: + { + integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==, + } + engines: { node: ">=20" } + typed-array-buffer@1.0.3: resolution: { @@ -9162,14 +9253,14 @@ packages: } engines: { node: ">= 0.4" } - typescript-eslint@8.46.0: + typescript-eslint@8.56.0: resolution: { - integrity: sha512-6+ZrB6y2bT2DX3K+Qd9vn7OFOJR+xSLDj+Aw/N3zBwUt27uTw2sw2TE2+UcY1RiyBZkaGbTkVg9SSdPNUG6aUw==, + integrity: sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" typescript@5.9.3: @@ -9201,6 +9292,20 @@ packages: integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==, } + undici@6.23.0: + resolution: + { + integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==, + } + engines: { node: ">=18.17" } + + undici@7.22.0: + resolution: + { + integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==, + } + engines: { node: ">=20.18.1" } + unicode-canonical-property-names-ecmascript@2.0.1: resolution: { @@ -9262,6 +9367,13 @@ packages: } engines: { node: ">=18" } + unicorn-magic@0.4.0: + resolution: + { + integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==, + } + engines: { node: ">=20" } + unique-string@2.0.0: resolution: { @@ -9303,10 +9415,10 @@ packages: } engines: { node: ">=4" } - update-browserslist-db@1.1.3: + update-browserslist-db@1.2.3: resolution: { - integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==, + integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==, } hasBin: true peerDependencies: @@ -9380,34 +9492,34 @@ packages: "@nuxt/kit": optional: true - vite-plugin-pwa@1.0.3: + vite-plugin-pwa@1.2.0: resolution: { - integrity: sha512-/OpqIpUldALGxcsEnv/ekQiQ5xHkQ53wcoN5ewX4jiIDNGs3W+eNcI1WYZeyOLmzoEjg09D7aX0O89YGjen1aw==, + integrity: sha512-a2xld+SJshT9Lgcv8Ji4+srFJL4k/1bVbd1x06JIkvecpQkwkvCncD1+gSzcdm3s+owWLpMJerG3aN5jupJEVw==, } engines: { node: ">=16.0.0" } peerDependencies: "@vite-pwa/assets-generator": ^1.0.0 vite: ^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - workbox-build: ^7.3.0 - workbox-window: ^7.3.0 + workbox-build: ^7.4.0 + workbox-window: ^7.4.0 peerDependenciesMeta: "@vite-pwa/assets-generator": optional: true - vite-plugin-static-copy@3.1.3: + vite-plugin-static-copy@3.2.0: resolution: { - integrity: sha512-U47jgyoJfrvreF87u2udU6dHIXbHhdgGZ7wSEqn6nVHKDOMdRoB2uVc6iqxbEzENN5JvX6djE5cBhQZ2MMBclA==, + integrity: sha512-g2k9z8B/1Bx7D4wnFjPLx9dyYGrqWMLTpwTtPHhcU+ElNZP2O4+4OsyaficiDClus0dzVhdGvoGFYMJxoXZ12Q==, } engines: { node: ^18.0.0 || >=20.0.0 } peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - vite@7.1.9: + vite@7.3.1: resolution: { - integrity: sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==, + integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==, } engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true @@ -9453,10 +9565,10 @@ packages: integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, } - wavesurfer.js@7.11.0: + wavesurfer.js@7.12.1: resolution: { - integrity: sha512-LOGdIBIKv/roYuQYClhoqhwbIdQL1GfobLnS2vx0heoLD9lu57OUHWE2DIsCNXBvCsmmbkUvJq9W8bPLPbikGw==, + integrity: sha512-NswPjVHxk0Q1F/VMRemCPUzSojjuHHisQrBqQiRXg7MVbe3f5vQ6r0rTTXA/a/neC/4hnOEC4YpXca4LpH0SUg==, } wcwidth@1.0.1: @@ -9465,6 +9577,12 @@ packages: integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, } + web-worker@1.2.0: + resolution: + { + integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==, + } + webidl-conversions@3.0.1: resolution: { @@ -9516,10 +9634,10 @@ packages: integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, } - which-typed-array@1.1.19: + which-typed-array@1.1.20: resolution: { - integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==, + integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==, } engines: { node: ">= 0.4" } @@ -9551,101 +9669,101 @@ packages: integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==, } - workbox-background-sync@7.3.0: + workbox-background-sync@7.4.0: resolution: { - integrity: sha512-PCSk3eK7Mxeuyatb22pcSx9dlgWNv3+M8PqPaYDokks8Y5/FX4soaOqj3yhAZr5k6Q5JWTOMYgaJBpbw11G9Eg==, + integrity: sha512-8CB9OxKAgKZKyNMwfGZ1XESx89GryWTfI+V5yEj8sHjFH8MFelUwYXEyldEK6M6oKMmn807GoJFUEA1sC4XS9w==, } - workbox-broadcast-update@7.3.0: + workbox-broadcast-update@7.4.0: resolution: { - integrity: sha512-T9/F5VEdJVhwmrIAE+E/kq5at2OY6+OXXgOWQevnubal6sO92Gjo24v6dCVwQiclAF5NS3hlmsifRrpQzZCdUA==, + integrity: sha512-+eZQwoktlvo62cI0b+QBr40v5XjighxPq3Fzo9AWMiAosmpG5gxRHgTbGGhaJv/q/MFVxwFNGh/UwHZ/8K88lA==, } - workbox-build@7.3.0: + workbox-build@7.4.0: resolution: { - integrity: sha512-JGL6vZTPlxnlqZRhR/K/msqg3wKP+m0wfEUVosK7gsYzSgeIxvZLi1ViJJzVL7CEeI8r7rGFV973RiEqkP3lWQ==, + integrity: sha512-Ntk1pWb0caOFIvwz/hfgrov/OJ45wPEhI5PbTywQcYjyZiVhT3UrwwUPl6TRYbTm4moaFYithYnl1lvZ8UjxcA==, } - engines: { node: ">=16.0.0" } + engines: { node: ">=20.0.0" } - workbox-cacheable-response@7.3.0: + workbox-cacheable-response@7.4.0: resolution: { - integrity: sha512-eAFERIg6J2LuyELhLlmeRcJFa5e16Mj8kL2yCDbhWE+HUun9skRQrGIFVUagqWj4DMaaPSMWfAolM7XZZxNmxA==, + integrity: sha512-0Fb8795zg/x23ISFkAc7lbWes6vbw34DGFIMw31cwuHPgDEC/5EYm6m/ZkylLX0EnEbbOyOCLjKgFS/Z5g0HeQ==, } - workbox-core@7.3.0: + workbox-core@7.4.0: resolution: { - integrity: sha512-Z+mYrErfh4t3zi7NVTvOuACB0A/jA3bgxUN3PwtAVHvfEsZxV9Iju580VEETug3zYJRc0Dmii/aixI/Uxj8fmw==, + integrity: sha512-6BMfd8tYEnN4baG4emG9U0hdXM4gGuDU3ectXuVHnj71vwxTFI7WOpQJC4siTOlVtGqCUtj0ZQNsrvi6kZZTAQ==, } - workbox-expiration@7.3.0: + workbox-expiration@7.4.0: resolution: { - integrity: sha512-lpnSSLp2BM+K6bgFCWc5bS1LR5pAwDWbcKt1iL87/eTSJRdLdAwGQznZE+1czLgn/X05YChsrEegTNxjM067vQ==, + integrity: sha512-V50p4BxYhtA80eOvulu8xVfPBgZbkxJ1Jr8UUn0rvqjGhLDqKNtfrDfjJKnLz2U8fO2xGQJTx/SKXNTzHOjnHw==, } - workbox-google-analytics@7.3.0: + workbox-google-analytics@7.4.0: resolution: { - integrity: sha512-ii/tSfFdhjLHZ2BrYgFNTrb/yk04pw2hasgbM70jpZfLk0vdJAXgaiMAWsoE+wfJDNWoZmBYY0hMVI0v5wWDbg==, + integrity: sha512-MVPXQslRF6YHkzGoFw1A4GIB8GrKym/A5+jYDUSL+AeJw4ytQGrozYdiZqUW1TPQHW8isBCBtyFJergUXyNoWQ==, } - workbox-navigation-preload@7.3.0: + workbox-navigation-preload@7.4.0: resolution: { - integrity: sha512-fTJzogmFaTv4bShZ6aA7Bfj4Cewaq5rp30qcxl2iYM45YD79rKIhvzNHiFj1P+u5ZZldroqhASXwwoyusnr2cg==, + integrity: sha512-etzftSgdQfjMcfPgbfaZCfM2QuR1P+4o8uCA2s4rf3chtKTq/Om7g/qvEOcZkG6v7JZOSOxVYQiOu6PbAZgU6w==, } - workbox-precaching@7.3.0: + workbox-precaching@7.4.0: resolution: { - integrity: sha512-ckp/3t0msgXclVAYaNndAGeAoWQUv7Rwc4fdhWL69CCAb2UHo3Cef0KIUctqfQj1p8h6aGyz3w8Cy3Ihq9OmIw==, + integrity: sha512-VQs37T6jDqf1rTxUJZXRl3yjZMf5JX/vDPhmx2CPgDDKXATzEoqyRqhYnRoxl6Kr0rqaQlp32i9rtG5zTzIlNg==, } - workbox-range-requests@7.3.0: + workbox-range-requests@7.4.0: resolution: { - integrity: sha512-EyFmM1KpDzzAouNF3+EWa15yDEenwxoeXu9bgxOEYnFfCxns7eAxA9WSSaVd8kujFFt3eIbShNqa4hLQNFvmVQ==, + integrity: sha512-3Vq854ZNuP6Y0KZOQWLaLC9FfM7ZaE+iuQl4VhADXybwzr4z/sMmnLgTeUZLq5PaDlcJBxYXQ3U91V7dwAIfvw==, } - workbox-recipes@7.3.0: + workbox-recipes@7.4.0: resolution: { - integrity: sha512-BJro/MpuW35I/zjZQBcoxsctgeB+kyb2JAP5EB3EYzePg8wDGoQuUdyYQS+CheTb+GhqJeWmVs3QxLI8EBP1sg==, + integrity: sha512-kOkWvsAn4H8GvAkwfJTbwINdv4voFoiE9hbezgB1sb/0NLyTG4rE7l6LvS8lLk5QIRIto+DjXLuAuG3Vmt3cxQ==, } - workbox-routing@7.3.0: + workbox-routing@7.4.0: resolution: { - integrity: sha512-ZUlysUVn5ZUzMOmQN3bqu+gK98vNfgX/gSTZ127izJg/pMMy4LryAthnYtjuqcjkN4HEAx1mdgxNiKJMZQM76A==, + integrity: sha512-C/ooj5uBWYAhAqwmU8HYQJdOjjDKBp9MzTQ+otpMmd+q0eF59K+NuXUek34wbL0RFrIXe/KKT+tUWcZcBqxbHQ==, } - workbox-strategies@7.3.0: + workbox-strategies@7.4.0: resolution: { - integrity: sha512-tmZydug+qzDFATwX7QiEL5Hdf7FrkhjaF9db1CbB39sDmEZJg3l9ayDvPxy8Y18C3Y66Nrr9kkN1f/RlkDgllg==, + integrity: sha512-T4hVqIi5A4mHi92+5EppMX3cLaVywDp8nsyUgJhOZxcfSV/eQofcOA6/EMo5rnTNmNTpw0rUgjAI6LaVullPpg==, } - workbox-streams@7.3.0: + workbox-streams@7.4.0: resolution: { - integrity: sha512-SZnXucyg8x2Y61VGtDjKPO5EgPUG5NDn/v86WYHX+9ZqvAsGOytP0Jxp1bl663YUuMoXSAtsGLL+byHzEuMRpw==, + integrity: sha512-QHPBQrey7hQbnTs5GrEVoWz7RhHJXnPT+12qqWM378orDMo5VMJLCkCM1cnCk+8Eq92lccx/VgRZ7WAzZWbSLg==, } - workbox-sw@7.3.0: + workbox-sw@7.4.0: resolution: { - integrity: sha512-aCUyoAZU9IZtH05mn0ACUpyHzPs0lMeJimAYkQkBsOWiqaJLgusfDCR+yllkPkFRxWpZKF8vSvgHYeG7LwhlmA==, + integrity: sha512-ltU+Kr3qWR6BtbdlMnCjobZKzeV1hN+S6UvDywBrwM19TTyqA03X66dzw1tEIdJvQ4lYKkBFox6IAEhoSEZ8Xw==, } - workbox-window@7.3.0: + workbox-window@7.4.0: resolution: { - integrity: sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA==, + integrity: sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw==, } wrap-ansi@6.2.0: @@ -9662,13 +9780,6 @@ packages: } engines: { node: ">=10" } - wrap-ansi@8.1.0: - resolution: - { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, - } - engines: { node: ">=12" } - wrap-ansi@9.0.2: resolution: { @@ -9682,12 +9793,12 @@ packages: integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, } - write-file-atomic@5.0.1: + write-file-atomic@7.0.0: resolution: { - integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==, + integrity: sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: ^20.17.0 || >=22.9.0 } wsl-utils@0.1.0: resolution: @@ -9710,10 +9821,10 @@ packages: } engines: { node: ">= 16" } - xmldoc@2.0.2: + xmldoc@2.0.3: resolution: { - integrity: sha512-UiRwoSStEXS3R+YE8OqYv3jebza8cBBAI2y8g3B15XFkn3SbEOyyLnmPHjLBPZANrPJKEzxxB7A3XwcLikQVlQ==, + integrity: sha512-6gRk4NY/Jvg67xn7OzJuxLRsGgiXBaPUQplVJ/9l99uIugxh4FTOewYz5ic8WScj7Xx/2WvhENiQKwkK9RpE4w==, } engines: { node: ">=12.0.0" } @@ -9743,10 +9854,10 @@ packages: integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, } - yaml@2.8.1: + yaml@2.8.2: resolution: { - integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==, + integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==, } engines: { node: ">= 14.6" } hasBin: true @@ -9772,6 +9883,13 @@ packages: } engines: { node: ">=12" } + yargs-parser@22.0.0: + resolution: + { + integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } + yargs@15.4.1: resolution: { @@ -9793,6 +9911,13 @@ packages: } engines: { node: ">=12" } + yargs@18.0.0: + resolution: + { + integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==, + } + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } + yocto-queue@0.1.0: resolution: { @@ -9800,13 +9925,6 @@ packages: } engines: { node: ">=10" } - yocto-queue@1.2.1: - resolution: - { - integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==, - } - engines: { node: ">=12.20" } - yoctocolors@2.1.2: resolution: { @@ -9814,27 +9932,43 @@ packages: } engines: { node: ">=18" } - zod@4.1.12: + zod@4.3.6: resolution: { - integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==, + integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==, } snapshots: + "@actions/core@3.0.0": + dependencies: + "@actions/exec": 3.0.0 + "@actions/http-client": 4.0.0 + + "@actions/exec@3.0.0": + dependencies: + "@actions/io": 3.0.2 + + "@actions/http-client@4.0.0": + dependencies: + tunnel: 0.0.6 + undici: 6.23.0 + + "@actions/io@3.0.2": {} + "@alloc/quick-lru@5.2.0": {} "@amcharts/amcharts4-geodata@4.1.31": {} "@amcharts/amcharts4@4.10.40": dependencies: - "@babel/runtime": 7.28.4 - core-js: 3.45.1 + "@babel/runtime": 7.28.6 + core-js: 3.48.0 d3-force: 3.0.0 d3-geo: 3.1.1 d3-geo-projection: 4.0.0 d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - pdfmake: 0.2.20 + pdfmake: 0.2.23 polylabel: 1.1.0 raf: 3.4.1 regression: 2.0.1 @@ -9842,32 +9976,32 @@ snapshots: stackblur-canvas: 2.7.0 tslib: 2.8.1 - "@apideck/better-ajv-errors@0.3.6(ajv@8.17.1)": + "@apideck/better-ajv-errors@0.3.6(ajv@8.18.0)": dependencies: - ajv: 8.17.1 + ajv: 8.18.0 json-schema: 0.4.0 jsonpointer: 5.0.1 leven: 3.1.0 - "@babel/code-frame@7.27.1": + "@babel/code-frame@7.29.0": dependencies: - "@babel/helper-validator-identifier": 7.27.1 + "@babel/helper-validator-identifier": 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - "@babel/compat-data@7.28.4": {} + "@babel/compat-data@7.29.0": {} - "@babel/core@7.28.4": + "@babel/core@7.29.0": dependencies: - "@babel/code-frame": 7.27.1 - "@babel/generator": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.4) - "@babel/helpers": 7.28.4 - "@babel/parser": 7.28.4 - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.4 - "@babel/types": 7.28.4 + "@babel/code-frame": 7.29.0 + "@babel/generator": 7.29.1 + "@babel/helper-compilation-targets": 7.28.6 + "@babel/helper-module-transforms": 7.28.6(@babel/core@7.29.0) + "@babel/helpers": 7.28.6 + "@babel/parser": 7.29.0 + "@babel/template": 7.28.6 + "@babel/traverse": 7.29.0 + "@babel/types": 7.29.0 "@jridgewell/remapping": 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -9877,762 +10011,758 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/generator@7.28.3": + "@babel/generator@7.29.1": dependencies: - "@babel/parser": 7.28.4 - "@babel/types": 7.28.4 + "@babel/parser": 7.29.0 + "@babel/types": 7.29.0 "@jridgewell/gen-mapping": 0.3.13 "@jridgewell/trace-mapping": 0.3.31 jsesc: 3.1.0 "@babel/helper-annotate-as-pure@7.27.3": dependencies: - "@babel/types": 7.28.4 + "@babel/types": 7.29.0 - "@babel/helper-compilation-targets@7.27.2": + "@babel/helper-compilation-targets@7.28.6": dependencies: - "@babel/compat-data": 7.28.4 + "@babel/compat-data": 7.29.0 "@babel/helper-validator-option": 7.27.1 - browserslist: 4.26.3 + browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)": + "@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 + "@babel/core": 7.29.0 "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-member-expression-to-functions": 7.27.1 + "@babel/helper-member-expression-to-functions": 7.28.5 "@babel/helper-optimise-call-expression": 7.27.1 - "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.4) + "@babel/helper-replace-supers": 7.28.6(@babel/core@7.29.0) "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/traverse": 7.28.4 + "@babel/traverse": 7.29.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.4)": + "@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 + "@babel/core": 7.29.0 "@babel/helper-annotate-as-pure": 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 - "@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4)": + "@babel/helper-define-polyfill-provider@0.6.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-compilation-targets": 7.28.6 + "@babel/helper-plugin-utils": 7.28.6 debug: 4.4.3 lodash.debounce: 4.0.8 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color "@babel/helper-globals@7.28.0": {} - "@babel/helper-member-expression-to-functions@7.27.1": + "@babel/helper-member-expression-to-functions@7.28.5": dependencies: - "@babel/traverse": 7.28.4 - "@babel/types": 7.28.4 + "@babel/traverse": 7.29.0 + "@babel/types": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/helper-module-imports@7.27.1": + "@babel/helper-module-imports@7.28.6": dependencies: - "@babel/traverse": 7.28.4 - "@babel/types": 7.28.4 + "@babel/traverse": 7.29.0 + "@babel/types": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)": + "@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 - "@babel/traverse": 7.28.4 + "@babel/core": 7.29.0 + "@babel/helper-module-imports": 7.28.6 + "@babel/helper-validator-identifier": 7.28.5 + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color "@babel/helper-optimise-call-expression@7.27.1": dependencies: - "@babel/types": 7.28.4 + "@babel/types": 7.29.0 - "@babel/helper-plugin-utils@7.27.1": {} + "@babel/helper-plugin-utils@7.28.6": {} - "@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.4)": + "@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 + "@babel/core": 7.29.0 "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-wrap-function": 7.28.3 - "@babel/traverse": 7.28.4 + "@babel/helper-wrap-function": 7.28.6 + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)": + "@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-member-expression-to-functions": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-member-expression-to-functions": 7.28.5 "@babel/helper-optimise-call-expression": 7.27.1 - "@babel/traverse": 7.28.4 + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color "@babel/helper-skip-transparent-expression-wrappers@7.27.1": dependencies: - "@babel/traverse": 7.28.4 - "@babel/types": 7.28.4 + "@babel/traverse": 7.29.0 + "@babel/types": 7.29.0 transitivePeerDependencies: - supports-color "@babel/helper-string-parser@7.27.1": {} - "@babel/helper-validator-identifier@7.27.1": {} + "@babel/helper-validator-identifier@7.28.5": {} "@babel/helper-validator-option@7.27.1": {} - "@babel/helper-wrap-function@7.28.3": + "@babel/helper-wrap-function@7.28.6": dependencies: - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.4 - "@babel/types": 7.28.4 + "@babel/template": 7.28.6 + "@babel/traverse": 7.29.0 + "@babel/types": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/helpers@7.28.4": + "@babel/helpers@7.28.6": dependencies: - "@babel/template": 7.27.2 - "@babel/types": 7.28.4 + "@babel/template": 7.28.6 + "@babel/types": 7.29.0 - "@babel/parser@7.28.4": + "@babel/parser@7.29.0": dependencies: - "@babel/types": 7.28.4 + "@babel/types": 7.29.0 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.4 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.4) + "@babel/plugin-transform-optional-chaining": 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.4)": + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.4 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4)": + "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 + "@babel/core": 7.29.0 - "@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.4)": + "@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-regexp-features-plugin": 7.28.5(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.4)": + "@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.28.4) - "@babel/traverse": 7.28.4 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.29.0) + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.28.4) + "@babel/core": 7.29.0 + "@babel/helper-module-imports": 7.28.6 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.28.4)": + "@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-class-features-plugin": 7.28.6(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.4)": + "@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-class-features-plugin": 7.28.6(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.4)": + "@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 + "@babel/core": 7.29.0 "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-compilation-targets": 7.27.2 + "@babel/helper-compilation-targets": 7.28.6 "@babel/helper-globals": 7.28.0 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.4) - "@babel/traverse": 7.28.4 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/helper-replace-supers": 7.28.6(@babel/core@7.29.0) + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/template": 7.27.2 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/template": 7.28.6 - "@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.4)": + "@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.4 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-regexp-features-plugin": 7.28.5(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-regexp-features-plugin": 7.28.5(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.4)": + "@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.4) + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/plugin-transform-destructuring": 7.28.5(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.4 + "@babel/core": 7.29.0 + "@babel/helper-compilation-targets": 7.28.6 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-module-transforms": 7.28.6(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-module-transforms": 7.28.6(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 - "@babel/traverse": 7.28.4 + "@babel/core": 7.29.0 + "@babel/helper-module-transforms": 7.28.6(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 + "@babel/helper-validator-identifier": 7.28.5 + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-module-transforms": 7.28.6(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-regexp-features-plugin": 7.28.5(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.4)": + "@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.4) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.4) - "@babel/traverse": 7.28.4 + "@babel/core": 7.29.0 + "@babel/helper-compilation-targets": 7.28.6 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/plugin-transform-destructuring": 7.28.5(@babel/core@7.29.0) + "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.29.0) + "@babel/traverse": 7.29.0 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.4) + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/helper-replace-supers": 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.4)": + "@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-class-features-plugin": 7.28.6(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 + "@babel/core": 7.29.0 "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/helper-create-class-features-plugin": 7.28.6(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.4)": + "@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-regexp-features-plugin": 7.28.5(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-regexp-features-plugin": 7.28.5(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-regexp-features-plugin": 7.28.5(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 - "@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.4)": + "@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.4) - "@babel/helper-plugin-utils": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-create-regexp-features-plugin": 7.28.5(@babel/core@7.29.0) + "@babel/helper-plugin-utils": 7.28.6 - "@babel/preset-env@7.28.3(@babel/core@7.28.4)": + "@babel/preset-env@7.29.0(@babel/core@7.29.0)": dependencies: - "@babel/compat-data": 7.28.4 - "@babel/core": 7.28.4 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 + "@babel/compat-data": 7.29.0 + "@babel/core": 7.29.0 + "@babel/helper-compilation-targets": 7.28.6 + "@babel/helper-plugin-utils": 7.28.6 "@babel/helper-validator-option": 7.27.1 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-bugfix-safari-class-field-initializer-scope": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": 7.28.3(@babel/core@7.28.4) - "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4) - "@babel/plugin-syntax-import-assertions": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-syntax-import-attributes": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-syntax-unicode-sets-regex": 7.18.6(@babel/core@7.28.4) - "@babel/plugin-transform-arrow-functions": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-async-generator-functions": 7.28.0(@babel/core@7.28.4) - "@babel/plugin-transform-async-to-generator": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-block-scoped-functions": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-block-scoping": 7.28.4(@babel/core@7.28.4) - "@babel/plugin-transform-class-properties": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-class-static-block": 7.28.3(@babel/core@7.28.4) - "@babel/plugin-transform-classes": 7.28.4(@babel/core@7.28.4) - "@babel/plugin-transform-computed-properties": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.4) - "@babel/plugin-transform-dotall-regex": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-duplicate-keys": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-dynamic-import": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-explicit-resource-management": 7.28.0(@babel/core@7.28.4) - "@babel/plugin-transform-exponentiation-operator": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-export-namespace-from": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-for-of": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-function-name": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-json-strings": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-literals": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-logical-assignment-operators": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-member-expression-literals": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-modules-amd": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-modules-systemjs": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-modules-umd": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-new-target": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-nullish-coalescing-operator": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-numeric-separator": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-object-rest-spread": 7.28.4(@babel/core@7.28.4) - "@babel/plugin-transform-object-super": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-optional-catch-binding": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.4) - "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-property-literals": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-regenerator": 7.28.4(@babel/core@7.28.4) - "@babel/plugin-transform-regexp-modifiers": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-reserved-words": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-shorthand-properties": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-spread": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-sticky-regex": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-template-literals": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-typeof-symbol": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-unicode-escapes": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-unicode-property-regex": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-unicode-regex": 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-unicode-sets-regex": 7.27.1(@babel/core@7.28.4) - "@babel/preset-modules": 0.1.6-no-external-plugins(@babel/core@7.28.4) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) - core-js-compat: 3.45.1 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": 7.28.5(@babel/core@7.29.0) + "@babel/plugin-bugfix-safari-class-field-initializer-scope": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) + "@babel/plugin-syntax-import-assertions": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-syntax-import-attributes": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-syntax-unicode-sets-regex": 7.18.6(@babel/core@7.29.0) + "@babel/plugin-transform-arrow-functions": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-async-generator-functions": 7.29.0(@babel/core@7.29.0) + "@babel/plugin-transform-async-to-generator": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-block-scoped-functions": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-block-scoping": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-class-properties": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-class-static-block": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-classes": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-computed-properties": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-destructuring": 7.28.5(@babel/core@7.29.0) + "@babel/plugin-transform-dotall-regex": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-duplicate-keys": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": 7.29.0(@babel/core@7.29.0) + "@babel/plugin-transform-dynamic-import": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-explicit-resource-management": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-exponentiation-operator": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-export-namespace-from": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-for-of": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-function-name": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-json-strings": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-literals": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-logical-assignment-operators": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-member-expression-literals": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-modules-amd": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-modules-commonjs": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-modules-systemjs": 7.29.0(@babel/core@7.29.0) + "@babel/plugin-transform-modules-umd": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-named-capturing-groups-regex": 7.29.0(@babel/core@7.29.0) + "@babel/plugin-transform-new-target": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-nullish-coalescing-operator": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-numeric-separator": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-object-rest-spread": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-object-super": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-optional-catch-binding": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-optional-chaining": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.29.0) + "@babel/plugin-transform-private-methods": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-private-property-in-object": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-property-literals": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-regenerator": 7.29.0(@babel/core@7.29.0) + "@babel/plugin-transform-regexp-modifiers": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-reserved-words": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-shorthand-properties": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-spread": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-sticky-regex": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-template-literals": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-typeof-symbol": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-unicode-escapes": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-unicode-property-regex": 7.28.6(@babel/core@7.29.0) + "@babel/plugin-transform-unicode-regex": 7.27.1(@babel/core@7.29.0) + "@babel/plugin-transform-unicode-sets-regex": 7.28.6(@babel/core@7.29.0) + "@babel/preset-modules": 0.1.6-no-external-plugins(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.0(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.4)": + "@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/types": 7.28.4 + "@babel/core": 7.29.0 + "@babel/helper-plugin-utils": 7.28.6 + "@babel/types": 7.29.0 esutils: 2.0.3 - "@babel/runtime@7.28.4": {} + "@babel/runtime@7.28.6": {} - "@babel/template@7.27.2": + "@babel/template@7.28.6": dependencies: - "@babel/code-frame": 7.27.1 - "@babel/parser": 7.28.4 - "@babel/types": 7.28.4 + "@babel/code-frame": 7.29.0 + "@babel/parser": 7.29.0 + "@babel/types": 7.29.0 - "@babel/traverse@7.28.4": + "@babel/traverse@7.29.0": dependencies: - "@babel/code-frame": 7.27.1 - "@babel/generator": 7.28.3 + "@babel/code-frame": 7.29.0 + "@babel/generator": 7.29.1 "@babel/helper-globals": 7.28.0 - "@babel/parser": 7.28.4 - "@babel/template": 7.27.2 - "@babel/types": 7.28.4 + "@babel/parser": 7.29.0 + "@babel/template": 7.28.6 + "@babel/types": 7.29.0 debug: 4.4.3 transitivePeerDependencies: - supports-color - "@babel/types@7.28.4": + "@babel/types@7.29.0": dependencies: "@babel/helper-string-parser": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 + "@babel/helper-validator-identifier": 7.28.5 - "@cacheable/memoize@2.0.3": + "@cacheable/memory@2.0.7": dependencies: - "@cacheable/utils": 2.1.0 + "@cacheable/utils": 2.3.4 + "@keyv/bigmap": 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 - "@cacheable/memory@2.0.3": + "@cacheable/utils@2.3.4": dependencies: - "@cacheable/memoize": 2.0.3 - "@cacheable/utils": 2.1.0 - "@keyv/bigmap": 1.0.2 - hookified: 1.12.1 - keyv: 5.5.3 + hashery: 1.4.0 + keyv: 5.6.0 - "@cacheable/utils@2.1.0": + "@codemirror/autocomplete@6.20.0": dependencies: - keyv: 5.5.3 + "@codemirror/language": 6.12.1 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 + "@lezer/common": 1.5.1 - "@codemirror/autocomplete@6.19.0": + "@codemirror/commands@6.10.2": dependencies: - "@codemirror/language": 6.11.3 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.5 - "@lezer/common": 1.2.3 - - "@codemirror/commands@6.9.0": - dependencies: - "@codemirror/language": 6.11.3 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.5 - "@lezer/common": 1.2.3 + "@codemirror/language": 6.12.1 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 + "@lezer/common": 1.5.1 "@codemirror/lang-css@6.3.1": dependencies: - "@codemirror/autocomplete": 6.19.0 - "@codemirror/language": 6.11.3 - "@codemirror/state": 6.5.2 - "@lezer/common": 1.2.3 - "@lezer/css": 1.3.0 + "@codemirror/autocomplete": 6.20.0 + "@codemirror/language": 6.12.1 + "@codemirror/state": 6.5.4 + "@lezer/common": 1.5.1 + "@lezer/css": 1.3.1 "@codemirror/lang-html@6.4.11": dependencies: - "@codemirror/autocomplete": 6.19.0 + "@codemirror/autocomplete": 6.20.0 "@codemirror/lang-css": 6.3.1 "@codemirror/lang-javascript": 6.2.4 - "@codemirror/language": 6.11.3 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.5 - "@lezer/common": 1.2.3 - "@lezer/css": 1.3.0 - "@lezer/html": 1.3.12 + "@codemirror/language": 6.12.1 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 + "@lezer/common": 1.5.1 + "@lezer/css": 1.3.1 + "@lezer/html": 1.3.13 "@codemirror/lang-javascript@6.2.4": dependencies: - "@codemirror/autocomplete": 6.19.0 - "@codemirror/language": 6.11.3 - "@codemirror/lint": 6.9.0 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.5 - "@lezer/common": 1.2.3 + "@codemirror/autocomplete": 6.20.0 + "@codemirror/language": 6.12.1 + "@codemirror/lint": 6.9.4 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 + "@lezer/common": 1.5.1 "@lezer/javascript": 1.5.4 "@codemirror/lang-xml@6.1.0": dependencies: - "@codemirror/autocomplete": 6.19.0 - "@codemirror/language": 6.11.3 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.5 - "@lezer/common": 1.2.3 + "@codemirror/autocomplete": 6.20.0 + "@codemirror/language": 6.12.1 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 + "@lezer/common": 1.5.1 "@lezer/xml": 1.0.6 - "@codemirror/language@6.11.3": + "@codemirror/language@6.12.1": dependencies: - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.5 - "@lezer/common": 1.2.3 - "@lezer/highlight": 1.2.1 - "@lezer/lr": 1.4.2 - style-mod: 4.1.2 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 + "@lezer/common": 1.5.1 + "@lezer/highlight": 1.2.3 + "@lezer/lr": 1.4.8 + style-mod: 4.1.3 - "@codemirror/lint@6.9.0": + "@codemirror/lint@6.9.4": dependencies: - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.5 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 crelt: 1.0.6 - "@codemirror/search@6.5.11": + "@codemirror/search@6.6.0": dependencies: - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.5 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 crelt: 1.0.6 - "@codemirror/state@6.5.2": + "@codemirror/state@6.5.4": dependencies: "@marijn/find-cluster-break": 1.0.2 - "@codemirror/view@6.38.5": + "@codemirror/view@6.39.14": dependencies: - "@codemirror/state": 6.5.2 + "@codemirror/state": 6.5.4 crelt: 1.0.6 - style-mod: 4.1.2 + style-mod: 4.1.3 w3c-keyname: 2.2.8 "@colors/colors@1.5.0": optional: true - "@commitlint/cli@20.1.0(@types/node@24.7.0)(typescript@5.9.3)": + "@commitlint/cli@20.4.1(@types/node@24.7.0)(typescript@5.9.3)": dependencies: - "@commitlint/format": 20.0.0 - "@commitlint/lint": 20.0.0 - "@commitlint/load": 20.1.0(@types/node@24.7.0)(typescript@5.9.3) - "@commitlint/read": 20.0.0 - "@commitlint/types": 20.0.0 - tinyexec: 1.0.1 + "@commitlint/format": 20.4.0 + "@commitlint/lint": 20.4.1 + "@commitlint/load": 20.4.0(@types/node@24.7.0)(typescript@5.9.3) + "@commitlint/read": 20.4.0 + "@commitlint/types": 20.4.0 + tinyexec: 1.0.2 yargs: 17.7.2 transitivePeerDependencies: - "@types/node" - typescript - "@commitlint/config-conventional@20.0.0": + "@commitlint/config-conventional@20.4.1": dependencies: - "@commitlint/types": 20.0.0 - conventional-changelog-conventionalcommits: 7.0.2 + "@commitlint/types": 20.4.0 + conventional-changelog-conventionalcommits: 9.1.0 - "@commitlint/config-validator@20.0.0": + "@commitlint/config-validator@20.4.0": dependencies: - "@commitlint/types": 20.0.0 - ajv: 8.17.1 + "@commitlint/types": 20.4.0 + ajv: 8.18.0 - "@commitlint/ensure@20.0.0": + "@commitlint/ensure@20.4.1": dependencies: - "@commitlint/types": 20.0.0 + "@commitlint/types": 20.4.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -10641,481 +10771,507 @@ snapshots: "@commitlint/execute-rule@20.0.0": {} - "@commitlint/format@20.0.0": + "@commitlint/format@20.4.0": dependencies: - "@commitlint/types": 20.0.0 - chalk: 5.6.2 + "@commitlint/types": 20.4.0 + picocolors: 1.1.1 - "@commitlint/is-ignored@20.0.0": + "@commitlint/is-ignored@20.4.1": dependencies: - "@commitlint/types": 20.0.0 - semver: 7.7.2 + "@commitlint/types": 20.4.0 + semver: 7.7.4 - "@commitlint/lint@20.0.0": + "@commitlint/lint@20.4.1": dependencies: - "@commitlint/is-ignored": 20.0.0 - "@commitlint/parse": 20.0.0 - "@commitlint/rules": 20.0.0 - "@commitlint/types": 20.0.0 + "@commitlint/is-ignored": 20.4.1 + "@commitlint/parse": 20.4.1 + "@commitlint/rules": 20.4.1 + "@commitlint/types": 20.4.0 - "@commitlint/load@20.1.0(@types/node@24.7.0)(typescript@5.9.3)": + "@commitlint/load@20.4.0(@types/node@24.7.0)(typescript@5.9.3)": dependencies: - "@commitlint/config-validator": 20.0.0 + "@commitlint/config-validator": 20.4.0 "@commitlint/execute-rule": 20.0.0 - "@commitlint/resolve-extends": 20.1.0 - "@commitlint/types": 20.0.0 - chalk: 5.6.2 + "@commitlint/resolve-extends": 20.4.0 + "@commitlint/types": 20.4.0 cosmiconfig: 9.0.0(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@24.7.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 + cosmiconfig-typescript-loader: 6.2.0(@types/node@24.7.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) + is-plain-obj: 4.1.0 + lodash.mergewith: 4.6.2 + picocolors: 1.1.1 transitivePeerDependencies: - "@types/node" - typescript - "@commitlint/message@20.0.0": {} + "@commitlint/message@20.4.0": {} - "@commitlint/parse@20.0.0": + "@commitlint/parse@20.4.1": dependencies: - "@commitlint/types": 20.0.0 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 + "@commitlint/types": 20.4.0 + conventional-changelog-angular: 8.1.0 + conventional-commits-parser: 6.2.1 - "@commitlint/read@20.0.0": + "@commitlint/read@20.4.0": dependencies: - "@commitlint/top-level": 20.0.0 - "@commitlint/types": 20.0.0 + "@commitlint/top-level": 20.4.0 + "@commitlint/types": 20.4.0 git-raw-commits: 4.0.0 minimist: 1.2.8 - tinyexec: 1.0.1 + tinyexec: 1.0.2 - "@commitlint/resolve-extends@20.1.0": + "@commitlint/resolve-extends@20.4.0": dependencies: - "@commitlint/config-validator": 20.0.0 - "@commitlint/types": 20.0.0 + "@commitlint/config-validator": 20.4.0 + "@commitlint/types": 20.4.0 global-directory: 4.0.1 import-meta-resolve: 4.2.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - "@commitlint/rules@20.0.0": + "@commitlint/rules@20.4.1": dependencies: - "@commitlint/ensure": 20.0.0 - "@commitlint/message": 20.0.0 + "@commitlint/ensure": 20.4.1 + "@commitlint/message": 20.4.0 "@commitlint/to-lines": 20.0.0 - "@commitlint/types": 20.0.0 + "@commitlint/types": 20.4.0 "@commitlint/to-lines@20.0.0": {} - "@commitlint/top-level@20.0.0": + "@commitlint/top-level@20.4.0": dependencies: - find-up: 7.0.0 + escalade: 3.2.0 - "@commitlint/types@20.0.0": + "@commitlint/types@20.4.0": dependencies: - "@types/conventional-commits-parser": 5.0.1 - chalk: 5.6.2 + conventional-commits-parser: 6.2.1 + picocolors: 1.1.1 - "@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": + "@csstools/cascade-layer-name-parser@3.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)": dependencies: - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 - "@csstools/color-helpers@5.1.0": {} + "@csstools/color-helpers@6.0.1": {} - "@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": + "@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)": dependencies: - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 - "@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": + "@csstools/css-color-parser@4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)": dependencies: - "@csstools/color-helpers": 5.1.0 - "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/color-helpers": 6.0.1 + "@csstools/css-calc": 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 - "@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)": + "@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)": dependencies: - "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-tokenizer": 4.0.0 - "@csstools/css-tokenizer@3.0.4": {} + "@csstools/css-syntax-patches-for-csstree@1.0.27": {} - "@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": + "@csstools/css-tokenizer@4.0.0": {} + + "@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)": dependencies: - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 - "@csstools/postcss-alpha-function@1.0.1(postcss@8.5.6)": + "@csstools/postcss-alpha-function@2.0.2(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.6)": + "@csstools/postcss-cascade-layers@6.0.0(postcss@8.5.6)": dependencies: - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) + "@csstools/selector-specificity": 6.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - "@csstools/postcss-color-function-display-p3-linear@1.0.1(postcss@8.5.6)": + "@csstools/postcss-color-function-display-p3-linear@2.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-color-function@4.0.12(postcss@8.5.6)": + "@csstools/postcss-color-function@5.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-color-mix-function@3.0.12(postcss@8.5.6)": + "@csstools/postcss-color-mix-function@4.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-color-mix-variadic-function-arguments@1.0.2(postcss@8.5.6)": + "@csstools/postcss-color-mix-variadic-function-arguments@2.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-content-alt-text@2.0.8(postcss@8.5.6)": + "@csstools/postcss-content-alt-text@3.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-contrast-color-function@2.0.12(postcss@8.5.6)": + "@csstools/postcss-contrast-color-function@3.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-exponential-functions@2.0.9(postcss@8.5.6)": + "@csstools/postcss-exponential-functions@3.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-calc": 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 postcss: 8.5.6 - "@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.6)": + "@csstools/postcss-font-format-keywords@5.0.0(postcss@8.5.6)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-gamut-mapping@2.0.11(postcss@8.5.6)": + "@csstools/postcss-gamut-mapping@3.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 postcss: 8.5.6 - "@csstools/postcss-gradients-interpolation-method@5.0.12(postcss@8.5.6)": + "@csstools/postcss-gradients-interpolation-method@6.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-hwb-function@4.0.12(postcss@8.5.6)": + "@csstools/postcss-hwb-function@5.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-ic-unit@4.0.4(postcss@8.5.6)": + "@csstools/postcss-ic-unit@5.0.0(postcss@8.5.6)": dependencies: - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-initial@2.0.1(postcss@8.5.6)": + "@csstools/postcss-initial@3.0.0(postcss@8.5.6)": dependencies: postcss: 8.5.6 - "@csstools/postcss-is-pseudo-class@5.0.3(postcss@8.5.6)": + "@csstools/postcss-is-pseudo-class@6.0.0(postcss@8.5.6)": dependencies: - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) + "@csstools/selector-specificity": 6.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - "@csstools/postcss-light-dark-function@2.0.11(postcss@8.5.6)": + "@csstools/postcss-light-dark-function@3.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.6)": + "@csstools/postcss-logical-float-and-clear@4.0.0(postcss@8.5.6)": dependencies: postcss: 8.5.6 - "@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.6)": + "@csstools/postcss-logical-overflow@3.0.0(postcss@8.5.6)": dependencies: postcss: 8.5.6 - "@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.6)": + "@csstools/postcss-logical-overscroll-behavior@3.0.0(postcss@8.5.6)": dependencies: postcss: 8.5.6 - "@csstools/postcss-logical-resize@3.0.0(postcss@8.5.6)": + "@csstools/postcss-logical-resize@4.0.0(postcss@8.5.6)": dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-logical-viewport-units@3.0.4(postcss@8.5.6)": + "@csstools/postcss-logical-viewport-units@4.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-tokenizer": 3.0.4 - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-media-minmax@2.0.9(postcss@8.5.6)": + "@csstools/postcss-media-minmax@3.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/media-query-list-parser": 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-calc": 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/media-query-list-parser": 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) postcss: 8.5.6 - "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5(postcss@8.5.6)": + "@csstools/postcss-media-queries-aspect-ratio-number-values@4.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/media-query-list-parser": 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/media-query-list-parser": 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) postcss: 8.5.6 - "@csstools/postcss-nested-calc@4.0.0(postcss@8.5.6)": + "@csstools/postcss-mixins@1.0.0(postcss@8.5.6)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + postcss: 8.5.6 + + "@csstools/postcss-nested-calc@5.0.0(postcss@8.5.6)": + dependencies: + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.6)": + "@csstools/postcss-normalize-display-values@5.0.1(postcss@8.5.6)": dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-oklab-function@4.0.12(postcss@8.5.6)": + "@csstools/postcss-oklab-function@5.0.1(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-progressive-custom-properties@4.2.1(postcss@8.5.6)": + "@csstools/postcss-position-area-property@2.0.0(postcss@8.5.6)": + dependencies: + postcss: 8.5.6 + + "@csstools/postcss-progressive-custom-properties@5.0.0(postcss@8.5.6)": dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-random-function@2.0.1(postcss@8.5.6)": + "@csstools/postcss-property-rule-prelude-list@2.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 postcss: 8.5.6 - "@csstools/postcss-relative-color-syntax@3.0.12(postcss@8.5.6)": + "@csstools/postcss-random-function@3.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-calc": 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 postcss: 8.5.6 - "@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.6)": + "@csstools/postcss-relative-color-syntax@4.0.1(postcss@8.5.6)": dependencies: - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 - - "@csstools/postcss-sign-functions@1.1.4(postcss@8.5.6)": - dependencies: - "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-stepped-value-functions@4.0.9(postcss@8.5.6)": + "@csstools/postcss-scope-pseudo-class@5.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 + + "@csstools/postcss-sign-functions@2.0.0(postcss@8.5.6)": + dependencies: + "@csstools/css-calc": 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 postcss: 8.5.6 - "@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.6)": + "@csstools/postcss-stepped-value-functions@5.0.0(postcss@8.5.6)": dependencies: - "@csstools/color-helpers": 5.1.0 + "@csstools/css-calc": 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + postcss: 8.5.6 + + "@csstools/postcss-syntax-descriptor-syntax-production@2.0.0(postcss@8.5.6)": + dependencies: + "@csstools/css-tokenizer": 4.0.0 + postcss: 8.5.6 + + "@csstools/postcss-system-ui-font-family@2.0.0(postcss@8.5.6)": + dependencies: + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + postcss: 8.5.6 + + "@csstools/postcss-text-decoration-shorthand@5.0.2(postcss@8.5.6)": + dependencies: + "@csstools/color-helpers": 6.0.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.6)": + "@csstools/postcss-trigonometric-functions@5.0.0(postcss@8.5.6)": dependencies: - "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-calc": 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 postcss: 8.5.6 - "@csstools/postcss-unset-value@4.0.0(postcss@8.5.6)": + "@csstools/postcss-unset-value@5.0.0(postcss@8.5.6)": dependencies: postcss: 8.5.6 - "@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.0)": + "@csstools/selector-resolve-nested@4.0.0(postcss-selector-parser@7.1.1)": dependencies: - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - "@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)": + "@csstools/selector-specificity@6.0.0(postcss-selector-parser@7.1.1)": dependencies: - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - "@csstools/utilities@2.0.0(postcss@8.5.6)": + "@csstools/utilities@3.0.0(postcss@8.5.6)": dependencies: postcss: 8.5.6 - "@dual-bundle/import-meta-resolve@4.2.1": {} - - "@emnapi/runtime@1.5.0": + "@emnapi/runtime@1.8.1": dependencies: tslib: 2.8.1 optional: true "@epic-web/invariant@1.0.0": {} - "@esbuild/aix-ppc64@0.25.10": + "@esbuild/aix-ppc64@0.27.3": optional: true - "@esbuild/android-arm64@0.25.10": + "@esbuild/android-arm64@0.27.3": optional: true - "@esbuild/android-arm@0.25.10": + "@esbuild/android-arm@0.27.3": optional: true - "@esbuild/android-x64@0.25.10": + "@esbuild/android-x64@0.27.3": optional: true - "@esbuild/darwin-arm64@0.25.10": + "@esbuild/darwin-arm64@0.27.3": optional: true - "@esbuild/darwin-x64@0.25.10": + "@esbuild/darwin-x64@0.27.3": optional: true - "@esbuild/freebsd-arm64@0.25.10": + "@esbuild/freebsd-arm64@0.27.3": optional: true - "@esbuild/freebsd-x64@0.25.10": + "@esbuild/freebsd-x64@0.27.3": optional: true - "@esbuild/linux-arm64@0.25.10": + "@esbuild/linux-arm64@0.27.3": optional: true - "@esbuild/linux-arm@0.25.10": + "@esbuild/linux-arm@0.27.3": optional: true - "@esbuild/linux-ia32@0.25.10": + "@esbuild/linux-ia32@0.27.3": optional: true - "@esbuild/linux-loong64@0.25.10": + "@esbuild/linux-loong64@0.27.3": optional: true - "@esbuild/linux-mips64el@0.25.10": + "@esbuild/linux-mips64el@0.27.3": optional: true - "@esbuild/linux-ppc64@0.25.10": + "@esbuild/linux-ppc64@0.27.3": optional: true - "@esbuild/linux-riscv64@0.25.10": + "@esbuild/linux-riscv64@0.27.3": optional: true - "@esbuild/linux-s390x@0.25.10": + "@esbuild/linux-s390x@0.27.3": optional: true - "@esbuild/linux-x64@0.25.10": + "@esbuild/linux-x64@0.27.3": optional: true - "@esbuild/netbsd-arm64@0.25.10": + "@esbuild/netbsd-arm64@0.27.3": optional: true - "@esbuild/netbsd-x64@0.25.10": + "@esbuild/netbsd-x64@0.27.3": optional: true - "@esbuild/openbsd-arm64@0.25.10": + "@esbuild/openbsd-arm64@0.27.3": optional: true - "@esbuild/openbsd-x64@0.25.10": + "@esbuild/openbsd-x64@0.27.3": optional: true - "@esbuild/openharmony-arm64@0.25.10": + "@esbuild/openharmony-arm64@0.27.3": optional: true - "@esbuild/sunos-x64@0.25.10": + "@esbuild/sunos-x64@0.27.3": optional: true - "@esbuild/win32-arm64@0.25.10": + "@esbuild/win32-arm64@0.27.3": optional: true - "@esbuild/win32-ia32@0.25.10": + "@esbuild/win32-ia32@0.27.3": optional: true - "@esbuild/win32-x64@0.25.10": + "@esbuild/win32-x64@0.27.3": optional: true - "@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@1.21.7))": + "@eslint-community/eslint-utils@4.9.1(eslint@10.0.0(jiti@1.21.7))": dependencies: - eslint: 9.37.0(jiti@1.21.7) + eslint: 10.0.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 - "@eslint-community/regexpp@4.12.1": {} + "@eslint-community/regexpp@4.12.2": {} - "@eslint/config-array@0.21.0": + "@eslint/config-array@0.23.1": dependencies: - "@eslint/object-schema": 2.1.6 + "@eslint/object-schema": 3.0.1 debug: 4.4.3 - minimatch: 3.1.2 + minimatch: 10.2.1 transitivePeerDependencies: - supports-color - "@eslint/config-helpers@0.4.0": + "@eslint/config-helpers@0.5.2": dependencies: - "@eslint/core": 0.16.0 + "@eslint/core": 1.1.0 - "@eslint/core@0.16.0": + "@eslint/core@1.1.0": dependencies: "@types/json-schema": 7.0.15 - "@eslint/eslintrc@3.3.1": + "@eslint/eslintrc@3.3.3": dependencies: ajv: 6.12.6 debug: 4.4.3 @@ -11123,28 +11279,30 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - "@eslint/js@9.37.0": {} + "@eslint/js@10.0.1(eslint@10.0.0(jiti@1.21.7))": + optionalDependencies: + eslint: 10.0.0(jiti@1.21.7) - "@eslint/object-schema@2.1.6": {} + "@eslint/object-schema@3.0.1": {} - "@eslint/plugin-kit@0.4.0": + "@eslint/plugin-kit@0.6.0": dependencies: - "@eslint/core": 0.16.0 + "@eslint/core": 1.1.0 levn: 0.4.1 - "@floating-ui/core@1.7.3": + "@floating-ui/core@1.7.4": dependencies: "@floating-ui/utils": 0.2.10 - "@floating-ui/dom@1.7.4": + "@floating-ui/dom@1.7.5": dependencies: - "@floating-ui/core": 1.7.3 + "@floating-ui/core": 1.7.4 "@floating-ui/utils": 0.2.10 "@floating-ui/utils@0.2.10": {} @@ -11181,7 +11339,7 @@ snapshots: "@github/markdown-toolbar-element@2.2.3": {} - "@github/relative-time-element@4.4.8": {} + "@github/relative-time-element@5.0.0": {} "@humanfs/core@0.19.1": {} @@ -11196,106 +11354,101 @@ snapshots: "@img/colour@1.0.0": {} - "@img/sharp-darwin-arm64@0.34.4": + "@img/sharp-darwin-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-arm64": 1.2.3 + "@img/sharp-libvips-darwin-arm64": 1.2.4 optional: true - "@img/sharp-darwin-x64@0.34.4": + "@img/sharp-darwin-x64@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-x64": 1.2.3 + "@img/sharp-libvips-darwin-x64": 1.2.4 optional: true - "@img/sharp-libvips-darwin-arm64@1.2.3": + "@img/sharp-libvips-darwin-arm64@1.2.4": optional: true - "@img/sharp-libvips-darwin-x64@1.2.3": + "@img/sharp-libvips-darwin-x64@1.2.4": optional: true - "@img/sharp-libvips-linux-arm64@1.2.3": + "@img/sharp-libvips-linux-arm64@1.2.4": optional: true - "@img/sharp-libvips-linux-arm@1.2.3": + "@img/sharp-libvips-linux-arm@1.2.4": optional: true - "@img/sharp-libvips-linux-ppc64@1.2.3": + "@img/sharp-libvips-linux-ppc64@1.2.4": optional: true - "@img/sharp-libvips-linux-s390x@1.2.3": + "@img/sharp-libvips-linux-riscv64@1.2.4": optional: true - "@img/sharp-libvips-linux-x64@1.2.3": + "@img/sharp-libvips-linux-s390x@1.2.4": optional: true - "@img/sharp-libvips-linuxmusl-arm64@1.2.3": + "@img/sharp-libvips-linux-x64@1.2.4": optional: true - "@img/sharp-libvips-linuxmusl-x64@1.2.3": + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": optional: true - "@img/sharp-linux-arm64@0.34.4": + "@img/sharp-libvips-linuxmusl-x64@1.2.4": + optional: true + + "@img/sharp-linux-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm64": 1.2.3 + "@img/sharp-libvips-linux-arm64": 1.2.4 optional: true - "@img/sharp-linux-arm@0.34.4": + "@img/sharp-linux-arm@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm": 1.2.3 + "@img/sharp-libvips-linux-arm": 1.2.4 optional: true - "@img/sharp-linux-ppc64@0.34.4": + "@img/sharp-linux-ppc64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-ppc64": 1.2.3 + "@img/sharp-libvips-linux-ppc64": 1.2.4 optional: true - "@img/sharp-linux-s390x@0.34.4": + "@img/sharp-linux-riscv64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-s390x": 1.2.3 + "@img/sharp-libvips-linux-riscv64": 1.2.4 optional: true - "@img/sharp-linux-x64@0.34.4": + "@img/sharp-linux-s390x@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-x64": 1.2.3 + "@img/sharp-libvips-linux-s390x": 1.2.4 optional: true - "@img/sharp-linuxmusl-arm64@0.34.4": + "@img/sharp-linux-x64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64": 1.2.3 + "@img/sharp-libvips-linux-x64": 1.2.4 optional: true - "@img/sharp-linuxmusl-x64@0.34.4": + "@img/sharp-linuxmusl-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64": 1.2.3 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.4 optional: true - "@img/sharp-wasm32@0.34.4": + "@img/sharp-linuxmusl-x64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.2.4 + optional: true + + "@img/sharp-wasm32@0.34.5": dependencies: - "@emnapi/runtime": 1.5.0 + "@emnapi/runtime": 1.8.1 optional: true - "@img/sharp-win32-arm64@0.34.4": + "@img/sharp-win32-arm64@0.34.5": optional: true - "@img/sharp-win32-ia32@0.34.4": + "@img/sharp-win32-ia32@0.34.5": optional: true - "@img/sharp-win32-x64@0.34.4": + "@img/sharp-win32-x64@0.34.5": optional: true - "@isaacs/balanced-match@4.0.1": {} - - "@isaacs/brace-expansion@5.0.0": - dependencies: - "@isaacs/balanced-match": 4.0.1 - - "@isaacs/cliui@8.0.2": - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + "@isaacs/cliui@9.0.0": {} "@jridgewell/gen-mapping@0.3.13": dependencies: @@ -11321,55 +11474,57 @@ snapshots: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.5 - "@keyv/bigmap@1.0.2": + "@keyv/bigmap@1.3.1(keyv@5.6.0)": dependencies: - hookified: 1.12.1 + hashery: 1.4.0 + hookified: 1.15.1 + keyv: 5.6.0 "@keyv/serialize@1.1.1": {} - "@lezer/common@1.2.3": {} + "@lezer/common@1.5.1": {} - "@lezer/css@1.3.0": + "@lezer/css@1.3.1": dependencies: - "@lezer/common": 1.2.3 - "@lezer/highlight": 1.2.1 - "@lezer/lr": 1.4.2 + "@lezer/common": 1.5.1 + "@lezer/highlight": 1.2.3 + "@lezer/lr": 1.4.8 - "@lezer/highlight@1.2.1": + "@lezer/highlight@1.2.3": dependencies: - "@lezer/common": 1.2.3 + "@lezer/common": 1.5.1 - "@lezer/html@1.3.12": + "@lezer/html@1.3.13": dependencies: - "@lezer/common": 1.2.3 - "@lezer/highlight": 1.2.1 - "@lezer/lr": 1.4.2 + "@lezer/common": 1.5.1 + "@lezer/highlight": 1.2.3 + "@lezer/lr": 1.4.8 "@lezer/javascript@1.5.4": dependencies: - "@lezer/common": 1.2.3 - "@lezer/highlight": 1.2.1 - "@lezer/lr": 1.4.2 + "@lezer/common": 1.5.1 + "@lezer/highlight": 1.2.3 + "@lezer/lr": 1.4.8 - "@lezer/lr@1.4.2": + "@lezer/lr@1.4.8": dependencies: - "@lezer/common": 1.2.3 + "@lezer/common": 1.5.1 "@lezer/xml@1.0.6": dependencies: - "@lezer/common": 1.2.3 - "@lezer/highlight": 1.2.1 - "@lezer/lr": 1.4.2 + "@lezer/common": 1.5.1 + "@lezer/highlight": 1.2.3 + "@lezer/lr": 1.4.8 - "@lit-labs/ssr-dom-shim@1.4.0": {} + "@lit-labs/ssr-dom-shim@1.5.1": {} "@lit/context@1.1.6": dependencies: - "@lit/reactive-element": 2.1.1 + "@lit/reactive-element": 2.1.2 - "@lit/reactive-element@2.1.1": + "@lit/reactive-element@2.1.2": dependencies: - "@lit-labs/ssr-dom-shim": 1.4.0 + "@lit-labs/ssr-dom-shim": 1.5.1 "@marijn/find-cluster-break@1.0.2": {} @@ -11383,85 +11538,81 @@ snapshots: "@nodelib/fs.walk@1.2.8": dependencies: "@nodelib/fs.scandir": 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 "@octokit/auth-token@6.0.0": {} - "@octokit/core@7.0.5": + "@octokit/core@7.0.6": dependencies: "@octokit/auth-token": 6.0.0 - "@octokit/graphql": 9.0.2 - "@octokit/request": 10.0.5 - "@octokit/request-error": 7.0.1 - "@octokit/types": 15.0.0 + "@octokit/graphql": 9.0.3 + "@octokit/request": 10.0.7 + "@octokit/request-error": 7.1.0 + "@octokit/types": 16.0.0 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 - "@octokit/endpoint@11.0.1": + "@octokit/endpoint@11.0.2": dependencies: - "@octokit/types": 15.0.0 + "@octokit/types": 16.0.0 universal-user-agent: 7.0.3 - "@octokit/graphql@9.0.2": + "@octokit/graphql@9.0.3": dependencies: - "@octokit/request": 10.0.5 - "@octokit/types": 15.0.0 + "@octokit/request": 10.0.7 + "@octokit/types": 16.0.0 universal-user-agent: 7.0.3 - "@octokit/openapi-types@26.0.0": {} + "@octokit/openapi-types@27.0.0": {} - "@octokit/plugin-paginate-rest@13.2.0(@octokit/core@7.0.5)": + "@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)": dependencies: - "@octokit/core": 7.0.5 - "@octokit/types": 15.0.0 + "@octokit/core": 7.0.6 + "@octokit/types": 16.0.0 - "@octokit/plugin-retry@8.0.2(@octokit/core@7.0.5)": + "@octokit/plugin-retry@8.0.3(@octokit/core@7.0.6)": dependencies: - "@octokit/core": 7.0.5 - "@octokit/request-error": 7.0.1 - "@octokit/types": 15.0.0 + "@octokit/core": 7.0.6 + "@octokit/request-error": 7.1.0 + "@octokit/types": 16.0.0 bottleneck: 2.19.5 - "@octokit/plugin-throttling@11.0.2(@octokit/core@7.0.5)": + "@octokit/plugin-throttling@11.0.3(@octokit/core@7.0.6)": dependencies: - "@octokit/core": 7.0.5 - "@octokit/types": 15.0.0 + "@octokit/core": 7.0.6 + "@octokit/types": 16.0.0 bottleneck: 2.19.5 - "@octokit/request-error@7.0.1": + "@octokit/request-error@7.1.0": dependencies: - "@octokit/types": 15.0.0 + "@octokit/types": 16.0.0 - "@octokit/request@10.0.5": + "@octokit/request@10.0.7": dependencies: - "@octokit/endpoint": 11.0.1 - "@octokit/request-error": 7.0.1 - "@octokit/types": 15.0.0 + "@octokit/endpoint": 11.0.2 + "@octokit/request-error": 7.1.0 + "@octokit/types": 16.0.0 fast-content-type-parse: 3.0.0 universal-user-agent: 7.0.3 - "@octokit/types@15.0.0": + "@octokit/types@16.0.0": dependencies: - "@octokit/openapi-types": 26.0.0 + "@octokit/openapi-types": 27.0.0 - "@patternfly/elements@4.2.0": + "@patternfly/elements@4.3.1": dependencies: "@lit/context": 1.1.6 "@patternfly/icons": 1.0.3 - "@patternfly/pfe-core": 5.0.3 - lit: 3.3.1 + "@patternfly/pfe-core": 5.0.6 + lit: 3.3.2 tslib: 2.8.1 "@patternfly/icons@1.0.3": {} - "@patternfly/pfe-core@5.0.3": + "@patternfly/pfe-core@5.0.6": dependencies: - "@floating-ui/dom": 1.7.4 "@lit/context": 1.1.6 - lit: 3.3.1 - - "@pkgjs/parseargs@0.11.0": - optional: true + lit: 3.3.2 "@pkgr/core@0.2.9": {} @@ -11471,7 +11622,7 @@ snapshots: dependencies: graceful-fs: 4.2.10 - "@pnpm/npm-conf@2.3.1": + "@pnpm/npm-conf@3.0.2": dependencies: "@pnpm/config.env-replace": 1.1.0 "@pnpm/network.ca-file": 1.0.2 @@ -11479,10 +11630,10 @@ snapshots: "@polka/url@1.0.0-next.29": {} - "@rollup/plugin-babel@5.3.1(@babel/core@7.28.4)(rollup@2.79.2)": + "@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(rollup@2.79.2)": dependencies: - "@babel/core": 7.28.4 - "@babel/helper-module-imports": 7.27.1 + "@babel/core": 7.29.0 + "@babel/helper-module-imports": 7.28.6 "@rollup/pluginutils": 3.1.0(rollup@2.79.2) rollup: 2.79.2 transitivePeerDependencies: @@ -11494,7 +11645,7 @@ snapshots: "@types/resolve": 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 optionalDependencies: rollup: 2.79.2 @@ -11507,8 +11658,8 @@ snapshots: "@rollup/plugin-terser@0.4.4(rollup@2.79.2)": dependencies: serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.44.0 + smob: 1.6.1 + terser: 5.46.0 optionalDependencies: rollup: 2.79.2 @@ -11527,93 +11678,102 @@ snapshots: optionalDependencies: rollup: 2.79.2 - "@rollup/rollup-android-arm-eabi@4.52.4": + "@rollup/rollup-android-arm-eabi@4.57.1": optional: true - "@rollup/rollup-android-arm64@4.52.4": + "@rollup/rollup-android-arm64@4.57.1": optional: true - "@rollup/rollup-darwin-arm64@4.52.4": + "@rollup/rollup-darwin-arm64@4.57.1": optional: true - "@rollup/rollup-darwin-x64@4.52.4": + "@rollup/rollup-darwin-x64@4.57.1": optional: true - "@rollup/rollup-freebsd-arm64@4.52.4": + "@rollup/rollup-freebsd-arm64@4.57.1": optional: true - "@rollup/rollup-freebsd-x64@4.52.4": + "@rollup/rollup-freebsd-x64@4.57.1": optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.52.4": + "@rollup/rollup-linux-arm-gnueabihf@4.57.1": optional: true - "@rollup/rollup-linux-arm-musleabihf@4.52.4": + "@rollup/rollup-linux-arm-musleabihf@4.57.1": optional: true - "@rollup/rollup-linux-arm64-gnu@4.52.4": + "@rollup/rollup-linux-arm64-gnu@4.57.1": optional: true - "@rollup/rollup-linux-arm64-musl@4.52.4": + "@rollup/rollup-linux-arm64-musl@4.57.1": optional: true - "@rollup/rollup-linux-loong64-gnu@4.52.4": + "@rollup/rollup-linux-loong64-gnu@4.57.1": optional: true - "@rollup/rollup-linux-ppc64-gnu@4.52.4": + "@rollup/rollup-linux-loong64-musl@4.57.1": optional: true - "@rollup/rollup-linux-riscv64-gnu@4.52.4": + "@rollup/rollup-linux-ppc64-gnu@4.57.1": optional: true - "@rollup/rollup-linux-riscv64-musl@4.52.4": + "@rollup/rollup-linux-ppc64-musl@4.57.1": optional: true - "@rollup/rollup-linux-s390x-gnu@4.52.4": + "@rollup/rollup-linux-riscv64-gnu@4.57.1": optional: true - "@rollup/rollup-linux-x64-gnu@4.52.4": + "@rollup/rollup-linux-riscv64-musl@4.57.1": optional: true - "@rollup/rollup-linux-x64-musl@4.52.4": + "@rollup/rollup-linux-s390x-gnu@4.57.1": optional: true - "@rollup/rollup-openharmony-arm64@4.52.4": + "@rollup/rollup-linux-x64-gnu@4.57.1": optional: true - "@rollup/rollup-win32-arm64-msvc@4.52.4": + "@rollup/rollup-linux-x64-musl@4.57.1": optional: true - "@rollup/rollup-win32-ia32-msvc@4.52.4": + "@rollup/rollup-openbsd-x64@4.57.1": optional: true - "@rollup/rollup-win32-x64-gnu@4.52.4": + "@rollup/rollup-openharmony-arm64@4.57.1": optional: true - "@rollup/rollup-win32-x64-msvc@4.52.4": + "@rollup/rollup-win32-arm64-msvc@4.57.1": + optional: true + + "@rollup/rollup-win32-ia32-msvc@4.57.1": + optional: true + + "@rollup/rollup-win32-x64-gnu@4.57.1": + optional: true + + "@rollup/rollup-win32-x64-msvc@4.57.1": optional: true "@sec-ant/readable-stream@0.4.1": {} - "@semantic-release/changelog@6.0.3(semantic-release@24.2.9(typescript@5.9.3))": + "@semantic-release/changelog@6.0.3(semantic-release@25.0.3(typescript@5.9.3))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 - fs-extra: 11.3.2 - lodash: 4.17.21 - semantic-release: 24.2.9(typescript@5.9.3) + fs-extra: 11.3.3 + lodash: 4.17.23 + semantic-release: 25.0.3(typescript@5.9.3) - "@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.9(typescript@5.9.3))": + "@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.3(typescript@5.9.3))": dependencies: - conventional-changelog-angular: 8.0.0 + conventional-changelog-angular: 8.1.0 conventional-changelog-writer: 8.2.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.2.0 + conventional-commits-parser: 6.2.1 debug: 4.4.3 import-from-esm: 2.0.0 - lodash-es: 4.17.21 + lodash-es: 4.17.23 micromatch: 4.0.8 - semantic-release: 24.2.9(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -11621,38 +11781,38 @@ snapshots: "@semantic-release/error@4.0.0": {} - "@semantic-release/exec@7.1.0(semantic-release@24.2.9(typescript@5.9.3))": + "@semantic-release/exec@7.1.0(semantic-release@25.0.3(typescript@5.9.3))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 3.1.0 debug: 4.4.3 - execa: 9.6.0 - lodash-es: 4.17.21 + execa: 9.6.1 + lodash-es: 4.17.23 parse-json: 8.3.0 - semantic-release: 24.2.9(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color - "@semantic-release/git@10.0.1(semantic-release@24.2.9(typescript@5.9.3))": + "@semantic-release/git@10.0.1(semantic-release@25.0.3(typescript@5.9.3))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 debug: 4.4.3 dir-glob: 3.0.1 execa: 5.1.1 - lodash: 4.17.21 + lodash: 4.17.23 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 24.2.9(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color - "@semantic-release/github@11.0.6(semantic-release@24.2.9(typescript@5.9.3))": + "@semantic-release/github@12.0.6(semantic-release@25.0.3(typescript@5.9.3))": dependencies: - "@octokit/core": 7.0.5 - "@octokit/plugin-paginate-rest": 13.2.0(@octokit/core@7.0.5) - "@octokit/plugin-retry": 8.0.2(@octokit/core@7.0.5) - "@octokit/plugin-throttling": 11.0.2(@octokit/core@7.0.5) + "@octokit/core": 7.0.6 + "@octokit/plugin-paginate-rest": 14.0.0(@octokit/core@7.0.6) + "@octokit/plugin-retry": 8.0.3(@octokit/core@7.0.6) + "@octokit/plugin-throttling": 11.0.3(@octokit/core@7.0.6) "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 debug: 4.4.3 @@ -11660,16 +11820,17 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 issue-parser: 7.0.1 - lodash-es: 4.17.21 + lodash-es: 4.17.23 mime: 4.1.0 p-filter: 4.1.0 - semantic-release: 24.2.9(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) tinyglobby: 0.2.15 + undici: 7.22.0 url-join: 5.0.0 transitivePeerDependencies: - supports-color - "@semantic-release/gitlab@13.2.9(semantic-release@24.2.9(typescript@5.9.3))": + "@semantic-release/gitlab@13.3.0(semantic-release@25.0.3(typescript@5.9.3))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 @@ -11677,53 +11838,55 @@ snapshots: dir-glob: 3.0.1 escape-string-regexp: 5.0.0 formdata-node: 6.0.3 - fs-extra: 11.3.2 + fs-extra: 11.3.3 globby: 14.1.0 - got: 14.4.9 + got: 14.6.6 hpagent: 1.2.0 - lodash-es: 4.17.21 + lodash-es: 4.17.23 parse-url: 10.0.3 - semantic-release: 24.2.9(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) url-join: 4.0.1 transitivePeerDependencies: - supports-color - "@semantic-release/npm@12.0.2(semantic-release@24.2.9(typescript@5.9.3))": + "@semantic-release/npm@13.1.4(semantic-release@25.0.3(typescript@5.9.3))": dependencies: + "@actions/core": 3.0.0 "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 - execa: 9.6.0 - fs-extra: 11.3.2 - lodash-es: 4.17.21 + env-ci: 11.2.0 + execa: 9.6.1 + fs-extra: 11.3.3 + lodash-es: 4.17.23 nerf-dart: 1.0.0 - normalize-url: 8.1.0 - npm: 10.9.4 + normalize-url: 8.1.1 + npm: 11.10.0 rc: 1.2.8 - read-pkg: 9.0.1 - registry-auth-token: 5.1.0 - semantic-release: 24.2.9(typescript@5.9.3) - semver: 7.7.2 - tempy: 3.1.0 + read-pkg: 10.1.0 + registry-auth-token: 5.1.1 + semantic-release: 25.0.3(typescript@5.9.3) + semver: 7.7.4 + tempy: 3.2.0 - "@semantic-release/release-notes-generator@14.1.0(semantic-release@24.2.9(typescript@5.9.3))": + "@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.3(typescript@5.9.3))": dependencies: - conventional-changelog-angular: 8.0.0 + conventional-changelog-angular: 8.1.0 conventional-changelog-writer: 8.2.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.2.0 + conventional-commits-parser: 6.2.1 debug: 4.4.3 get-stream: 7.0.1 import-from-esm: 2.0.0 into-stream: 7.0.0 - lodash-es: 4.17.21 + lodash-es: 4.17.23 read-package-up: 11.0.0 - semantic-release: 24.2.9(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color "@sindresorhus/is@4.6.0": {} - "@sindresorhus/is@7.1.0": {} + "@sindresorhus/is@7.2.0": {} "@sindresorhus/merge-streams@2.3.0": {} @@ -11738,23 +11901,15 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.12 - "@szmarczak/http-timer@5.0.1": - dependencies: - defer-to-connect: 2.0.1 - - "@tailwindcss/forms@0.5.10(tailwindcss@3.4.18(yaml@2.8.1))": + "@tailwindcss/forms@0.5.11(tailwindcss@3.4.19(yaml@2.8.2))": dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.18(yaml@2.8.1) + tailwindcss: 3.4.19(yaml@2.8.2) - "@tailwindcss/typography@0.5.19(tailwindcss@3.4.18(yaml@2.8.1))": + "@tailwindcss/typography@0.5.19(tailwindcss@3.4.19(yaml@2.8.2))": dependencies: postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.18(yaml@2.8.1) - - "@types/conventional-commits-parser@5.0.1": - dependencies: - "@types/node": 24.7.0 + tailwindcss: 3.4.19(yaml@2.8.2) "@types/eslint@9.6.1": dependencies: @@ -11762,6 +11917,8 @@ snapshots: "@types/json-schema": 7.0.15 optional: true + "@types/esrecurse@4.3.1": {} + "@types/estree@0.0.39": {} "@types/estree@1.0.8": {} @@ -11770,11 +11927,11 @@ snapshots: "@types/geojson@7946.0.16": {} - "@types/http-cache-semantics@4.0.4": {} + "@types/http-cache-semantics@4.2.0": {} "@types/json-schema@7.0.15": {} - "@types/leaflet@1.9.20": + "@types/leaflet@1.9.21": dependencies: "@types/geojson": 7946.0.16 @@ -11788,98 +11945,96 @@ snapshots: "@types/trusted-types@2.0.7": {} - "@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)": + "@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3))(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3)": dependencies: - "@eslint-community/regexpp": 4.12.1 - "@typescript-eslint/parser": 8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - "@typescript-eslint/scope-manager": 8.46.0 - "@typescript-eslint/type-utils": 8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - "@typescript-eslint/utils": 8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.46.0 - eslint: 9.37.0(jiti@1.21.7) - graphemer: 1.4.0 + "@eslint-community/regexpp": 4.12.2 + "@typescript-eslint/parser": 8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3) + "@typescript-eslint/scope-manager": 8.56.0 + "@typescript-eslint/type-utils": 8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3) + "@typescript-eslint/utils": 8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.56.0 + eslint: 10.0.0(jiti@1.21.7) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)": + "@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3)": dependencies: - "@typescript-eslint/scope-manager": 8.46.0 - "@typescript-eslint/types": 8.46.0 - "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.46.0 + "@typescript-eslint/scope-manager": 8.56.0 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.56.0 debug: 4.4.3 - eslint: 9.37.0(jiti@1.21.7) + eslint: 10.0.0(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/project-service@8.46.0(typescript@5.9.3)": + "@typescript-eslint/project-service@8.56.0(typescript@5.9.3)": dependencies: - "@typescript-eslint/tsconfig-utils": 8.46.0(typescript@5.9.3) - "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/tsconfig-utils": 8.56.0(typescript@5.9.3) + "@typescript-eslint/types": 8.56.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.46.0": + "@typescript-eslint/scope-manager@8.56.0": dependencies: - "@typescript-eslint/types": 8.46.0 - "@typescript-eslint/visitor-keys": 8.46.0 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/visitor-keys": 8.56.0 - "@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)": + "@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)": dependencies: typescript: 5.9.3 - "@typescript-eslint/type-utils@8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)": + "@typescript-eslint/type-utils@8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3)": dependencies: - "@typescript-eslint/types": 8.46.0 - "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) - "@typescript-eslint/utils": 8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3) debug: 4.4.3 - eslint: 9.37.0(jiti@1.21.7) - ts-api-utils: 2.1.0(typescript@5.9.3) + eslint: 10.0.0(jiti@1.21.7) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.46.0": {} + "@typescript-eslint/types@8.56.0": {} - "@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)": + "@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)": dependencies: - "@typescript-eslint/project-service": 8.46.0(typescript@5.9.3) - "@typescript-eslint/tsconfig-utils": 8.46.0(typescript@5.9.3) - "@typescript-eslint/types": 8.46.0 - "@typescript-eslint/visitor-keys": 8.46.0 + "@typescript-eslint/project-service": 8.56.0(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.56.0(typescript@5.9.3) + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/visitor-keys": 8.56.0 debug: 4.4.3 - fast-glob: 3.3.3 - is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.3) + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3)": + "@typescript-eslint/utils@8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3)": dependencies: - "@eslint-community/eslint-utils": 4.9.0(eslint@9.37.0(jiti@1.21.7)) - "@typescript-eslint/scope-manager": 8.46.0 - "@typescript-eslint/types": 8.46.0 - "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) - eslint: 9.37.0(jiti@1.21.7) + "@eslint-community/eslint-utils": 4.9.1(eslint@10.0.0(jiti@1.21.7)) + "@typescript-eslint/scope-manager": 8.56.0 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0(typescript@5.9.3) + eslint: 10.0.0(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.46.0": + "@typescript-eslint/visitor-keys@8.56.0": dependencies: - "@typescript-eslint/types": 8.46.0 - eslint-visitor-keys: 4.2.1 + "@typescript-eslint/types": 8.56.0 + eslint-visitor-keys: 5.0.0 "@vime/core@5.4.1": dependencies: @@ -11889,11 +12044,6 @@ snapshots: mitt: 3.0.1 stencil-wormhole: 3.4.1 - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -11919,7 +12069,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 fast-uri: 3.1.0 @@ -11928,13 +12078,13 @@ snapshots: all-contributors-cli@6.26.1: dependencies: - "@babel/runtime": 7.28.4 + "@babel/runtime": 7.28.6 async: 3.2.6 chalk: 4.1.2 didyoumean: 1.2.2 inquirer: 7.3.3 json-fixer: 1.6.15 - lodash: 4.17.21 + lodash: 4.17.23 node-fetch: 2.7.0 pify: 5.0.0 yargs: 15.4.1 @@ -11947,7 +12097,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.1.1: + ansi-escapes@7.3.0: dependencies: environment: 1.1.0 @@ -11987,14 +12137,12 @@ snapshots: array-ify@1.0.0: {} - array-union@2.1.0: {} - arraybuffer.prototype.slice@1.0.4: dependencies: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -12007,12 +12155,11 @@ snapshots: at-least-node@1.0.0: {} - autoprefixer@10.4.21(postcss@8.5.6): + autoprefixer@10.4.24(postcss@8.5.6): dependencies: - browserslist: 4.26.3 - caniuse-lite: 1.0.30001748 - fraction.js: 4.3.7 - normalize-range: 0.1.2 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001770 + fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -12021,45 +12168,49 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): + babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.29.0): dependencies: - "@babel/compat-data": 7.28.4 - "@babel/core": 7.28.4 - "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.4) + "@babel/compat-data": 7.29.0 + "@babel/core": 7.29.0 + "@babel/helper-define-polyfill-provider": 0.6.6(@babel/core@7.29.0) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.4): + babel-plugin-polyfill-corejs3@0.14.0(@babel/core@7.29.0): dependencies: - "@babel/core": 7.28.4 - "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.4) - core-js-compat: 3.45.1 + "@babel/core": 7.29.0 + "@babel/helper-define-polyfill-provider": 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.4): + babel-plugin-polyfill-regenerator@0.6.6(@babel/core@7.29.0): dependencies: - "@babel/core": 7.28.4 - "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.4) + "@babel/core": 7.29.0 + "@babel/helper-define-polyfill-provider": 0.6.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color balanced-match@1.0.2: {} - balanced-match@2.0.0: {} + balanced-match@3.0.1: {} + + balanced-match@4.0.2: + dependencies: + jackspeak: 4.2.3 base64-js@1.3.1: {} base64-js@1.5.1: {} - baseline-browser-mapping@2.8.12: {} + baseline-browser-mapping@2.9.19: {} before-after-hook@4.0.0: {} binary-extensions@2.3.0: {} - birpc@2.6.1: {} + birpc@2.9.0: {} bl@4.1.0: dependencies: @@ -12080,6 +12231,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.2: + dependencies: + balanced-match: 4.0.2 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -12088,13 +12243,13 @@ snapshots: dependencies: base64-js: 1.5.1 - browserslist@4.26.3: + browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.8.12 - caniuse-lite: 1.0.30001748 - electron-to-chromium: 1.5.232 - node-releases: 2.0.23 - update-browserslist-db: 1.1.3(browserslist@4.26.3) + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001770 + electron-to-chromium: 1.5.286 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) buffer-from@1.1.2: {} @@ -12107,26 +12262,27 @@ snapshots: dependencies: run-applescript: 7.1.0 + byte-counter@0.1.0: {} + cacheable-lookup@7.0.0: {} - cacheable-request@12.0.1: + cacheable-request@13.0.18: dependencies: - "@types/http-cache-semantics": 4.0.4 + "@types/http-cache-semantics": 4.2.0 get-stream: 9.0.1 http-cache-semantics: 4.2.0 - keyv: 4.5.4 + keyv: 5.6.0 mimic-response: 4.0.0 - normalize-url: 8.1.0 - responselike: 3.0.0 + normalize-url: 8.1.1 + responselike: 4.0.2 - cacheable@2.1.0: + cacheable@2.3.2: dependencies: - "@cacheable/memoize": 2.0.3 - "@cacheable/memory": 2.0.3 - "@cacheable/utils": 2.1.0 - hookified: 1.12.1 - keyv: 5.5.3 - qified: 0.5.0 + "@cacheable/memory": 2.0.7 + "@cacheable/utils": 2.3.4 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.6.0 cachedir@2.3.0: {} @@ -12155,12 +12311,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.26.3 - caniuse-lite: 1.0.30001748 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001770 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001748: {} + caniuse-lite@1.0.30001770: {} chalk@2.4.2: dependencies: @@ -12195,7 +12351,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - ci-info@4.3.1: {} + ci-info@4.4.0: {} clean-stack@2.2.0: {} @@ -12228,10 +12384,10 @@ snapshots: optionalDependencies: "@colors/colors": 1.5.0 - cli-truncate@5.1.0: + cli-truncate@5.1.1: dependencies: slice-ansi: 7.1.2 - string-width: 8.1.0 + string-width: 8.1.1 cli-width@3.0.0: {} @@ -12253,17 +12409,23 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 + clone@1.0.4: {} codemirror@6.0.2: dependencies: - "@codemirror/autocomplete": 6.19.0 - "@codemirror/commands": 6.9.0 - "@codemirror/language": 6.11.3 - "@codemirror/lint": 6.9.0 - "@codemirror/search": 6.5.11 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.5 + "@codemirror/autocomplete": 6.20.0 + "@codemirror/commands": 6.10.2 + "@codemirror/language": 6.12.1 + "@codemirror/lint": 6.9.4 + "@codemirror/search": 6.6.0 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 color-convert@1.9.3: dependencies: @@ -12283,7 +12445,7 @@ snapshots: commander@11.1.0: {} - commander@14.0.1: {} + commander@14.0.3: {} commander@2.20.3: {} @@ -12325,15 +12487,7 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 - conventional-changelog-angular@7.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-angular@8.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-conventionalcommits@7.0.2: + conventional-changelog-angular@8.1.0: dependencies: compare-func: 2.0.0 @@ -12346,20 +12500,13 @@ snapshots: conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 - semver: 7.7.2 + semver: 7.7.4 conventional-commit-types@3.0.0: {} conventional-commits-filter@5.0.0: {} - conventional-commits-parser@5.0.0: - dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 - - conventional-commits-parser@6.2.0: + conventional-commits-parser@6.2.1: dependencies: meow: 13.2.0 @@ -12367,15 +12514,15 @@ snapshots: convert-source-map@2.0.0: {} - core-js-compat@3.45.1: + core-js-compat@3.48.0: dependencies: - browserslist: 4.26.3 + browserslist: 4.28.1 - core-js@3.45.1: {} + core-js@3.48.0: {} core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@24.7.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): + cosmiconfig-typescript-loader@6.2.0(@types/node@24.7.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): dependencies: "@types/node": 24.7.0 cosmiconfig: 9.0.0(typescript@5.9.3) @@ -12386,7 +12533,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: typescript: 5.9.3 @@ -12412,25 +12559,25 @@ snapshots: dependencies: type-fest: 1.4.0 - css-blank-pseudo@7.0.1(postcss@8.5.6): + css-blank-pseudo@8.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - css-declaration-sorter@7.3.0(postcss@8.5.6): + css-declaration-sorter@7.3.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - css-functions-list@3.2.3: {} + css-functions-list@3.3.3: {} - css-has-pseudo@7.0.3(postcss@8.5.6): + css-has-pseudo@8.0.0(postcss@8.5.6): dependencies: - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) + "@csstools/selector-specificity": 6.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - css-prefers-color-scheme@10.0.0(postcss@8.5.6): + css-prefers-color-scheme@11.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -12454,28 +12601,28 @@ snapshots: css-what@6.2.2: {} - cssdb@8.4.2: {} + cssdb@8.7.1: {} cssesc@3.0.0: {} - cssnano-preset-default@7.0.9(postcss@8.5.6): + cssnano-preset-default@7.0.10(postcss@8.5.6): dependencies: - browserslist: 4.26.3 - css-declaration-sorter: 7.3.0(postcss@8.5.6) + browserslist: 4.28.1 + css-declaration-sorter: 7.3.1(postcss@8.5.6) cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-calc: 10.1.1(postcss@8.5.6) - postcss-colormin: 7.0.4(postcss@8.5.6) - postcss-convert-values: 7.0.7(postcss@8.5.6) - postcss-discard-comments: 7.0.4(postcss@8.5.6) + postcss-colormin: 7.0.5(postcss@8.5.6) + postcss-convert-values: 7.0.8(postcss@8.5.6) + postcss-discard-comments: 7.0.5(postcss@8.5.6) postcss-discard-duplicates: 7.0.2(postcss@8.5.6) postcss-discard-empty: 7.0.1(postcss@8.5.6) postcss-discard-overridden: 7.0.1(postcss@8.5.6) postcss-merge-longhand: 7.0.5(postcss@8.5.6) - postcss-merge-rules: 7.0.6(postcss@8.5.6) + postcss-merge-rules: 7.0.7(postcss@8.5.6) postcss-minify-font-values: 7.0.1(postcss@8.5.6) postcss-minify-gradients: 7.0.1(postcss@8.5.6) - postcss-minify-params: 7.0.4(postcss@8.5.6) + postcss-minify-params: 7.0.5(postcss@8.5.6) postcss-minify-selectors: 7.0.5(postcss@8.5.6) postcss-normalize-charset: 7.0.1(postcss@8.5.6) postcss-normalize-display-values: 7.0.1(postcss@8.5.6) @@ -12483,11 +12630,11 @@ snapshots: postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) postcss-normalize-string: 7.0.1(postcss@8.5.6) postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) - postcss-normalize-unicode: 7.0.4(postcss@8.5.6) + postcss-normalize-unicode: 7.0.5(postcss@8.5.6) postcss-normalize-url: 7.0.1(postcss@8.5.6) postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) postcss-ordered-values: 7.0.2(postcss@8.5.6) - postcss-reduce-initial: 7.0.4(postcss@8.5.6) + postcss-reduce-initial: 7.0.5(postcss@8.5.6) postcss-reduce-transforms: 7.0.1(postcss@8.5.6) postcss-svgo: 7.1.0(postcss@8.5.6) postcss-unique-selectors: 7.0.4(postcss@8.5.6) @@ -12496,9 +12643,9 @@ snapshots: dependencies: postcss: 8.5.6 - cssnano@7.1.1(postcss@8.5.6): + cssnano@7.1.2(postcss@8.5.6): dependencies: - cssnano-preset-default: 7.0.9(postcss@8.5.6) + cssnano-preset-default: 7.0.10(postcss@8.5.6) lilconfig: 3.1.3 postcss: 8.5.6 @@ -12515,7 +12662,7 @@ snapshots: longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - "@commitlint/load": 20.1.0(@types/node@24.7.0)(typescript@5.9.3) + "@commitlint/load": 20.4.0(@types/node@24.7.0)(typescript@5.9.3) transitivePeerDependencies: - "@types/node" - typescript @@ -12591,9 +12738,9 @@ snapshots: decamelize@1.2.0: {} - decompress-response@6.0.0: + decompress-response@10.0.0: dependencies: - mimic-response: 3.1.0 + mimic-response: 4.0.0 dedent@0.7.0: {} @@ -12612,19 +12759,17 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@5.0.0: {} + default-browser-id@5.0.1: {} - default-browser@5.2.1: + default-browser@5.5.0: dependencies: bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id: 5.0.1 defaults@1.0.4: dependencies: clone: 1.0.4 - defer-to-connect@2.0.1: {} - define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -12687,20 +12832,16 @@ snapshots: dependencies: readable-stream: 2.3.8 - eastasianwidth@0.2.0: {} - ejs@3.1.10: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.232: {} + electron-to-chromium@1.5.286: {} - emoji-regex@10.5.0: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - emojilib@2.4.0: {} entities@4.5.0: {} @@ -12720,7 +12861,7 @@ snapshots: error-stack-parser-es@1.0.5: {} - es-abstract@1.24.0: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -12775,7 +12916,7 @@ snapshots: typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 es-define-property@1.0.1: {} @@ -12798,34 +12939,34 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.25.10: + esbuild@0.27.3: optionalDependencies: - "@esbuild/aix-ppc64": 0.25.10 - "@esbuild/android-arm": 0.25.10 - "@esbuild/android-arm64": 0.25.10 - "@esbuild/android-x64": 0.25.10 - "@esbuild/darwin-arm64": 0.25.10 - "@esbuild/darwin-x64": 0.25.10 - "@esbuild/freebsd-arm64": 0.25.10 - "@esbuild/freebsd-x64": 0.25.10 - "@esbuild/linux-arm": 0.25.10 - "@esbuild/linux-arm64": 0.25.10 - "@esbuild/linux-ia32": 0.25.10 - "@esbuild/linux-loong64": 0.25.10 - "@esbuild/linux-mips64el": 0.25.10 - "@esbuild/linux-ppc64": 0.25.10 - "@esbuild/linux-riscv64": 0.25.10 - "@esbuild/linux-s390x": 0.25.10 - "@esbuild/linux-x64": 0.25.10 - "@esbuild/netbsd-arm64": 0.25.10 - "@esbuild/netbsd-x64": 0.25.10 - "@esbuild/openbsd-arm64": 0.25.10 - "@esbuild/openbsd-x64": 0.25.10 - "@esbuild/openharmony-arm64": 0.25.10 - "@esbuild/sunos-x64": 0.25.10 - "@esbuild/win32-arm64": 0.25.10 - "@esbuild/win32-ia32": 0.25.10 - "@esbuild/win32-x64": 0.25.10 + "@esbuild/aix-ppc64": 0.27.3 + "@esbuild/android-arm": 0.27.3 + "@esbuild/android-arm64": 0.27.3 + "@esbuild/android-x64": 0.27.3 + "@esbuild/darwin-arm64": 0.27.3 + "@esbuild/darwin-x64": 0.27.3 + "@esbuild/freebsd-arm64": 0.27.3 + "@esbuild/freebsd-x64": 0.27.3 + "@esbuild/linux-arm": 0.27.3 + "@esbuild/linux-arm64": 0.27.3 + "@esbuild/linux-ia32": 0.27.3 + "@esbuild/linux-loong64": 0.27.3 + "@esbuild/linux-mips64el": 0.27.3 + "@esbuild/linux-ppc64": 0.27.3 + "@esbuild/linux-riscv64": 0.27.3 + "@esbuild/linux-s390x": 0.27.3 + "@esbuild/linux-x64": 0.27.3 + "@esbuild/netbsd-arm64": 0.27.3 + "@esbuild/netbsd-x64": 0.27.3 + "@esbuild/openbsd-arm64": 0.27.3 + "@esbuild/openbsd-x64": 0.27.3 + "@esbuild/openharmony-arm64": 0.27.3 + "@esbuild/sunos-x64": 0.27.3 + "@esbuild/win32-arm64": 0.27.3 + "@esbuild/win32-ia32": 0.27.3 + "@esbuild/win32-x64": 0.27.3 escalade@3.2.0: {} @@ -12835,22 +12976,24 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@1.21.7)): + eslint-config-prettier@10.1.8(eslint@10.0.0(jiti@1.21.7)): dependencies: - eslint: 9.37.0(jiti@1.21.7) + eslint: 10.0.0(jiti@1.21.7) - eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@1.21.7)))(eslint@9.37.0(jiti@1.21.7))(prettier@3.6.2): + eslint-plugin-prettier@5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@10.0.0(jiti@1.21.7)))(eslint@10.0.0(jiti@1.21.7))(prettier@3.8.1): dependencies: - eslint: 9.37.0(jiti@1.21.7) - prettier: 3.6.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.11 + eslint: 10.0.0(jiti@1.21.7) + prettier: 3.8.1 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 optionalDependencies: "@types/eslint": 9.6.1 - eslint-config-prettier: 10.1.8(eslint@9.37.0(jiti@1.21.7)) + eslint-config-prettier: 10.1.8(eslint@10.0.0(jiti@1.21.7)) - eslint-scope@8.4.0: + eslint-scope@9.1.0: dependencies: + "@types/esrecurse": 4.3.1 + "@types/estree": 1.0.8 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -12858,30 +13001,28 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.37.0(jiti@1.21.7): + eslint-visitor-keys@5.0.0: {} + + eslint@10.0.0(jiti@1.21.7): dependencies: - "@eslint-community/eslint-utils": 4.9.0(eslint@9.37.0(jiti@1.21.7)) - "@eslint-community/regexpp": 4.12.1 - "@eslint/config-array": 0.21.0 - "@eslint/config-helpers": 0.4.0 - "@eslint/core": 0.16.0 - "@eslint/eslintrc": 3.3.1 - "@eslint/js": 9.37.0 - "@eslint/plugin-kit": 0.4.0 + "@eslint-community/eslint-utils": 4.9.1(eslint@10.0.0(jiti@1.21.7)) + "@eslint-community/regexpp": 4.12.2 + "@eslint/config-array": 0.23.1 + "@eslint/config-helpers": 0.5.2 + "@eslint/core": 1.1.0 + "@eslint/plugin-kit": 0.6.0 "@humanfs/node": 0.16.7 "@humanwhocodes/module-importer": 1.0.1 "@humanwhocodes/retry": 0.4.3 "@types/estree": 1.0.8 - "@types/json-schema": 7.0.15 ajv: 6.12.6 - chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 + eslint-scope: 9.1.0 + eslint-visitor-keys: 5.0.0 + espree: 11.1.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -12891,8 +13032,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 10.2.1 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -12906,7 +13046,13 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 - esquery@1.6.0: + espree@11.1.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 5.0.0 + + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -12922,7 +13068,7 @@ snapshots: esutils@2.0.3: {} - eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} execa@5.1.1: dependencies: @@ -12948,7 +13094,7 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.6.0: + execa@9.6.1: dependencies: "@sindresorhus/merge-streams": 4.0.0 cross-spawn: 7.0.6 @@ -12995,7 +13141,7 @@ snapshots: fastest-levenshtein@1.0.16: {} - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -13015,9 +13161,9 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-entry-cache@10.1.4: + file-entry-cache@11.1.2: dependencies: - flat-cache: 6.1.17 + flat-cache: 6.1.20 file-entry-cache@8.0.0: dependencies: @@ -13054,16 +13200,10 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@7.0.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - unicorn-magic: 0.1.0 - find-versions@6.0.0: dependencies: semver-regex: 4.0.5 - super-regex: 1.0.0 + super-regex: 1.1.0 findup-sync@4.0.0: dependencies: @@ -13077,11 +13217,11 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 - flat-cache@6.1.17: + flat-cache@6.1.20: dependencies: - cacheable: 2.1.0 + cacheable: 2.3.2 flatted: 3.3.3 - hookified: 1.12.1 + hookified: 1.15.1 flatpickr@4.6.13: {} @@ -13100,14 +13240,14 @@ snapshots: formdata-node@6.0.3: {} - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} from2@2.3.0: dependencies: inherits: 2.0.4 readable-stream: 2.3.8 - fs-extra@11.3.2: + fs-extra@11.3.3: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.0 @@ -13212,23 +13352,20 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.4.5: + glob@11.1.0: dependencies: foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 + jackspeak: 4.2.3 + minimatch: 10.2.1 minipass: 7.1.2 package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 + path-scurry: 2.0.1 - glob@11.0.3: + glob@13.0.5: dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.1 - minimatch: 10.0.3 + minimatch: 10.2.1 minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 + path-scurry: 2.0.1 glob@7.2.3: dependencies: @@ -13269,22 +13406,13 @@ snapshots: globals@14.0.0: {} - globals@16.4.0: {} + globals@17.3.0: {} globalthis@1.0.4: dependencies: define-properties: 1.2.1 gopd: 1.2.0 - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - globby@14.1.0: dependencies: "@sindresorhus/merge-streams": 2.3.0 @@ -13294,30 +13422,38 @@ snapshots: slash: 5.1.0 unicorn-magic: 0.3.0 + globby@16.1.0: + dependencies: + "@sindresorhus/merge-streams": 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + globjoin@0.1.4: {} gopd@1.2.0: {} - got@14.4.9: + got@14.6.6: dependencies: - "@sindresorhus/is": 7.1.0 - "@szmarczak/http-timer": 5.0.1 + "@sindresorhus/is": 7.2.0 + byte-counter: 0.1.0 cacheable-lookup: 7.0.0 - cacheable-request: 12.0.1 - decompress-response: 6.0.0 + cacheable-request: 13.0.18 + decompress-response: 10.0.0 form-data-encoder: 4.1.0 http2-wrapper: 2.2.1 + keyv: 5.6.0 lowercase-keys: 3.0.0 p-cancelable: 4.0.1 - responselike: 3.0.0 + responselike: 4.0.2 type-fest: 4.41.0 graceful-fs@4.2.10: {} graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -13333,6 +13469,8 @@ snapshots: has-flag@4.0.0: {} + has-flag@5.0.1: {} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -13347,6 +13485,10 @@ snapshots: dependencies: has-symbols: 1.1.0 + hashery@1.4.0: + dependencies: + hookified: 1.15.1 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -13359,21 +13501,21 @@ snapshots: hook-std@4.0.0: {} - hookified@1.12.1: {} + hookified@1.15.1: {} hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 - hosted-git-info@8.1.0: + hosted-git-info@9.0.2: dependencies: - lru-cache: 10.4.3 + lru-cache: 11.2.6 hpagent@1.2.0: {} - html-tags@3.3.1: {} + html-tags@5.1.0: {} - htmlfy@1.0.0: {} + htmlfy@1.0.1: {} http-cache-semantics@4.2.0: {} @@ -13408,7 +13550,7 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.6.3: + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -13461,7 +13603,7 @@ snapshots: cli-width: 3.0.0 external-editor: 3.1.0 figures: 3.2.0 - lodash: 4.17.21 + lodash: 4.17.23 mute-stream: 0.0.8 run-async: 2.4.1 rxjs: 6.6.7 @@ -13538,7 +13680,7 @@ snapshots: is-ci@4.1.0: dependencies: - ci-info: 4.3.1 + ci-info: 4.4.0 is-core-module@2.16.1: dependencies: @@ -13604,6 +13746,8 @@ snapshots: is-obj@2.0.0: {} + is-path-inside@4.0.0: {} + is-plain-obj@4.1.0: {} is-plain-object@5.0.0: {} @@ -13640,13 +13784,9 @@ snapshots: has-symbols: 1.1.0 safe-regex-test: 1.1.0 - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 is-unicode-supported@0.1.0: {} @@ -13667,7 +13807,7 @@ snapshots: is-windows@1.0.2: {} - is-wsl@3.1.0: + is-wsl@3.1.1: dependencies: is-inside-container: 1.0.0 @@ -13685,15 +13825,9 @@ snapshots: lodash.isstring: 4.0.1 lodash.uniqby: 4.7.0 - jackspeak@3.4.3: + jackspeak@4.2.3: dependencies: - "@isaacs/cliui": 8.0.2 - optionalDependencies: - "@pkgjs/parseargs": 0.11.0 - - jackspeak@4.1.1: - dependencies: - "@isaacs/cliui": 8.0.2 + "@isaacs/cliui": 9.0.0 jake@10.9.4: dependencies: @@ -13711,7 +13845,7 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -13721,7 +13855,7 @@ snapshots: json-fixer@1.6.15: dependencies: - "@babel/runtime": 7.28.4 + "@babel/runtime": 7.28.6 chalk: 4.1.2 pegjs: 0.10.0 @@ -13745,15 +13879,13 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonparse@1.3.1: {} - jsonpointer@5.0.1: {} keyv@4.5.4: dependencies: json-buffer: 3.0.1 - keyv@5.5.3: + keyv@5.6.0: dependencies: "@keyv/serialize": 1.1.1 @@ -13778,40 +13910,40 @@ snapshots: lines-and-columns@1.2.4: {} - lint-staged@16.2.3: + lint-staged@16.2.7: dependencies: - commander: 14.0.1 - listr2: 9.0.4 + commander: 14.0.3 + listr2: 9.0.5 micromatch: 4.0.8 - nano-spawn: 1.0.3 + nano-spawn: 2.0.0 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.8.1 + yaml: 2.8.2 - listr2@9.0.4: + listr2@9.0.5: dependencies: - cli-truncate: 5.1.0 + cli-truncate: 5.1.1 colorette: 2.0.20 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 log-update: 6.1.0 rfdc: 1.4.1 wrap-ansi: 9.0.2 - lit-element@4.2.1: + lit-element@4.2.2: dependencies: - "@lit-labs/ssr-dom-shim": 1.4.0 - "@lit/reactive-element": 2.1.1 - lit-html: 3.3.1 + "@lit-labs/ssr-dom-shim": 1.5.1 + "@lit/reactive-element": 2.1.2 + lit-html: 3.3.2 - lit-html@3.3.1: + lit-html@3.3.2: dependencies: "@types/trusted-types": 2.0.7 - lit@3.3.1: + lit@3.3.2: dependencies: - "@lit/reactive-element": 2.1.1 - lit-element: 4.2.1 - lit-html: 3.3.1 + "@lit/reactive-element": 2.1.2 + lit-element: 4.2.2 + lit-html: 3.3.2 load-json-file@4.0.0: dependencies: @@ -13833,11 +13965,7 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - - lodash-es@4.17.21: {} + lodash-es@4.17.23: {} lodash.camelcase@4.3.0: {} @@ -13857,8 +13985,6 @@ snapshots: lodash.memoize@4.1.2: {} - lodash.merge@4.6.2: {} - lodash.mergewith@4.6.2: {} lodash.snakecase@4.1.1: {} @@ -13877,6 +14003,8 @@ snapshots: lodash@4.17.21: {} + lodash@4.17.23: {} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 @@ -13884,7 +14012,7 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.1.1 + ansi-escapes: 7.3.0 cli-cursor: 5.0.0 slice-ansi: 7.1.2 strip-ansi: 7.1.2 @@ -13896,7 +14024,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.2: {} + lru-cache@11.2.6: {} lru-cache@5.1.1: dependencies: @@ -13906,9 +14034,15 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 + make-asynchronous@1.0.1: + dependencies: + p-event: 6.0.1 + type-fest: 4.41.0 + web-worker: 1.2.0 + marked-terminal@7.3.0(marked@15.0.12): dependencies: - ansi-escapes: 7.1.1 + ansi-escapes: 7.3.0 ansi-regex: 6.2.2 chalk: 5.6.2 cli-highlight: 2.1.11 @@ -13919,11 +14053,11 @@ snapshots: marked@15.0.12: {} - marked@16.4.0: {} + marked@17.0.2: {} math-intrinsics@1.1.0: {} - mathml-tag-names@2.1.3: {} + mathml-tag-names@4.0.0: {} mdn-data@2.0.28: {} @@ -13933,6 +14067,8 @@ snapshots: meow@13.2.0: {} + meow@14.0.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -13952,15 +14088,13 @@ snapshots: mimic-function@5.0.1: {} - mimic-response@3.1.0: {} - mimic-response@4.0.0: {} mini-svg-data-uri@1.4.4: {} - minimatch@10.0.3: + minimatch@10.2.1: dependencies: - "@isaacs/brace-expansion": 5.0.0 + brace-expansion: 5.0.2 minimatch@3.1.2: dependencies: @@ -13994,7 +14128,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nano-spawn@1.0.3: {} + nano-spawn@2.0.0: {} nanoid@3.3.11: {} @@ -14015,19 +14149,23 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-releases@2.0.23: {} + node-releases@2.0.27: {} normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.2 + semver: 7.7.4 + validate-npm-package-license: 3.0.4 + + normalize-package-data@8.0.0: + dependencies: + hosted-git-info: 9.0.2 + semver: 7.7.4 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - - normalize-url@8.1.0: {} + normalize-url@8.1.1: {} npm-run-path@4.0.1: dependencies: @@ -14042,7 +14180,7 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 - npm@10.9.4: {} + npm@11.10.0: {} nth-check@2.1.1: dependencies: @@ -14090,7 +14228,7 @@ snapshots: open@10.2.0: dependencies: - default-browser: 5.2.1 + default-browser: 5.5.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 wsl-utils: 0.1.0 @@ -14128,9 +14266,13 @@ snapshots: p-each-series@3.0.0: {} + p-event@6.0.1: + dependencies: + p-timeout: 6.1.4 + p-filter@4.1.0: dependencies: - p-map: 7.0.3 + p-map: 7.0.4 p-is-promise@3.0.0: {} @@ -14146,10 +14288,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: - dependencies: - yocto-queue: 1.2.1 - p-locate@2.0.0: dependencies: p-limit: 1.3.0 @@ -14162,16 +14300,14 @@ snapshots: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - p-map@7.0.3: {} + p-map@7.0.4: {} p-reduce@2.1.0: {} p-reduce@3.0.0: {} + p-timeout@6.1.4: {} + p-try@1.0.0: {} p-try@2.2.0: {} @@ -14191,14 +14327,14 @@ snapshots: parse-json@5.2.0: dependencies: - "@babel/code-frame": 7.27.1 + "@babel/code-frame": 7.29.0 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-json@8.3.0: dependencies: - "@babel/code-frame": 7.27.1 + "@babel/code-frame": 7.29.0 index-to-position: 1.2.0 type-fest: 4.41.0 @@ -14226,8 +14362,6 @@ snapshots: path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -14236,14 +14370,9 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: + path-scurry@2.0.1: dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-scurry@2.0.0: - dependencies: - lru-cache: 11.2.2 + lru-cache: 11.2.6 minipass: 7.1.2 path-type@4.0.0: {} @@ -14252,16 +14381,16 @@ snapshots: pathe@2.0.3: {} - pdfmake@0.2.20: + pdfmake@0.2.23: dependencies: "@foliojs-fork/linebreak": 1.1.2 "@foliojs-fork/pdfkit": 0.15.3 - iconv-lite: 0.6.3 - xmldoc: 2.0.2 + iconv-lite: 0.7.2 + xmldoc: 2.0.3 pegjs@0.10.0: {} - perfect-debounce@2.0.0: {} + perfect-debounce@2.1.0: {} performance-now@2.1.0: {} @@ -14294,15 +14423,15 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-attribute-case-insensitive@7.0.1(postcss@8.5.6): + postcss-attribute-case-insensitive@8.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-calc@10.1.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 postcss-clamp@4.1.0(postcss@8.5.6): @@ -14310,75 +14439,75 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.12(postcss@8.5.6): + postcss-color-functional-notation@8.0.1(postcss@8.5.6): dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - postcss-color-hex-alpha@10.0.0(postcss@8.5.6): + postcss-color-hex-alpha@11.0.0(postcss@8.5.6): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@10.0.0(postcss@8.5.6): + postcss-color-rebeccapurple@11.0.0(postcss@8.5.6): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.4(postcss@8.5.6): + postcss-colormin@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.26.3 + browserslist: 4.28.1 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.7(postcss@8.5.6): + postcss-convert-values@7.0.8(postcss@8.5.6): dependencies: - browserslist: 4.26.3 + browserslist: 4.28.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.6(postcss@8.5.6): + postcss-custom-media@12.0.0(postcss@8.5.6): dependencies: - "@csstools/cascade-layer-name-parser": 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/media-query-list-parser": 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/cascade-layer-name-parser": 3.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/media-query-list-parser": 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) postcss: 8.5.6 - postcss-custom-properties@14.0.6(postcss@8.5.6): + postcss-custom-properties@15.0.0(postcss@8.5.6): dependencies: - "@csstools/cascade-layer-name-parser": 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/cascade-layer-name-parser": 3.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.5(postcss@8.5.6): + postcss-custom-selectors@9.0.0(postcss@8.5.6): dependencies: - "@csstools/cascade-layer-name-parser": 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 + "@csstools/cascade-layer-name-parser": 3.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - postcss-dir-pseudo-class@9.0.1(postcss@8.5.6): + postcss-dir-pseudo-class@10.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - postcss-discard-comments@7.0.4(postcss@8.5.6): + postcss-discard-comments@7.0.5(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-discard-duplicates@7.0.2(postcss@8.5.6): dependencies: @@ -14392,34 +14521,34 @@ snapshots: dependencies: postcss: 8.5.6 - postcss-double-position-gradients@6.0.4(postcss@8.5.6): + postcss-double-position-gradients@7.0.0(postcss@8.5.6): dependencies: - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-focus-visible@10.0.1(postcss@8.5.6): + postcss-focus-visible@11.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - postcss-focus-within@9.0.1(postcss@8.5.6): + postcss-focus-within@10.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-font-variant@5.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-gap-properties@6.0.0(postcss@8.5.6): + postcss-gap-properties@7.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-image-set-function@7.0.0(postcss@8.5.6): + postcss-image-set-function@8.0.0(postcss@8.5.6): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -14428,38 +14557,38 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 postcss-import@16.1.1(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 postcss-js@4.1.0(postcss@8.5.6): dependencies: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-lab-function@7.0.12(postcss@8.5.6): + postcss-lab-function@8.0.1(postcss@8.5.6): dependencies: - "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/utilities": 2.0.0(postcss@8.5.6) + "@csstools/css-color-parser": 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/utilities": 3.0.0(postcss@8.5.6) postcss: 8.5.6 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.1): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.6 - yaml: 2.8.1 + yaml: 2.8.2 - postcss-logical@8.1.0(postcss@8.5.6): + postcss-logical@9.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -14468,15 +14597,15 @@ snapshots: dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - stylehacks: 7.0.6(postcss@8.5.6) + stylehacks: 7.0.7(postcss@8.5.6) - postcss-merge-rules@7.0.6(postcss@8.5.6): + postcss-merge-rules@7.0.7(postcss@8.5.6): dependencies: - browserslist: 4.26.3 + browserslist: 4.28.1 caniuse-api: 3.0.0 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-minify-font-values@7.0.1(postcss@8.5.6): dependencies: @@ -14490,9 +14619,9 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.4(postcss@8.5.6): + postcss-minify-params@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.26.3 + browserslist: 4.28.1 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -14501,19 +14630,19 @@ snapshots: dependencies: cssesc: 3.0.0 postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-nested@6.2.0(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-selector-parser: 6.1.2 - postcss-nesting@13.0.2(postcss@8.5.6): + postcss-nesting@14.0.0(postcss@8.5.6): dependencies: - "@csstools/selector-resolve-nested": 3.1.0(postcss-selector-parser@7.1.0) - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) + "@csstools/selector-resolve-nested": 4.0.0(postcss-selector-parser@7.1.1) + "@csstools/selector-specificity": 6.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-normalize-charset@7.0.1(postcss@8.5.6): dependencies: @@ -14544,9 +14673,9 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.4(postcss@8.5.6): + postcss-normalize-unicode@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.26.3 + browserslist: 4.28.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -14570,7 +14699,7 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-overflow-shorthand@6.0.0(postcss@8.5.6): + postcss-overflow-shorthand@7.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -14579,90 +14708,95 @@ snapshots: dependencies: postcss: 8.5.6 - postcss-place@10.0.0(postcss@8.5.6): + postcss-place@11.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-preset-env@10.4.0(postcss@8.5.6): + postcss-preset-env@11.1.3(postcss@8.5.6): dependencies: - "@csstools/postcss-alpha-function": 1.0.1(postcss@8.5.6) - "@csstools/postcss-cascade-layers": 5.0.2(postcss@8.5.6) - "@csstools/postcss-color-function": 4.0.12(postcss@8.5.6) - "@csstools/postcss-color-function-display-p3-linear": 1.0.1(postcss@8.5.6) - "@csstools/postcss-color-mix-function": 3.0.12(postcss@8.5.6) - "@csstools/postcss-color-mix-variadic-function-arguments": 1.0.2(postcss@8.5.6) - "@csstools/postcss-content-alt-text": 2.0.8(postcss@8.5.6) - "@csstools/postcss-contrast-color-function": 2.0.12(postcss@8.5.6) - "@csstools/postcss-exponential-functions": 2.0.9(postcss@8.5.6) - "@csstools/postcss-font-format-keywords": 4.0.0(postcss@8.5.6) - "@csstools/postcss-gamut-mapping": 2.0.11(postcss@8.5.6) - "@csstools/postcss-gradients-interpolation-method": 5.0.12(postcss@8.5.6) - "@csstools/postcss-hwb-function": 4.0.12(postcss@8.5.6) - "@csstools/postcss-ic-unit": 4.0.4(postcss@8.5.6) - "@csstools/postcss-initial": 2.0.1(postcss@8.5.6) - "@csstools/postcss-is-pseudo-class": 5.0.3(postcss@8.5.6) - "@csstools/postcss-light-dark-function": 2.0.11(postcss@8.5.6) - "@csstools/postcss-logical-float-and-clear": 3.0.0(postcss@8.5.6) - "@csstools/postcss-logical-overflow": 2.0.0(postcss@8.5.6) - "@csstools/postcss-logical-overscroll-behavior": 2.0.0(postcss@8.5.6) - "@csstools/postcss-logical-resize": 3.0.0(postcss@8.5.6) - "@csstools/postcss-logical-viewport-units": 3.0.4(postcss@8.5.6) - "@csstools/postcss-media-minmax": 2.0.9(postcss@8.5.6) - "@csstools/postcss-media-queries-aspect-ratio-number-values": 3.0.5(postcss@8.5.6) - "@csstools/postcss-nested-calc": 4.0.0(postcss@8.5.6) - "@csstools/postcss-normalize-display-values": 4.0.0(postcss@8.5.6) - "@csstools/postcss-oklab-function": 4.0.12(postcss@8.5.6) - "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) - "@csstools/postcss-random-function": 2.0.1(postcss@8.5.6) - "@csstools/postcss-relative-color-syntax": 3.0.12(postcss@8.5.6) - "@csstools/postcss-scope-pseudo-class": 4.0.1(postcss@8.5.6) - "@csstools/postcss-sign-functions": 1.1.4(postcss@8.5.6) - "@csstools/postcss-stepped-value-functions": 4.0.9(postcss@8.5.6) - "@csstools/postcss-text-decoration-shorthand": 4.0.3(postcss@8.5.6) - "@csstools/postcss-trigonometric-functions": 4.0.9(postcss@8.5.6) - "@csstools/postcss-unset-value": 4.0.0(postcss@8.5.6) - autoprefixer: 10.4.21(postcss@8.5.6) - browserslist: 4.26.3 - css-blank-pseudo: 7.0.1(postcss@8.5.6) - css-has-pseudo: 7.0.3(postcss@8.5.6) - css-prefers-color-scheme: 10.0.0(postcss@8.5.6) - cssdb: 8.4.2 + "@csstools/postcss-alpha-function": 2.0.2(postcss@8.5.6) + "@csstools/postcss-cascade-layers": 6.0.0(postcss@8.5.6) + "@csstools/postcss-color-function": 5.0.1(postcss@8.5.6) + "@csstools/postcss-color-function-display-p3-linear": 2.0.1(postcss@8.5.6) + "@csstools/postcss-color-mix-function": 4.0.1(postcss@8.5.6) + "@csstools/postcss-color-mix-variadic-function-arguments": 2.0.1(postcss@8.5.6) + "@csstools/postcss-content-alt-text": 3.0.0(postcss@8.5.6) + "@csstools/postcss-contrast-color-function": 3.0.1(postcss@8.5.6) + "@csstools/postcss-exponential-functions": 3.0.0(postcss@8.5.6) + "@csstools/postcss-font-format-keywords": 5.0.0(postcss@8.5.6) + "@csstools/postcss-gamut-mapping": 3.0.1(postcss@8.5.6) + "@csstools/postcss-gradients-interpolation-method": 6.0.1(postcss@8.5.6) + "@csstools/postcss-hwb-function": 5.0.1(postcss@8.5.6) + "@csstools/postcss-ic-unit": 5.0.0(postcss@8.5.6) + "@csstools/postcss-initial": 3.0.0(postcss@8.5.6) + "@csstools/postcss-is-pseudo-class": 6.0.0(postcss@8.5.6) + "@csstools/postcss-light-dark-function": 3.0.0(postcss@8.5.6) + "@csstools/postcss-logical-float-and-clear": 4.0.0(postcss@8.5.6) + "@csstools/postcss-logical-overflow": 3.0.0(postcss@8.5.6) + "@csstools/postcss-logical-overscroll-behavior": 3.0.0(postcss@8.5.6) + "@csstools/postcss-logical-resize": 4.0.0(postcss@8.5.6) + "@csstools/postcss-logical-viewport-units": 4.0.0(postcss@8.5.6) + "@csstools/postcss-media-minmax": 3.0.0(postcss@8.5.6) + "@csstools/postcss-media-queries-aspect-ratio-number-values": 4.0.0(postcss@8.5.6) + "@csstools/postcss-mixins": 1.0.0(postcss@8.5.6) + "@csstools/postcss-nested-calc": 5.0.0(postcss@8.5.6) + "@csstools/postcss-normalize-display-values": 5.0.1(postcss@8.5.6) + "@csstools/postcss-oklab-function": 5.0.1(postcss@8.5.6) + "@csstools/postcss-position-area-property": 2.0.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 5.0.0(postcss@8.5.6) + "@csstools/postcss-property-rule-prelude-list": 2.0.0(postcss@8.5.6) + "@csstools/postcss-random-function": 3.0.0(postcss@8.5.6) + "@csstools/postcss-relative-color-syntax": 4.0.1(postcss@8.5.6) + "@csstools/postcss-scope-pseudo-class": 5.0.0(postcss@8.5.6) + "@csstools/postcss-sign-functions": 2.0.0(postcss@8.5.6) + "@csstools/postcss-stepped-value-functions": 5.0.0(postcss@8.5.6) + "@csstools/postcss-syntax-descriptor-syntax-production": 2.0.0(postcss@8.5.6) + "@csstools/postcss-system-ui-font-family": 2.0.0(postcss@8.5.6) + "@csstools/postcss-text-decoration-shorthand": 5.0.2(postcss@8.5.6) + "@csstools/postcss-trigonometric-functions": 5.0.0(postcss@8.5.6) + "@csstools/postcss-unset-value": 5.0.0(postcss@8.5.6) + autoprefixer: 10.4.24(postcss@8.5.6) + browserslist: 4.28.1 + css-blank-pseudo: 8.0.1(postcss@8.5.6) + css-has-pseudo: 8.0.0(postcss@8.5.6) + css-prefers-color-scheme: 11.0.0(postcss@8.5.6) + cssdb: 8.7.1 postcss: 8.5.6 - postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.6) + postcss-attribute-case-insensitive: 8.0.0(postcss@8.5.6) postcss-clamp: 4.1.0(postcss@8.5.6) - postcss-color-functional-notation: 7.0.12(postcss@8.5.6) - postcss-color-hex-alpha: 10.0.0(postcss@8.5.6) - postcss-color-rebeccapurple: 10.0.0(postcss@8.5.6) - postcss-custom-media: 11.0.6(postcss@8.5.6) - postcss-custom-properties: 14.0.6(postcss@8.5.6) - postcss-custom-selectors: 8.0.5(postcss@8.5.6) - postcss-dir-pseudo-class: 9.0.1(postcss@8.5.6) - postcss-double-position-gradients: 6.0.4(postcss@8.5.6) - postcss-focus-visible: 10.0.1(postcss@8.5.6) - postcss-focus-within: 9.0.1(postcss@8.5.6) + postcss-color-functional-notation: 8.0.1(postcss@8.5.6) + postcss-color-hex-alpha: 11.0.0(postcss@8.5.6) + postcss-color-rebeccapurple: 11.0.0(postcss@8.5.6) + postcss-custom-media: 12.0.0(postcss@8.5.6) + postcss-custom-properties: 15.0.0(postcss@8.5.6) + postcss-custom-selectors: 9.0.0(postcss@8.5.6) + postcss-dir-pseudo-class: 10.0.0(postcss@8.5.6) + postcss-double-position-gradients: 7.0.0(postcss@8.5.6) + postcss-focus-visible: 11.0.0(postcss@8.5.6) + postcss-focus-within: 10.0.0(postcss@8.5.6) postcss-font-variant: 5.0.0(postcss@8.5.6) - postcss-gap-properties: 6.0.0(postcss@8.5.6) - postcss-image-set-function: 7.0.0(postcss@8.5.6) - postcss-lab-function: 7.0.12(postcss@8.5.6) - postcss-logical: 8.1.0(postcss@8.5.6) - postcss-nesting: 13.0.2(postcss@8.5.6) + postcss-gap-properties: 7.0.0(postcss@8.5.6) + postcss-image-set-function: 8.0.0(postcss@8.5.6) + postcss-lab-function: 8.0.1(postcss@8.5.6) + postcss-logical: 9.0.0(postcss@8.5.6) + postcss-nesting: 14.0.0(postcss@8.5.6) postcss-opacity-percentage: 3.0.0(postcss@8.5.6) - postcss-overflow-shorthand: 6.0.0(postcss@8.5.6) + postcss-overflow-shorthand: 7.0.0(postcss@8.5.6) postcss-page-break: 3.0.4(postcss@8.5.6) - postcss-place: 10.0.0(postcss@8.5.6) - postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.6) + postcss-place: 11.0.0(postcss@8.5.6) + postcss-pseudo-class-any-link: 11.0.0(postcss@8.5.6) postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.6) - postcss-selector-not: 8.0.1(postcss@8.5.6) + postcss-selector-not: 9.0.0(postcss@8.5.6) - postcss-pseudo-class-any-link@10.0.1(postcss@8.5.6): + postcss-pseudo-class-any-link@11.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - postcss-reduce-initial@7.0.4(postcss@8.5.6): + postcss-reduce-initial@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.26.3 + browserslist: 4.28.1 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -14681,16 +14815,14 @@ snapshots: postcss: 8.5.6 thenby: 1.3.4 - postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-not@8.0.1(postcss@8.5.6): + postcss-selector-not@9.0.0(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-selector-parser@6.0.10: dependencies: @@ -14702,7 +14834,7 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -14716,7 +14848,7 @@ snapshots: postcss-unique-selectors@7.0.4(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser@4.2.0: {} @@ -14728,19 +14860,19 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 - prettier-plugin-organize-imports@4.3.0(prettier@3.6.2)(typescript@5.9.3): + prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3): dependencies: - prettier: 3.6.2 + prettier: 3.8.1 typescript: 5.9.3 prettier@2.8.8: optional: true - prettier@3.6.2: {} + prettier@3.8.1: {} pretty-bytes@5.6.0: {} @@ -14758,9 +14890,9 @@ snapshots: punycode@2.3.1: {} - qified@0.5.0: + qified@0.6.0: dependencies: - hookified: 1.12.1 + hookified: 1.15.1 queue-microtask@1.2.3: {} @@ -14791,6 +14923,20 @@ snapshots: read-pkg: 9.0.1 type-fest: 4.41.0 + read-package-up@12.0.0: + dependencies: + find-up-simple: 1.0.1 + read-pkg: 10.1.0 + type-fest: 5.4.4 + + read-pkg@10.1.0: + dependencies: + "@types/normalize-package-data": 2.4.4 + normalize-package-data: 8.0.0 + parse-json: 8.3.0 + type-fest: 5.4.4 + unicorn-magic: 0.4.0 + read-pkg@9.0.1: dependencies: "@types/normalize-package-data": 2.4.4 @@ -14823,7 +14969,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -14854,9 +15000,9 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 - registry-auth-token@5.1.0: + registry-auth-token@5.1.1: dependencies: - "@pnpm/npm-conf": 2.3.1 + "@pnpm/npm-conf": 3.0.2 regjsgen@0.8.0: {} @@ -14883,13 +15029,13 @@ snapshots: resolve-from@5.0.0: {} - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - responselike@3.0.0: + responselike@4.0.2: dependencies: lowercase-keys: 3.0.0 @@ -14913,32 +15059,35 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.52.4: + rollup@4.57.1: dependencies: "@types/estree": 1.0.8 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.52.4 - "@rollup/rollup-android-arm64": 4.52.4 - "@rollup/rollup-darwin-arm64": 4.52.4 - "@rollup/rollup-darwin-x64": 4.52.4 - "@rollup/rollup-freebsd-arm64": 4.52.4 - "@rollup/rollup-freebsd-x64": 4.52.4 - "@rollup/rollup-linux-arm-gnueabihf": 4.52.4 - "@rollup/rollup-linux-arm-musleabihf": 4.52.4 - "@rollup/rollup-linux-arm64-gnu": 4.52.4 - "@rollup/rollup-linux-arm64-musl": 4.52.4 - "@rollup/rollup-linux-loong64-gnu": 4.52.4 - "@rollup/rollup-linux-ppc64-gnu": 4.52.4 - "@rollup/rollup-linux-riscv64-gnu": 4.52.4 - "@rollup/rollup-linux-riscv64-musl": 4.52.4 - "@rollup/rollup-linux-s390x-gnu": 4.52.4 - "@rollup/rollup-linux-x64-gnu": 4.52.4 - "@rollup/rollup-linux-x64-musl": 4.52.4 - "@rollup/rollup-openharmony-arm64": 4.52.4 - "@rollup/rollup-win32-arm64-msvc": 4.52.4 - "@rollup/rollup-win32-ia32-msvc": 4.52.4 - "@rollup/rollup-win32-x64-gnu": 4.52.4 - "@rollup/rollup-win32-x64-msvc": 4.52.4 + "@rollup/rollup-android-arm-eabi": 4.57.1 + "@rollup/rollup-android-arm64": 4.57.1 + "@rollup/rollup-darwin-arm64": 4.57.1 + "@rollup/rollup-darwin-x64": 4.57.1 + "@rollup/rollup-freebsd-arm64": 4.57.1 + "@rollup/rollup-freebsd-x64": 4.57.1 + "@rollup/rollup-linux-arm-gnueabihf": 4.57.1 + "@rollup/rollup-linux-arm-musleabihf": 4.57.1 + "@rollup/rollup-linux-arm64-gnu": 4.57.1 + "@rollup/rollup-linux-arm64-musl": 4.57.1 + "@rollup/rollup-linux-loong64-gnu": 4.57.1 + "@rollup/rollup-linux-loong64-musl": 4.57.1 + "@rollup/rollup-linux-ppc64-gnu": 4.57.1 + "@rollup/rollup-linux-ppc64-musl": 4.57.1 + "@rollup/rollup-linux-riscv64-gnu": 4.57.1 + "@rollup/rollup-linux-riscv64-musl": 4.57.1 + "@rollup/rollup-linux-s390x-gnu": 4.57.1 + "@rollup/rollup-linux-x64-gnu": 4.57.1 + "@rollup/rollup-linux-x64-musl": 4.57.1 + "@rollup/rollup-openbsd-x64": 4.57.1 + "@rollup/rollup-openharmony-arm64": 4.57.1 + "@rollup/rollup-win32-arm64-msvc": 4.57.1 + "@rollup/rollup-win32-ia32-msvc": 4.57.1 + "@rollup/rollup-win32-x64-gnu": 4.57.1 + "@rollup/rollup-win32-x64-msvc": 4.57.1 fsevents: 2.3.3 run-applescript@7.1.0: {} @@ -14982,52 +15131,47 @@ snapshots: safer-buffer@2.1.2: {} - sax@1.4.1: {} + sax@1.4.4: {} - semantic-release@24.2.9(typescript@5.9.3): + semantic-release@25.0.3(typescript@5.9.3): dependencies: - "@semantic-release/commit-analyzer": 13.0.1(semantic-release@24.2.9(typescript@5.9.3)) + "@semantic-release/commit-analyzer": 13.0.1(semantic-release@25.0.3(typescript@5.9.3)) "@semantic-release/error": 4.0.0 - "@semantic-release/github": 11.0.6(semantic-release@24.2.9(typescript@5.9.3)) - "@semantic-release/npm": 12.0.2(semantic-release@24.2.9(typescript@5.9.3)) - "@semantic-release/release-notes-generator": 14.1.0(semantic-release@24.2.9(typescript@5.9.3)) + "@semantic-release/github": 12.0.6(semantic-release@25.0.3(typescript@5.9.3)) + "@semantic-release/npm": 13.1.4(semantic-release@25.0.3(typescript@5.9.3)) + "@semantic-release/release-notes-generator": 14.1.0(semantic-release@25.0.3(typescript@5.9.3)) aggregate-error: 5.0.0 cosmiconfig: 9.0.0(typescript@5.9.3) debug: 4.4.3 env-ci: 11.2.0 - execa: 9.6.0 + execa: 9.6.1 figures: 6.1.0 find-versions: 6.0.0 get-stream: 6.0.1 git-log-parser: 1.2.1 hook-std: 4.0.0 - hosted-git-info: 8.1.0 + hosted-git-info: 9.0.2 import-from-esm: 2.0.0 - lodash-es: 4.17.21 + lodash-es: 4.17.23 marked: 15.0.12 marked-terminal: 7.3.0(marked@15.0.12) micromatch: 4.0.8 p-each-series: 3.0.0 p-reduce: 3.0.0 - read-package-up: 11.0.0 + read-package-up: 12.0.0 resolve-from: 5.0.0 - semver: 7.7.2 - semver-diff: 5.0.0 + semver: 7.7.4 signale: 1.4.0 - yargs: 17.7.2 + yargs: 18.0.0 transitivePeerDependencies: - supports-color - typescript - semver-diff@5.0.0: - dependencies: - semver: 7.7.2 - semver-regex@4.0.5: {} semver@6.3.1: {} - semver@7.7.2: {} + semver@7.7.4: {} serialize-javascript@6.0.2: dependencies: @@ -15057,34 +15201,36 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 - sharp@0.34.4: + sharp@0.34.5: dependencies: "@img/colour": 1.0.0 detect-libc: 2.1.2 - semver: 7.7.2 + semver: 7.7.4 optionalDependencies: - "@img/sharp-darwin-arm64": 0.34.4 - "@img/sharp-darwin-x64": 0.34.4 - "@img/sharp-libvips-darwin-arm64": 1.2.3 - "@img/sharp-libvips-darwin-x64": 1.2.3 - "@img/sharp-libvips-linux-arm": 1.2.3 - "@img/sharp-libvips-linux-arm64": 1.2.3 - "@img/sharp-libvips-linux-ppc64": 1.2.3 - "@img/sharp-libvips-linux-s390x": 1.2.3 - "@img/sharp-libvips-linux-x64": 1.2.3 - "@img/sharp-libvips-linuxmusl-arm64": 1.2.3 - "@img/sharp-libvips-linuxmusl-x64": 1.2.3 - "@img/sharp-linux-arm": 0.34.4 - "@img/sharp-linux-arm64": 0.34.4 - "@img/sharp-linux-ppc64": 0.34.4 - "@img/sharp-linux-s390x": 0.34.4 - "@img/sharp-linux-x64": 0.34.4 - "@img/sharp-linuxmusl-arm64": 0.34.4 - "@img/sharp-linuxmusl-x64": 0.34.4 - "@img/sharp-wasm32": 0.34.4 - "@img/sharp-win32-arm64": 0.34.4 - "@img/sharp-win32-ia32": 0.34.4 - "@img/sharp-win32-x64": 0.34.4 + "@img/sharp-darwin-arm64": 0.34.5 + "@img/sharp-darwin-x64": 0.34.5 + "@img/sharp-libvips-darwin-arm64": 1.2.4 + "@img/sharp-libvips-darwin-x64": 1.2.4 + "@img/sharp-libvips-linux-arm": 1.2.4 + "@img/sharp-libvips-linux-arm64": 1.2.4 + "@img/sharp-libvips-linux-ppc64": 1.2.4 + "@img/sharp-libvips-linux-riscv64": 1.2.4 + "@img/sharp-libvips-linux-s390x": 1.2.4 + "@img/sharp-libvips-linux-x64": 1.2.4 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.4 + "@img/sharp-libvips-linuxmusl-x64": 1.2.4 + "@img/sharp-linux-arm": 0.34.5 + "@img/sharp-linux-arm64": 0.34.5 + "@img/sharp-linux-ppc64": 0.34.5 + "@img/sharp-linux-riscv64": 0.34.5 + "@img/sharp-linux-s390x": 0.34.5 + "@img/sharp-linux-x64": 0.34.5 + "@img/sharp-linuxmusl-arm64": 0.34.5 + "@img/sharp-linuxmusl-x64": 0.34.5 + "@img/sharp-wasm32": 0.34.5 + "@img/sharp-win32-arm64": 0.34.5 + "@img/sharp-win32-ia32": 0.34.5 + "@img/sharp-win32-x64": 0.34.5 shebang-command@2.0.0: dependencies: @@ -15140,8 +15286,6 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 - slash@3.0.0: {} - slash@5.1.0: {} slice-ansi@4.0.0: @@ -15155,7 +15299,7 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - smob@1.5.0: {} + smob@1.6.1: {} source-map-js@1.2.1: {} @@ -15216,19 +15360,13 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.2 - string-width@7.2.0: dependencies: - emoji-regex: 10.5.0 + emoji-regex: 10.6.0 get-east-asian-width: 1.4.0 strip-ansi: 7.1.2 - string-width@8.1.0: + string-width@8.1.1: dependencies: get-east-asian-width: 1.4.0 strip-ansi: 7.1.2 @@ -15238,7 +15376,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -15255,7 +15393,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -15310,82 +15448,86 @@ snapshots: strip-json-comments@3.1.1: {} - style-mod@4.1.2: {} + style-mod@4.1.3: {} - stylehacks@7.0.6(postcss@8.5.6): + stylehacks@7.0.7(postcss@8.5.6): dependencies: - browserslist: 4.26.3 + browserslist: 4.28.1 postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - stylelint-config-recommended@17.0.0(stylelint@16.25.0(typescript@5.9.3)): + stylelint-config-recommended@18.0.0(stylelint@17.3.0(typescript@5.9.3)): dependencies: - stylelint: 16.25.0(typescript@5.9.3) + stylelint: 17.3.0(typescript@5.9.3) - stylelint-config-standard@39.0.1(stylelint@16.25.0(typescript@5.9.3)): + stylelint-config-standard@40.0.0(stylelint@17.3.0(typescript@5.9.3)): dependencies: - stylelint: 16.25.0(typescript@5.9.3) - stylelint-config-recommended: 17.0.0(stylelint@16.25.0(typescript@5.9.3)) + stylelint: 17.3.0(typescript@5.9.3) + stylelint-config-recommended: 18.0.0(stylelint@17.3.0(typescript@5.9.3)) - stylelint@16.25.0(typescript@5.9.3): + stylelint@17.3.0(typescript@5.9.3): dependencies: - "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) - "@csstools/css-tokenizer": 3.0.4 - "@csstools/media-query-list-parser": 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) - "@dual-bundle/import-meta-resolve": 4.2.1 - balanced-match: 2.0.0 + "@csstools/css-calc": 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/css-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-syntax-patches-for-csstree": 1.0.27 + "@csstools/css-tokenizer": 4.0.0 + "@csstools/media-query-list-parser": 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + "@csstools/selector-resolve-nested": 4.0.0(postcss-selector-parser@7.1.1) + "@csstools/selector-specificity": 6.0.0(postcss-selector-parser@7.1.1) + balanced-match: 3.0.1 colord: 2.9.3 cosmiconfig: 9.0.0(typescript@5.9.3) - css-functions-list: 3.2.3 + css-functions-list: 3.3.3 css-tree: 3.1.0 debug: 4.4.3 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 10.1.4 + file-entry-cache: 11.1.2 global-modules: 2.0.0 - globby: 11.1.0 + globby: 16.1.0 globjoin: 0.1.4 - html-tags: 3.3.1 + html-tags: 5.1.0 ignore: 7.0.5 + import-meta-resolve: 4.2.0 imurmurhash: 0.1.4 is-plain-object: 5.0.0 known-css-properties: 0.37.0 - mathml-tag-names: 2.1.3 - meow: 13.2.0 + mathml-tag-names: 4.0.0 + meow: 14.0.0 micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 postcss: 8.5.6 - postcss-resolve-nested-selector: 0.1.6 postcss-safe-parser: 7.0.1(postcss@8.5.6) - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - resolve-from: 5.0.0 - string-width: 4.2.3 - supports-hyperlinks: 3.2.0 + string-width: 8.1.1 + supports-hyperlinks: 4.4.0 svg-tags: 1.0.0 table: 6.9.0 - write-file-atomic: 5.0.1 + write-file-atomic: 7.0.0 transitivePeerDependencies: - supports-color - typescript - sucrase@3.35.0: + sucrase@3.35.1: dependencies: "@jridgewell/gen-mapping": 0.3.13 commander: 4.1.1 - glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 + tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 - super-regex@1.0.0: + super-regex@1.1.0: dependencies: function-timeout: 1.0.2 + make-asynchronous: 1.0.1 time-span: 5.1.0 + supports-color@10.2.2: {} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -15399,6 +15541,11 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 + supports-hyperlinks@4.4.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + supports-preserve-symlinks-flag@1.0.0: {} svg-tags@1.0.0: {} @@ -15411,21 +15558,23 @@ snapshots: css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.4.1 + sax: 1.4.4 - synckit@0.11.11: + synckit@0.11.12: dependencies: "@pkgr/core": 0.2.9 table@6.9.0: dependencies: - ajv: 8.17.1 + ajv: 8.18.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 - tailwindcss@3.4.18(yaml@2.8.1): + tagged-tag@1.0.0: {} + + tailwindcss@3.4.19(yaml@2.8.2): dependencies: "@alloc/quick-lru": 5.2.0 arg: 5.0.2 @@ -15444,11 +15593,11 @@ snapshots: postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.1) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 + resolve: 1.22.11 + sucrase: 3.35.1 transitivePeerDependencies: - tsx - yaml @@ -15464,22 +15613,20 @@ snapshots: type-fest: 0.16.0 unique-string: 2.0.0 - tempy@3.1.0: + tempy@3.2.0: dependencies: is-stream: 3.0.0 temp-dir: 3.0.0 type-fest: 2.19.0 unique-string: 3.0.0 - terser@5.44.0: + terser@5.46.0: dependencies: "@jridgewell/source-map": 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 - text-extensions@2.4.0: {} - thenby@1.3.4: {} thenify-all@1.6.0: @@ -15503,7 +15650,7 @@ snapshots: tiny-inflate@1.0.3: {} - tinyexec@1.0.1: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: @@ -15530,7 +15677,7 @@ snapshots: traverse@0.6.8: {} - ts-api-utils@2.1.0(typescript@5.9.3): + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -15540,6 +15687,8 @@ snapshots: tslib@2.8.1: {} + tunnel@0.0.6: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -15554,6 +15703,10 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.4.4: + dependencies: + tagged-tag: 1.0.0 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -15587,13 +15740,13 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3): dependencies: - "@typescript-eslint/eslint-plugin": 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - "@typescript-eslint/parser": 8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) - "@typescript-eslint/utils": 8.46.0(eslint@9.37.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.37.0(jiti@1.21.7) + "@typescript-eslint/eslint-plugin": 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3))(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3) + "@typescript-eslint/parser": 8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3) + "@typescript-eslint/typescript-estree": 8.56.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.56.0(eslint@10.0.0(jiti@1.21.7))(typescript@5.9.3) + eslint: 10.0.0(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -15612,6 +15765,10 @@ snapshots: undici-types@7.14.0: {} + undici@6.23.0: {} + + undici@7.22.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-emoji-modifier-base@1.0.0: {} @@ -15639,6 +15796,8 @@ snapshots: unicorn-magic@0.3.0: {} + unicorn-magic@0.4.0: {} + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -15658,9 +15817,9 @@ snapshots: upath@1.2.0: {} - update-browserslist-db@1.1.3(browserslist@4.26.3): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.26.3 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -15679,83 +15838,84 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-dev-rpc@1.1.0(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)): + vite-dev-rpc@1.1.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)): dependencies: - birpc: 2.6.1 - vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1) - vite-hot-client: 2.1.0(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)) + birpc: 2.9.0 + vite: 7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2) + vite-hot-client: 2.1.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)) - vite-hot-client@2.1.0(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)): + vite-hot-client@2.1.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)): dependencies: - vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2) - vite-plugin-codeigniter@2.0.0(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-codeigniter@2.0.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)): dependencies: - glob: 11.0.3 + glob: 11.1.0 picocolors: 1.1.1 - sharp: 0.34.4 - vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1) - vite-plugin-static-copy: 3.1.3(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)) - zod: 4.1.12 + sharp: 0.34.5 + vite: 7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2) + vite-plugin-static-copy: 3.2.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)) + zod: 4.3.6 - vite-plugin-inspect@11.3.3(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-inspect@11.3.3(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)): dependencies: ansis: 4.2.0 debug: 4.4.3 error-stack-parser-es: 1.0.5 ohash: 2.0.11 open: 10.2.0 - perfect-debounce: 2.0.0 + perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1) - vite-dev-rpc: 1.1.0(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)) + vite: 7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2) + vite-dev-rpc: 1.1.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)) transitivePeerDependencies: - supports-color - vite-plugin-pwa@1.0.3(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1))(workbox-build@7.3.0)(workbox-window@7.3.0): + vite-plugin-pwa@1.2.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2))(workbox-build@7.4.0)(workbox-window@7.4.0): dependencies: debug: 4.4.3 pretty-bytes: 6.1.1 tinyglobby: 0.2.15 - vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1) - workbox-build: 7.3.0 - workbox-window: 7.3.0 + vite: 7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2) + workbox-build: 7.4.0 + workbox-window: 7.4.0 transitivePeerDependencies: - supports-color - vite-plugin-static-copy@3.1.3(vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-static-copy@3.2.0(vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2)): dependencies: chokidar: 3.6.0 - fs-extra: 11.3.2 - p-map: 7.0.3 + p-map: 7.0.4 picocolors: 1.1.1 tinyglobby: 0.2.15 - vite: 7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2) - vite@7.1.9(@types/node@24.7.0)(jiti@1.21.7)(terser@5.44.0)(yaml@2.8.1): + vite@7.3.1(@types/node@24.7.0)(jiti@1.21.7)(terser@5.46.0)(yaml@2.8.2): dependencies: - esbuild: 0.25.10 + esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.4 + rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: "@types/node": 24.7.0 fsevents: 2.3.3 jiti: 1.21.7 - terser: 5.44.0 - yaml: 2.8.1 + terser: 5.46.0 + yaml: 2.8.2 w3c-keyname@2.2.8: {} - wavesurfer.js@7.11.0: {} + wavesurfer.js@7.12.1: {} wcwidth@1.0.1: dependencies: defaults: 1.0.4 + web-worker@1.2.0: {} + webidl-conversions@3.0.1: {} webidl-conversions@4.0.2: {} @@ -15793,7 +15953,7 @@ snapshots: isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 which-collection@1.0.2: dependencies: @@ -15804,7 +15964,7 @@ snapshots: which-module@2.0.1: {} - which-typed-array@1.1.19: + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 @@ -15826,32 +15986,32 @@ snapshots: wordwrap@1.0.0: {} - workbox-background-sync@7.3.0: + workbox-background-sync@7.4.0: dependencies: idb: 7.1.1 - workbox-core: 7.3.0 + workbox-core: 7.4.0 - workbox-broadcast-update@7.3.0: + workbox-broadcast-update@7.4.0: dependencies: - workbox-core: 7.3.0 + workbox-core: 7.4.0 - workbox-build@7.3.0: + workbox-build@7.4.0: dependencies: - "@apideck/better-ajv-errors": 0.3.6(ajv@8.17.1) - "@babel/core": 7.28.4 - "@babel/preset-env": 7.28.3(@babel/core@7.28.4) - "@babel/runtime": 7.28.4 - "@rollup/plugin-babel": 5.3.1(@babel/core@7.28.4)(rollup@2.79.2) + "@apideck/better-ajv-errors": 0.3.6(ajv@8.18.0) + "@babel/core": 7.29.0 + "@babel/preset-env": 7.29.0(@babel/core@7.29.0) + "@babel/runtime": 7.28.6 + "@rollup/plugin-babel": 5.3.1(@babel/core@7.29.0)(rollup@2.79.2) "@rollup/plugin-node-resolve": 15.3.1(rollup@2.79.2) "@rollup/plugin-replace": 2.4.2(rollup@2.79.2) "@rollup/plugin-terser": 0.4.4(rollup@2.79.2) "@surma/rollup-plugin-off-main-thread": 2.2.3 - ajv: 8.17.1 + ajv: 8.18.0 common-tags: 1.8.2 fast-json-stable-stringify: 2.1.0 fs-extra: 9.1.0 - glob: 7.2.3 - lodash: 4.17.21 + glob: 11.1.0 + lodash: 4.17.23 pretty-bytes: 5.6.0 rollup: 2.79.2 source-map: 0.8.0-beta.0 @@ -15859,85 +16019,85 @@ snapshots: strip-comments: 2.0.1 tempy: 0.6.0 upath: 1.2.0 - workbox-background-sync: 7.3.0 - workbox-broadcast-update: 7.3.0 - workbox-cacheable-response: 7.3.0 - workbox-core: 7.3.0 - workbox-expiration: 7.3.0 - workbox-google-analytics: 7.3.0 - workbox-navigation-preload: 7.3.0 - workbox-precaching: 7.3.0 - workbox-range-requests: 7.3.0 - workbox-recipes: 7.3.0 - workbox-routing: 7.3.0 - workbox-strategies: 7.3.0 - workbox-streams: 7.3.0 - workbox-sw: 7.3.0 - workbox-window: 7.3.0 + workbox-background-sync: 7.4.0 + workbox-broadcast-update: 7.4.0 + workbox-cacheable-response: 7.4.0 + workbox-core: 7.4.0 + workbox-expiration: 7.4.0 + workbox-google-analytics: 7.4.0 + workbox-navigation-preload: 7.4.0 + workbox-precaching: 7.4.0 + workbox-range-requests: 7.4.0 + workbox-recipes: 7.4.0 + workbox-routing: 7.4.0 + workbox-strategies: 7.4.0 + workbox-streams: 7.4.0 + workbox-sw: 7.4.0 + workbox-window: 7.4.0 transitivePeerDependencies: - "@types/babel__core" - supports-color - workbox-cacheable-response@7.3.0: + workbox-cacheable-response@7.4.0: dependencies: - workbox-core: 7.3.0 + workbox-core: 7.4.0 - workbox-core@7.3.0: {} + workbox-core@7.4.0: {} - workbox-expiration@7.3.0: + workbox-expiration@7.4.0: dependencies: idb: 7.1.1 - workbox-core: 7.3.0 + workbox-core: 7.4.0 - workbox-google-analytics@7.3.0: + workbox-google-analytics@7.4.0: dependencies: - workbox-background-sync: 7.3.0 - workbox-core: 7.3.0 - workbox-routing: 7.3.0 - workbox-strategies: 7.3.0 + workbox-background-sync: 7.4.0 + workbox-core: 7.4.0 + workbox-routing: 7.4.0 + workbox-strategies: 7.4.0 - workbox-navigation-preload@7.3.0: + workbox-navigation-preload@7.4.0: dependencies: - workbox-core: 7.3.0 + workbox-core: 7.4.0 - workbox-precaching@7.3.0: + workbox-precaching@7.4.0: dependencies: - workbox-core: 7.3.0 - workbox-routing: 7.3.0 - workbox-strategies: 7.3.0 + workbox-core: 7.4.0 + workbox-routing: 7.4.0 + workbox-strategies: 7.4.0 - workbox-range-requests@7.3.0: + workbox-range-requests@7.4.0: dependencies: - workbox-core: 7.3.0 + workbox-core: 7.4.0 - workbox-recipes@7.3.0: + workbox-recipes@7.4.0: dependencies: - workbox-cacheable-response: 7.3.0 - workbox-core: 7.3.0 - workbox-expiration: 7.3.0 - workbox-precaching: 7.3.0 - workbox-routing: 7.3.0 - workbox-strategies: 7.3.0 + workbox-cacheable-response: 7.4.0 + workbox-core: 7.4.0 + workbox-expiration: 7.4.0 + workbox-precaching: 7.4.0 + workbox-routing: 7.4.0 + workbox-strategies: 7.4.0 - workbox-routing@7.3.0: + workbox-routing@7.4.0: dependencies: - workbox-core: 7.3.0 + workbox-core: 7.4.0 - workbox-strategies@7.3.0: + workbox-strategies@7.4.0: dependencies: - workbox-core: 7.3.0 + workbox-core: 7.4.0 - workbox-streams@7.3.0: + workbox-streams@7.4.0: dependencies: - workbox-core: 7.3.0 - workbox-routing: 7.3.0 + workbox-core: 7.4.0 + workbox-routing: 7.4.0 - workbox-sw@7.3.0: {} + workbox-sw@7.4.0: {} - workbox-window@7.3.0: + workbox-window@7.4.0: dependencies: "@types/trusted-types": 2.0.7 - workbox-core: 7.3.0 + workbox-core: 7.4.0 wrap-ansi@6.2.0: dependencies: @@ -15951,12 +16111,6 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 5.1.2 - strip-ansi: 7.1.2 - wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 @@ -15965,14 +16119,14 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@5.0.1: + write-file-atomic@7.0.0: dependencies: imurmurhash: 0.1.4 signal-exit: 4.1.0 wsl-utils@0.1.0: dependencies: - is-wsl: 3.1.0 + is-wsl: 3.1.1 xml-formatter@3.6.7: dependencies: @@ -15980,9 +16134,9 @@ snapshots: xml-parser-xo@4.1.5: {} - xmldoc@2.0.2: + xmldoc@2.0.3: dependencies: - sax: 1.4.1 + sax: 1.4.4 xtend@4.0.2: {} @@ -15992,7 +16146,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.8.1: {} + yaml@2.8.2: {} yargs-parser@18.1.3: dependencies: @@ -16003,6 +16157,8 @@ snapshots: yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + yargs@15.4.1: dependencies: cliui: 6.0.0 @@ -16037,10 +16193,17 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yocto-queue@0.1.0: {} + yargs@18.0.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 7.2.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 - yocto-queue@1.2.1: {} + yocto-queue@0.1.0: {} yoctocolors@2.1.2: {} - zod@4.1.12: {} + zod@4.3.6: {} diff --git a/rector.php b/rector.php index 8e981c17..c48dd28f 100644 --- a/rector.php +++ b/rector.php @@ -5,7 +5,7 @@ declare(strict_types=1); use Rector\CodeQuality\Rector\ClassMethod\ExplicitReturnNullRector; use Rector\CodingStyle\Rector\Encapsed\EncapsedStringsToSprintfRector; use Rector\CodingStyle\Rector\Stmt\NewlineAfterStatementRector; -use Rector\CodingStyle\Rector\String_\SymplifyQuoteEscapeRector; +use Rector\CodingStyle\Rector\String_\SimplifyQuoteEscapeRector; use Rector\Config\RectorConfig; use Rector\DeadCode\Rector\If_\UnwrapFutureCompatibleIfPhpVersionRector; use Rector\DeadCode\Rector\Stmt\RemoveUnreachableStatementRector; @@ -48,7 +48,7 @@ return RectorConfig::configure() __DIR__ . '/app/Language/*', __DIR__ . '/modules/*/Language/*', ], - SymplifyQuoteEscapeRector::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/*/Language/*'], + SimplifyQuoteEscapeRector::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/*/Language/*'], NewlineAfterStatementRector::class => [__DIR__ . '/app/Views'], diff --git a/resources/js/_modules/code-editor.ts b/resources/js/_modules/code-editor.ts index 8a44cf05..446752ca 100644 --- a/resources/js/_modules/code-editor.ts +++ b/resources/js/_modules/code-editor.ts @@ -191,26 +191,23 @@ function formatXML(contents: string) { return contents; } - let editorContents = ""; try { - editorContents = xmlFormat(contents, { + return xmlFormat(contents, { indentation: " ", }); } catch { // xml doesn't have a root node - editorContents = xmlFormat("" + contents + "", { + const editorContents = xmlFormat("" + contents + "", { indentation: " ", }); // remove root, unnecessary lines and indents - editorContents = editorContents + return editorContents .replace(/^/, "") .replace(/<\/root>$/, "") .replace(/^\s*[\r\n]/gm, "") .replace(/[\r\n] {2}/gm, "\r\n") .trim(); } - - return editorContents; } function minifyXML(contents: string) { @@ -218,20 +215,15 @@ function minifyXML(contents: string) { return contents; } - let minifiedContent = ""; try { - minifiedContent = xmlFormat.minify(contents, { + return xmlFormat.minify(contents, { collapseContent: true, }); } catch { - minifiedContent = xmlFormat.minify(`${contents}`, { + const minifiedContent = xmlFormat.minify(`${contents}`, { collapseContent: true, }); // remove root - minifiedContent = minifiedContent - .replace(/^/, "") - .replace(/<\/root>$/, ""); + return minifiedContent.replace(/^/, "").replace(/<\/root>$/, ""); } - - return minifiedContent; } diff --git a/scripts/bundle.sh b/scripts/bundle.sh index 5fce212d..6455f435 100644 --- a/scripts/bundle.sh +++ b/scripts/bundle.sh @@ -11,9 +11,6 @@ echo "$( jq '.version = "'$COMPOSER_VERSION'"' composer.json )" > composer.json # replace CP_VERSION constant in app/config/constants sed -i "s/^defined('CP_VERSION').*/defined('CP_VERSION') || define('CP_VERSION', '$VERSION');/" ./app/Config/Constants.php -# fill CP_VERSION.env for docker build -echo "$VERSION" > ./CP_VERSION.env - # download GeoLite2-City archive and extract it to writable/uploads wget -c "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=$MAXMIND_LICENCE_KEY&suffix=tar.gz" -O - | tar -xz -C ./writable/uploads/ From 77826552f1ddaa72c33030abbd599f1060733d2e Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 16 Feb 2026 13:08:10 +0000 Subject: [PATCH 116/128] fix(docker): create optimized builder with docker-container driver for arm64 builds closes #580 --- docker/production/.gitlab-ci.yml | 65 +++++++++++++++++++++++++++----- docker/production/Dockerfile | 2 +- 2 files changed, 57 insertions(+), 10 deletions(-) diff --git a/docker/production/.gitlab-ci.yml b/docker/production/.gitlab-ci.yml index 3f467900..a4372f54 100644 --- a/docker/production/.gitlab-ci.yml +++ b/docker/production/.gitlab-ci.yml @@ -12,12 +12,35 @@ docker-build-rolling: DOCKER_BUILDKIT: 1 DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" - script: + before_script: + # ensure the Docker config directory exists - mkdir -p /root/.docker + # copy credentials to authenticate against registry - cp ${DOCKER_HUB_CONFIG} /root/.docker/config.json + - docker context create tls-environment - - docker buildx create --use tls-environment - - docker buildx build --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY --push --platform=linux/amd64 --file=docker/production/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${TAG} . + + # Create and use builder with optimized settings + - docker buildx create + --name fast-multiplatform + --driver docker-container + --driver-opt network=host + --driver-opt image=moby/buildkit:v0.27.1 + --use + tls-environment + + # initialize and boot fast-multiplatform builder + # configure BuildKit features that aren't enabled by default + - docker buildx inspect --bootstrap + script: + - docker buildx build + --target production + --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY + --platform linux/amd64 + --file docker/production/Dockerfile + --push + --tag ${DOCKER_IMAGE_CASTOPOD}:${TAG} + . rules: - if: $CI_COMMIT_BRANCH == 'develop' @@ -31,18 +54,42 @@ docker-build-release: DOCKER_BUILDKIT: 1 DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" - script: + before_script: + # ensure the Docker config directory exists - mkdir -p /root/.docker + # copy credentials to authenticate against registry - cp ${DOCKER_HUB_CONFIG} /root/.docker/config.json + # extract Castopod version from tag (remove "v" prefix) - export CP_VERSION=$(echo "$CI_COMMIT_TAG" | sed 's/^v//') # extract pre release identifier (eg. alpha, beta, next, ...) from CP_VERSION or "latest" if none exists - export CP_TAG=$(echo "$CP_VERSION" | sed 's/^[^-]*-\([^.]*\)\..*/\1/; t; s/.*/latest/') + - docker context create tls-environment - - docker buildx create --use tls-environment - - docker buildx build --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY --push --platform=linux/amd64 --file=docker/production/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_TAG} . - # when --platform=linux/amd64,linux/arm64: amd64 image takes too long to be pushed as it needs to wait for arm64 to be built - # --> build and push amd64 image first, then overwrite manifest after building arm64 - - docker buildx build --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY --push --platform=linux/amd64,linux/arm64 --file=docker/production/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_TAG} . + + # Create and use builder with optimized settings + - docker buildx create + --name fast-multiplatform + --driver docker-container + --driver-opt network=host + --driver-opt image=moby/buildkit:v0.27.1 + --use + tls-environment + + # initialize and boot fast-multiplatform builder + # configure BuildKit features that aren't enabled by default + - docker buildx inspect --bootstrap + script: + # build multiplatform image for amd64 and arm64 + - docker buildx build + --target production + --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY + --platform linux/amd64,linux/arm64 + --file docker/production/Dockerfile + --push + --tag ${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} + --tag ${DOCKER_IMAGE_CASTOPOD}:${CP_TAG} + --progress=plain + . rules: - if: $CI_COMMIT_TAG diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index 5088228f..b33a4cc1 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -56,7 +56,7 @@ RUN \ # Define production image based on FrankenPHP / # Debian with services managed by s6-overlay #--------------------------------------------------- -FROM serversideup/php:${PHP_VERSION}-frankenphp-trixie AS build +FROM serversideup/php:${PHP_VERSION}-frankenphp-trixie AS production LABEL maintainer="Yassine Doghri " From f01de13637a89b525e678bf45bc1bb36646427a2 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Tue, 17 Feb 2026 20:07:58 +0000 Subject: [PATCH 117/128] build(docker): push amd64 image before overwriting manifest with both amd64 and arm64 platforms --- docker/production/.gitlab-ci.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/docker/production/.gitlab-ci.yml b/docker/production/.gitlab-ci.yml index a4372f54..0b2ee2d5 100644 --- a/docker/production/.gitlab-ci.yml +++ b/docker/production/.gitlab-ci.yml @@ -80,7 +80,17 @@ docker-build-release: # configure BuildKit features that aren't enabled by default - docker buildx inspect --bootstrap script: - # build multiplatform image for amd64 and arm64 + - docker buildx build + --target production + --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY + --platform linux/amd64 + --file docker/production/Dockerfile + --push + --tag ${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} + --tag ${DOCKER_IMAGE_CASTOPOD}:${CP_TAG} + . + # when --platform=linux/amd64,linux/arm64: amd64 image takes too long to be pushed as it needs to wait for arm64 to be built + # --> build and push amd64 image first, then overwrite manifest after building arm64 - docker buildx build --target production --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY @@ -89,7 +99,6 @@ docker-build-release: --push --tag ${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag ${DOCKER_IMAGE_CASTOPOD}:${CP_TAG} - --progress=plain . rules: - if: $CI_COMMIT_TAG From abf214757cdaa15a5a4b985ea8da5a3abd078dee Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Tue, 17 Feb 2026 20:56:12 +0000 Subject: [PATCH 118/128] docs(docker): add tip to encourage users to pin the castopod image version during production --- .../en/getting-started/create-podcast.mdx | 2 -- .../docs/en/getting-started/docker.mdx | 20 +++++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/src/content/docs/en/getting-started/create-podcast.mdx b/docs/src/content/docs/en/getting-started/create-podcast.mdx index 673771d0..f36e101d 100644 --- a/docs/src/content/docs/en/getting-started/create-podcast.mdx +++ b/docs/src/content/docs/en/getting-started/create-podcast.mdx @@ -2,8 +2,6 @@ title: Create your first podcast --- -import { Aside } from "@astrojs/starlight/components"; - From the left hand navigation sidebar, press the `+` sign to the right of Podcasts to create your first podcast. diff --git a/docs/src/content/docs/en/getting-started/docker.mdx b/docs/src/content/docs/en/getting-started/docker.mdx index 4dbc93ce..c140cb1e 100644 --- a/docs/src/content/docs/en/getting-started/docker.mdx +++ b/docs/src/content/docs/en/getting-started/docker.mdx @@ -2,6 +2,8 @@ title: Official Docker image --- +import { Aside } from "@astrojs/starlight/components"; + Castopod publishes a single official Docker image to the Docker Hub as part of its automated build process: @@ -16,10 +18,20 @@ service can be configured as the caching layer. ## Supported tags -- `develop` [unstable], latest development branch build -- `beta` [stable], latest beta version build -- `latest` [stable], latest version build - `1.x.x` [stable], specific version build (since `1.0.0`) +- `latest` [stable], latest version build +- `develop` [unstable], latest development branch build + +Other unstable tags (e.g., `beta`, `next`) may be actively pushed during development phases. +See [all tags in the docker hub](https://hub.docker.com/r/castopod/castopod/tags). + + ## Example usage @@ -30,7 +42,7 @@ service can be configured as the caching layer. ```yml services: castopod: - image: castopod/castopod:latest + image: castopod/castopod:latest # Pin to a specific version during production container_name: "castopod" volumes: - castopod-media:/app/public/media From a5853628273e4dd7897a5e19b66cb03726b567d0 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Tue, 17 Feb 2026 21:09:55 +0000 Subject: [PATCH 119/128] chore: update CI files after update from 4.6.3 to 4.6.5 --- app/Config/Database.php | 1 + app/Config/Paths.php | 4 +++- app/Controllers/BaseController.php | 11 +++++++++-- docs/src/content/docs/en/getting-started/docker.mdx | 5 +++-- modules/Admin/Controllers/BaseController.php | 11 +++++++++-- preload.php | 4 +++- 6 files changed, 28 insertions(+), 8 deletions(-) diff --git a/app/Config/Database.php b/app/Config/Database.php index 645d5ce3..77144234 100644 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -79,6 +79,7 @@ class Database extends Config 'port' => 3306, 'foreignKeys' => true, 'busyTimeout' => 1000, + 'synchronous' => null, 'dateFormat' => [ 'date' => 'Y-m-d', 'datetime' => 'Y-m-d H:i:s', diff --git a/app/Config/Paths.php b/app/Config/Paths.php index aa51ea9e..0d5699de 100644 --- a/app/Config/Paths.php +++ b/app/Config/Paths.php @@ -11,8 +11,10 @@ namespace Config; * more. * * All paths are relative to the project's root folder. + * + * NOTE: This class is required prior to Autoloader instantiation, + * and does not extend BaseConfig. */ - class Paths { /** diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index 73ce4155..741ac4c6 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -13,9 +13,14 @@ use ViewThemes\Theme; /** * BaseController provides a convenient place for loading components and performing functions that are needed by all - * your controllers. Extend this class in any new controllers: class Home extends BaseController + * your controllers. * - * For security be sure to declare any new methods as protected or private. + * Extend this class in any new controllers: + * ``` + * class Home extends BaseController + * ``` + * + * For security, be sure to declare any new methods as protected or private. */ abstract class BaseController extends Controller { @@ -40,6 +45,8 @@ abstract class BaseController extends Controller ResponseInterface $response, LoggerInterface $logger, ): void { + // Load here all helpers you want to be available in your controllers that extend BaseController. + // Caution: Do not put the this below the parent::initController() call below. $this->helpers = [...$this->helpers, 'svg', 'components', 'misc', 'seo', 'premium_podcasts']; // Do Not Edit This Line diff --git a/docs/src/content/docs/en/getting-started/docker.mdx b/docs/src/content/docs/en/getting-started/docker.mdx index c140cb1e..8296e803 100644 --- a/docs/src/content/docs/en/getting-started/docker.mdx +++ b/docs/src/content/docs/en/getting-started/docker.mdx @@ -22,8 +22,9 @@ service can be configured as the caching layer. - `latest` [stable], latest version build - `develop` [unstable], latest development branch build -Other unstable tags (e.g., `beta`, `next`) may be actively pushed during development phases. -See [all tags in the docker hub](https://hub.docker.com/r/castopod/castopod/tags). +Other unstable tags (e.g., `beta`, `next`) may be actively pushed during +development phases. See +[all tags in the docker hub](https://hub.docker.com/r/castopod/castopod/tags).