From 7253e13ac2118f6f165f54ea0cbcd63d51ab9205 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sun, 28 Apr 2024 17:14:45 +0000 Subject: [PATCH 001/210] 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/210] 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/210] 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/210] 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/210] 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/210] 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/210] 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') . '' ?>

-
+
getHomepage()): ?> @@ -41,9 +41,9 @@ - getSettings() !== []): ?> + getSettingsFields('general') !== []): ?> - + " class="flex flex-col max-w-xl gap-4 p-4 sm:p-6 md:p-8 bg-elevated border-3 border-subtle rounded-xl" > -getSettingsFields($type) as $field): ?> + type): case 'checkbox': ?> extend('_layout') ?> section('title') ?> - $plugin->getName(), 'type' => $type, ]) ?> endSection() ?> section('pageTitle') ?> - $plugin->getName(), 'type' => $type, ]) ?> @@ -30,10 +30,10 @@ if (isset($episode)) { ?> section('content') ?> - $plugin, 'action' => route_to(sprintf('plugins-settings-%s-action', $type), ...$params), - 'type' => $type, + 'fields' => $fields, 'context' => $context, ]) ?> endSection() ?> diff --git a/themes/cp_admin/plugins/view.php b/themes/cp_admin/plugins/view.php index 8bb8462b..68e94e41 100644 --- a/themes/cp_admin/plugins/view.php +++ b/themes/cp_admin/plugins/view.php @@ -18,14 +18,22 @@ section('headerRight') ?> isActive()): ?> -
+ + getSettingsFields('general') !== []): ?> + + +
-
+ + getSettingsFields('general') !== []): ?> + + +
endSection() ?> @@ -34,8 +42,10 @@
-
- getReadmeHTML() ?> -
+ getReadmeHTML()): ?> +
+ getReadmeHTML() ?> +
+ +
+ 'text-gray-300 text-6xl', + ]) ?> +

+
+
endSection() ?> \ No newline at end of file From 8ec79097bbdbcbce622518ef61c068f20e0ef74e Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Thu, 16 May 2024 15:53:42 +0000 Subject: [PATCH 017/210] feat(plugins): display errors when plugin is invalid instead of crashing --- modules/Plugins/Core/BasePlugin.php | 53 ++++++++++++--------- modules/Plugins/Core/PluginStatus.php | 12 +++++ modules/Plugins/Core/Plugins.php | 10 ++-- modules/Plugins/Language/en/Plugins.php | 6 +++ modules/Plugins/Manifest/Manifest.php | 4 +- modules/Plugins/Manifest/ManifestObject.php | 28 +++++++---- modules/Plugins/Manifest/Person.php | 4 +- themes/cp_admin/plugins/_plugin.php | 20 ++++++-- themes/cp_admin/plugins/view.php | 30 ++++++++++-- 9 files changed, 119 insertions(+), 48 deletions(-) create mode 100644 modules/Plugins/Core/PluginStatus.php diff --git a/modules/Plugins/Core/BasePlugin.php b/modules/Plugins/Core/BasePlugin.php index 7eafb3ed..70877548 100644 --- a/modules/Plugins/Core/BasePlugin.php +++ b/modules/Plugins/Core/BasePlugin.php @@ -21,7 +21,6 @@ use Modules\Plugins\Manifest\Manifest; use Modules\Plugins\Manifest\Person; use Modules\Plugins\Manifest\Repository; use Modules\Plugins\Manifest\Settings; -use RuntimeException; /** * @property string $key @@ -33,7 +32,12 @@ abstract class BasePlugin implements PluginInterface protected string $iconSrc; - protected bool $active; + /** + * @var array + */ + protected array $errors = []; + + protected PluginStatus $status; protected Manifest $manifest; @@ -51,20 +55,30 @@ abstract class BasePlugin implements PluginInterface $manifestContents = file_get_contents($manifestPath); if (! $manifestContents) { - throw new RuntimeException(sprintf('Plugin manifest "%s" is missing!', $manifestPath)); + $manifestContents = '{}'; + $this->errors['manifest'] = lang('Plugins.errors.manifestMissing', [ + 'manifestPath' => $manifestPath, + ]); } /** @var array|null $manifestData */ $manifestData = json_decode($manifestContents, true); if ($manifestData === null) { - throw new RuntimeException(sprintf('Plugin manifest "%s" is not a valid JSON', $manifestPath), 1); + $manifestData = []; + $this->errors['manifest'] = lang('Plugins.errors.manifestJsonInvalid', [ + 'manifestPath' => $manifestPath, + ]); } - $this->manifest = new Manifest($manifestData); + $this->manifest = new Manifest($this->key, $manifestData); + $this->errors = [...$this->errors, ...Manifest::getPluginErrors($this->key)]; - // check that plugin is active - $this->active = get_plugin_option($this->key, 'active') ?? false; + if ($this->errors !== []) { + $this->status = PluginStatus::INVALID; + } else { + $this->status = get_plugin_option($this->key, 'active') ? PluginStatus::ACTIVE : PluginStatus::INACTIVE; + } $this->iconSrc = $this->loadIcon($directory . '/icon.svg'); @@ -98,9 +112,17 @@ abstract class BasePlugin implements PluginInterface { } - final public function isActive(): bool + final public function getStatus(): PluginStatus { - return $this->active; + return $this->status; + } + + /** + * @return array + */ + final public function getErrors(): array + { + return $this->errors; } final public function isHookDeclared(string $name): bool @@ -144,19 +166,6 @@ abstract class BasePlugin implements PluginInterface return $this->iconSrc; } - final public function doesManifestHaveErrors(): bool - { - return $this->getManifestErrors() !== []; - } - - /** - * @return array - */ - final public function getManifestErrors(): array - { - return $this->manifest::$errors; - } - /** * @return Field[] */ diff --git a/modules/Plugins/Core/PluginStatus.php b/modules/Plugins/Core/PluginStatus.php new file mode 100644 index 00000000..8057b0f0 --- /dev/null +++ b/modules/Plugins/Core/PluginStatus.php @@ -0,0 +1,12 @@ +isActive()) { + if ($plugin->getStatus() === PluginStatus::ACTIVE) { $activePlugins[] = $plugin; } } @@ -111,7 +111,7 @@ class Plugins { $pluginsWithPodcastSettings = []; foreach (static::$plugins as $plugin) { - if (! $plugin->isActive()) { + if ($plugin->getStatus() !== PluginStatus::ACTIVE) { continue; } @@ -132,7 +132,7 @@ class Plugins { $pluginsWithEpisodeSettings = []; foreach (static::$plugins as $plugin) { - if (! $plugin->isActive()) { + if ($plugin->getStatus() !== PluginStatus::ACTIVE) { continue; } @@ -183,7 +183,7 @@ class Plugins { foreach (static::$plugins as $plugin) { // only run hook on active plugins - if (! $plugin->isActive()) { + if ($plugin->getStatus() !== PluginStatus::ACTIVE) { continue; } @@ -282,7 +282,7 @@ class Plugins static::$pluginsByVendor[$vendor][] = $plugin; ++static::$installedCount; - if ($plugin->isActive()) { + if ($plugin->getStatus() === PluginStatus::ACTIVE) { ++static::$activeCount; } } diff --git a/modules/Plugins/Language/en/Plugins.php b/modules/Plugins/Language/en/Plugins.php index b5e4dbd1..031e3271 100644 --- a/modules/Plugins/Language/en/Plugins.php +++ b/modules/Plugins/Language/en/Plugins.php @@ -28,6 +28,7 @@ return [ 'deactivate' => 'Deactivate', 'active' => 'Active', 'inactive' => 'Inactive', + 'invalid' => 'Invalid', 'uninstall' => 'Uninstall', 'keywords' => [ 'podcasting20' => 'Podcasting 2.0', @@ -40,4 +41,9 @@ return [ 'messages' => [ 'saveSettingsSuccess' => '{pluginName} settings were successfully saved!', ], + 'errors' => [ + 'manifestError' => 'Plugin manifest has errors', + 'manifestMissing' => 'Plugin manifest "{manifestPath}" is missing.', + 'manifestJsonInvalid' => 'Plugin manifest "{manifestPath}" is not a valid JSON.', + ], ]; diff --git a/modules/Plugins/Manifest/Manifest.php b/modules/Plugins/Manifest/Manifest.php index 07323135..1d83ba0f 100644 --- a/modules/Plugins/Manifest/Manifest.php +++ b/modules/Plugins/Manifest/Manifest.php @@ -46,9 +46,9 @@ class Manifest extends ManifestObject 'repository' => Repository::class, ]; - protected string $name; + protected ?string $name = '???'; - protected string $version; + protected ?string $version = 'X.Y.Z'; protected ?string $description = null; diff --git a/modules/Plugins/Manifest/ManifestObject.php b/modules/Plugins/Manifest/ManifestObject.php index 5be54363..3dc26a47 100644 --- a/modules/Plugins/Manifest/ManifestObject.php +++ b/modules/Plugins/Manifest/ManifestObject.php @@ -17,16 +17,19 @@ abstract class ManifestObject protected const CASTS = []; /** - * @var array + * @var array> */ - public static array $errors = []; + protected static array $errors = []; /** * @param mixed[] $data */ public function __construct( - private readonly array $data + protected readonly string $pluginKey, + private readonly array $data, ) { + self::$errors[$pluginKey] = []; + $this->load(); } @@ -52,7 +55,11 @@ abstract class ManifestObject $validation->setRules($this::VALIDATION_RULES); if (! $validation->run($this->data)) { - static::$errors = [...static::$errors, ...$validation->getErrors()]; + foreach ($validation->getErrors() as $key => $message) { + $this->addError($key, $message); + } + + $validation->reset(); } foreach ($validation->getValidated() as $key => $value) { @@ -62,11 +69,11 @@ abstract class ManifestObject if (is_array($cast)) { if (is_array($value)) { foreach ($value as $valueKey => $valueElement) { - $value[$valueKey] = new $cast[0]($valueElement); + $value[$valueKey] = new $cast[0]($this->pluginKey, $valueElement); } } } else { - $value = new $cast($value); + $value = new $cast($this->pluginKey, $value ?? []); } } @@ -77,8 +84,13 @@ abstract class ManifestObject /** * @return array */ - public function getErrors(): array + public static function getPluginErrors(string $pluginKey): array { - return $this->errors; + return self::$errors[$pluginKey]; + } + + protected function addError(string $errorKey, string $errorMessage): void + { + self::$errors[$this->pluginKey][$errorKey] = $errorMessage; } } diff --git a/modules/Plugins/Manifest/Person.php b/modules/Plugins/Manifest/Person.php index 2c2cd74c..14514c46 100644 --- a/modules/Plugins/Manifest/Person.php +++ b/modules/Plugins/Manifest/Person.php @@ -35,7 +35,7 @@ class Person extends ManifestObject protected ?URI $url = null; - public function __construct(array|string $data) + public function __construct(string $pluginKey, array|string $data) { if (is_string($data)) { $result = preg_match(self::AUTHOR_STRING_PATTERN, $data, $matches); @@ -51,6 +51,6 @@ class Person extends ManifestObject ]; } - parent::__construct($data); + parent::__construct($pluginKey, $data); } } diff --git a/themes/cp_admin/plugins/_plugin.php b/themes/cp_admin/plugins/_plugin.php index 0fd1f6c2..b58d4fe1 100644 --- a/themes/cp_admin/plugins/_plugin.php +++ b/themes/cp_admin/plugins/_plugin.php @@ -1,9 +1,19 @@ -
+ +
- isActive()): ?> + getStatus() === PluginStatus::ACTIVE): ?> + - + getStatus() === PluginStatus::INACTIVE): ?> + + getStatus() === PluginStatus::INVALID): ?> + +
@@ -30,12 +40,12 @@
- isActive()): ?> + getStatus() === PluginStatus::ACTIVE): ?>
- + getStatus() === PluginStatus::INACTIVE): ?>
diff --git a/themes/cp_admin/plugins/view.php b/themes/cp_admin/plugins/view.php index 68e94e41..47702922 100644 --- a/themes/cp_admin/plugins/view.php +++ b/themes/cp_admin/plugins/view.php @@ -1,3 +1,7 @@ + + extend('_layout') ?> section('title') ?> @@ -9,15 +13,20 @@ endSection() ?> section('headerLeft') ?> -isActive()): ?> +getStatus() === PluginStatus::ACTIVE): ?> + - +getStatus() === PluginStatus::INACTIVE): ?> + +getStatus() === PluginStatus::INVALID): ?> + + endSection() ?> section('headerRight') ?> -isActive()): ?> +getStatus() === PluginStatus::ACTIVE): ?> @@ -26,7 +35,7 @@
- +getStatus() === PluginStatus::INVALID): ?>
@@ -39,6 +48,16 @@ endSection() ?> section('content') ?> +getStatus() === PluginStatus::INVALID): ?> + +
    + getErrors() as $key => $error): ?> +
  • + +
+
+ +
-

getName() ?>

+

getTitle() ?>

getVendor() ?> diff --git a/themes/cp_admin/plugins/settings.php b/themes/cp_admin/plugins/settings.php index 587fd772..1a054167 100644 --- a/themes/cp_admin/plugins/settings.php +++ b/themes/cp_admin/plugins/settings.php @@ -2,15 +2,15 @@ section('title') ?> $plugin->getName(), - 'type' => $type, + 'pluginTitle' => $plugin->getTitle(), + 'type' => $type, ]) ?> endSection() ?> section('pageTitle') ?> $plugin->getName(), - 'type' => $type, + 'pluginTitle' => $plugin->getTitle(), + 'type' => $type, ]) ?> endSection() ?> diff --git a/themes/cp_admin/plugins/view.php b/themes/cp_admin/plugins/view.php index 47702922..fecff29a 100644 --- a/themes/cp_admin/plugins/view.php +++ b/themes/cp_admin/plugins/view.php @@ -5,11 +5,11 @@ extend('_layout') ?> section('title') ?> -getName() ?> +getTitle() ?> endSection() ?> section('pageTitle') ?> -getName() ?> +getTitle() ?> endSection() ?> section('headerLeft') ?> diff --git a/themes/cp_admin/podcast/_sidebar.php b/themes/cp_admin/podcast/_sidebar.php index a48f7ed2..6f6d8f6d 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-settings-podcast', $plugin->getVendor(), $plugin->getPackage(), $podcast->id); $podcastNavigation['plugins']['items'][] = $route; - $podcastNavigation['plugins']['items-labels'][$route] = $plugin->getName(); + $podcastNavigation['plugins']['items-labels'][$route] = $plugin->getTitle(); $podcastNavigation['plugins']['items-permissions'][$route] = 'edit'; } From cc6495dc7cdde626f9adb6ddfc259e09ba0d4d38 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sat, 8 Jun 2024 20:37:11 +0000 Subject: [PATCH 027/210] refactor(plugins): set settings properties as fields objects --- .devcontainer/devcontainer.json | 4 +- docs/src/content/docs/ar/index.mdx | 6 +-- docs/src/content/docs/br/index.mdx | 6 +-- .../docs/ca/getting-started/docker.mdx | 4 +- docs/src/content/docs/ca/index.mdx | 6 +-- docs/src/content/docs/da/index.mdx | 6 +-- docs/src/content/docs/de/index.mdx | 6 +-- docs/src/content/docs/el/index.mdx | 6 +-- docs/src/content/docs/es/index.mdx | 6 +-- docs/src/content/docs/eu/index.mdx | 6 +-- docs/src/content/docs/fa/index.mdx | 6 +-- docs/src/content/docs/fr/index.mdx | 21 ++++---- docs/src/content/docs/fr2/index.mdx | 21 ++++---- docs/src/content/docs/gd/index.mdx | 6 +-- docs/src/content/docs/gl/index.mdx | 6 +-- docs/src/content/docs/id/index.mdx | 6 +-- docs/src/content/docs/it/index.mdx | 6 +-- docs/src/content/docs/ja/index.mdx | 6 +-- docs/src/content/docs/kk/index.mdx | 6 +-- docs/src/content/docs/ko/index.mdx | 6 +-- docs/src/content/docs/nl/index.mdx | 6 +-- docs/src/content/docs/nn-no/index.mdx | 6 +-- docs/src/content/docs/oc/index.mdx | 6 +-- docs/src/content/docs/pl/index.mdx | 6 +-- docs/src/content/docs/pt-br/index.mdx | 6 +-- docs/src/content/docs/pt/index.mdx | 6 +-- docs/src/content/docs/ro/index.mdx | 6 +-- docs/src/content/docs/ru/index.mdx | 6 +-- docs/src/content/docs/sk/index.mdx | 6 +-- docs/src/content/docs/sr-latn/index.mdx | 6 +-- docs/src/content/docs/sv/index.mdx | 6 +-- docs/src/content/docs/uk/index.mdx | 6 +-- docs/src/content/docs/zh-hans/index.mdx | 6 +-- docs/src/content/docs/zh-hant/index.mdx | 6 +-- modules/Plugins/Manifest/Field.php | 2 +- modules/Plugins/Manifest/Fields.php | 16 ++++++ modules/Plugins/Manifest/Settings.php | 19 +++++++ modules/Plugins/Manifest/manifest.schema.json | 49 ++++------------- .../mocks/manifests/manifest-full-valid.json | 53 +++++++------------ 39 files changed, 153 insertions(+), 216 deletions(-) create mode 100644 modules/Plugins/Manifest/Fields.php diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1287d027..2769e8c9 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -35,8 +35,8 @@ { "fileMatch": [ "plugins/**/manifest.json", - "tests/modules/Plugins/Mocks/manifests/*.json", - "tests/modules/Plugins/Mocks/plugins/**/manifest.json" + "tests/modules/Plugins/mocks/manifests/*.json", + "tests/modules/Plugins/mocks/plugins/**/manifest.json" ], "url": "/workspaces/castopod/modules/Plugins/Manifest/manifest.schema.json" } diff --git a/docs/src/content/docs/ar/index.mdx b/docs/src/content/docs/ar/index.mdx index 6a2e5b5b..73af6712 100644 --- a/docs/src/content/docs/ar/index.mdx +++ b/docs/src/content/docs/ar/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1338,8 +1337,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/br/index.mdx b/docs/src/content/docs/br/index.mdx index ea851240..c9d76002 100644 --- a/docs/src/content/docs/br/index.mdx +++ b/docs/src/content/docs/br/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1338,8 +1337,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/ca/getting-started/docker.mdx b/docs/src/content/docs/ca/getting-started/docker.mdx index 47da2436..c001ff94 100644 --- a/docs/src/content/docs/ca/getting-started/docker.mdx +++ b/docs/src/content/docs/ca/getting-started/docker.mdx @@ -7,8 +7,8 @@ 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): el - paquet incloent Castopod i totes les dependències +- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): el paquet + incloent Castopod i totes les dependències - [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): una configuració de Nginx per a Castopod diff --git a/docs/src/content/docs/ca/index.mdx b/docs/src/content/docs/ca/index.mdx index d58c33e8..2ebc1efd 100644 --- a/docs/src/content/docs/ca/index.mdx +++ b/docs/src/content/docs/ca/index.mdx @@ -167,8 +167,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1340,8 +1339,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/da/index.mdx b/docs/src/content/docs/da/index.mdx index baf59d03..3ab5bbe8 100644 --- a/docs/src/content/docs/da/index.mdx +++ b/docs/src/content/docs/da/index.mdx @@ -167,8 +167,7 @@ Veliko hvala ovim divnim ljudima ([ključ emotikona](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1340,8 +1339,7 @@ Veliko hvala ovim divnim ljudima
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/de/index.mdx b/docs/src/content/docs/de/index.mdx index f24684b4..59bf079a 100644 --- a/docs/src/content/docs/de/index.mdx +++ b/docs/src/content/docs/de/index.mdx @@ -166,8 +166,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1339,8 +1338,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/el/index.mdx b/docs/src/content/docs/el/index.mdx index d15cf157..277854de 100644 --- a/docs/src/content/docs/el/index.mdx +++ b/docs/src/content/docs/el/index.mdx @@ -166,8 +166,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1339,8 +1338,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/es/index.mdx b/docs/src/content/docs/es/index.mdx index d833d105..c1dfb404 100644 --- a/docs/src/content/docs/es/index.mdx +++ b/docs/src/content/docs/es/index.mdx @@ -173,8 +173,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1346,8 +1345,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/eu/index.mdx b/docs/src/content/docs/eu/index.mdx index c3769fc2..5fd178fe 100644 --- a/docs/src/content/docs/eu/index.mdx +++ b/docs/src/content/docs/eu/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1338,8 +1337,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/fa/index.mdx b/docs/src/content/docs/fa/index.mdx index 3d80dbb2..423dad6c 100644 --- a/docs/src/content/docs/fa/index.mdx +++ b/docs/src/content/docs/fa/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1338,8 +1337,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/fr/index.mdx b/docs/src/content/docs/fr/index.mdx index b951ec1b..2af1916e 100644 --- a/docs/src/content/docs/fr/index.mdx +++ b/docs/src/content/docs/fr/index.mdx @@ -172,8 +172,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1345,8 +1344,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} @@ -1401,16 +1399,21 @@ backers. If you'd like to help, please consider Copyright © 2020-present, [Ad Aures](https://adaures.com/). [release]: https://code.castopod.org/adaures/castopod/-/releases -[release-badge]: https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release +[release-badge]: + https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release [license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md -[license-badge]: https://img.shields.io/github/license/ad-aures/castopod?color=blue +[license-badge]: + https://img.shields.io/github/license/ad-aures/castopod?color=blue [contributions]: https://code.castopod.org/adaures/castopod/-/issues -[contributions-badge]: https://img.shields.io/badge/contributions-welcome-brightgreen.svg +[contributions-badge]: + https://img.shields.io/badge/contributions-welcome-brightgreen.svg [semantic-release]: https://github.com/semantic-release/semantic-release -[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg +[semantic-release-badge]: + https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg [discord]: https://castopod.org/discord [discord-badge]: https://img.shields.io/badge/chat-on%20discord-7389D8 [stars]: https://github.com/ad-aures/castopod/stargazers -[stars-badge]: https://img.shields.io/github/stars/ad-aures/castopod?style=social +[stars-badge]: + https://img.shields.io/github/stars/ad-aures/castopod?style=social [crowdin]: https://translate.castopod.org/project/castopod [crowdin-badge]: https://badges.crowdin.net/castopod/localized.svg diff --git a/docs/src/content/docs/fr2/index.mdx b/docs/src/content/docs/fr2/index.mdx index b951ec1b..2af1916e 100644 --- a/docs/src/content/docs/fr2/index.mdx +++ b/docs/src/content/docs/fr2/index.mdx @@ -172,8 +172,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1345,8 +1344,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} @@ -1401,16 +1399,21 @@ backers. If you'd like to help, please consider Copyright © 2020-present, [Ad Aures](https://adaures.com/). [release]: https://code.castopod.org/adaures/castopod/-/releases -[release-badge]: https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release +[release-badge]: + https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release [license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md -[license-badge]: https://img.shields.io/github/license/ad-aures/castopod?color=blue +[license-badge]: + https://img.shields.io/github/license/ad-aures/castopod?color=blue [contributions]: https://code.castopod.org/adaures/castopod/-/issues -[contributions-badge]: https://img.shields.io/badge/contributions-welcome-brightgreen.svg +[contributions-badge]: + https://img.shields.io/badge/contributions-welcome-brightgreen.svg [semantic-release]: https://github.com/semantic-release/semantic-release -[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg +[semantic-release-badge]: + https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg [discord]: https://castopod.org/discord [discord-badge]: https://img.shields.io/badge/chat-on%20discord-7389D8 [stars]: https://github.com/ad-aures/castopod/stargazers -[stars-badge]: https://img.shields.io/github/stars/ad-aures/castopod?style=social +[stars-badge]: + https://img.shields.io/github/stars/ad-aures/castopod?style=social [crowdin]: https://translate.castopod.org/project/castopod [crowdin-badge]: https://badges.crowdin.net/castopod/localized.svg diff --git a/docs/src/content/docs/gd/index.mdx b/docs/src/content/docs/gd/index.mdx index 3d80dbb2..423dad6c 100644 --- a/docs/src/content/docs/gd/index.mdx +++ b/docs/src/content/docs/gd/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1338,8 +1337,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/gl/index.mdx b/docs/src/content/docs/gl/index.mdx index 3d80dbb2..423dad6c 100644 --- a/docs/src/content/docs/gl/index.mdx +++ b/docs/src/content/docs/gl/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1338,8 +1337,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/id/index.mdx b/docs/src/content/docs/id/index.mdx index 6e433623..72024f37 100644 --- a/docs/src/content/docs/id/index.mdx +++ b/docs/src/content/docs/id/index.mdx @@ -166,8 +166,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1339,8 +1338,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/it/index.mdx b/docs/src/content/docs/it/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/it/index.mdx +++ b/docs/src/content/docs/it/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/ja/index.mdx b/docs/src/content/docs/ja/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/ja/index.mdx +++ b/docs/src/content/docs/ja/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/kk/index.mdx b/docs/src/content/docs/kk/index.mdx index 3d80dbb2..423dad6c 100644 --- a/docs/src/content/docs/kk/index.mdx +++ b/docs/src/content/docs/kk/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1338,8 +1337,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/ko/index.mdx b/docs/src/content/docs/ko/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/ko/index.mdx +++ b/docs/src/content/docs/ko/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/nl/index.mdx b/docs/src/content/docs/nl/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/nl/index.mdx +++ b/docs/src/content/docs/nl/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/nn-no/index.mdx b/docs/src/content/docs/nn-no/index.mdx index f8f20400..e4b37a1b 100644 --- a/docs/src/content/docs/nn-no/index.mdx +++ b/docs/src/content/docs/nn-no/index.mdx @@ -170,8 +170,7 @@ Mange takk til dei flotte folka på ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1367,8 +1366,7 @@ Mange takk til dei flotte folka på
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/oc/index.mdx b/docs/src/content/docs/oc/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/oc/index.mdx +++ b/docs/src/content/docs/oc/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/pl/index.mdx b/docs/src/content/docs/pl/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/pl/index.mdx +++ b/docs/src/content/docs/pl/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/pt-br/index.mdx b/docs/src/content/docs/pt-br/index.mdx index b9a2cc4d..aed0d7a4 100644 --- a/docs/src/content/docs/pt-br/index.mdx +++ b/docs/src/content/docs/pt-br/index.mdx @@ -169,8 +169,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1342,8 +1341,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/pt/index.mdx b/docs/src/content/docs/pt/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/pt/index.mdx +++ b/docs/src/content/docs/pt/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/ro/index.mdx b/docs/src/content/docs/ro/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/ro/index.mdx +++ b/docs/src/content/docs/ro/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/ru/index.mdx b/docs/src/content/docs/ru/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/ru/index.mdx +++ b/docs/src/content/docs/ru/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/sk/index.mdx b/docs/src/content/docs/sk/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/sk/index.mdx +++ b/docs/src/content/docs/sk/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/sr-latn/index.mdx b/docs/src/content/docs/sr-latn/index.mdx index baf59d03..3ab5bbe8 100644 --- a/docs/src/content/docs/sr-latn/index.mdx +++ b/docs/src/content/docs/sr-latn/index.mdx @@ -167,8 +167,7 @@ Veliko hvala ovim divnim ljudima ([ključ emotikona](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1340,8 +1339,7 @@ Veliko hvala ovim divnim ljudima
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/sv/index.mdx b/docs/src/content/docs/sv/index.mdx index dbd74fec..0875f240 100644 --- a/docs/src/content/docs/sv/index.mdx +++ b/docs/src/content/docs/sv/index.mdx @@ -166,8 +166,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1339,8 +1338,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/uk/index.mdx b/docs/src/content/docs/uk/index.mdx index 3f1ec043..6b94c044 100644 --- a/docs/src/content/docs/uk/index.mdx +++ b/docs/src/content/docs/uk/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1306,8 +1305,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/zh-hans/index.mdx b/docs/src/content/docs/zh-hans/index.mdx index d14369b0..962f8c3a 100644 --- a/docs/src/content/docs/zh-hans/index.mdx +++ b/docs/src/content/docs/zh-hans/index.mdx @@ -142,8 +142,7 @@ Castopod 已经通过了一项行为准则,并希望所有的参与者都能 感谢这些了不起的人([表情符号键](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1315,8 +1314,7 @@ Castopod 已经通过了一项行为准则,并希望所有的参与者都能
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/docs/src/content/docs/zh-hant/index.mdx b/docs/src/content/docs/zh-hant/index.mdx index c3769fc2..5fd178fe 100644 --- a/docs/src/content/docs/zh-hant/index.mdx +++ b/docs/src/content/docs/zh-hant/index.mdx @@ -165,8 +165,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): {/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */} -{/* prettier-ignore-start */} -{/* markdownlint-disable */} +{/* prettier-ignore-start */} {/* markdownlint-disable */} @@ -1338,8 +1337,7 @@ Thanks goes to these wonderful people
-{/* markdownlint-restore */} -{/* prettier-ignore-end */} +{/* markdownlint-restore */} {/* prettier-ignore-end */} {/* ALL-CONTRIBUTORS-LIST:END */} diff --git a/modules/Plugins/Manifest/Field.php b/modules/Plugins/Manifest/Field.php index fac152f3..74f0fde3 100644 --- a/modules/Plugins/Manifest/Field.php +++ b/modules/Plugins/Manifest/Field.php @@ -5,8 +5,8 @@ declare(strict_types=1); namespace Modules\Plugins\Manifest; /** - * @property 'text'|'email'|'url'|'markdown'|'number'|'switch' $type * @property string $key + * @property 'text'|'email'|'url'|'markdown'|'number'|'switch' $type * @property string $label * @property string $hint * @property string $helper diff --git a/modules/Plugins/Manifest/Fields.php b/modules/Plugins/Manifest/Fields.php new file mode 100644 index 00000000..08db788d --- /dev/null +++ b/modules/Plugins/Manifest/Fields.php @@ -0,0 +1,16 @@ + $fields) { + $newFields = []; + foreach ($fields as $fieldKey => $field) { + $field['key'] = $fieldKey; + $newFields[] = $field; + } + + $newData[$key] = $newFields; + } + + parent::loadData($newData); + } } diff --git a/modules/Plugins/Manifest/manifest.schema.json b/modules/Plugins/Manifest/manifest.schema.json index 9d1629f0..0d99b56d 100644 --- a/modules/Plugins/Manifest/manifest.schema.json +++ b/modules/Plugins/Manifest/manifest.schema.json @@ -101,28 +101,13 @@ "type": "object", "properties": { "general": { - "type": "array", - "items": { - "$ref": "#/$defs/field" - }, - "minItems": 1, - "uniqueItems": true + "$ref": "#/$defs/fields" }, "podcast": { - "type": "array", - "items": { - "$ref": "#/$defs/field" - }, - "minItems": 1, - "uniqueItems": true + "$ref": "#/$defs/fields" }, "episode": { - "type": "array", - "items": { - "$ref": "#/$defs/field" - }, - "minItems": 1, - "uniqueItems": true + "$ref": "#/$defs/fields" } } }, @@ -170,24 +155,12 @@ } } }, - "section": { + "fields": { "type": "object", - "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "fields": { - "type": "array", - "items": { - "$ref": "#/$defs/field" - }, - "minItems": 1, - "uniqueItems": true - } - } + "patternProperties": { + "^[A-Za-z]+[\\w\\-\\:\\.]*$": { "$ref": "#/$defs/field" } + }, + "additionalProperties": false }, "field": { "type": "object", @@ -209,10 +182,6 @@ ], "default": "text" }, - "key": { - "type": "string", - "pattern": "^[A-Za-z]+[\\w\\-\\:\\.]*$" - }, "label": { "type": "string" }, @@ -234,7 +203,7 @@ "uniqueItems": true } }, - "required": ["key", "label"], + "required": ["label"], "additionalProperties": false, "allOf": [ { "$ref": "#/$defs/field-multiple-implies-options-is-required" } diff --git a/tests/modules/Plugins/mocks/manifests/manifest-full-valid.json b/tests/modules/Plugins/mocks/manifests/manifest-full-valid.json index 28434aa4..0d8a9f60 100644 --- a/tests/modules/Plugins/mocks/manifests/manifest-full-valid.json +++ b/tests/modules/Plugins/mocks/manifests/manifest-full-valid.json @@ -14,10 +14,9 @@ "keywords": ["seo", "analytics"], "hooks": ["rssAfterChannel"], "settings": { - "general": [ - { + "general": { + "name": { "type": "radio-group", - "key": "name", "label": "Name", "options": [ { "label": "Foo", "value": "foo", "hint": "This is a hint." }, @@ -25,35 +24,29 @@ { "label": "Baz", "value": "baz" } ] }, - { + "email": { "type": "email", - "key": "email", "label": "Email" }, - { + "url": { "type": "url", - "key": "url", "label": "Your website URL" }, - { + "toggler": { "type": "toggler", - "key": "toggler", "label": "Toggle this?" }, - { + "number": { "type": "number", - "key": "number", "label": "Number" }, - { + "datetime": { "type": "datetime", - "key": "datetime", "label": "Enter a date", "optional": true }, - { + "select": { "type": "select", - "key": "select", "label": "Select something", "options": [ { @@ -70,9 +63,8 @@ } ] }, - { + "select-multiple": { "type": "select-multiple", - "key": "select-multiple", "label": "Select multiple things", "options": [ { @@ -89,9 +81,8 @@ } ] }, - { + "radio-group": { "type": "radio-group", - "key": "radio-group", "label": "Radio Group", "helper": "This is a helper.", "options": [ @@ -109,35 +100,31 @@ } ] }, - { + "textarea": { "type": "textarea", - "key": "texting", "label": "Your text", "hint": "This is a hint." }, - { + "markdown": { "type": "markdown", - "key": "hello", - "label": "Name Podcast", + "label": "Markdown", "hint": "This is a hint.", "optional": true } - ], - "podcast": [ - { + }, + "podcast": { + "name": { "type": "text", - "key": "name", "label": "Name Podcast", "hint": "This is a hint." } - ], - "episode": [ - { + }, + "episode": { + "name": { "type": "text", - "key": "name", "label": "Name Episode", "helper": "This is a helper." } - ] + } } } From e417d45b14bce76bf32bcf77864a9599202a37ec Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 10 Jun 2024 14:55:10 +0000 Subject: [PATCH 028/210] docs(plugins): fill up rest of manifest and hooks reference + creating a plugin --- docs/package.json | 10 +- docs/pnpm-lock.yaml | 963 ++++++++++-------- docs/src/content/docs/en/plugins/create.mdx | 74 +- docs/src/content/docs/en/plugins/helpers.mdx | 3 - docs/src/content/docs/en/plugins/hooks.mdx | 33 +- docs/src/content/docs/en/plugins/index.mdx | 94 +- docs/src/content/docs/en/plugins/manifest.mdx | 83 +- modules/Plugins/Manifest/Field.php | 18 + modules/Plugins/Manifest/Fields.php | 16 - modules/Plugins/Manifest/manifest.schema.json | 14 +- .../manifests/manifest-full-invalid.json | 116 +-- .../mocks/manifests/manifest-full-valid.json | 67 +- 12 files changed, 867 insertions(+), 624 deletions(-) delete mode 100644 docs/src/content/docs/en/plugins/helpers.mdx delete mode 100644 modules/Plugins/Manifest/Fields.php diff --git a/docs/package.json b/docs/package.json index c995429a..d6fc1e20 100644 --- a/docs/package.json +++ b/docs/package.json @@ -12,15 +12,15 @@ }, "dependencies": { "@astrojs/check": "^0.7.0", - "@astrojs/starlight": "^0.22.4", - "@astrojs/starlight-tailwind": "^2.0.2", + "@astrojs/starlight": "^0.24.0", + "@astrojs/starlight-tailwind": "^2.0.3", "@astrojs/tailwind": "^5.1.0", "@fontsource/inter": "^5.0.18", "@fontsource/rubik": "^5.0.20", - "astro": "^4.8.6", + "astro": "^4.10.1", "autoprefixer": "^10.4.19", - "cssnano": "^7.0.1", - "postcss-preset-env": "^9.5.13", + "cssnano": "^7.0.2", + "postcss-preset-env": "^9.5.14", "sharp": "^0.33.4", "tailwindcss": "^3.4.3", "typescript": "^5.4.5" diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 2f88765a..c59d5294 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -11,14 +11,14 @@ importers: specifier: ^0.7.0 version: 0.7.0(typescript@5.4.5) "@astrojs/starlight": - specifier: ^0.22.4 - version: 0.22.4(astro@4.8.6(typescript@5.4.5)) + specifier: ^0.24.0 + version: 0.24.0(astro@4.10.1(typescript@5.4.5)) "@astrojs/starlight-tailwind": - specifier: ^2.0.2 - version: 2.0.2(@astrojs/starlight@0.22.4(astro@4.8.6(typescript@5.4.5)))(@astrojs/tailwind@5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3))(tailwindcss@3.4.3) + specifier: ^2.0.3 + version: 2.0.3(@astrojs/starlight@0.24.0(astro@4.10.1(typescript@5.4.5)))(@astrojs/tailwind@5.1.0(astro@4.10.1(typescript@5.4.5))(tailwindcss@3.4.3))(tailwindcss@3.4.3) "@astrojs/tailwind": specifier: ^5.1.0 - version: 5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3) + version: 5.1.0(astro@4.10.1(typescript@5.4.5))(tailwindcss@3.4.3) "@fontsource/inter": specifier: ^5.0.18 version: 5.0.18 @@ -26,17 +26,17 @@ importers: specifier: ^5.0.20 version: 5.0.20 astro: - specifier: ^4.8.6 - version: 4.8.6(typescript@5.4.5) + specifier: ^4.10.1 + version: 4.10.1(typescript@5.4.5) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.33) cssnano: - specifier: ^7.0.1 - version: 7.0.1(postcss@8.4.33) + specifier: ^7.0.2 + version: 7.0.2(postcss@8.4.33) postcss-preset-env: - specifier: ^9.5.13 - version: 9.5.13(postcss@8.4.33) + specifier: ^9.5.14 + version: 9.5.14(postcss@8.4.33) sharp: specifier: ^0.33.4 version: 0.33.4 @@ -104,14 +104,14 @@ packages: integrity: sha512-S6Z3K2hOB7MfjeDoHsotnP/q2UsnEDB8NlNAaCjMDsGBZfTUbWxyLW3CaphEWw08f6KLZi2ibK9yC3BaMhh2NQ==, } - "@astrojs/mdx@2.3.1": + "@astrojs/mdx@3.1.0": resolution: { - integrity: sha512-BOQFKD2Pi9cRntNQJlpF2fh4xV8doNpmVy9NKI95r4jsitrY4X5aTOhAowi+fkQgP/zW1A4HwCyQ6Pdam6z8zQ==, + integrity: sha512-yuGDaOcCAfYgLQvUAlJDezYGK4twHlzW1Kvpyg3inxtDJuAsHdyVyYLWl0Wo5nwkyrbZktdrjnoW5scqzoAqAg==, } engines: { node: ^18.17.1 || ^20.3.0 || >=21.0.0 } peerDependencies: - astro: ^4.0.0 + astro: ^4.8.0 "@astrojs/prism@3.1.0": resolution: @@ -126,23 +126,23 @@ packages: integrity: sha512-60eLzNjMza3ABypiQPUC6ElOSZNZeY5CwSwgJ03hfeonl+Db9x12CCzBFdTw7A5Mq+O54xEZVUrR0tB+yWgX8w==, } - "@astrojs/starlight-tailwind@2.0.2": + "@astrojs/starlight-tailwind@2.0.3": resolution: { - integrity: sha512-XJccwk6VLeQZuGQwoiLZLNAPCn2fQobtl10Ra2c2yDLjdYEActcqy0eidZbouAwGlbS9I0iJogeGjHQJ2Casjg==, + integrity: sha512-ZwbdXS/9rxYlo3tKZoTZoBPUnaaqek02b341dHwOkmMT0lIR2w+8k0mRUGxnRaYtPdMcaL+nYFd8RUa8sjdyRg==, } peerDependencies: "@astrojs/starlight": ">=0.9.0" "@astrojs/tailwind": ^5.0.0 tailwindcss: ^3.3.3 - "@astrojs/starlight@0.22.4": + "@astrojs/starlight@0.24.0": resolution: { - integrity: sha512-AgiVEVv2ZkGHkoJcjY0azXG2K7892i+z4FpKtasnESTciomO91I/X9vAfKfHxmTxdVP5BGPxBFVi0Bp2X4Lxvg==, + integrity: sha512-YUBf7TgDUMRcyoZ8S8hlnPuEvgqFuB5F7tQUwPK5GwkTC1E+gMW8zx9J/RgJAXNjQSi19s73nuF19zw/QSy5tw==, } peerDependencies: - astro: ^4.2.7 + astro: ^4.8.6 "@astrojs/tailwind@5.1.0": resolution: @@ -160,199 +160,185 @@ packages: } engines: { node: ^18.17.1 || ^20.3.0 || >=21.0.0 } - "@babel/code-frame@7.24.2": + "@babel/code-frame@7.24.7": resolution: { - integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==, + integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==, } engines: { node: ">=6.9.0" } - "@babel/compat-data@7.24.4": + "@babel/compat-data@7.24.7": resolution: { - integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==, + integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==, } engines: { node: ">=6.9.0" } - "@babel/core@7.24.5": + "@babel/core@7.24.7": resolution: { - integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==, + integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==, } engines: { node: ">=6.9.0" } - "@babel/generator@7.24.5": + "@babel/generator@7.24.7": resolution: { - integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==, + integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==, } engines: { node: ">=6.9.0" } - "@babel/helper-annotate-as-pure@7.22.5": + "@babel/helper-annotate-as-pure@7.24.7": resolution: { - integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==, + integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==, } engines: { node: ">=6.9.0" } - "@babel/helper-compilation-targets@7.23.6": + "@babel/helper-compilation-targets@7.24.7": resolution: { - integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==, + integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==, } engines: { node: ">=6.9.0" } - "@babel/helper-environment-visitor@7.22.20": + "@babel/helper-environment-visitor@7.24.7": resolution: { - integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, + integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==, } engines: { node: ">=6.9.0" } - "@babel/helper-function-name@7.23.0": + "@babel/helper-function-name@7.24.7": resolution: { - integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, + integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==, } engines: { node: ">=6.9.0" } - "@babel/helper-hoist-variables@7.22.5": + "@babel/helper-hoist-variables@7.24.7": resolution: { - integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, + integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==, } engines: { node: ">=6.9.0" } - "@babel/helper-module-imports@7.22.15": + "@babel/helper-module-imports@7.24.7": resolution: { - integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==, + integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==, } engines: { node: ">=6.9.0" } - "@babel/helper-module-imports@7.24.3": + "@babel/helper-module-transforms@7.24.7": resolution: { - integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-transforms@7.24.5": - resolution: - { - integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==, + integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0 - "@babel/helper-plugin-utils@7.22.5": + "@babel/helper-plugin-utils@7.24.7": resolution: { - integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==, + integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==, } engines: { node: ">=6.9.0" } - "@babel/helper-simple-access@7.24.5": + "@babel/helper-simple-access@7.24.7": resolution: { - integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==, + integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==, } engines: { node: ">=6.9.0" } - "@babel/helper-split-export-declaration@7.24.5": + "@babel/helper-split-export-declaration@7.24.7": resolution: { - integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==, + integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==, } engines: { node: ">=6.9.0" } - "@babel/helper-string-parser@7.24.1": + "@babel/helper-string-parser@7.24.7": resolution: { - integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==, + integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==, } engines: { node: ">=6.9.0" } - "@babel/helper-validator-identifier@7.24.5": + "@babel/helper-validator-identifier@7.24.7": resolution: { - integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==, + integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==, } engines: { node: ">=6.9.0" } - "@babel/helper-validator-option@7.23.5": + "@babel/helper-validator-option@7.24.7": resolution: { - integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==, + integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==, } engines: { node: ">=6.9.0" } - "@babel/helpers@7.24.5": + "@babel/helpers@7.24.7": resolution: { - integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==, + integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==, } engines: { node: ">=6.9.0" } - "@babel/highlight@7.24.5": + "@babel/highlight@7.24.7": resolution: { - integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==, + integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==, } engines: { node: ">=6.9.0" } - "@babel/parser@7.24.5": + "@babel/parser@7.24.7": resolution: { - integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==, + integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==, } engines: { node: ">=6.0.0" } hasBin: true - "@babel/plugin-syntax-jsx@7.23.3": + "@babel/plugin-syntax-jsx@7.24.7": resolution: { - integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==, + integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/plugin-transform-react-jsx@7.23.4": + "@babel/plugin-transform-react-jsx@7.24.7": resolution: { - integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==, + integrity: sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==, } engines: { node: ">=6.9.0" } peerDependencies: "@babel/core": ^7.0.0-0 - "@babel/template@7.22.15": + "@babel/template@7.24.7": resolution: { - integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==, + integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==, } engines: { node: ">=6.9.0" } - "@babel/template@7.24.0": + "@babel/traverse@7.24.7": resolution: { - integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==, + integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==, } engines: { node: ">=6.9.0" } - "@babel/traverse@7.24.5": + "@babel/types@7.24.7": resolution: { - integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==, - } - engines: { node: ">=6.9.0" } - - "@babel/types@7.24.5": - resolution: - { - integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==, + integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==, } engines: { node: ">=6.9.0" } @@ -771,10 +757,10 @@ packages: cpu: [ppc64] os: [aix] - "@esbuild/aix-ppc64@0.21.3": + "@esbuild/aix-ppc64@0.21.4": resolution: { - integrity: sha512-yTgnwQpFVYfvvo4SvRFB0SwrW8YjOxEoT7wfMT7Ol5v7v5LDNvSGo67aExmxOb87nQNeWPVvaGBNfQ7BXcrZ9w==, + integrity: sha512-Zrm+B33R4LWPLjDEVnEqt2+SLTATlru1q/xYKVn8oVTbiRBGmK2VIMoIYGJDGyftnGaC788IuzGFAlb7IQ0Y8A==, } engines: { node: ">=12" } cpu: [ppc64] @@ -789,10 +775,10 @@ packages: cpu: [arm64] os: [android] - "@esbuild/android-arm64@0.21.3": + "@esbuild/android-arm64@0.21.4": resolution: { - integrity: sha512-c+ty9necz3zB1Y+d/N+mC6KVVkGUUOcm4ZmT5i/Fk5arOaY3i6CA3P5wo/7+XzV8cb4GrI/Zjp8NuOQ9Lfsosw==, + integrity: sha512-fYFnz+ObClJ3dNiITySBUx+oNalYUT18/AryMxfovLkYWbutXsct3Wz2ZWAcGGppp+RVVX5FiXeLYGi97umisA==, } engines: { node: ">=12" } cpu: [arm64] @@ -807,10 +793,10 @@ packages: cpu: [arm] os: [android] - "@esbuild/android-arm@0.21.3": + "@esbuild/android-arm@0.21.4": resolution: { - integrity: sha512-bviJOLMgurLJtF1/mAoJLxDZDL6oU5/ztMHnJQRejbJrSc9FFu0QoUoFhvi6qSKJEw9y5oGyvr9fuDtzJ30rNQ==, + integrity: sha512-E7H/yTd8kGQfY4z9t3nRPk/hrhaCajfA3YSQSBrst8B+3uTcgsi8N+ZWYCaeIDsiVs6m65JPCaQN/DxBRclF3A==, } engines: { node: ">=12" } cpu: [arm] @@ -825,10 +811,10 @@ packages: cpu: [x64] os: [android] - "@esbuild/android-x64@0.21.3": + "@esbuild/android-x64@0.21.4": resolution: { - integrity: sha512-JReHfYCRK3FVX4Ra+y5EBH1b9e16TV2OxrPAvzMsGeES0X2Ndm9ImQRI4Ket757vhc5XBOuGperw63upesclRw==, + integrity: sha512-mDqmlge3hFbEPbCWxp4fM6hqq7aZfLEHZAKGP9viq9wMUBVQx202aDIfc3l+d2cKhUJM741VrCXEzRFhPDKH3Q==, } engines: { node: ">=12" } cpu: [x64] @@ -843,10 +829,10 @@ packages: cpu: [arm64] os: [darwin] - "@esbuild/darwin-arm64@0.21.3": + "@esbuild/darwin-arm64@0.21.4": resolution: { - integrity: sha512-U3fuQ0xNiAkXOmQ6w5dKpEvXQRSpHOnbw7gEfHCRXPeTKW9sBzVck6C5Yneb8LfJm0l6le4NQfkNPnWMSlTFUQ==, + integrity: sha512-72eaIrDZDSiWqpmCzVaBD58c8ea8cw/U0fq/PPOTqE3c53D0xVMRt2ooIABZ6/wj99Y+h4ksT/+I+srCDLU9TA==, } engines: { node: ">=12" } cpu: [arm64] @@ -861,10 +847,10 @@ packages: cpu: [x64] os: [darwin] - "@esbuild/darwin-x64@0.21.3": + "@esbuild/darwin-x64@0.21.4": resolution: { - integrity: sha512-3m1CEB7F07s19wmaMNI2KANLcnaqryJxO1fXHUV5j1rWn+wMxdUYoPyO2TnAbfRZdi7ADRwJClmOwgT13qlP3Q==, + integrity: sha512-uBsuwRMehGmw1JC7Vecu/upOjTsMhgahmDkWhGLWxIgUn2x/Y4tIwUZngsmVb6XyPSTXJYS4YiASKPcm9Zitag==, } engines: { node: ">=12" } cpu: [x64] @@ -879,10 +865,10 @@ packages: cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-arm64@0.21.3": + "@esbuild/freebsd-arm64@0.21.4": resolution: { - integrity: sha512-fsNAAl5pU6wmKHq91cHWQT0Fz0vtyE1JauMzKotrwqIKAswwP5cpHUCxZNSTuA/JlqtScq20/5KZ+TxQdovU/g==, + integrity: sha512-8JfuSC6YMSAEIZIWNL3GtdUT5NhUA/CMUCpZdDRolUXNAXEE/Vbpe6qlGLpfThtY5NwXq8Hi4nJy4YfPh+TwAg==, } engines: { node: ">=12" } cpu: [arm64] @@ -897,10 +883,10 @@ packages: cpu: [x64] os: [freebsd] - "@esbuild/freebsd-x64@0.21.3": + "@esbuild/freebsd-x64@0.21.4": resolution: { - integrity: sha512-tci+UJ4zP5EGF4rp8XlZIdq1q1a/1h9XuronfxTMCNBslpCtmk97Q/5qqy1Mu4zIc0yswN/yP/BLX+NTUC1bXA==, + integrity: sha512-8d9y9eQhxv4ef7JmXny7591P/PYsDFc4+STaxC1GBv0tMyCdyWfXu2jBuqRsyhY8uL2HU8uPyscgE2KxCY9imQ==, } engines: { node: ">=12" } cpu: [x64] @@ -915,10 +901,10 @@ packages: cpu: [arm64] os: [linux] - "@esbuild/linux-arm64@0.21.3": + "@esbuild/linux-arm64@0.21.4": resolution: { - integrity: sha512-vvG6R5g5ieB4eCJBQevyDMb31LMHthLpXTc2IGkFnPWS/GzIFDnaYFp558O+XybTmYrVjxnryru7QRleJvmZ6Q==, + integrity: sha512-/GLD2orjNU50v9PcxNpYZi+y8dJ7e7/LhQukN3S4jNDXCKkyyiyAz9zDw3siZ7Eh1tRcnCHAo/WcqKMzmi4eMQ==, } engines: { node: ">=12" } cpu: [arm64] @@ -933,10 +919,10 @@ packages: cpu: [arm] os: [linux] - "@esbuild/linux-arm@0.21.3": + "@esbuild/linux-arm@0.21.4": resolution: { - integrity: sha512-f6kz2QpSuyHHg01cDawj0vkyMwuIvN62UAguQfnNVzbge2uWLhA7TCXOn83DT0ZvyJmBI943MItgTovUob36SQ==, + integrity: sha512-2rqFFefpYmpMs+FWjkzSgXg5vViocqpq5a1PSRgT0AvSgxoXmGF17qfGAzKedg6wAwyM7UltrKVo9kxaJLMF/g==, } engines: { node: ">=12" } cpu: [arm] @@ -951,10 +937,10 @@ packages: cpu: [ia32] os: [linux] - "@esbuild/linux-ia32@0.21.3": + "@esbuild/linux-ia32@0.21.4": resolution: { - integrity: sha512-HjCWhH7K96Na+66TacDLJmOI9R8iDWDDiqe17C7znGvvE4sW1ECt9ly0AJ3dJH62jHyVqW9xpxZEU1jKdt+29A==, + integrity: sha512-pNftBl7m/tFG3t2m/tSjuYeWIffzwAZT9m08+9DPLizxVOsUl8DdFzn9HvJrTQwe3wvJnwTdl92AonY36w/25g==, } engines: { node: ">=12" } cpu: [ia32] @@ -969,10 +955,10 @@ packages: cpu: [loong64] os: [linux] - "@esbuild/linux-loong64@0.21.3": + "@esbuild/linux-loong64@0.21.4": resolution: { - integrity: sha512-BGpimEccmHBZRcAhdlRIxMp7x9PyJxUtj7apL2IuoG9VxvU/l/v1z015nFs7Si7tXUwEsvjc1rOJdZCn4QTU+Q==, + integrity: sha512-cSD2gzCK5LuVX+hszzXQzlWya6c7hilO71L9h4KHwqI4qeqZ57bAtkgcC2YioXjsbfAv4lPn3qe3b00Zt+jIfQ==, } engines: { node: ">=12" } cpu: [loong64] @@ -987,10 +973,10 @@ packages: cpu: [mips64el] os: [linux] - "@esbuild/linux-mips64el@0.21.3": + "@esbuild/linux-mips64el@0.21.4": resolution: { - integrity: sha512-5rMOWkp7FQGtAH3QJddP4w3s47iT20hwftqdm7b+loe95o8JU8ro3qZbhgMRy0VuFU0DizymF1pBKkn3YHWtsw==, + integrity: sha512-qtzAd3BJh7UdbiXCrg6npWLYU0YpufsV9XlufKhMhYMJGJCdfX/G6+PNd0+v877X1JG5VmjBLUiFB0o8EUSicA==, } engines: { node: ">=12" } cpu: [mips64el] @@ -1005,10 +991,10 @@ packages: cpu: [ppc64] os: [linux] - "@esbuild/linux-ppc64@0.21.3": + "@esbuild/linux-ppc64@0.21.4": resolution: { - integrity: sha512-h0zj1ldel89V5sjPLo5H1SyMzp4VrgN1tPkN29TmjvO1/r0MuMRwJxL8QY05SmfsZRs6TF0c/IDH3u7XYYmbAg==, + integrity: sha512-yB8AYzOTaL0D5+2a4xEy7OVvbcypvDR05MsB/VVPVA7nL4hc5w5Dyd/ddnayStDgJE59fAgNEOdLhBxjfx5+dg==, } engines: { node: ">=12" } cpu: [ppc64] @@ -1023,10 +1009,10 @@ packages: cpu: [riscv64] os: [linux] - "@esbuild/linux-riscv64@0.21.3": + "@esbuild/linux-riscv64@0.21.4": resolution: { - integrity: sha512-dkAKcTsTJ+CRX6bnO17qDJbLoW37npd5gSNtSzjYQr0svghLJYGYB0NF1SNcU1vDcjXLYS5pO4qOW4YbFama4A==, + integrity: sha512-Y5AgOuVzPjQdgU59ramLoqSSiXddu7F3F+LI5hYy/d1UHN7K5oLzYBDZe23QmQJ9PIVUXwOdKJ/jZahPdxzm9w==, } engines: { node: ">=12" } cpu: [riscv64] @@ -1041,10 +1027,10 @@ packages: cpu: [s390x] os: [linux] - "@esbuild/linux-s390x@0.21.3": + "@esbuild/linux-s390x@0.21.4": resolution: { - integrity: sha512-vnD1YUkovEdnZWEuMmy2X2JmzsHQqPpZElXx6dxENcIwTu+Cu5ERax6+Ke1QsE814Zf3c6rxCfwQdCTQ7tPuXA==, + integrity: sha512-Iqc/l/FFwtt8FoTK9riYv9zQNms7B8u+vAI/rxKuN10HgQIXaPzKZc479lZ0x6+vKVQbu55GdpYpeNWzjOhgbA==, } engines: { node: ">=12" } cpu: [s390x] @@ -1059,10 +1045,10 @@ packages: cpu: [x64] os: [linux] - "@esbuild/linux-x64@0.21.3": + "@esbuild/linux-x64@0.21.4": resolution: { - integrity: sha512-IOXOIm9WaK7plL2gMhsWJd+l2bfrhfilv0uPTptoRoSb2p09RghhQQp9YY6ZJhk/kqmeRt6siRdMSLLwzuT0KQ==, + integrity: sha512-Td9jv782UMAFsuLZINfUpoF5mZIbAj+jv1YVtE58rFtfvoKRiKSkRGQfHTgKamLVT/fO7203bHa3wU122V/Bdg==, } engines: { node: ">=12" } cpu: [x64] @@ -1077,10 +1063,10 @@ packages: cpu: [x64] os: [netbsd] - "@esbuild/netbsd-x64@0.21.3": + "@esbuild/netbsd-x64@0.21.4": resolution: { - integrity: sha512-uTgCwsvQ5+vCQnqM//EfDSuomo2LhdWhFPS8VL8xKf+PKTCrcT/2kPPoWMTs22aB63MLdGMJiE3f1PHvCDmUOw==, + integrity: sha512-Awn38oSXxsPMQxaV0Ipb7W/gxZtk5Tx3+W+rAPdZkyEhQ6968r9NvtkjhnhbEgWXYbgV+JEONJ6PcdBS+nlcpA==, } engines: { node: ">=12" } cpu: [x64] @@ -1095,10 +1081,10 @@ packages: cpu: [x64] os: [openbsd] - "@esbuild/openbsd-x64@0.21.3": + "@esbuild/openbsd-x64@0.21.4": resolution: { - integrity: sha512-vNAkR17Ub2MgEud2Wag/OE4HTSI6zlb291UYzHez/psiKarp0J8PKGDnAhMBcHFoOHMXHfExzmjMojJNbAStrQ==, + integrity: sha512-IsUmQeCY0aU374R82fxIPu6vkOybWIMc3hVGZ3ChRwL9hA1TwY+tS0lgFWV5+F1+1ssuvvXt3HFqe8roCip8Hg==, } engines: { node: ">=12" } cpu: [x64] @@ -1113,10 +1099,10 @@ packages: cpu: [x64] os: [sunos] - "@esbuild/sunos-x64@0.21.3": + "@esbuild/sunos-x64@0.21.4": resolution: { - integrity: sha512-W8H9jlGiSBomkgmouaRoTXo49j4w4Kfbl6I1bIdO/vT0+0u4f20ko3ELzV3hPI6XV6JNBVX+8BC+ajHkvffIJA==, + integrity: sha512-hsKhgZ4teLUaDA6FG/QIu2q0rI6I36tZVfM4DBZv3BG0mkMIdEnMbhc4xwLvLJSS22uWmaVkFkqWgIS0gPIm+A==, } engines: { node: ">=12" } cpu: [x64] @@ -1131,10 +1117,10 @@ packages: cpu: [arm64] os: [win32] - "@esbuild/win32-arm64@0.21.3": + "@esbuild/win32-arm64@0.21.4": resolution: { - integrity: sha512-EjEomwyLSCg8Ag3LDILIqYCZAq/y3diJ04PnqGRgq8/4O3VNlXyMd54j/saShaN4h5o5mivOjAzmU6C3X4v0xw==, + integrity: sha512-UUfMgMoXPoA/bvGUNfUBFLCh0gt9dxZYIx9W4rfJr7+hKe5jxxHmfOK8YSH4qsHLLN4Ck8JZ+v7Q5fIm1huErg==, } engines: { node: ">=12" } cpu: [arm64] @@ -1149,10 +1135,10 @@ packages: cpu: [ia32] os: [win32] - "@esbuild/win32-ia32@0.21.3": + "@esbuild/win32-ia32@0.21.4": resolution: { - integrity: sha512-WGiE/GgbsEwR33++5rzjiYsKyHywE8QSZPF7Rfx9EBfK3Qn3xyR6IjyCr5Uk38Kg8fG4/2phN7sXp4NPWd3fcw==, + integrity: sha512-yIxbspZb5kGCAHWm8dexALQ9en1IYDfErzjSEq1KzXFniHv019VT3mNtTK7t8qdy4TwT6QYHI9sEZabONHg+aw==, } engines: { node: ">=12" } cpu: [ia32] @@ -1167,10 +1153,10 @@ packages: cpu: [x64] os: [win32] - "@esbuild/win32-x64@0.21.3": + "@esbuild/win32-x64@0.21.4": resolution: { - integrity: sha512-xRxC0jaJWDLYvcUvjQmHCJSfMrgmUuvsoXgDeU/wTorQ1ngDdUBuFtgY3W1Pc5sprGAvZBtWdJX7RPg/iZZUqA==, + integrity: sha512-sywLRD3UK/qRJt0oBwdpYLBibk7KiRfbswmWRDabuncQYSlf8aLEEUor/oP6KRz8KEG+HoiVLBhPRD5JWjS8Sg==, } engines: { node: ">=12" } cpu: [x64] @@ -1522,10 +1508,10 @@ packages: integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, } - "@mdx-js/mdx@3.0.0": + "@mdx-js/mdx@3.0.1": resolution: { - integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==, + integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==, } "@nodelib/fs.scandir@2.1.5": @@ -1729,6 +1715,12 @@ packages: integrity: sha512-wSAOgaz48GmhILFElMCeQypSZmj6Ru6DttOOtl3KNkdJ17ApQuGNCfzpk4cClasVrnIu45++2DBwG4LNMQAfaA==, } + "@shikijs/core@1.6.3": + resolution: + { + integrity: sha512-QnJKHFUW95GnlJLJGP6QLx4M69HM0KlXk+R2Y8lr/x4nAx1Yb/lsuxq4XwybuUjTxbJk+BT0g/kvn0bcsjGGHg==, + } + "@trysound/sax@0.2.0": resolution: { @@ -1820,6 +1812,12 @@ packages: integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==, } + "@types/nlcst@2.0.3": + resolution: + { + integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==, + } + "@types/node@17.0.45": resolution: { @@ -1920,14 +1918,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.11.2: - resolution: - { - integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==, - } - engines: { node: ">=0.4.0" } - hasBin: true - acorn@8.11.3: resolution: { @@ -2035,10 +2025,10 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^3.3.0 - astro@4.8.6: + astro@4.10.1: resolution: { - integrity: sha512-psHIfK+e+bMPhRwghV9yCGH/uc1jvY4DHmDZdoEepax9yA7kzYH0wt3dpkqlcrO2zxl5jzSC3DmqZfkD6wnW9A==, + integrity: sha512-7bbnUX1CW+12suz0Do8ef1CihqVjDyUW/H/0piNHZyBE3W/VFt5GP5ZxlPzzJLoGtaXif0aXJ4iPurEem2LpdA==, } engines: { node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0" } @@ -2442,10 +2432,10 @@ packages: engines: { node: ">=4" } hasBin: true - cssnano-preset-default@7.0.1: + cssnano-preset-default@7.0.2: resolution: { - integrity: sha512-Fumyr+uZMcjYQeuHssAZxn0cKj3cdQc5GcxkBcmEzISGB+UW9CLNlU4tBOJbJGcPukFDlicG32eFbrc8K9V5pw==, + integrity: sha512-z95kGKZx8VWHfERj7LFzuiTxylbvEp07ZEYaFu+t6bFyNOXLd/+3oPyNaY7ISwcrfHFCkt8OfRo4IZxVRJZ7dg==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -2460,10 +2450,10 @@ packages: peerDependencies: postcss: ^8.4.31 - cssnano@7.0.1: + cssnano@7.0.2: resolution: { - integrity: sha512-917Mej/4SdI7b55atsli3sU4MOJ9XDoKgnlCtQtXYj8XUFcM3riTuYHyqBBnnskawW+zWwp0KxJzpEUodlpqUg==, + integrity: sha512-LXm/Xx6TNLzfHM2lBaIQHfvtdW5QfdbyLzfJAWZrclCAb47yVa0/yJG69+amcw3Lq0YZ+kyU40rbsMPLcMt9aw==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -2628,16 +2618,10 @@ packages: } engines: { node: ">=0.12" } - es-module-lexer@1.4.1: + es-module-lexer@1.5.3: resolution: { - integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==, - } - - es-module-lexer@1.5.2: - resolution: - { - integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==, + integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==, } esbuild@0.20.2: @@ -2648,10 +2632,10 @@ packages: engines: { node: ">=12" } hasBin: true - esbuild@0.21.3: + esbuild@0.21.4: resolution: { - integrity: sha512-Kgq0/ZsAPzKrbOjCQcjoSmPoWhlcVnGAUo7jvaLHoxW1Drto0KGkR1xBNg2Cp43b9ImvxmPEJZ9xkfcnqPsfBw==, + integrity: sha512-sFMcNNrj+Q0ZDolrp5pDhH0nRPN9hLIM3fRPwgbLYJeSHHgnXSnbV3xYgSVuOeLWH9c73VwmEverVzupIv5xuA==, } engines: { node: ">=12" } hasBin: true @@ -2980,12 +2964,6 @@ packages: integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==, } - hast-util-to-html@9.0.0: - resolution: - { - integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==, - } - hast-util-to-html@9.0.1: resolution: { @@ -3840,6 +3818,12 @@ packages: integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==, } + nlcst-to-string@4.0.0: + resolution: + { + integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==, + } + node-releases@2.0.14: resolution: { @@ -3995,6 +3979,12 @@ packages: integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==, } + parse-latin@7.0.0: + resolution: + { + integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==, + } + parse5@7.1.2: resolution: { @@ -4342,19 +4332,19 @@ packages: peerDependencies: postcss: ^8.4 - postcss-merge-longhand@7.0.0: + postcss-merge-longhand@7.0.1: resolution: { - integrity: sha512-0X8I4/9+G03X5/5NnrfopG/YEln2XU8heDh7YqBaiq2SeaKIG3n66ShZPjIolmVuLBQ0BEm3yS8o1mlCLHdW7A==, + integrity: sha512-qZlD26hnqSTMxSSOMS8+QCeRWtqOdMKeQHvHcBhjL3mJxKUs47cvO1Y1x3iTdYIk3ioMcRHTiy229TT0mEMH/A==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: postcss: ^8.4.31 - postcss-merge-rules@7.0.0: + postcss-merge-rules@7.0.1: resolution: { - integrity: sha512-Zty3VlOsD6VSjBMu6PiHCVpLegtBT/qtZRVBcSeyEZ6q1iU5qTYT0WtEoLRV+YubZZguS5/ycfP+NRiKfjv6aw==, + integrity: sha512-bb8McYQbo2etgs0uVt6AfngajACK3FHSVP3sGLhprrjbtHJWgG03JZ4KKBlJ8/5Fb8/Rr+mMKaybMYeoYrAg0A==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -4387,10 +4377,10 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-minify-selectors@7.0.0: + postcss-minify-selectors@7.0.1: resolution: { - integrity: sha512-f00CExZhD6lNw2vTZbcnmfxVgaVKzUw6IRsIFX3JTT8GdsoABc1WnhhGwL1i8YPJ3sSWw39fv7XPtvLb+3Uitw==, + integrity: sha512-YfIbGtcgMFquPxV2L/ASs36ZS4DsgfcDX9tQ8cTEIvBTv+0GXFKtcvvpi9tCKto/+DWGWYKMCESFG3Pnan0Feg==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -4405,10 +4395,10 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-nesting@12.1.4: + postcss-nesting@12.1.5: resolution: { - integrity: sha512-CcHOq94K137E+U4Ommu7pexcpp0Tjm24zl4UcqWs1oSLAr5cLI+jLrqQ5h/bdjhMX6cMbzunyustVNnvrzF8Zg==, + integrity: sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==, } engines: { node: ^14 || ^16 || >=18 } peerDependencies: @@ -4539,10 +4529,10 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@9.5.13: + postcss-preset-env@9.5.14: resolution: { - integrity: sha512-YQMwWu6MAc4Envrjf/mW2BTrb5J8WkrJ4dV2VostZVDhrmEPpYREOyhmvtlFLDxK1/AmTDY8aXjZViMC1qKu/w==, + integrity: sha512-gTMi+3kENN/mN+K59aR+vEOjlkujTmmXJcM9rnAqGh9Y/euQ/ypdp9rd8mO1eoIjAD8vNS15+xbkBxoi+65BqQ==, } engines: { node: ^14 || ^16 || >=18 } peerDependencies: @@ -4606,19 +4596,26 @@ packages: } engines: { node: ">=4" } - postcss-svgo@7.0.0: + postcss-selector-parser@6.1.0: resolution: { - integrity: sha512-Xj5DRdvA97yRy3wjbCH2NKXtDUwEnph6EHr5ZXszsBVKCNrKXYBjzAXqav7/Afz5WwJ/1peZoTguCEJIg7ytmA==, + integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==, + } + engines: { node: ">=4" } + + postcss-svgo@7.0.1: + resolution: + { + integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==, } engines: { node: ^18.12.0 || ^20.9.0 || >= 18 } peerDependencies: postcss: ^8.4.31 - postcss-unique-selectors@7.0.0: + postcss-unique-selectors@7.0.1: resolution: { - integrity: sha512-NYFqcft7vVQMZlQPsMdMPy+qU/zDpy95Malpw4GeA9ZZjM6dVXDshXtDmLc0m4WCD6XeZCJqjTfPT1USsdt+rA==, + integrity: sha512-MH7QE/eKUftTB5ta40xcHLl7hkZjgDFydpfTK+QWXeHxghVt3VoPqYL5/G+zYZPPIs+8GuqFXSTgxBSoB1RZtQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -4776,6 +4773,13 @@ packages: } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + remark-smartypants@3.0.1: + resolution: + { + integrity: sha512-qyshfCl2eLO0i0558e79ZJsfojC5wjnYLByjt0FmjJQN6aYwcRxpoj784LZJSoWCdnA2ubh5rLNGb8Uur/wDng==, + } + engines: { node: ">=16.0.0" } + remark-stringify@11.0.0: resolution: { @@ -4815,24 +4819,48 @@ packages: integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==, } + retext-latin@4.0.0: + resolution: + { + integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==, + } + retext-smartypants@5.2.0: resolution: { integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==, } + retext-smartypants@6.1.0: + resolution: + { + integrity: sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==, + } + retext-stringify@3.1.0: resolution: { integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==, } + retext-stringify@4.0.0: + resolution: + { + integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==, + } + retext@8.1.0: resolution: { integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==, } + retext@9.0.0: + resolution: + { + integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==, + } + reusify@1.0.4: resolution: { @@ -4917,6 +4945,12 @@ packages: integrity: sha512-fpPbuSaatinmdGijE7VYUD3hxLozR3ZZ+iAx8Iy2X6REmJGyF5hQl94SgmiUNTospq346nXUVZx0035dyGvIVw==, } + shiki@1.6.3: + resolution: + { + integrity: sha512-lE1/YGlzFY0hQSyEfsZj18xGrTWxyhFQkaiILALqTBZPbJeYFWpbUhlmTGPOupYB/qC+H6sV4UznJzcEh3WMHQ==, + } + signal-exit@3.0.7: resolution: { @@ -5064,10 +5098,10 @@ packages: integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==, } - stylehacks@7.0.0: + stylehacks@7.0.1: resolution: { - integrity: sha512-47Nw4pQ6QJb4CA6dzF2m9810sjQik4dfk4UwAm5wlwhrW3syzZKF8AR4/cfO3Cr6lsFgAoznQq0Wg57qhjTA2A==, + integrity: sha512-PnrT4HzajnxbjfChpeBKLSpSykilnGBlD+pIffCoT5KbLur9fcL8uKRQJJap85byR2wCYZl/4Otk5eq76qeZxQ==, } engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } peerDependencies: @@ -5156,10 +5190,10 @@ packages: integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, } - tsconfck@3.0.3: + tsconfck@3.1.0: resolution: { - integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==, + integrity: sha512-CMjc5zMnyAjcS9sPLytrbFmj89st2g+JYtY/c02ug4Q+CZaAtCgbyviI0n1YvjZE/pzoc6FbNsINS13DOL1B9w==, } engines: { node: ^18 || >=20 } hasBin: true @@ -5244,6 +5278,12 @@ packages: integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==, } + unist-util-modify-children@4.0.0: + resolution: + { + integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==, + } + unist-util-position-from-estree@2.0.0: resolution: { @@ -5280,6 +5320,12 @@ packages: integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==, } + unist-util-visit-children@3.0.0: + resolution: + { + integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==, + } + unist-util-visit-parents@5.1.3: resolution: { @@ -5349,10 +5395,10 @@ packages: integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==, } - vite@5.2.11: + vite@5.2.13: resolution: { - integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==, + integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==, } engines: { node: ^18.0.0 || >=20.0.0 } hasBin: true @@ -5542,10 +5588,10 @@ packages: } engines: { node: ">=8.15" } - which-pm@2.1.1: + which-pm@2.2.0: resolution: { - integrity: sha512-xzzxNw2wMaoCWXiGE8IJ9wuPMU+EYhFksjHxrRT8kMT5SnocBPRg69YAMtyV4D12fP582RA+k3P8H9J5EMdIxQ==, + integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==, } engines: { node: ">=8.15" } @@ -5646,12 +5692,6 @@ packages: peerDependencies: zod: ^3.23.3 - zod@3.22.4: - resolution: - { - integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==, - } - zod@3.23.8: resolution: { @@ -5669,8 +5709,8 @@ snapshots: "@ampproject/remapping@2.2.1": dependencies: - "@jridgewell/gen-mapping": 0.3.3 - "@jridgewell/trace-mapping": 0.3.20 + "@jridgewell/gen-mapping": 0.3.5 + "@jridgewell/trace-mapping": 0.3.25 "@astrojs/check@0.7.0(typescript@5.4.5)": dependencies: @@ -5723,7 +5763,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.0 remark-smartypants: 2.0.0 - shiki: 1.5.2 + shiki: 1.6.3 unified: 11.0.4 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -5732,21 +5772,21 @@ snapshots: transitivePeerDependencies: - supports-color - "@astrojs/mdx@2.3.1(astro@4.8.6(typescript@5.4.5))": + "@astrojs/mdx@3.1.0(astro@4.10.1(typescript@5.4.5))": dependencies: "@astrojs/markdown-remark": 5.1.0 - "@mdx-js/mdx": 3.0.0 - acorn: 8.11.2 - astro: 4.8.6(typescript@5.4.5) - es-module-lexer: 1.4.1 + "@mdx-js/mdx": 3.0.1 + acorn: 8.11.3 + astro: 4.10.1(typescript@5.4.5) + es-module-lexer: 1.5.3 estree-util-visit: 2.0.0 github-slugger: 2.0.0 gray-matter: 4.0.3 - hast-util-to-html: 9.0.0 + hast-util-to-html: 9.0.1 kleur: 4.1.5 rehype-raw: 7.0.0 remark-gfm: 4.0.0 - remark-smartypants: 2.0.0 + remark-smartypants: 3.0.1 source-map: 0.7.4 unist-util-visit: 5.0.0 vfile: 6.0.1 @@ -5760,23 +5800,23 @@ snapshots: "@astrojs/sitemap@3.0.5": dependencies: sitemap: 7.1.1 - zod: 3.22.4 + zod: 3.23.8 - "@astrojs/starlight-tailwind@2.0.2(@astrojs/starlight@0.22.4(astro@4.8.6(typescript@5.4.5)))(@astrojs/tailwind@5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3))(tailwindcss@3.4.3)": + "@astrojs/starlight-tailwind@2.0.3(@astrojs/starlight@0.24.0(astro@4.10.1(typescript@5.4.5)))(@astrojs/tailwind@5.1.0(astro@4.10.1(typescript@5.4.5))(tailwindcss@3.4.3))(tailwindcss@3.4.3)": dependencies: - "@astrojs/starlight": 0.22.4(astro@4.8.6(typescript@5.4.5)) - "@astrojs/tailwind": 5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3) + "@astrojs/starlight": 0.24.0(astro@4.10.1(typescript@5.4.5)) + "@astrojs/tailwind": 5.1.0(astro@4.10.1(typescript@5.4.5))(tailwindcss@3.4.3) tailwindcss: 3.4.3 - "@astrojs/starlight@0.22.4(astro@4.8.6(typescript@5.4.5))": + "@astrojs/starlight@0.24.0(astro@4.10.1(typescript@5.4.5))": dependencies: - "@astrojs/mdx": 2.3.1(astro@4.8.6(typescript@5.4.5)) + "@astrojs/mdx": 3.1.0(astro@4.10.1(typescript@5.4.5)) "@astrojs/sitemap": 3.0.5 "@pagefind/default-ui": 1.0.4 "@types/hast": 3.0.3 "@types/mdast": 4.0.3 - astro: 4.8.6(typescript@5.4.5) - astro-expressive-code: 0.35.3(astro@4.8.6(typescript@5.4.5)) + astro: 4.10.1(typescript@5.4.5) + astro-expressive-code: 0.35.3(astro@4.10.1(typescript@5.4.5)) bcp-47: 2.1.0 hast-util-from-html: 2.0.1 hast-util-select: 6.0.2 @@ -5794,9 +5834,9 @@ snapshots: transitivePeerDependencies: - supports-color - "@astrojs/tailwind@5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3)": + "@astrojs/tailwind@5.1.0(astro@4.10.1(typescript@5.4.5))(tailwindcss@3.4.3)": dependencies: - astro: 4.8.6(typescript@5.4.5) + astro: 4.10.1(typescript@5.4.5) autoprefixer: 10.4.19(postcss@8.4.31) postcss: 8.4.31 postcss-load-config: 4.0.2(postcss@8.4.31) @@ -5816,25 +5856,25 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/code-frame@7.24.2": + "@babel/code-frame@7.24.7": dependencies: - "@babel/highlight": 7.24.5 + "@babel/highlight": 7.24.7 picocolors: 1.0.0 - "@babel/compat-data@7.24.4": {} + "@babel/compat-data@7.24.7": {} - "@babel/core@7.24.5": + "@babel/core@7.24.7": dependencies: "@ampproject/remapping": 2.2.1 - "@babel/code-frame": 7.24.2 - "@babel/generator": 7.24.5 - "@babel/helper-compilation-targets": 7.23.6 - "@babel/helper-module-transforms": 7.24.5(@babel/core@7.24.5) - "@babel/helpers": 7.24.5 - "@babel/parser": 7.24.5 - "@babel/template": 7.24.0 - "@babel/traverse": 7.24.5 - "@babel/types": 7.24.5 + "@babel/code-frame": 7.24.7 + "@babel/generator": 7.24.7 + "@babel/helper-compilation-targets": 7.24.7 + "@babel/helper-module-transforms": 7.24.7(@babel/core@7.24.7) + "@babel/helpers": 7.24.7 + "@babel/parser": 7.24.7 + "@babel/template": 7.24.7 + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -5843,133 +5883,132 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/generator@7.24.5": + "@babel/generator@7.24.7": dependencies: - "@babel/types": 7.24.5 + "@babel/types": 7.24.7 "@jridgewell/gen-mapping": 0.3.5 "@jridgewell/trace-mapping": 0.3.25 jsesc: 2.5.2 - "@babel/helper-annotate-as-pure@7.22.5": + "@babel/helper-annotate-as-pure@7.24.7": dependencies: - "@babel/types": 7.24.5 + "@babel/types": 7.24.7 - "@babel/helper-compilation-targets@7.23.6": + "@babel/helper-compilation-targets@7.24.7": dependencies: - "@babel/compat-data": 7.24.4 - "@babel/helper-validator-option": 7.23.5 + "@babel/compat-data": 7.24.7 + "@babel/helper-validator-option": 7.24.7 browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-environment-visitor@7.22.20": {} - - "@babel/helper-function-name@7.23.0": + "@babel/helper-environment-visitor@7.24.7": dependencies: - "@babel/template": 7.22.15 - "@babel/types": 7.24.5 + "@babel/types": 7.24.7 - "@babel/helper-hoist-variables@7.22.5": + "@babel/helper-function-name@7.24.7": dependencies: - "@babel/types": 7.24.5 + "@babel/template": 7.24.7 + "@babel/types": 7.24.7 - "@babel/helper-module-imports@7.22.15": + "@babel/helper-hoist-variables@7.24.7": dependencies: - "@babel/types": 7.24.5 + "@babel/types": 7.24.7 - "@babel/helper-module-imports@7.24.3": + "@babel/helper-module-imports@7.24.7": dependencies: - "@babel/types": 7.24.5 - - "@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)": - dependencies: - "@babel/core": 7.24.5 - "@babel/helper-environment-visitor": 7.22.20 - "@babel/helper-module-imports": 7.24.3 - "@babel/helper-simple-access": 7.24.5 - "@babel/helper-split-export-declaration": 7.24.5 - "@babel/helper-validator-identifier": 7.24.5 - - "@babel/helper-plugin-utils@7.22.5": {} - - "@babel/helper-simple-access@7.24.5": - dependencies: - "@babel/types": 7.24.5 - - "@babel/helper-split-export-declaration@7.24.5": - dependencies: - "@babel/types": 7.24.5 - - "@babel/helper-string-parser@7.24.1": {} - - "@babel/helper-validator-identifier@7.24.5": {} - - "@babel/helper-validator-option@7.23.5": {} - - "@babel/helpers@7.24.5": - dependencies: - "@babel/template": 7.24.0 - "@babel/traverse": 7.24.5 - "@babel/types": 7.24.5 + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 transitivePeerDependencies: - supports-color - "@babel/highlight@7.24.5": + "@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/helper-validator-identifier": 7.24.5 + "@babel/core": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-module-imports": 7.24.7 + "@babel/helper-simple-access": 7.24.7 + "@babel/helper-split-export-declaration": 7.24.7 + "@babel/helper-validator-identifier": 7.24.7 + transitivePeerDependencies: + - supports-color + + "@babel/helper-plugin-utils@7.24.7": {} + + "@babel/helper-simple-access@7.24.7": + dependencies: + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 + transitivePeerDependencies: + - supports-color + + "@babel/helper-split-export-declaration@7.24.7": + dependencies: + "@babel/types": 7.24.7 + + "@babel/helper-string-parser@7.24.7": {} + + "@babel/helper-validator-identifier@7.24.7": {} + + "@babel/helper-validator-option@7.24.7": {} + + "@babel/helpers@7.24.7": + dependencies: + "@babel/template": 7.24.7 + "@babel/types": 7.24.7 + + "@babel/highlight@7.24.7": + dependencies: + "@babel/helper-validator-identifier": 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 - "@babel/parser@7.24.5": + "@babel/parser@7.24.7": dependencies: - "@babel/types": 7.24.5 + "@babel/types": 7.24.7 - "@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.5)": + "@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.5 - "@babel/helper-plugin-utils": 7.22.5 + "@babel/core": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 - "@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5)": + "@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.24.7)": dependencies: - "@babel/core": 7.24.5 - "@babel/helper-annotate-as-pure": 7.22.5 - "@babel/helper-module-imports": 7.22.15 - "@babel/helper-plugin-utils": 7.22.5 - "@babel/plugin-syntax-jsx": 7.23.3(@babel/core@7.24.5) - "@babel/types": 7.24.5 + "@babel/core": 7.24.7 + "@babel/helper-annotate-as-pure": 7.24.7 + "@babel/helper-module-imports": 7.24.7 + "@babel/helper-plugin-utils": 7.24.7 + "@babel/plugin-syntax-jsx": 7.24.7(@babel/core@7.24.7) + "@babel/types": 7.24.7 + transitivePeerDependencies: + - supports-color - "@babel/template@7.22.15": + "@babel/template@7.24.7": dependencies: - "@babel/code-frame": 7.24.2 - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 + "@babel/code-frame": 7.24.7 + "@babel/parser": 7.24.7 + "@babel/types": 7.24.7 - "@babel/template@7.24.0": + "@babel/traverse@7.24.7": dependencies: - "@babel/code-frame": 7.24.2 - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 - - "@babel/traverse@7.24.5": - dependencies: - "@babel/code-frame": 7.24.2 - "@babel/generator": 7.24.5 - "@babel/helper-environment-visitor": 7.22.20 - "@babel/helper-function-name": 7.23.0 - "@babel/helper-hoist-variables": 7.22.5 - "@babel/helper-split-export-declaration": 7.24.5 - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 + "@babel/code-frame": 7.24.7 + "@babel/generator": 7.24.7 + "@babel/helper-environment-visitor": 7.24.7 + "@babel/helper-function-name": 7.24.7 + "@babel/helper-hoist-variables": 7.24.7 + "@babel/helper-split-export-declaration": 7.24.7 + "@babel/parser": 7.24.7 + "@babel/types": 7.24.7 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - "@babel/types@7.24.5": + "@babel/types@7.24.7": dependencies: - "@babel/helper-string-parser": 7.24.1 - "@babel/helper-validator-identifier": 7.24.5 + "@babel/helper-string-parser": 7.24.7 + "@babel/helper-validator-identifier": 7.24.7 to-fast-properties: 2.0.0 "@csstools/cascade-layer-name-parser@1.0.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)": @@ -6190,14 +6229,18 @@ snapshots: dependencies: postcss: 8.4.33 - "@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16)": + "@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.0)": dependencies: - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 "@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.0.16)": dependencies: postcss-selector-parser: 6.0.16 + "@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.0)": + dependencies: + postcss-selector-parser: 6.1.0 + "@csstools/utilities@1.0.0(postcss@8.4.33)": dependencies: postcss: 8.4.33 @@ -6235,139 +6278,139 @@ snapshots: "@esbuild/aix-ppc64@0.20.2": optional: true - "@esbuild/aix-ppc64@0.21.3": + "@esbuild/aix-ppc64@0.21.4": optional: true "@esbuild/android-arm64@0.20.2": optional: true - "@esbuild/android-arm64@0.21.3": + "@esbuild/android-arm64@0.21.4": optional: true "@esbuild/android-arm@0.20.2": optional: true - "@esbuild/android-arm@0.21.3": + "@esbuild/android-arm@0.21.4": optional: true "@esbuild/android-x64@0.20.2": optional: true - "@esbuild/android-x64@0.21.3": + "@esbuild/android-x64@0.21.4": optional: true "@esbuild/darwin-arm64@0.20.2": optional: true - "@esbuild/darwin-arm64@0.21.3": + "@esbuild/darwin-arm64@0.21.4": optional: true "@esbuild/darwin-x64@0.20.2": optional: true - "@esbuild/darwin-x64@0.21.3": + "@esbuild/darwin-x64@0.21.4": optional: true "@esbuild/freebsd-arm64@0.20.2": optional: true - "@esbuild/freebsd-arm64@0.21.3": + "@esbuild/freebsd-arm64@0.21.4": optional: true "@esbuild/freebsd-x64@0.20.2": optional: true - "@esbuild/freebsd-x64@0.21.3": + "@esbuild/freebsd-x64@0.21.4": optional: true "@esbuild/linux-arm64@0.20.2": optional: true - "@esbuild/linux-arm64@0.21.3": + "@esbuild/linux-arm64@0.21.4": optional: true "@esbuild/linux-arm@0.20.2": optional: true - "@esbuild/linux-arm@0.21.3": + "@esbuild/linux-arm@0.21.4": optional: true "@esbuild/linux-ia32@0.20.2": optional: true - "@esbuild/linux-ia32@0.21.3": + "@esbuild/linux-ia32@0.21.4": optional: true "@esbuild/linux-loong64@0.20.2": optional: true - "@esbuild/linux-loong64@0.21.3": + "@esbuild/linux-loong64@0.21.4": optional: true "@esbuild/linux-mips64el@0.20.2": optional: true - "@esbuild/linux-mips64el@0.21.3": + "@esbuild/linux-mips64el@0.21.4": optional: true "@esbuild/linux-ppc64@0.20.2": optional: true - "@esbuild/linux-ppc64@0.21.3": + "@esbuild/linux-ppc64@0.21.4": optional: true "@esbuild/linux-riscv64@0.20.2": optional: true - "@esbuild/linux-riscv64@0.21.3": + "@esbuild/linux-riscv64@0.21.4": optional: true "@esbuild/linux-s390x@0.20.2": optional: true - "@esbuild/linux-s390x@0.21.3": + "@esbuild/linux-s390x@0.21.4": optional: true "@esbuild/linux-x64@0.20.2": optional: true - "@esbuild/linux-x64@0.21.3": + "@esbuild/linux-x64@0.21.4": optional: true "@esbuild/netbsd-x64@0.20.2": optional: true - "@esbuild/netbsd-x64@0.21.3": + "@esbuild/netbsd-x64@0.21.4": optional: true "@esbuild/openbsd-x64@0.20.2": optional: true - "@esbuild/openbsd-x64@0.21.3": + "@esbuild/openbsd-x64@0.21.4": optional: true "@esbuild/sunos-x64@0.20.2": optional: true - "@esbuild/sunos-x64@0.21.3": + "@esbuild/sunos-x64@0.21.4": optional: true "@esbuild/win32-arm64@0.20.2": optional: true - "@esbuild/win32-arm64@0.21.3": + "@esbuild/win32-arm64@0.21.4": optional: true "@esbuild/win32-ia32@0.20.2": optional: true - "@esbuild/win32-ia32@0.21.3": + "@esbuild/win32-ia32@0.21.4": optional: true "@esbuild/win32-x64@0.20.2": optional: true - "@esbuild/win32-x64@0.21.3": + "@esbuild/win32-x64@0.21.4": optional: true "@expressive-code/core@0.35.3": @@ -6511,7 +6554,7 @@ snapshots: "@jridgewell/resolve-uri": 3.1.1 "@jridgewell/sourcemap-codec": 1.4.15 - "@mdx-js/mdx@3.0.0": + "@mdx-js/mdx@3.0.1": dependencies: "@types/estree": 1.0.5 "@types/estree-jsx": 1.0.3 @@ -6618,6 +6661,8 @@ snapshots: "@shikijs/core@1.5.2": {} + "@shikijs/core@1.6.3": {} + "@trysound/sax@0.2.0": {} "@types/acorn@4.0.6": @@ -6626,24 +6671,24 @@ snapshots: "@types/babel__core@7.20.5": dependencies: - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 + "@babel/parser": 7.24.7 + "@babel/types": 7.24.7 "@types/babel__generator": 7.6.7 "@types/babel__template": 7.4.4 "@types/babel__traverse": 7.20.4 "@types/babel__generator@7.6.7": dependencies: - "@babel/types": 7.24.5 + "@babel/types": 7.24.7 "@types/babel__template@7.4.4": dependencies: - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 + "@babel/parser": 7.24.7 + "@babel/types": 7.24.7 "@types/babel__traverse@7.20.4": dependencies: - "@babel/types": 7.24.5 + "@babel/types": 7.24.7 "@types/cookie@0.6.0": {} @@ -6673,6 +6718,10 @@ snapshots: dependencies: "@types/unist": 2.0.10 + "@types/nlcst@2.0.3": + dependencies: + "@types/unist": 3.0.2 + "@types/node@17.0.45": {} "@types/sax@1.2.7": @@ -6745,11 +6794,9 @@ snapshots: "@vscode/l10n@0.0.18": {} - acorn-jsx@5.3.2(acorn@8.11.2): + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: - acorn: 8.11.2 - - acorn@8.11.2: {} + acorn: 8.11.3 acorn@8.11.3: {} @@ -6794,23 +6841,23 @@ snapshots: astring@1.8.6: {} - astro-expressive-code@0.35.3(astro@4.8.6(typescript@5.4.5)): + astro-expressive-code@0.35.3(astro@4.10.1(typescript@5.4.5)): dependencies: - astro: 4.8.6(typescript@5.4.5) + astro: 4.10.1(typescript@5.4.5) rehype-expressive-code: 0.35.3 - astro@4.8.6(typescript@5.4.5): + astro@4.10.1(typescript@5.4.5): dependencies: "@astrojs/compiler": 2.8.0 "@astrojs/internal-helpers": 0.4.0 "@astrojs/markdown-remark": 5.1.0 "@astrojs/telemetry": 3.1.0 - "@babel/core": 7.24.5 - "@babel/generator": 7.24.5 - "@babel/parser": 7.24.5 - "@babel/plugin-transform-react-jsx": 7.23.4(@babel/core@7.24.5) - "@babel/traverse": 7.24.5 - "@babel/types": 7.24.5 + "@babel/core": 7.24.7 + "@babel/generator": 7.24.7 + "@babel/parser": 7.24.7 + "@babel/plugin-transform-react-jsx": 7.24.7(@babel/core@7.24.7) + "@babel/traverse": 7.24.7 + "@babel/types": 7.24.7 "@types/babel__core": 7.20.5 "@types/cookie": 0.6.0 acorn: 8.11.3 @@ -6829,8 +6876,8 @@ snapshots: diff: 5.2.0 dlv: 1.1.3 dset: 3.1.3 - es-module-lexer: 1.5.2 - esbuild: 0.21.3 + es-module-lexer: 1.5.3 + esbuild: 0.21.4 estree-walker: 3.0.3 execa: 8.0.1 fast-glob: 3.3.2 @@ -6852,15 +6899,15 @@ snapshots: rehype: 13.0.1 resolve: 1.22.8 semver: 7.6.2 - shiki: 1.5.2 + shiki: 1.6.3 string-width: 7.1.0 strip-ansi: 7.1.0 - tsconfck: 3.0.3(typescript@5.4.5) + tsconfck: 3.1.0(typescript@5.4.5) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.2.11 - vitefu: 0.2.5(vite@5.2.11) - which-pm: 2.1.1 + vite: 5.2.13 + vitefu: 0.2.5(vite@5.2.13) + which-pm: 2.2.0 yargs-parser: 21.1.1 zod: 3.23.8 zod-to-json-schema: 3.23.0(zod@3.23.8) @@ -7111,7 +7158,7 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.1(postcss@8.4.33): + cssnano-preset-default@7.0.2(postcss@8.4.33): dependencies: browserslist: 4.23.0 css-declaration-sorter: 7.2.0(postcss@8.4.33) @@ -7124,12 +7171,12 @@ snapshots: postcss-discard-duplicates: 7.0.0(postcss@8.4.33) postcss-discard-empty: 7.0.0(postcss@8.4.33) postcss-discard-overridden: 7.0.0(postcss@8.4.33) - postcss-merge-longhand: 7.0.0(postcss@8.4.33) - postcss-merge-rules: 7.0.0(postcss@8.4.33) + postcss-merge-longhand: 7.0.1(postcss@8.4.33) + postcss-merge-rules: 7.0.1(postcss@8.4.33) postcss-minify-font-values: 7.0.0(postcss@8.4.33) postcss-minify-gradients: 7.0.0(postcss@8.4.33) postcss-minify-params: 7.0.0(postcss@8.4.33) - postcss-minify-selectors: 7.0.0(postcss@8.4.33) + postcss-minify-selectors: 7.0.1(postcss@8.4.33) postcss-normalize-charset: 7.0.0(postcss@8.4.33) postcss-normalize-display-values: 7.0.0(postcss@8.4.33) postcss-normalize-positions: 7.0.0(postcss@8.4.33) @@ -7142,16 +7189,16 @@ snapshots: postcss-ordered-values: 7.0.0(postcss@8.4.33) postcss-reduce-initial: 7.0.0(postcss@8.4.33) postcss-reduce-transforms: 7.0.0(postcss@8.4.33) - postcss-svgo: 7.0.0(postcss@8.4.33) - postcss-unique-selectors: 7.0.0(postcss@8.4.33) + postcss-svgo: 7.0.1(postcss@8.4.33) + postcss-unique-selectors: 7.0.1(postcss@8.4.33) cssnano-utils@5.0.0(postcss@8.4.33): dependencies: postcss: 8.4.33 - cssnano@7.0.1(postcss@8.4.33): + cssnano@7.0.2(postcss@8.4.33): dependencies: - cssnano-preset-default: 7.0.1(postcss@8.4.33) + cssnano-preset-default: 7.0.2(postcss@8.4.33) lilconfig: 3.1.1 postcss: 8.4.33 @@ -7226,9 +7273,7 @@ snapshots: entities@4.5.0: {} - es-module-lexer@1.4.1: {} - - es-module-lexer@1.5.2: {} + es-module-lexer@1.5.3: {} esbuild@0.20.2: optionalDependencies: @@ -7256,31 +7301,31 @@ snapshots: "@esbuild/win32-ia32": 0.20.2 "@esbuild/win32-x64": 0.20.2 - esbuild@0.21.3: + esbuild@0.21.4: optionalDependencies: - "@esbuild/aix-ppc64": 0.21.3 - "@esbuild/android-arm": 0.21.3 - "@esbuild/android-arm64": 0.21.3 - "@esbuild/android-x64": 0.21.3 - "@esbuild/darwin-arm64": 0.21.3 - "@esbuild/darwin-x64": 0.21.3 - "@esbuild/freebsd-arm64": 0.21.3 - "@esbuild/freebsd-x64": 0.21.3 - "@esbuild/linux-arm": 0.21.3 - "@esbuild/linux-arm64": 0.21.3 - "@esbuild/linux-ia32": 0.21.3 - "@esbuild/linux-loong64": 0.21.3 - "@esbuild/linux-mips64el": 0.21.3 - "@esbuild/linux-ppc64": 0.21.3 - "@esbuild/linux-riscv64": 0.21.3 - "@esbuild/linux-s390x": 0.21.3 - "@esbuild/linux-x64": 0.21.3 - "@esbuild/netbsd-x64": 0.21.3 - "@esbuild/openbsd-x64": 0.21.3 - "@esbuild/sunos-x64": 0.21.3 - "@esbuild/win32-arm64": 0.21.3 - "@esbuild/win32-ia32": 0.21.3 - "@esbuild/win32-x64": 0.21.3 + "@esbuild/aix-ppc64": 0.21.4 + "@esbuild/android-arm": 0.21.4 + "@esbuild/android-arm64": 0.21.4 + "@esbuild/android-x64": 0.21.4 + "@esbuild/darwin-arm64": 0.21.4 + "@esbuild/darwin-x64": 0.21.4 + "@esbuild/freebsd-arm64": 0.21.4 + "@esbuild/freebsd-x64": 0.21.4 + "@esbuild/linux-arm": 0.21.4 + "@esbuild/linux-arm64": 0.21.4 + "@esbuild/linux-ia32": 0.21.4 + "@esbuild/linux-loong64": 0.21.4 + "@esbuild/linux-mips64el": 0.21.4 + "@esbuild/linux-ppc64": 0.21.4 + "@esbuild/linux-riscv64": 0.21.4 + "@esbuild/linux-s390x": 0.21.4 + "@esbuild/linux-x64": 0.21.4 + "@esbuild/netbsd-x64": 0.21.4 + "@esbuild/openbsd-x64": 0.21.4 + "@esbuild/sunos-x64": 0.21.4 + "@esbuild/win32-arm64": 0.21.4 + "@esbuild/win32-ia32": 0.21.4 + "@esbuild/win32-x64": 0.21.4 escalade@3.1.1: {} @@ -7536,21 +7581,6 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-html@9.0.0: - dependencies: - "@types/hast": 3.0.3 - "@types/unist": 3.0.2 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.1 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.0.2 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.3 - zwitch: 2.0.4 - hast-util-to-html@9.0.1: dependencies: "@types/hast": 3.0.3 @@ -8104,8 +8134,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.0 micromark-extension-mdx-md: 2.0.0 @@ -8280,6 +8310,10 @@ snapshots: dependencies: "@types/nlcst": 1.0.4 + nlcst-to-string@4.0.0: + dependencies: + "@types/nlcst": 2.0.3 + node-releases@2.0.14: {} normalize-path@3.0.0: {} @@ -8378,6 +8412,15 @@ snapshots: unist-util-modify-children: 3.1.1 unist-util-visit-children: 2.0.2 + parse-latin@7.0.0: + dependencies: + "@types/nlcst": 2.0.3 + "@types/unist": 3.0.2 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.1 + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -8584,19 +8627,19 @@ snapshots: postcss: 8.4.33 postcss-value-parser: 4.2.0 - postcss-merge-longhand@7.0.0(postcss@8.4.33): + postcss-merge-longhand@7.0.1(postcss@8.4.33): dependencies: postcss: 8.4.33 postcss-value-parser: 4.2.0 - stylehacks: 7.0.0(postcss@8.4.33) + stylehacks: 7.0.1(postcss@8.4.33) - postcss-merge-rules@7.0.0(postcss@8.4.33): + postcss-merge-rules@7.0.1(postcss@8.4.33): dependencies: browserslist: 4.23.0 caniuse-api: 3.0.0 cssnano-utils: 5.0.0(postcss@8.4.33) postcss: 8.4.33 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 postcss-minify-font-values@7.0.0(postcss@8.4.33): dependencies: @@ -8617,10 +8660,10 @@ snapshots: postcss: 8.4.33 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.0(postcss@8.4.33): + postcss-minify-selectors@7.0.1(postcss@8.4.33): dependencies: postcss: 8.4.33 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 postcss-nested@6.0.1(postcss@8.4.33): dependencies: @@ -8632,12 +8675,12 @@ snapshots: postcss: 8.4.38 postcss-selector-parser: 6.0.13 - postcss-nesting@12.1.4(postcss@8.4.33): + postcss-nesting@12.1.5(postcss@8.4.33): dependencies: - "@csstools/selector-resolve-nested": 1.1.0(postcss-selector-parser@6.0.16) - "@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.0.16) + "@csstools/selector-resolve-nested": 1.1.0(postcss-selector-parser@6.1.0) + "@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.1.0) postcss: 8.4.33 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 postcss-normalize-charset@7.0.0(postcss@8.4.33): dependencies: @@ -8708,7 +8751,7 @@ snapshots: postcss: 8.4.33 postcss-value-parser: 4.2.0 - postcss-preset-env@9.5.13(postcss@8.4.33): + postcss-preset-env@9.5.14(postcss@8.4.33): dependencies: "@csstools/postcss-cascade-layers": 4.0.6(postcss@8.4.33) "@csstools/postcss-color-function": 3.0.16(postcss@8.4.33) @@ -8763,7 +8806,7 @@ snapshots: postcss-image-set-function: 6.0.3(postcss@8.4.33) postcss-lab-function: 6.0.16(postcss@8.4.33) postcss-logical: 7.0.1(postcss@8.4.33) - postcss-nesting: 12.1.4(postcss@8.4.33) + postcss-nesting: 12.1.5(postcss@8.4.33) postcss-opacity-percentage: 2.0.0(postcss@8.4.33) postcss-overflow-shorthand: 5.0.1(postcss@8.4.33) postcss-page-break: 3.0.4(postcss@8.4.33) @@ -8807,16 +8850,21 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.0(postcss@8.4.33): + postcss-selector-parser@6.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.0.1(postcss@8.4.33): dependencies: postcss: 8.4.33 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.0(postcss@8.4.33): + postcss-unique-selectors@7.0.1(postcss@8.4.33): dependencies: postcss: 8.4.33 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 postcss-value-parser@4.2.0: {} @@ -8902,7 +8950,7 @@ snapshots: rehype-stringify@10.0.0: dependencies: "@types/hast": 3.0.3 - hast-util-to-html: 9.0.0 + hast-util-to-html: 9.0.1 unified: 11.0.4 rehype@13.0.1: @@ -8962,6 +9010,13 @@ snapshots: retext-smartypants: 5.2.0 unist-util-visit: 4.1.2 + remark-smartypants@3.0.1: + dependencies: + retext: 9.0.0 + retext-smartypants: 6.1.0 + unified: 11.0.4 + unist-util-visit: 5.0.0 + remark-stringify@11.0.0: dependencies: "@types/mdast": 4.0.3 @@ -8990,6 +9045,12 @@ snapshots: unherit: 3.0.1 unified: 10.1.2 + retext-latin@4.0.0: + dependencies: + "@types/nlcst": 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.4 + retext-smartypants@5.2.0: dependencies: "@types/nlcst": 1.0.4 @@ -8997,12 +9058,24 @@ snapshots: unified: 10.1.2 unist-util-visit: 4.1.2 + retext-smartypants@6.1.0: + dependencies: + "@types/nlcst": 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.0.0 + retext-stringify@3.1.0: dependencies: "@types/nlcst": 1.0.4 nlcst-to-string: 3.1.1 unified: 10.1.2 + retext-stringify@4.0.0: + dependencies: + "@types/nlcst": 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.4 + retext@8.1.0: dependencies: "@types/nlcst": 1.0.4 @@ -9010,6 +9083,13 @@ snapshots: retext-stringify: 3.1.0 unified: 10.1.2 + retext@9.0.0: + dependencies: + "@types/nlcst": 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.4 + reusify@1.0.4: {} rollup@4.17.2: @@ -9089,6 +9169,10 @@ snapshots: dependencies: "@shikijs/core": 1.5.2 + shiki@1.6.3: + dependencies: + "@shikijs/core": 1.6.3 + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -9163,11 +9247,11 @@ snapshots: dependencies: inline-style-parser: 0.2.2 - stylehacks@7.0.0(postcss@8.4.33): + stylehacks@7.0.1(postcss@8.4.33): dependencies: browserslist: 4.23.0 postcss: 8.4.33 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 sucrase@3.34.0: dependencies: @@ -9242,7 +9326,7 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.0.3(typescript@5.4.5): + tsconfck@3.1.0(typescript@5.4.5): optionalDependencies: typescript: 5.4.5 @@ -9299,6 +9383,11 @@ snapshots: "@types/unist": 2.0.10 array-iterate: 2.0.1 + unist-util-modify-children@4.0.0: + dependencies: + "@types/unist": 3.0.2 + array-iterate: 2.0.1 + unist-util-position-from-estree@2.0.0: dependencies: "@types/unist": 3.0.2 @@ -9324,6 +9413,10 @@ snapshots: dependencies: "@types/unist": 2.0.10 + unist-util-visit-children@3.0.0: + dependencies: + "@types/unist": 3.0.2 + unist-util-visit-parents@5.1.3: dependencies: "@types/unist": 2.0.10 @@ -9382,7 +9475,7 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite@5.2.11: + vite@5.2.13: dependencies: esbuild: 0.20.2 postcss: 8.4.38 @@ -9390,9 +9483,9 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - vitefu@0.2.5(vite@5.2.11): + vitefu@0.2.5(vite@5.2.13): optionalDependencies: - vite: 5.2.11 + vite: 5.2.13 volar-service-css@0.0.45(@volar/language-service@2.2.4): dependencies: @@ -9482,7 +9575,7 @@ snapshots: load-yaml-file: 0.2.0 path-exists: 4.0.0 - which-pm@2.1.1: + which-pm@2.2.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 @@ -9537,8 +9630,6 @@ snapshots: dependencies: zod: 3.23.8 - zod@3.22.4: {} - zod@3.23.8: {} zwitch@2.0.4: {} diff --git a/docs/src/content/docs/en/plugins/create.mdx b/docs/src/content/docs/en/plugins/create.mdx index 2941e830..0e2b55db 100644 --- a/docs/src/content/docs/en/plugins/create.mdx +++ b/docs/src/content/docs/en/plugins/create.mdx @@ -2,24 +2,29 @@ title: Creating a Plugin --- -import { FileTree, Steps } from "@astrojs/starlight/components"; +import { FileTree, Steps, Badge } from "@astrojs/starlight/components"; In order to get started, you first need to [setup your Castopod dev environment](https://code.castopod.org/adaures/castopod/-/blob/develop/CONTRIBUTING-DEV.md). -## Using the create command +## 1. Create the plugin folder -To quickly get you started, you can create a plugin using the following CLI -command: +You'll first need to create your [plugin folder](./#plugin-folder-structure) in +the `plugins/` directory. + +### Using the create command + +To quickly get you started, you can have a folder generated for you using the +following CLI command: ```sh php spark plugins:create ``` -👉 Follow the CLI instructions: you will be prompted for metadata and hooks -definitions to generate the [plugin folder](./#plugin-folder-structure) for you. +👉 You will be prompted for metadata and hooks usage to have a skeleton plugin +project generated for you! -## Manual setup +### Manual setup 1. create a plugin folder inside a vendor directory @@ -54,3 +59,58 @@ definitions to generate the [plugin folder](./#plugin-folder-structure) for you. + +## 2. Build your plugin + +Now that your plugin folder is set, you can start working on your Plugin's logic +by implementing [the hooks](./hooks) needed. + +### Settings forms + +You can prompt users for data through settings forms. + +These forms can be built declaratively using the +[settings attribute](./manifest#settings) in your manifest. + +```json +// manifest.json +{ + "settings": { + "general": { + "field-key": { + "type": "text", + "label": "Enter a text" + } + }, + "podcast": { + "field-key": { + "type": "text", + "label": "Enter a text for this podcast" + } + }, + "episode": { + "field-key": { + "type": "type", + "label": "Enter a text for this episode" + } + } + } +} +``` + +This example will generate settings forms at 3 levels: + +- `general`: a general form to prompt data to be used by the plugin +- `podcast`: a form for each podcast to prompt for podcast specific data +- `episode`: a form for each episode to prompt for episode specific data + +The data can then be accessed in the Plugin class methods via helper methods +taking in the field key: + +```php +$this->getGeneralSetting('field-key'); + +$this->getPodcastSetting($podcast->id, 'field-key'); + +$this->getEpisodeSetting($episode->id, 'field-key'); +``` diff --git a/docs/src/content/docs/en/plugins/helpers.mdx b/docs/src/content/docs/en/plugins/helpers.mdx deleted file mode 100644 index 3630207c..00000000 --- a/docs/src/content/docs/en/plugins/helpers.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: BasePlugin ---- diff --git a/docs/src/content/docs/en/plugins/hooks.mdx b/docs/src/content/docs/en/plugins/hooks.mdx index cd683170..cfa1e225 100644 --- a/docs/src/content/docs/en/plugins/hooks.mdx +++ b/docs/src/content/docs/en/plugins/hooks.mdx @@ -2,8 +2,8 @@ title: Hooks reference --- -Hooks are methods that live in the Plugin class, they are executed in parts of -the Castopod codebase. +Hooks are methods of the Plugin class, they are executed in parts of the +Castopod codebase. ## List @@ -17,6 +17,11 @@ the Castopod codebase. ### rssBeforeChannel +This hook is executed just before rendering the `` tag in the Podcast +RSS feed using the given Podcast object. + +Here is a good place to alter the Podcast object. + ```php public function rssBeforeChannel(Podcast $podcast): void { @@ -26,8 +31,13 @@ public function rssBeforeChannel(Podcast $podcast): void ### rssAfterChannel +This hook is executed after rendering all of the `` tags in the Podcast +RSS feed. + +Here is a good place to add new tags to the generated channel. + ```php -public function rssAfterChannel(Podcast $podcast, SimpleRSSElement $rss): void +public function rssAfterChannel(Podcast $podcast, SimpleRSSElement $channel): void { // … } @@ -35,6 +45,11 @@ public function rssAfterChannel(Podcast $podcast, SimpleRSSElement $rss): void ### rssBeforeItem +This hook is executed before rendering an `` tag in the Podcast RSS feed +using the given Episode object. + +Here is a good place to alter the Episode object. + ```php public function rssBeforeItem(Episode $episode): void { @@ -44,8 +59,13 @@ public function rssBeforeItem(Episode $episode): void ### rssAfterItem +This hook is executed after rendering an ``'s tags in the Podcast RSS +feed. + +Here is a good place to add new tags to the generated item. + ```php -public function rssAfterItem(Epsiode $episode, SimpleRSSElement $rss): void +public function rssAfterItem(Epsiode $episode, SimpleRSSElement $item): void { // … } @@ -53,6 +73,11 @@ public function rssAfterItem(Epsiode $episode, SimpleRSSElement $rss): void ### siteHead +This hook is executed in the public pages' `` tag. + +This is a good place to add meta tags and third-party scripts to Castopod's +public pages. + ```php public function siteHead(): void { diff --git a/docs/src/content/docs/en/plugins/index.mdx b/docs/src/content/docs/en/plugins/index.mdx index 4e16b87c..f8da83b2 100644 --- a/docs/src/content/docs/en/plugins/index.mdx +++ b/docs/src/content/docs/en/plugins/index.mdx @@ -2,7 +2,7 @@ title: Castopod Plugins --- -import { FileTree, Aside } from "@astrojs/starlight/components"; +import { FileTree, Aside, Tabs, TabItem } from "@astrojs/starlight/components"; Plugins are ways to extend Castopod's core features. @@ -16,13 +16,13 @@ Plugins are ways to extend Castopod's core features. - fr.json - … - icon.svg - - [manifest.json](./manifest) // required - - [Plugin.php](#plugin-class) // required + - manifest.json // required + - Plugin.php // required - README.md -Plugins reside in the `plugins` folder under a **vendor** folder, ie. the +Plugins reside in the `plugins/` directory under a `vendor/` folder, ie. the organisation or person who authored the plugin. @@ -35,15 +35,16 @@ organisation or person who authored the plugin. -### manifest.json (required) +### Plugin manifest (required) -The plugin manifest is a JSON file containing your plugin's metadata and -permissions. +The plugin manifest is a JSON file containing the plugin's metadata and +declarations. This file will determine whether a plugin is valid or not. The minimal required data being: ```json +// manifest.json { "name": "acme/hello-world", "version": "1.0.0" @@ -52,12 +53,12 @@ data being: Checkout the [manifest.json reference](./manifest). -

Plugin class (required)

+### Plugin class (required) -This is where your plugin's logic will live. +This is where the plugin's logic lives. -The Plugin class must extend Castopod's BasePlugin class and implement one or -multiple [Hooks](./hooks) (methods). +The Plugin class extends Castopod's BasePlugin class and implements one or more +[Hooks](./hooks) (methods) intended to be run throughout Castopod's codebase. ```php // Plugin.php @@ -69,7 +70,11 @@ use Modules\Plugins\Core\BasePlugin; class AcmeHelloWorldPlugin extends BasePlugin { - // … + // this rssBeforeChannel method is a Hook + public function rssBeforeChannel(Podcast $podcast): void + { + // … + } } ``` @@ -85,14 +90,14 @@ For example, a plugin living under the `acme/hello-world` folder must be named -### README.md +### Plugin README -The `README.md` file is loaded into the plugin's view page for the user to -read. +The `README.md` file is loaded into the plugin's view page for the user to read +through. It should be used for any additional information to help guide the user in using the plugin. -### icon.svg +### Plugin icon The plugin icon is displayed next to its title, it is an SVG file intended to give a graphical representation of the plugin. @@ -101,8 +106,8 @@ The icon should be squared, and be legible in a 64px by 64px circle. ### Internationalization (i18n) -Translation strings live under the `i18n` folder. Translation files are JSON -files named as locale keys: +Plugins can be translated. Translation strings live inside the `i18n` folder. +Translation files are JSON files named as locale keys: @@ -118,16 +123,45 @@ Supported locales are: `br`,`ca`,`de`,`en`,`es`,`fr`,`nn-no`,`pl`,`pt-br`,`sr-latn`,`zh-hans`. The translation strings allow you to translate the title, description and -settings keys. +settings keys (ie. labels, hints, helpers, etc.). -```json -{ - "title": "Hello, World!", - "description": "A Castopod plugin to greet the world!", - "settings": { - "general": {}, - "podcast": {}, - "episode": {} - } -} -``` + + + ```json + // i18n/en.json + { + "title": "Hello, World!", + "description": "A Castopod plugin to greet the world!", + "settings": { + "general": { + "field-key": { + "label": "Enter a text", + "hint": "You can enter any type of character." + } + }, + "podcast": {}, + "episode": {} + } + } + ``` + + + ```json + // i18n/fr.json + { + "title": "Bonjour, le Monde !", + "description": "Un plugin castopod pour saluer le monde !", + "settings": { + "general": { + "field-key": { + "label": "Saisissez un texte", + "hint": "Vous pouvez saisir n'importe quel type de caractère." + } + }, + "podcast": {}, + "episode": {} + } + } + ``` + + diff --git a/docs/src/content/docs/en/plugins/manifest.mdx b/docs/src/content/docs/en/plugins/manifest.mdx index b1754f56..8941bce9 100644 --- a/docs/src/content/docs/en/plugins/manifest.mdx +++ b/docs/src/content/docs/en/plugins/manifest.mdx @@ -7,7 +7,14 @@ a JSON file. ### name (required) -The plugin name, including 'vendor-name/' prefix. +The plugin name, including 'vendor-name/' prefix. Examples: + +- acme/hello-world +- adaures/click + +The name must be lowercase and consist of words separated by `-`, `.` or `_`. +The complete name should match +`^[a-z0-9]([_.-]?[a-z0-9]+)*\/[a-z0-9]([_.-]?[a-z0-9]+)*$`. ### version (required) @@ -15,8 +22,8 @@ The plugin's semantic version (eg. 1.0.0) - see https://semver.org/ ### description -The plugin's description. This helps people discover your plugin as it's listed -in repositories +The plugin's description. This helps people discover your plugin when listed in +repositories. ### authors @@ -25,7 +32,7 @@ a required "name" field and optional "email" and "url" fields: ```json { - "name": "Jean D'eau", + "name": "Jean Deau", "email": "jean.deau@example.com", "url": "https://example.com/" } @@ -34,7 +41,7 @@ a required "name" field and optional "email" and "url" fields: Or you can shorten the object into a single string: ```json -"Jean D'eau (https://example.com/)" +"Jean Deau (https://example.com/)" ``` ### homepage @@ -43,17 +50,79 @@ The URL to the project homepage. ### license -You should 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. +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 +Whether or not to publish the plugin in public directories. If set to `true`, +directories should refuse to publish the plugin. + ### keywords +Array of strings to help your plugin get discovered when listed in repositories. + ### hooks +List of hooks used by the plugin. If the hook is not specified, Castopod will +not run it. + ### settings +Declare settings forms for persisting user data. The plugin's settings forms can +be declared at three levels: `general`, `podcast`, and `episode`. + +Each level accepts one or more fields, identified by a key. + +```json +{ + "settings": { + "general": { // general settings form + "field-key": { + "type": "text", // default field type: a text input + "label": "Enter a text" + }, + … + }, + "podcast": {…}, // settings form for each podcast + "episode": {…}, // settings form for each episode + } +} +``` + +The `general`, `podcast`, and `episode` settings are of `Fields` object with +each property being a field key and the value being a `Field` object. + +#### Field object + +A field is a form element: + +| Property | Type | Note | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | +| `type` | `checkbox` \| `datetime` \| `email` \| `markdown` \| `number` \| `radio-group` \| `select-multiple` \| `select` \| `text` \| `textarea` \| `toggler` \| `url` | Default is `text` | +| `label` (required) | `string` | Can be translated (see i18n) | +| `hint` | `string` | Can be translated (see i18n) | +| `helper` | `string` | Can be translated (see i18n) | +| `optional` | `boolean` | Default is `false` | +| `options` | `Options` | Required for `radio-group`, `select-multiple`, and `select` types. | + +#### Options object + +The `Options` object properties are option keys and the value is an `Option`. + +##### Option object + +| Property | Type | Note | +| ------------------ | -------- | ---------------------------- | +| `label` (required) | `string` | Can be translated (see i18n) | +| `hint` | `string` | Can be translated (see i18n) | + ### files +Array of file patterns that describes the entries to be included when your +plugin is installed. + ### repository + +Repository where the plugin's code lives. Helpful for people who want to +contribute. diff --git a/modules/Plugins/Manifest/Field.php b/modules/Plugins/Manifest/Field.php index 74f0fde3..02075023 100644 --- a/modules/Plugins/Manifest/Field.php +++ b/modules/Plugins/Manifest/Field.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace Modules\Plugins\Manifest; +use Override; + /** * @property string $key * @property 'text'|'email'|'url'|'markdown'|'number'|'switch' $type @@ -45,6 +47,22 @@ class Field extends ManifestObject */ protected array $options = []; + #[Override] + public function loadData(array $data): void + { + if (array_key_exists('options', $data)) { + $newOptions = []; + foreach ($data['options'] as $key => $option) { + $option['value'] = $key; + $newOptions[] = $option; + } + + $data['options'] = $newOptions; + } + + parent::loadData($data); + } + /** * @return array{label:string,value:string,hint:string}[] */ diff --git a/modules/Plugins/Manifest/Fields.php b/modules/Plugins/Manifest/Fields.php deleted file mode 100644 index 08db788d..00000000 --- a/modules/Plugins/Manifest/Fields.php +++ /dev/null @@ -1,16 +0,0 @@ - Date: Mon, 10 Jun 2024 16:34:13 +0000 Subject: [PATCH 029/210] build: release next major version as prerelease - edit .releaserc + gitlab-ci to add next branch - add plugins folder to bundle BREAKING CHANGE: next major release including plugins architecture --- .gitlab-ci.yml | 4 ++++ .releaserc.json | 4 ++++ .rsync-filter | 1 + docker/production/.gitlab-ci.yml | 3 ++- docker/production/castopod/Dockerfile | 2 +- scripts/bundle.sh | 2 +- 6 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 51e7330a..e00055b2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -53,6 +53,7 @@ lint-commit-msg: - main - beta - alpha + - next lint-php: stage: quality @@ -120,6 +121,7 @@ bundle: - main - beta - alpha + - next release: stage: release @@ -148,6 +150,7 @@ release: - main - beta - alpha + - next website: stage: deploy @@ -176,5 +179,6 @@ docker: - main - beta - alpha + - next variables: - $CI_PROJECT_NAMESPACE == "adaures" diff --git a/.releaserc.json b/.releaserc.json index af98b785..d6eb2f66 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -8,6 +8,10 @@ { "name": "beta", "prerelease": true + }, + { + "name": "next", + "prerelease": true } ], "plugins": [ diff --git a/.rsync-filter b/.rsync-filter index 576403e0..877e5cb9 100644 --- a/.rsync-filter +++ b/.rsync-filter @@ -4,6 +4,7 @@ - app/Resources/** + app/*** + modules/*** ++ plugins/*** + public/*** + themes/*** + vendor/*** diff --git a/docker/production/.gitlab-ci.yml b/docker/production/.gitlab-ci.yml index 95e2a633..634ceff1 100644 --- a/docker/production/.gitlab-ci.yml +++ b/docker/production/.gitlab-ci.yml @@ -56,7 +56,7 @@ docker-build-main-release: refs: - main -docker-build-alpha-beta-release: +docker-build-prerelease: stage: build image: name: docker.io/docker:23.0.3-dind @@ -86,3 +86,4 @@ docker-build-alpha-beta-release: refs: - alpha - beta + - next diff --git a/docker/production/castopod/Dockerfile b/docker/production/castopod/Dockerfile index 77700f5e..5a5fc552 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.2-cli +FROM docker.io/php:8.3-cli ARG UNIT_VERSION=1.31.1 diff --git a/scripts/bundle.sh b/scripts/bundle.sh index 8e1d2ece..fb94dded 100644 --- a/scripts/bundle.sh +++ b/scripts/bundle.sh @@ -2,7 +2,7 @@ set -e VERSION=$1 -COMPOSER_VERSION=$(echo "$VERSION" | sed -r 's/(alpha|beta)./\1/g') +COMPOSER_VERSION=$(echo "$VERSION" | sed -r 's/(alpha|beta|next)./\1/g') # replace composer.json version using jq echo "$( jq '.version = "'$COMPOSER_VERSION'"' composer.json )" > composer.json From 0eeedb9dc605cdf0eca6f693b09cbe1d94a534f3 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 19 Jun 2024 10:12:35 +0000 Subject: [PATCH 030/210] chore(release): 2.0.0-next.1 [skip ci] # [2.0.0-next.1](https://code.castopod.org/adaures/castopod/compare/v1.11.0...v2.0.0-next.1) (6/19/2024) ### Bug Fixes * add missing php-icons config file to bundle ([56612f0](https://code.castopod.org/adaures/castopod/commit/56612f0c762aa2d98e3c8c77fba88ffdf6f46a44)) * **docs:** add base to og image using env variable ([fe67659](https://code.castopod.org/adaures/castopod/commit/fe676590f23a33bdbe8905d234760923c029e350)) * **import:** rewrite download_file helper to output curl response directly to file ([eb7ad2f](https://code.castopod.org/adaures/castopod/commit/eb7ad2f7e1c0137f222f47e47062887de42c4824)) * include app/Resources/icons folder to bundle ([3fd5efc](https://code.castopod.org/adaures/castopod/commit/3fd5efc7956977acc19e53182f25b12813964a7d)) * **platforms:** add platforms service + reduce memory consumption when rendering platform cards ([fe73e9f](https://code.castopod.org/adaures/castopod/commit/fe73e9fae9ea5d5ce946680aec194308bb2e620c)) * set owner email visibility when editing podcast ([fc4f982](https://code.castopod.org/adaures/castopod/commit/fc4f9825568cd4384c5b3cfe972accd146548807)), closes [#473](https://code.castopod.org/adaures/castopod/issues/473) ### Build System * release next major version as prerelease ([8275226](https://code.castopod.org/adaures/castopod/commit/827522643e9f8a5ea9be05b4847dc637f0f43a13)) ### Features * add Plugins module with base files for plugins architecture ([7253e13](https://code.castopod.org/adaures/castopod/commit/7253e13ac2118f6f165f54ea0cbcd63d51ab9205)) * **plugins:** abstract settings form for general, podcast and episode types ([b62b483](https://code.castopod.org/adaures/castopod/commit/b62b483ad9ff114a22a9ee52e1a1a2c9fa444d42)) * **plugins:** activate / deactivate plugin using settings table ([27d2a1b](https://code.castopod.org/adaures/castopod/commit/27d2a1b0ffba9454dd54cbb4251a2d179b09762a)) * **plugins:** add aside with plugin metadata next to plugin's readme ([dfb7888](https://code.castopod.org/adaures/castopod/commit/dfb7888aeb689b4066abc37084e08cd7f1d0f15d)) * **plugins:** add before channel/item hooks to allow podcast/episode data edit when generating rss ([80d2c48](https://code.castopod.org/adaures/castopod/commit/80d2c48ee265cb32ed0d710c488292fcbc120044)) * **plugins:** add json schema definition for plugin manifest ([b5eddf3](https://code.castopod.org/adaures/castopod/commit/b5eddf351f6f6fa1c299fbac31cbd056ef232330)) * **plugins:** add methods to easily retrieve general, podcast and episode settings in hooks methods ([3a900bb](https://code.castopod.org/adaures/castopod/commit/3a900bbab68b819cedf8943540d2ee0aeb6e8539)) * **plugins:** add new field types + validate & cast user data before storing settings ([6f833fc](https://code.castopod.org/adaures/castopod/commit/6f833fc76a3aa6c6b87c27ad18a2fb90e537e21e)) * **plugins:** add options to manifest for building forms and storing plugin settings ([3d8aedf](https://code.castopod.org/adaures/castopod/commit/3d8aedf9c34e6927b6d3b11445d5f0e669b347d7)) * **plugins:** add settings page for podcast and episode if defined in the plugin's manifest ([89ac92f](https://code.castopod.org/adaures/castopod/commit/89ac92fb412a04231ce52fd6480c9ab893b19ef5)) * **plugins:** add siteHead hook to add custom meta tags to public pages ([e80a33b](https://code.castopod.org/adaures/castopod/commit/e80a33bf2ad4fe1b47037add7470a6c2770f4036)) * **plugins:** display errors when plugin is invalid instead of crashing ([8ec7909](https://code.castopod.org/adaures/castopod/commit/8ec79097bbdbcbce622518ef61c068f20e0ef74e)) * **plugins:** handle empty states and long strings in UI ([45ac2a4](https://code.castopod.org/adaures/castopod/commit/45ac2a4be96532b9456e6af1d26ba4ada3649303)) * **plugins:** load and validate plugin manifest.json ([1510e36](https://code.castopod.org/adaures/castopod/commit/1510e36c0acd2b254622ec230acd1d2461ee9bf3)) * **plugins:** load plugins using file locator service ([587938d](https://code.castopod.org/adaures/castopod/commit/587938d2bf307b823af143586b9ec9e9b44e8dc1)) * **plugins:** load README.md file to view plugin's instructions in UI ([e6bfdfc](https://code.castopod.org/adaures/castopod/commit/e6bfdfc3902705285701c13c8067fe0f538425c6)) * **plugins:** register plugins using Plugin.php file instead of namespace + simplify i18n structure ([2035c39](https://code.castopod.org/adaures/castopod/commit/2035c39fd138a1fd408516bd1972ab6a02544c10)) * **plugins:** uninstall plugins via CLI and admin UI ([9a80de4](https://code.castopod.org/adaures/castopod/commit/9a80de40686bbf4288da21cc2a6dde8036580e47)) * set owner email to hidden by default in podcast create form ([7a6d9df](https://code.castopod.org/adaures/castopod/commit/7a6d9df6db8a6184b8250ced0475f3e741dde7f4)) * support podcast:txt tag with verify use case ([57e459e](https://code.castopod.org/adaures/castopod/commit/57e459e187ed048430f4137172e22396cd02bf81)), closes [#468](https://code.castopod.org/adaures/castopod/issues/468) ### BREAKING CHANGES * next major release including plugins architecture --- CHANGELOG.md | 79 ++++++++++++++++++++++++++++++++++++++++ app/Config/Constants.php | 2 +- composer.json | 2 +- package.json | 2 +- 4 files changed, 82 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c05874dd..8c941ea6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,82 @@ +# [2.0.0-next.1](https://code.castopod.org/adaures/castopod/compare/v1.11.0...v2.0.0-next.1) (6/19/2024) + +### Bug Fixes + +- add missing php-icons config file to bundle + ([56612f0](https://code.castopod.org/adaures/castopod/commit/56612f0c762aa2d98e3c8c77fba88ffdf6f46a44)) +- **docs:** add base to og image using env variable + ([fe67659](https://code.castopod.org/adaures/castopod/commit/fe676590f23a33bdbe8905d234760923c029e350)) +- **import:** rewrite download_file helper to output curl response directly to + file + ([eb7ad2f](https://code.castopod.org/adaures/castopod/commit/eb7ad2f7e1c0137f222f47e47062887de42c4824)) +- include app/Resources/icons folder to bundle + ([3fd5efc](https://code.castopod.org/adaures/castopod/commit/3fd5efc7956977acc19e53182f25b12813964a7d)) +- **platforms:** add platforms service + reduce memory consumption when + rendering platform cards + ([fe73e9f](https://code.castopod.org/adaures/castopod/commit/fe73e9fae9ea5d5ce946680aec194308bb2e620c)) +- set owner email visibility when editing podcast + ([fc4f982](https://code.castopod.org/adaures/castopod/commit/fc4f9825568cd4384c5b3cfe972accd146548807)), + closes [#473](https://code.castopod.org/adaures/castopod/issues/473) + +### Build System + +- release next major version as prerelease + ([8275226](https://code.castopod.org/adaures/castopod/commit/827522643e9f8a5ea9be05b4847dc637f0f43a13)) + +### Features + +- add Plugins module with base files for plugins architecture + ([7253e13](https://code.castopod.org/adaures/castopod/commit/7253e13ac2118f6f165f54ea0cbcd63d51ab9205)) +- **plugins:** abstract settings form for general, podcast and episode types + ([b62b483](https://code.castopod.org/adaures/castopod/commit/b62b483ad9ff114a22a9ee52e1a1a2c9fa444d42)) +- **plugins:** activate / deactivate plugin using settings table + ([27d2a1b](https://code.castopod.org/adaures/castopod/commit/27d2a1b0ffba9454dd54cbb4251a2d179b09762a)) +- **plugins:** add aside with plugin metadata next to plugin's readme + ([dfb7888](https://code.castopod.org/adaures/castopod/commit/dfb7888aeb689b4066abc37084e08cd7f1d0f15d)) +- **plugins:** add before channel/item hooks to allow podcast/episode data edit + when generating rss + ([80d2c48](https://code.castopod.org/adaures/castopod/commit/80d2c48ee265cb32ed0d710c488292fcbc120044)) +- **plugins:** add json schema definition for plugin manifest + ([b5eddf3](https://code.castopod.org/adaures/castopod/commit/b5eddf351f6f6fa1c299fbac31cbd056ef232330)) +- **plugins:** add methods to easily retrieve general, podcast and episode + settings in hooks methods + ([3a900bb](https://code.castopod.org/adaures/castopod/commit/3a900bbab68b819cedf8943540d2ee0aeb6e8539)) +- **plugins:** add new field types + validate & cast user data before storing + settings + ([6f833fc](https://code.castopod.org/adaures/castopod/commit/6f833fc76a3aa6c6b87c27ad18a2fb90e537e21e)) +- **plugins:** add options to manifest for building forms and storing plugin + settings + ([3d8aedf](https://code.castopod.org/adaures/castopod/commit/3d8aedf9c34e6927b6d3b11445d5f0e669b347d7)) +- **plugins:** add settings page for podcast and episode if defined in the + plugin's manifest + ([89ac92f](https://code.castopod.org/adaures/castopod/commit/89ac92fb412a04231ce52fd6480c9ab893b19ef5)) +- **plugins:** add siteHead hook to add custom meta tags to public pages + ([e80a33b](https://code.castopod.org/adaures/castopod/commit/e80a33bf2ad4fe1b47037add7470a6c2770f4036)) +- **plugins:** display errors when plugin is invalid instead of crashing + ([8ec7909](https://code.castopod.org/adaures/castopod/commit/8ec79097bbdbcbce622518ef61c068f20e0ef74e)) +- **plugins:** handle empty states and long strings in UI + ([45ac2a4](https://code.castopod.org/adaures/castopod/commit/45ac2a4be96532b9456e6af1d26ba4ada3649303)) +- **plugins:** load and validate plugin manifest.json + ([1510e36](https://code.castopod.org/adaures/castopod/commit/1510e36c0acd2b254622ec230acd1d2461ee9bf3)) +- **plugins:** load plugins using file locator service + ([587938d](https://code.castopod.org/adaures/castopod/commit/587938d2bf307b823af143586b9ec9e9b44e8dc1)) +- **plugins:** load README.md file to view plugin's instructions in UI + ([e6bfdfc](https://code.castopod.org/adaures/castopod/commit/e6bfdfc3902705285701c13c8067fe0f538425c6)) +- **plugins:** register plugins using Plugin.php file instead of namespace + + simplify i18n structure + ([2035c39](https://code.castopod.org/adaures/castopod/commit/2035c39fd138a1fd408516bd1972ab6a02544c10)) +- **plugins:** uninstall plugins via CLI and admin UI + ([9a80de4](https://code.castopod.org/adaures/castopod/commit/9a80de40686bbf4288da21cc2a6dde8036580e47)) +- set owner email to hidden by default in podcast create form + ([7a6d9df](https://code.castopod.org/adaures/castopod/commit/7a6d9df6db8a6184b8250ced0475f3e741dde7f4)) +- support podcast:txt tag with verify use case + ([57e459e](https://code.castopod.org/adaures/castopod/commit/57e459e187ed048430f4137172e22396cd02bf81)), + closes [#468](https://code.castopod.org/adaures/castopod/issues/468) + +### BREAKING CHANGES + +- next major release including plugins architecture + # [1.11.0](https://code.castopod.org/adaures/castopod/compare/v1.10.5...v1.11.0) (4/17/2024) ### Bug Fixes diff --git a/app/Config/Constants.php b/app/Config/Constants.php index fd5c35ff..5e5e04a6 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.11.0'); +defined('CP_VERSION') || define('CP_VERSION', '2.0.0-next.1'); /* | -------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 28579d79..0511a1b2 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.11.0", + "version": "2.0.0-next1", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", diff --git a/package.json b/package.json index c1bac382..9cd0deb9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "castopod", - "version": "1.11.0", + "version": "2.0.0-next.1", "description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "private": true, "license": "AGPL-3.0-or-later", From 8833bc53cbefe485a0eb03a0f298e59913de6375 Mon Sep 17 00:00:00 2001 From: crowdin Date: Fri, 28 Jun 2024 13:40:28 +0000 Subject: [PATCH 031/210] 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 | 12 +- .../docs/ar/getting-started/security.mdx | 2 +- .../docs/ar/getting-started/update.mdx | 1 + docs/src/content/docs/ar/index.mdx | 1262 +-------------- .../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 | 1250 +-------------- .../content/docs/ca/getting-started/auth.mdx | 16 +- .../docs/ca/getting-started/docker.mdx | 146 +- .../docs/ca/getting-started/install.mdx | 105 +- .../docs/ca/getting-started/update.mdx | 7 +- docs/src/content/docs/ca/index.mdx | 1272 +-------------- .../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 | 1335 +-------------- .../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 | 1248 +-------------- .../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 | 1252 +-------------- .../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 | 1279 +-------------- .../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 | 1254 +-------------- .../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 | 1254 +-------------- .../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 | 1425 ++--------------- .../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 | 1289 +-------------- .../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 | 1254 +-------------- .../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 | 1254 +-------------- .../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 | 1273 +-------------- .../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 | 1218 +------------- .../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 | 1218 +------------- .../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 | 1254 +-------------- .../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 | 1218 +------------- .../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 | 1218 +------------- .../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 | 1379 +--------------- .../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 | 1222 +------------- .../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 | 1218 +------------- .../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 | 1270 +-------------- .../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 | 1218 +------------- .../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 | 1222 +------------- .../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 | 1218 +------------- .../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 | 1222 +------------- .../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 | 1335 +-------------- .../content/docs/sv/getting-started/auth.mdx | 16 +- .../docs/sv/getting-started/docker.mdx | 152 +- .../docs/sv/getting-started/install.mdx | 141 +- .../docs/sv/getting-started/update.mdx | 21 +- docs/src/content/docs/sv/index.mdx | 1278 +-------------- .../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 | 1222 +------------- .../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 | 1286 +-------------- .../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 | 1250 +-------------- 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, 5891 insertions(+), 43081 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 9471b0b3..c9cc1c0d 100644 --- a/docs/src/content/docs/ar/getting-started/install.mdx +++ b/docs/src/content/docs/ar/getting-started/install.mdx @@ -7,15 +7,6 @@ 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.1 or higher @@ -24,7 +15,7 @@ If you prefer using Docker, you may skip this and go straight to the - An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's incoming requests -### PHP v8.1, alebo vyššia +### PHP v8.1 or higher PHP version 8.1 or higher is required, with the following extensions installed: @@ -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!
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 47bdd5c7..c54bc889 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 focus:ring-accent"> '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 be45db5b..455fc841 100644 --- a/themes/cp_admin/subscription/list.php +++ b/themes/cp_admin/subscription/list.php @@ -45,19 +45,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) { @@ -69,7 +69,7 @@ return '' . lang('Subscription.status.' . $subscription->status) . ''; }, - ], + ], [ 'header' => lang('Common.actions'), 'cell' => function ($subscription, $podcast) { @@ -121,7 +121,7 @@ '' . ''; }, - ], + ], ], $podcast->subscriptions, '', diff --git a/themes/cp_app/episode/_layout-preview.php b/themes/cp_app/episode/_layout-preview.php index 882689b1..48676f24 100644 --- a/themes/cp_app/episode/_layout-preview.php +++ b/themes/cp_app/episode/_layout-preview.php @@ -90,8 +90,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 19bf7ffa..03915598 100644 --- a/themes/cp_app/episode/_layout.php +++ b/themes/cp_app/episode/_layout.php @@ -87,8 +87,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 20f230b6..7e0a8779 100644 --- a/themes/cp_app/home.php +++ b/themes/cp_app/home.php @@ -41,9 +41,9 @@ get('App.siteName') === 'Castopod' ? 'castopod' . + ->get('App.siteName') === 'Castopod' ? 'castopod' . svg('castopod-logo-base', 'h-6 ml-2') : esc(service('settings') - ->get('App.siteName')) ?> + ->get('App.siteName')) ?>
diff --git a/themes/cp_app/pages/_layout.php b/themes/cp_app/pages/_layout.php index 032e3de9..ed496c03 100644 --- a/themes/cp_app/pages/_layout.php +++ b/themes/cp_app/pages/_layout.php @@ -55,7 +55,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 c031efe8..f8f8c3bc 100644 --- a/themes/cp_app/pages/map.php +++ b/themes/cp_app/pages/map.php @@ -58,9 +58,9 @@ diff --git a/themes/cp_app/podcast/_partials/sidebar.php b/themes/cp_app/podcast/_partials/sidebar.php index 364f7b74..80c1c581 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/links.php b/themes/cp_app/podcast/links.php index c0a0e91a..bf69e6d4 100644 --- a/themes/cp_app/podcast/links.php +++ b/themes/cp_app/podcast/links.php @@ -84,7 +84,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 bd9f3dfe..cfe4217d 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_install/cache_config.php b/themes/cp_install/cache_config.php index d622c48e..5db1b292 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'), + ])) ?>" selected="file" required="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 f88abd26c8d411f8b8957fc8b26fca1f8084e3c3 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 25 Aug 2025 16:46:45 +0000 Subject: [PATCH 149/210] fix(episodes): set dropdown menu for seasons / years to a maximum height with auto scroll --- themes/cp_app/podcast/episodes.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/themes/cp_app/podcast/episodes.php b/themes/cp_app/podcast/episodes.php index 070c5b2f..e2d37f24 100644 --- a/themes/cp_app/podcast/episodes.php +++ b/themes/cp_app/podcast/episodes.php @@ -23,7 +23,7 @@ 'class' => 'ml-2 text-xl', ]) ?> -
From 5b4403e87e83a3b63ef3a31a9c7b2215c8993801 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 25 Aug 2025 16:50:21 +0000 Subject: [PATCH 150/210] chore: update .releaserc to include more detailed release notes --- .releaserc.json | 63 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/.releaserc.json b/.releaserc.json index af98b785..b5b4a34d 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -11,8 +11,67 @@ } ], "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", + [ + "@semantic-release/commit-analyzer", + { + "preset": "conventionalcommits", + "releaseRules": [ + { + "type": "docs", + "scope": "README", + "release": "patch" + }, + { + "type": "refactor", + "scope": "core-*", + "release": "minor" + }, + { + "type": "refactor", + "release": "patch" + } + ], + "parserOpts": { + "noteKeywords": ["BREAKING CHANGE", "BREAKING CHANGES", "BREAKING"] + } + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits", + "parserOpts": { + "noteKeywords": ["BREAKING CHANGE", "BREAKING CHANGES", "BREAKING"] + }, + "presetConfig": { + "types": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "chore", + "section": "Internal", + "hidden": false + }, + { + "type": "refactor", + "section": "Internal", + "hidden": false + }, + { + "type": "perf", + "section": "Internal", + "hidden": false + } + ] + } + } + ], "@semantic-release/changelog", [ "@semantic-release/exec", From 3d7969d1daea20edcb1e2425b80d160c04dab070 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 25 Aug 2025 17:08:21 +0000 Subject: [PATCH 151/210] chore: fix rector issues with filters' methods return types --- app/Filters/AllowCorsFilter.php | 6 +++--- modules/Api/Rest/V1/Filters/ApiFilter.php | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Filters/AllowCorsFilter.php b/app/Filters/AllowCorsFilter.php index 91e6ed5d..ca64b7ca 100644 --- a/app/Filters/AllowCorsFilter.php +++ b/app/Filters/AllowCorsFilter.php @@ -12,11 +12,11 @@ class AllowCorsFilter implements FilterInterface { /** * @param string[]|null $arguments - * @return RequestInterface|ResponseInterface|string|void + * @return RequestInterface|ResponseInterface|string|null */ public function before(RequestInterface $request, $arguments = null) { - // Do something here + return null; } /** @@ -29,7 +29,7 @@ class AllowCorsFilter implements FilterInterface $response->setHeader('Cache-Control', 'public, max-age=86400'); } - $response->setHeader('Access-Control-Allow-Origin', '*') // for allowing any domain, insecure + return $response->setHeader('Access-Control-Allow-Origin', '*') // for allowing any domain, insecure ->setHeader('Access-Control-Allow-Headers', '*') // for allowing any headers, insecure ->setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS') // allows GET and OPTIONS methods only ->setHeader('Access-Control-Max-Age', '86400'); diff --git a/modules/Api/Rest/V1/Filters/ApiFilter.php b/modules/Api/Rest/V1/Filters/ApiFilter.php index ff0a0715..dee4982c 100644 --- a/modules/Api/Rest/V1/Filters/ApiFilter.php +++ b/modules/Api/Rest/V1/Filters/ApiFilter.php @@ -65,10 +65,10 @@ class ApiFilter implements FilterInterface /** * @param string[]|null $arguments * - * @return ResponseInterface|void + * @return ResponseInterface|null */ public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { - // Do something here + return null; } } From 248739bde78f0ea97cbad23fd8b8dc7a00f56cf0 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 25 Aug 2025 17:18:26 +0000 Subject: [PATCH 152/210] chore(release): 1.13.5 [skip ci] ## 1.13.5 (2025-08-25) * chore: add discourse social network ([08a3779](https://code.castopod.org/adaures/castopod/commit/08a3779)) * chore: fix rector issues with filters' methods return types ([3d7969d](https://code.castopod.org/adaures/castopod/commit/3d7969d)) * chore: update .releaserc to include more detailed release notes ([5b4403e](https://code.castopod.org/adaures/castopod/commit/5b4403e)) * chore: update CI to v4.6.3 + all php and js dependencies ([842c4e4](https://code.castopod.org/adaures/castopod/commit/842c4e4)) * fix(episodes): set dropdown menu for seasons / years to a maximum height with auto scroll ([f88abd2](https://code.castopod.org/adaures/castopod/commit/f88abd2)) * fix(fediverse): add is_private field to posts to flag private posts and hide them from public views ([d5ef2ab](https://code.castopod.org/adaures/castopod/commit/d5ef2ab)) --- CHANGELOG.md | 17 +++++++++++++++++ app/Config/Constants.php | 2 +- composer.json | 2 +- package.json | 2 +- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac77b2bb..dcfdae36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +## 1.13.5 (2025-08-25) + +- chore: add discourse social network + ([08a3779](https://code.castopod.org/adaures/castopod/commit/08a3779)) +- chore: fix rector issues with filters' methods return types + ([3d7969d](https://code.castopod.org/adaures/castopod/commit/3d7969d)) +- chore: update .releaserc to include more detailed release notes + ([5b4403e](https://code.castopod.org/adaures/castopod/commit/5b4403e)) +- chore: update CI to v4.6.3 + all php and js dependencies + ([842c4e4](https://code.castopod.org/adaures/castopod/commit/842c4e4)) +- fix(episodes): set dropdown menu for seasons / years to a maximum height with + auto scroll + ([f88abd2](https://code.castopod.org/adaures/castopod/commit/f88abd2)) +- fix(fediverse): add is_private field to posts to flag private posts and hide + them from public views + ([d5ef2ab](https://code.castopod.org/adaures/castopod/commit/d5ef2ab)) + ## [1.13.4](https://code.castopod.org/adaures/castopod/compare/v1.13.3...v1.13.4) (2025-02-24) ### Bug Fixes diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 9970d6cf..e3b32dc0 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.13.4'); +defined('CP_VERSION') || define('CP_VERSION', '1.13.5'); /* | -------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 71626379..bedf2113 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.13.4", + "version": "1.13.5", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", diff --git a/package.json b/package.json index a07d2cd6..0c3687eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "castopod", - "version": "1.13.4", + "version": "1.13.5", "description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "private": true, "license": "AGPL-3.0-or-later", From 346c00e7b5899bcddaf166bcfc4ee21cdee78cae Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 25 Aug 2025 18:09:41 +0000 Subject: [PATCH 153/210] 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 154/210] 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 167/210] 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 168/210] 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 41211a140ca5308140740d8c310fc24f0abbed00 Mon Sep 17 00:00:00 2001 From: Andreas Grupp Date: Mon, 3 Nov 2025 10:35:35 +0100 Subject: [PATCH 169/210] 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 f999f1a9..a0321ea2 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 b797a08f2e86e58ca96c812a57338a77a05221cb Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 3 Nov 2025 11:25:03 +0000 Subject: [PATCH 170/210] chore(release): 1.13.6 [skip ci] ## 1.13.6 (2025-11-03) * fix(fediverse): access to URI in 'object' instead of going down with '->id' in delete case ([41211a1](https://code.castopod.org/adaures/castopod/commit/41211a1)) * build: update docker images' versions + docs to latest ([07e3a9c](https://code.castopod.org/adaures/castopod/commit/07e3a9c)) --- CHANGELOG.md | 8 ++++++++ app/Config/Constants.php | 2 +- composer.json | 2 +- package.json | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dcfdae36..bea3a3d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.13.6 (2025-11-03) + +- fix(fediverse): access to URI in 'object' instead of going down with '->id' in + delete case + ([41211a1](https://code.castopod.org/adaures/castopod/commit/41211a1)) +- build: update docker images' versions + docs to latest + ([07e3a9c](https://code.castopod.org/adaures/castopod/commit/07e3a9c)) + ## 1.13.5 (2025-08-25) - chore: add discourse social network diff --git a/app/Config/Constants.php b/app/Config/Constants.php index e3b32dc0..34c81384 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.13.5'); +defined('CP_VERSION') || define('CP_VERSION', '1.13.6'); /* | -------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 2177d2c7..962b89c1 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.13.5", + "version": "1.13.6", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", diff --git a/package.json b/package.json index 6408c9d5..3a46c062 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "castopod", - "version": "1.13.5", + "version": "1.13.6", "description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "private": true, "license": "AGPL-3.0-or-later", From a50b0f330ee57d5418cd8a1a19ae4eba320188a4 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 3 Nov 2025 19:09:13 +0000 Subject: [PATCH 171/210] fix(rss): set person's avatar url to "federation" for width and height of 400px --- app/Helpers/rss_helper.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index 67bd368e..3ca13962 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -230,7 +230,7 @@ if (! function_exists('get_rss_feed')) { foreach ($person->roles as $role) { $personElement = $channel->addChild('person', $person->full_name, $podcastNamespace); - $personElement->addAttribute('img', get_avatar_url($person, 'medium')); + $personElement->addAttribute('img', get_avatar_url($person, 'federation')); if ($person->information_url !== null) { $personElement->addAttribute('href', $person->information_url); @@ -435,7 +435,7 @@ if (! function_exists('get_rss_feed')) { esc(lang("PersonsTaxonomy.persons.{$role->group}.label", [], 'en')), ); - $personElement->addAttribute('img', get_avatar_url($person, 'medium')); + $personElement->addAttribute('img', get_avatar_url($person, 'federation')); if ($person->information_url !== null) { $personElement->addAttribute('href', $person->information_url); From 8495bf8148f9462b49fc8fcd8a834ce51aae48f0 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 3 Nov 2025 20:18:58 +0000 Subject: [PATCH 172/210] chore(release): 1.13.7 [skip ci] ## 1.13.7 (2025-11-03) * fix(rss): set person's avatar url to "federation" for width and height of 400px ([a50b0f3](https://code.castopod.org/adaures/castopod/commit/a50b0f3)) --- CHANGELOG.md | 5 +++++ app/Config/Constants.php | 2 +- composer.json | 2 +- package.json | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bea3a3d2..89a93081 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.13.7 (2025-11-03) + +- fix(rss): set person's avatar url to "federation" for width and height of + 400px ([a50b0f3](https://code.castopod.org/adaures/castopod/commit/a50b0f3)) + ## 1.13.6 (2025-11-03) - fix(fediverse): access to URI in 'object' instead of going down with '->id' in diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 34c81384..05c0e67c 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.13.6'); +defined('CP_VERSION') || define('CP_VERSION', '1.13.7'); /* | -------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 962b89c1..839feda6 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.13.6", + "version": "1.13.7", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", diff --git a/package.json b/package.json index 3a46c062..6bd3cd0d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "castopod", - "version": "1.13.6", + "version": "1.13.7", "description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "private": true, "license": "AGPL-3.0-or-later", From d438190b496cc8fe97409be318616afcb18649f7 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sat, 20 Dec 2025 15:59:02 +0000 Subject: [PATCH 173/210] 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 a0a75452..88202c43 100644 --- a/app/Models/EpisodeCommentModel.php +++ b/app/Models/EpisodeCommentModel.php @@ -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, 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 133e3086030d1607edef6b23d47ea70f0792b95f Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sat, 20 Dec 2025 18:48:44 +0000 Subject: [PATCH 174/210] chore: update CI4 to v4.6.4 + php and js packages to latest --- app/Config/Database.php | 1 + app/Config/Paths.php | 3 + app/Controllers/BaseController.php | 7 +- app/Controllers/MapController.php | 2 +- app/Entities/Actor.php | 5 - app/Entities/Category.php | 2 +- app/Entities/Credit.php | 12 - app/Entities/Episode.php | 23 +- app/Entities/EpisodeComment.php | 13 +- app/Entities/Person.php | 2 +- app/Entities/Podcast.php | 43 +- app/Helpers/rss_helper.php | 14 +- app/Libraries/Router.php | 2 +- app/Libraries/SimpleRSSElement.php | 4 - app/Models/ClipModel.php | 1 - app/Models/EpisodeModel.php | 8 +- app/Models/PersonModel.php | 2 +- app/Models/PodcastModel.php | 2 +- app/Models/PostModel.php | 2 +- composer.json | 26 +- composer.lock | 912 ++++--- .../Controllers/NotificationController.php | 2 +- .../Admin/Controllers/PodcastController.php | 6 +- .../Controllers/ContributorController.php | 2 +- modules/Auth/Helpers/auth_helper.php | 2 +- modules/Fediverse/Core/AbstractObject.php | 2 +- modules/Fediverse/Entities/Activity.php | 4 - modules/Fediverse/Entities/Actor.php | 7 +- modules/Fediverse/Entities/Notification.php | 8 - modules/Fediverse/Entities/Post.php | 16 - .../PremiumPodcasts/Entities/Subscription.php | 5 - .../Models/SubscriptionModel.php | 2 +- package.json | 70 +- pnpm-lock.yaml | 2281 ++++++++++------- preload.php | 4 +- rector.php | 4 +- 36 files changed, 2020 insertions(+), 1481 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..ea44afbb 100644 --- a/app/Config/Paths.php +++ b/app/Config/Paths.php @@ -11,6 +11,9 @@ 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 b971af2f..ce2a1d3f 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -54,11 +54,16 @@ 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 + // Caution: Do not edit this line. parent::initController($request, $response, $logger); + // Preload any models, libraries, etc, here. + // $this->session = service('session'); + Theme::setTheme('app'); } } diff --git a/app/Controllers/MapController.php b/app/Controllers/MapController.php index 4dc51cc5..07aed490 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/Actor.php b/app/Entities/Actor.php index 020fd14e..4a174adb 100644 --- a/app/Entities/Actor.php +++ b/app/Entities/Actor.php @@ -12,7 +12,6 @@ namespace App\Entities; use App\Models\PodcastModel; use Modules\Fediverse\Entities\Actor as FediverseActor; -use RuntimeException; /** * @property Podcast|null $podcast @@ -31,10 +30,6 @@ class Actor extends FediverseActor public function getPodcast(): ?Podcast { - if ($this->id === null) { - throw new RuntimeException('Podcast id must be set before getting associated podcast.'); - } - if (! $this->podcast instanceof Podcast) { $this->podcast = (new PodcastModel())->getPodcastByActorId($this->id); } diff --git a/app/Entities/Category.php b/app/Entities/Category.php index 847b0425..464fedb8 100644 --- a/app/Entities/Category.php +++ b/app/Entities/Category.php @@ -15,7 +15,7 @@ use CodeIgniter\Entity\Entity; /** * @property int $id - * @property int $parent_id + * @property int|null $parent_id * @property Category|null $parent * @property string $code * @property string $apple_category diff --git a/app/Entities/Credit.php b/app/Entities/Credit.php index 6c283e8c..67be1cf9 100644 --- a/app/Entities/Credit.php +++ b/app/Entities/Credit.php @@ -55,10 +55,6 @@ class Credit extends Entity public function getPerson(): ?Person { - if ($this->person_id === null) { - throw new RuntimeException('Credit must have person_id before getting person.'); - } - if (! $this->person instanceof Person) { $this->person = (new PersonModel())->getPersonById($this->person_id); } @@ -68,10 +64,6 @@ class Credit extends Entity public function getPodcast(): ?Podcast { - if ($this->podcast_id === null) { - throw new RuntimeException('Credit must have podcast_id before getting podcast.'); - } - if (! $this->podcast instanceof Podcast) { $this->podcast = (new PodcastModel())->getPodcastById($this->podcast_id); } @@ -94,10 +86,6 @@ class Credit extends Entity public function getGroupLabel(): string { - if ($this->person_group === null) { - return ''; - } - /** @var string */ return lang("PersonsTaxonomy.persons.{$this->person_group}.label"); } diff --git a/app/Entities/Episode.php b/app/Entities/Episode.php index 9c71e643..7c29e3ff 100644 --- a/app/Entities/Episode.php +++ b/app/Entities/Episode.php @@ -35,7 +35,6 @@ use Modules\Media\Entities\Chapters; use Modules\Media\Entities\Image; use Modules\Media\Entities\Transcript; use Modules\Media\Models\MediaModel; -use RuntimeException; use SimpleXMLElement; /** @@ -66,7 +65,7 @@ use SimpleXMLElement; * @property string|null $chapters_remote_url * @property string|null $parental_advisory * @property int $number - * @property int $season_number + * @property int|null $season_number * @property string $type * @property bool $is_blocked * @property Location|null $location @@ -406,10 +405,6 @@ class Episode extends Entity */ public function getPersons(): array { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting persons.'); - } - if ($this->persons === null) { $this->persons = (new PersonModel())->getEpisodePersons($this->podcast_id, $this->id); } @@ -424,10 +419,6 @@ class Episode extends Entity */ public function getSoundbites(): array { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting soundbites.'); - } - if ($this->soundbites === null) { $this->soundbites = (new ClipModel())->getEpisodeSoundbites($this->getPodcast()->id, $this->id); } @@ -440,10 +431,6 @@ class Episode extends Entity */ public function getPosts(): array { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting posts.'); - } - if ($this->posts === null) { $this->posts = (new PostModel())->getEpisodePosts($this->id); } @@ -456,10 +443,6 @@ class Episode extends Entity */ public function getComments(): array { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting comments.'); - } - if ($this->comments === null) { $this->comments = (new EpisodeCommentModel())->getEpisodeComments($this->id); } @@ -712,10 +695,6 @@ class Episode extends Entity */ public function getClipCount(): int|string { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting number of video clips.'); - } - return (new ClipModel())->getClipCount($this->podcast_id, $this->id); } } diff --git a/app/Entities/EpisodeComment.php b/app/Entities/EpisodeComment.php index 5b10d133..a0a1502a 100644 --- a/app/Entities/EpisodeComment.php +++ b/app/Entities/EpisodeComment.php @@ -24,7 +24,7 @@ use RuntimeException; * @property Episode|null $episode * @property int $actor_id * @property Actor|null $actor - * @property string $in_reply_to_id + * @property string|null $in_reply_to_id * @property EpisodeComment|null $reply_to_comment * @property string $message * @property string $message_html @@ -75,10 +75,6 @@ class EpisodeComment extends UuidEntity public function getEpisode(): ?Episode { - if ($this->episode_id === null) { - throw new RuntimeException('Comment must have an episode_id before getting episode.'); - } - if (! $this->episode instanceof Episode) { $this->episode = (new EpisodeModel())->getEpisodeById($this->episode_id); } @@ -91,10 +87,6 @@ class EpisodeComment extends UuidEntity */ public function getActor(): ?Actor { - if ($this->actor_id === null) { - throw new RuntimeException('Comment must have an actor_id before getting actor.'); - } - if (! $this->actor instanceof Actor) { $this->actor = model(ActorModel::class, false) ->getActorById($this->actor_id); @@ -108,9 +100,6 @@ class EpisodeComment extends UuidEntity */ public function getReplies(): array { - if ($this->id === null) { - throw new RuntimeException('Comment must be created before getting replies.'); - } if ($this->replies === null) { $this->replies = (new EpisodeCommentModel())->getCommentReplies($this->id); diff --git a/app/Entities/Person.php b/app/Entities/Person.php index 8da212d0..0fff18cf 100644 --- a/app/Entities/Person.php +++ b/app/Entities/Person.php @@ -23,7 +23,7 @@ use RuntimeException; * @property string $full_name * @property string $unique_name * @property string|null $information_url - * @property int $avatar_id + * @property int|null $avatar_id * @property ?Image $avatar * @property int $created_by * @property int $updated_by diff --git a/app/Entities/Podcast.php b/app/Entities/Podcast.php index 2c4d6cb5..c8b1568c 100644 --- a/app/Entities/Podcast.php +++ b/app/Entities/Podcast.php @@ -56,7 +56,7 @@ use RuntimeException; * @property string $language_code * @property int $category_id * @property Category|null $category - * @property int[] $other_categories_ids + * @property int[]|null $other_categories_ids * @property Category[] $other_categories * @property string|null $parental_advisory * @property string|null $publisher @@ -125,7 +125,7 @@ class Podcast extends Entity protected ?array $other_categories = null; /** - * @var string[]|null + * @var int[]|null */ protected ?array $other_categories_ids = null; @@ -340,10 +340,6 @@ class Podcast extends Entity */ public function getEpisodes(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting episodes.'); - } - if ($this->episodes === null) { $this->episodes = (new EpisodeModel())->getPodcastEpisodes($this->id, $this->type); } @@ -356,10 +352,6 @@ class Podcast extends Entity */ public function getEpisodesCount(): int|string { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting number of episodes.'); - } - return (new EpisodeModel())->getPodcastEpisodesCount($this->id); } @@ -370,10 +362,6 @@ class Podcast extends Entity */ public function getPersons(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting persons.'); - } - if ($this->persons === null) { $this->persons = (new PersonModel())->getPodcastPersons($this->id); } @@ -386,10 +374,6 @@ class Podcast extends Entity */ public function getCategory(): ?Category { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting category.'); - } - if (! $this->category instanceof Category) { $this->category = (new CategoryModel())->getCategoryById($this->category_id); } @@ -404,10 +388,6 @@ class Podcast extends Entity */ public function getSubscriptions(): array { - if ($this->id === null) { - throw new RuntimeException('Podcasts must be created before getting subscriptions.'); - } - if ($this->subscriptions === null) { $this->subscriptions = (new SubscriptionModel())->getPodcastSubscriptions($this->id); } @@ -422,10 +402,6 @@ class Podcast extends Entity */ public function getContributors(): array { - if ($this->id === null) { - throw new RuntimeException('Podcasts must be created before getting contributors.'); - } - if ($this->contributors === null) { $this->contributors = (new UserModel())->getPodcastContributors($this->id); } @@ -523,10 +499,6 @@ class Podcast extends Entity */ public function getPodcastingPlatforms(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting podcasting platform links.'); - } - if ($this->podcasting_platforms === null) { $this->podcasting_platforms = (new PlatformModel())->getPlatforms($this->id, 'podcasting'); } @@ -541,10 +513,6 @@ class Podcast extends Entity */ public function getSocialPlatforms(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting social platform links.'); - } - if ($this->social_platforms === null) { $this->social_platforms = (new PlatformModel())->getPlatforms($this->id, 'social'); } @@ -559,9 +527,6 @@ class Podcast extends Entity */ public function getFundingPlatforms(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting funding platform links.'); - } if ($this->funding_platforms === null) { $this->funding_platforms = (new PlatformModel())->getPlatforms($this->id, 'funding'); @@ -575,10 +540,6 @@ class Podcast extends Entity */ public function getOtherCategories(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting other categories.'); - } - if ($this->other_categories === null) { $this->other_categories = (new CategoryModel())->getPodcastCategories($this->id); } diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index 3ca13962..24c9f39d 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -138,9 +138,7 @@ if (! function_exists('get_rss_feed')) { $podcastingPlatformElement->addAttribute('id', $podcastingPlatform->account_id); } - if ($podcastingPlatform->link_url !== null) { - $podcastingPlatformElement->addAttribute('url', $podcastingPlatform->link_url); - } + $podcastingPlatformElement->addAttribute('url', $podcastingPlatform->link_url); } $castopodSocialElement = $channel->addChild('social', null, $podcastNamespace); @@ -170,9 +168,7 @@ if (! function_exists('get_rss_feed')) { $socialElement->addAttribute('accountId', esc($socialPlatform->account_id)); } - if ($socialPlatform->link_url !== null) { - $socialElement->addAttribute('accountUrl', esc($socialPlatform->link_url)); - } + $socialElement->addAttribute('accountUrl', esc($socialPlatform->link_url)); if ($socialPlatform->slug === 'mastodon') { $socialSignUpelement = $socialElement->addChild('socialSignUp', null, $podcastNamespace); @@ -221,9 +217,7 @@ if (! function_exists('get_rss_feed')) { $podcastNamespace, ); $fundingPlatformElement->addAttribute('platform', $fundingPlatform->slug); - if ($fundingPlatform->link_url !== null) { - $fundingPlatformElement->addAttribute('url', $fundingPlatform->link_url); - } + $fundingPlatformElement->addAttribute('url', $fundingPlatform->link_url); } foreach ($podcast->persons as $person) { @@ -503,7 +497,7 @@ if (! function_exists('rss_to_array')) { } $textcontent = trim((string) $rssNode); - if (strlen($textcontent) > 0) { + if ($textcontent !== '') { $arrayNode['content'] = $textcontent; } diff --git a/app/Libraries/Router.php b/app/Libraries/Router.php index 9146b57b..7063f630 100644 --- a/app/Libraries/Router.php +++ b/app/Libraries/Router.php @@ -42,7 +42,7 @@ class Router extends CodeIgniterRouter // Loop through the route array looking for wildcards foreach ($routes as $routeKey => $handler) { - $routeKey = $routeKey === '/' ? $routeKey : ltrim($routeKey, '/ '); + $routeKey = $routeKey === '/' ? $routeKey : ltrim((string) $routeKey, '/ '); $matchedKey = $routeKey; diff --git a/app/Libraries/SimpleRSSElement.php b/app/Libraries/SimpleRSSElement.php index 1dd2e431..827e58dd 100644 --- a/app/Libraries/SimpleRSSElement.php +++ b/app/Libraries/SimpleRSSElement.php @@ -57,10 +57,6 @@ class SimpleRSSElement 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 55b2796a..64583296 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 bf32f119..238a6d15 100644 --- a/app/Models/EpisodeModel.php +++ b/app/Models/EpisodeModel.php @@ -371,15 +371,15 @@ 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(); $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) - ->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(); @@ -402,7 +402,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/PersonModel.php b/app/Models/PersonModel.php index c997c8e8..14fc249e 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[$person->id] = $person->full_name; return $result; }, diff --git a/app/Models/PodcastModel.php b/app/Models/PodcastModel.php index 2385b391..f53fd567 100644 --- a/app/Models/PodcastModel.php +++ b/app/Models/PodcastModel.php @@ -186,7 +186,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 839feda6..d54435e4 100644 --- a/composer.json +++ b/composer.json @@ -9,37 +9,37 @@ "php": "^8.1", "adaures/ipcat-php": "^v1.0.0", "adaures/podcast-persons-taxonomy": "^v1.0.1", - "aws/aws-sdk-php": "^3.356.8", + "aws/aws-sdk-php": "^3.369.0", "chrisjean/php-ico": "^1.0.4", - "cocur/slugify": "^v4.6.0", - "codeigniter4/framework": "4.6.3", + "cocur/slugify": "^v4.7.1", + "codeigniter4/framework": "4.6.4", "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", + "michalsn/codeigniter4-uuid": "1.3.1", "mpratt/embera": "^2.0.42", "opawg/user-agents-v2-php": "dev-main", - "phpseclib/phpseclib": "~2.0.48", + "phpseclib/phpseclib": "~2.0.50", "vlucas/phpdotenv": "^5.6.2", "whichbrowser/parser": "^v2.1.8", "yassinedoghri/php-icons": "^1.3.0", "yassinedoghri/podcast-feed": "dev-main" }, "require-dev": { - "captainhook/captainhook": "^5.25.11", + "captainhook/captainhook": "^5.27.4", "codeigniter/phpstan-codeigniter": "^1.5.4", "mikey179/vfsstream": "v1.6.12", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.1.22", - "phpunit/phpunit": "^10.5.53", - "rector/rector": "^2.1.4", - "symplify/coding-standard": "^12.4.3", - "symplify/easy-coding-standard": "^12.5.24" + "phpstan/phpstan": "^2.1.33", + "phpunit/phpunit": "^10.5.60", + "rector/rector": "^2.2.14", + "symplify/coding-standard": "^13.0.0", + "symplify/easy-coding-standard": "^13.0.0" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 330c3f94..1b9edb94 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": "7924d1910286b95c392f610ed3fd519d", + "content-hash": "d656a2e88ee682f1e5eac8c7d3c29615", "packages": [ { "name": "adaures/ipcat-php", @@ -206,16 +206,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.356.8", + "version": "3.369.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "3efa8c62c11fedb17b90f60b2d3a9f815b406e63" + "reference": "2bbe45aaaaa23a863a5daadcda326cf1c8b4a15b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3efa8c62c11fedb17b90f60b2d3a9f815b406e63", - "reference": "3efa8c62c11fedb17b90f60b2d3a9f815b406e63", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2bbe45aaaaa23a863a5daadcda326cf1c8b4a15b", + "reference": "2bbe45aaaaa23a863a5daadcda326cf1c8b4a15b", "shasum": "" }, "require": { @@ -228,7 +228,8 @@ "guzzlehttp/psr7": "^2.4.5", "mtdowling/jmespath.php": "^2.8.0", "php": ">=8.1", - "psr/http-message": "^2.0" + "psr/http-message": "^1.0 || ^2.0", + "symfony/filesystem": "^v6.4.3 || ^v7.1.0 || ^v8.0.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", @@ -239,13 +240,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": { @@ -253,6 +252,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", @@ -297,31 +297,31 @@ "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.8" + "source": "https://github.com/aws/aws-sdk-php/tree/3.369.0" }, - "time": "2025-08-29T18:06:18+00:00" + "time": "2025-12-19T19:08:40+00:00" }, { "name": "brick/math", - "version": "0.13.1", + "version": "0.14.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04" + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04", - "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04", + "url": "https://api.github.com/repos/brick/math/zipball/f05858549e5f9d7bb45875a75583240a38a281d0", + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.2" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.1", - "vimeo/psalm": "6.8.8" + "phpstan/phpstan": "2.1.22", + "phpunit/phpunit": "^11.5" }, "type": "library", "autoload": { @@ -351,7 +351,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.13.1" + "source": "https://github.com/brick/math/tree/0.14.1" }, "funding": [ { @@ -359,7 +359,7 @@ "type": "github" } ], - "time": "2025-03-29T13:50:30+00:00" + "time": "2025-11-24T14:40:29+00:00" }, { "name": "chrisjean/php-ico", @@ -410,21 +410,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", @@ -478,22 +478,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.4", "source": { "type": "git", "url": "https://github.com/codeigniter4/framework.git", - "reference": "68d1a5896106f869452dd369a690dd5bc75160fb" + "reference": "e4d3702037a34549582453dbf59b7b67877ae82e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/framework/zipball/68d1a5896106f869452dd369a690dd5bc75160fb", - "reference": "68d1a5896106f869452dd369a690dd5bc75160fb", + "url": "https://api.github.com/repos/codeigniter4/framework/zipball/e4d3702037a34549582453dbf59b7b67877ae82e", + "reference": "e4d3702037a34549582453dbf59b7b67877ae82e", "shasum": "" }, "require": { @@ -507,7 +507,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", @@ -554,7 +554,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/CodeIgniter4" }, - "time": "2025-08-02T13:36:13+00:00" + "time": "2025-12-12T10:37:42+00:00" }, { "name": "codeigniter4/queue", @@ -562,25 +562,27 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/queue.git", - "reference": "0f95012aa9671f4cfcc74af0f62c7e0c29dadd8e" + "reference": "3acaa081701b44aaab3ffe8ad6740d138c949e4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/queue/zipball/0f95012aa9671f4cfcc74af0f62c7e0c29dadd8e", - "reference": "0f95012aa9671f4cfcc74af0f62c7e0c29dadd8e", + "url": "https://api.github.com/repos/codeigniter4/queue/zipball/3acaa081701b44aaab3ffe8ad6740d138c949e4b", + "reference": "3acaa081701b44aaab3ffe8ad6740d138c949e4b", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "codeigniter4/devkit": "^1.0", + "codeigniter4/devkit": "^1.3", "codeigniter4/framework": "^4.3", - "phpstan/phpstan-strict-rules": "^1.5", + "php-amqplib/php-amqplib": "^3.7", + "phpstan/phpstan-strict-rules": "^2.0", "predis/predis": "^2.0" }, "suggest": { "ext-redis": "If you want to use RedisHandler", + "php-amqplib/php-amqplib": "If you want to use RabbitMQHandler", "predis/predis": "If you want to use PredisHandler" }, "default-branch": true, @@ -618,7 +620,7 @@ "issues": "https://github.com/codeigniter4/queue/issues", "source": "https://github.com/codeigniter4/queue/tree/develop" }, - "time": "2025-08-19T17:42:31+00:00" + "time": "2025-12-18T07:26:23+00:00" }, { "name": "codeigniter4/settings", @@ -752,12 +754,12 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/tasks.git", - "reference": "04894af5f78b0c8652f87081ef75dd1a030e2972" + "reference": "9804e5f42a881fee90db4aee114d6d0bfd8a3d4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/04894af5f78b0c8652f87081ef75dd1a030e2972", - "reference": "04894af5f78b0c8652f87081ef75dd1a030e2972", + "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/9804e5f42a881fee90db4aee114d6d0bfd8a3d4b", + "reference": "9804e5f42a881fee90db4aee114d6d0bfd8a3d4b", "shasum": "" }, "require": { @@ -853,20 +855,20 @@ "source": "https://github.com/codeigniter4/tasks/tree/develop", "issues": "https://github.com/codeigniter4/tasks/issues" }, - "time": "2025-08-13T12:00:00+00:00" + "time": "2025-11-23T18:40:42+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": { @@ -913,7 +915,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": [ { @@ -925,7 +927,7 @@ "type": "github" } ], - "time": "2025-08-20T18:49:47+00:00" + "time": "2025-12-08T15:06:51+00:00" }, { "name": "dflydev/dot-access-data", @@ -1004,29 +1006,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": { @@ -1056,9 +1058,9 @@ ], "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", @@ -1534,32 +1536,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": { @@ -1591,20 +1593,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": { @@ -1641,7 +1643,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.8-dev" + "dev-main": "2.9-dev" } }, "autoload": { @@ -1698,7 +1700,7 @@ "type": "tidelift" } ], - "time": "2025-07-20T12:47:49+00:00" + "time": "2025-11-26T21:48:24+00:00" }, { "name": "league/config", @@ -1873,16 +1875,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": { @@ -1895,12 +1897,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": { @@ -1930,22 +1933,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.0", "source": { "type": "git", "url": "https://github.com/maxmind/web-service-common-php.git", - "reference": "d7c7c42fc31bff26e0ded73a6e187bcfb193f9c4" + "reference": "5b9e3d3472213361eebdb3ab8879e91b8952091b" }, "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/5b9e3d3472213361eebdb3ab8879e91b8952091b", + "reference": "5b9e3d3472213361eebdb3ab8879e91b8952091b", "shasum": "" }, "require": { @@ -1958,7 +1961,7 @@ "friendsofphp/php-cs-fixer": "3.*", "phpstan/phpstan": "*", "phpunit/phpunit": "^8.0 || ^9.0", - "squizlabs/php_codesniffer": "3.*" + "squizlabs/php_codesniffer": "4.*" }, "type": "library", "autoload": { @@ -1981,9 +1984,9 @@ "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.0" }, - "time": "2024-11-14T23:14:52+00:00" + "time": "2025-11-20T18:33:17+00:00" }, { "name": "melbahja/seo", @@ -2047,16 +2050,16 @@ }, { "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": { @@ -2095,9 +2098,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", @@ -2238,25 +2241,25 @@ }, { "name": "nette/schema", - "version": "v1.3.2", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d" + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d", + "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004", + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004", "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", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -2266,6 +2269,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -2294,26 +2300,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.3" }, - "time": "2024-10-06T23:10:23+00:00" + "time": "2025-10-30T22:57:59+00:00" }, { "name": "nette/utils", - "version": "v4.0.8", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" + "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", + "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", "shasum": "" }, "require": { - "php": "8.0 - 8.5" + "php": "8.2 - 8.5" }, "conflict": { "nette/finder": "<3", @@ -2336,7 +2342,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2383,9 +2389,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.0" }, - "time": "2025-08-06T21:43:34+00:00" + "time": "2025-12-01T17:49:23+00:00" }, { "name": "opawg/user-agents-v2-php", @@ -2504,16 +2510,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "2.0.48", + "version": "2.0.50", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "eaa7be704b8b93a6913b69eb7f645a59d7731b61" + "reference": "1815ddd00195487cc922577751c175f339f4e20f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/eaa7be704b8b93a6913b69eb7f645a59d7731b61", - "reference": "eaa7be704b8b93a6913b69eb7f645a59d7731b61", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/1815ddd00195487cc922577751c175f339f4e20f", + "reference": "1815ddd00195487cc922577751c175f339f4e20f", "shasum": "" }, "require": { @@ -2594,7 +2600,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/2.0.48" + "source": "https://github.com/phpseclib/phpseclib/tree/2.0.50" }, "funding": [ { @@ -2610,7 +2616,7 @@ "type": "tidelift" } ], - "time": "2024-12-14T21:03:54+00:00" + "time": "2025-12-15T11:48:50+00:00" }, { "name": "psr/cache", @@ -3043,20 +3049,20 @@ }, { "name": "ramsey/uuid", - "version": "4.9.0", + "version": "4.9.2", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" + "reference": "8429c78ca35a09f27565311b98101e2826affde0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", - "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "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", + "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" }, @@ -3115,9 +3121,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.9.0" + "source": "https://github.com/ramsey/uuid/tree/4.9.2" }, - "time": "2025-06-25T14:20:11+00:00" + "time": "2025-12-14T04:43:48+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3186,6 +3192,76 @@ ], "time": "2024-09-25T14:21:43+00:00" }, + { + "name": "symfony/filesystem", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "d551b38811096d0be9c4691d406991b47c0c630a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a", + "reference": "d551b38811096d0be9c4691d406991b47c0c630a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0|^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/v7.4.0" + }, + "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-11-27T13:27:24+00:00" + }, { "name": "symfony/polyfill-ctype", "version": "v1.33.0", @@ -3700,16 +3776,16 @@ "packages-dev": [ { "name": "captainhook/captainhook", - "version": "5.25.11", + "version": "5.27.4", "source": { "type": "git", "url": "https://github.com/captainhook-git/captainhook.git", - "reference": "f2278edde4b45af353861aae413fc3840515bb80" + "reference": "f4485d2a5db16a37053ffe7916f0808f619b430d" }, "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/f4485d2a5db16a37053ffe7916f0808f619b430d", + "reference": "f4485d2a5db16a37053ffe7916f0808f619b430d", "shasum": "" }, "require": { @@ -3720,10 +3796,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.15.3", + "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": "*" @@ -3760,7 +3836,7 @@ } ], "description": "PHP git hook manager", - "homepage": "http://php.captainhook.info/", + "homepage": "https://php.captainhook.info/", "keywords": [ "commit-msg", "git", @@ -3772,7 +3848,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.27.4" }, "funding": [ { @@ -3780,7 +3856,7 @@ "type": "github" } ], - "time": "2025-08-12T12:14:57+00:00" + "time": "2025-12-12T10:35:01+00:00" }, { "name": "captainhook/secrets", @@ -4306,16 +4382,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.86.0", + "version": "v3.92.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36" + "reference": "2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4a952bd19dc97879b0620f495552ef09b55f7d36", - "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8", + "reference": "2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8", "shasum": "" }, "require": { @@ -4326,39 +4402,38 @@ "ext-hash": "*", "ext-json": "*", "ext-tokenizer": "*", - "fidry/cpu-core-counter": "^1.2", + "fidry/cpu-core-counter": "^1.3", "php": "^7.4 || ^8.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" + "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 || ^8.0", + "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" }, "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.6", - "infection/infection": "^0.29.14", - "justinrainbow/json-schema": "^5.3 || ^6.4", + "facile-it/paraunit": "^1.3.1 || ^2.7", + "infection/infection": "^0.31.0", + "justinrainbow/json-schema": "^6.5", "keradus/cli-executor": "^2.2", "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.8", - "php-cs-fixer/accessible-object": "^1.1", + "php-coveralls/php-coveralls": "^2.9", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", - "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" + "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", + "symfony/polyfill-php85": "^1.33", + "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2 || ^8.0", + "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2 || ^8.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -4373,7 +4448,7 @@ "PhpCsFixer\\": "src/" }, "exclude-from-classmap": [ - "src/Fixer/Internal/*" + "src/**/Internal/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4399,7 +4474,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.86.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.92.3" }, "funding": [ { @@ -4407,7 +4482,7 @@ "type": "github" } ], - "time": "2025-08-13T22:36:21+00:00" + "time": "2025-12-18T10:45:02+00:00" }, { "name": "mikey179/vfsstream", @@ -4523,16 +4598,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": { @@ -4575,9 +4650,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", @@ -4747,16 +4822,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.22", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4" - }, + "version": "2.1.33", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4", - "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", + "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", "shasum": "" }, "require": { @@ -4801,7 +4871,7 @@ "type": "github" } ], - "time": "2025-08-04T19:17:37+00:00" + "time": "2025-12-05T10:24:31+00:00" }, { "name": "phpunit/php-code-coverage", @@ -5126,16 +5196,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.53", + "version": "10.5.60", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "32768472ebfb6969e6c7399f1c7b09009723f653" + "reference": "f2e26f52f80ef77832e359205f216eeac00e320c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/32768472ebfb6969e6c7399f1c7b09009723f653", - "reference": "32768472ebfb6969e6c7399f1c7b09009723f653", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f2e26f52f80ef77832e359205f216eeac00e320c", + "reference": "f2e26f52f80ef77832e359205f216eeac00e320c", "shasum": "" }, "require": { @@ -5156,10 +5226,10 @@ "phpunit/php-timer": "^6.0.0", "sebastian/cli-parser": "^2.0.1", "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", + "sebastian/comparator": "^5.0.4", "sebastian/diff": "^5.1.1", "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", + "sebastian/exporter": "^5.1.4", "sebastian/global-state": "^6.0.2", "sebastian/object-enumerator": "^5.0.0", "sebastian/recursion-context": "^5.0.1", @@ -5207,7 +5277,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.53" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.60" }, "funding": [ { @@ -5231,7 +5301,7 @@ "type": "tidelift" } ], - "time": "2025-08-20T14:40:06+00:00" + "time": "2025-12-06T07:50:42+00:00" }, { "name": "psr/container", @@ -5435,16 +5505,16 @@ }, { "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": { @@ -5499,7 +5569,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": [ { @@ -5507,20 +5577,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": { @@ -5571,7 +5641,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": [ { @@ -5579,7 +5649,7 @@ "type": "open_collective" } ], - "time": "2023-11-13T13:48:05+00:00" + "time": "2025-11-17T20:46:25+00:00" }, { "name": "react/promise", @@ -5656,16 +5726,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": { @@ -5724,7 +5794,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": [ { @@ -5732,7 +5802,7 @@ "type": "open_collective" } ], - "time": "2024-07-26T10:38:09+00:00" + "time": "2025-11-19T20:47:34+00:00" }, { "name": "react/stream", @@ -5814,21 +5884,21 @@ }, { "name": "rector/rector", - "version": "2.1.4", + "version": "2.2.14", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "fe613c528819222f8686a9a037a315ef9d4915b3" + "reference": "6d56bb0e94d4df4f57a78610550ac76ab403657d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/fe613c528819222f8686a9a037a315ef9d4915b3", - "reference": "fe613c528819222f8686a9a037a315ef9d4915b3", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/6d56bb0e94d4df4f57a78610550ac76ab403657d", + "reference": "6d56bb0e94d4df4f57a78610550ac76ab403657d", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.18" + "phpstan/phpstan": "^2.1.33" }, "conflict": { "rector/rector-doctrine": "*", @@ -5862,7 +5932,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.1.4" + "source": "https://github.com/rectorphp/rector/tree/2.2.14" }, "funding": [ { @@ -5870,7 +5940,7 @@ "type": "github" } ], - "time": "2025-08-15T14:41:36+00:00" + "time": "2025-12-09T10:57:55+00:00" }, { "name": "sebastian/cli-parser", @@ -6042,16 +6112,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.3", + "version": "5.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" + "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e8e53097718d2b53cfb2aa859b06a41abf58c62e", + "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e", "shasum": "" }, "require": { @@ -6107,15 +6177,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.4" }, "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": "2024-10-18T14:56:07+00:00" + "time": "2025-09-07T05:25:07+00:00" }, { "name": "sebastian/complexity", @@ -6308,16 +6390,16 @@ }, { "name": "sebastian/exporter", - "version": "5.1.2", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + "reference": "0735b90f4da94969541dac1da743446e276defa6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6", + "reference": "0735b90f4da94969541dac1da743446e276defa6", "shasum": "" }, "require": { @@ -6326,7 +6408,7 @@ "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -6374,15 +6456,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4" }, "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/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T07:17:12+00:00" + "time": "2025-09-24T06:09:11+00:00" }, { "name": "sebastian/global-state", @@ -6917,16 +7011,16 @@ }, { "name": "sebastianfeldmann/git", - "version": "3.14.3", + "version": "3.15.3", "source": { "type": "git", "url": "https://github.com/sebastianfeldmann/git.git", - "reference": "22584df8df01d95b0700000cfd855779fae7d8ea" + "reference": "601fd0fbb7d1a784e009a4f8f40975e777ad334a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/22584df8df01d95b0700000cfd855779fae7d8ea", - "reference": "22584df8df01d95b0700000cfd855779fae7d8ea", + "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/601fd0fbb7d1a784e009a4f8f40975e777ad334a", + "reference": "601fd0fbb7d1a784e009a4f8f40975e777ad334a", "shasum": "" }, "require": { @@ -6967,7 +7061,7 @@ ], "support": { "issues": "https://github.com/sebastianfeldmann/git/issues", - "source": "https://github.com/sebastianfeldmann/git/tree/3.14.3" + "source": "https://github.com/sebastianfeldmann/git/tree/3.15.3" }, "funding": [ { @@ -6975,20 +7069,20 @@ "type": "github" } ], - "time": "2025-06-05T16:05:10+00:00" + "time": "2025-11-20T21:33:45+00:00" }, { "name": "symfony/console", - "version": "v7.3.3", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7" + "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", + "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", + "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", "shasum": "" }, "require": { @@ -6996,7 +7090,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" + "symfony/string": "^7.2|^8.0" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -7010,16 +7104,16 @@ }, "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": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7053,7 +7147,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.3" + "source": "https://github.com/symfony/console/tree/v7.4.1" }, "funding": [ { @@ -7073,20 +7167,20 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-12-05T15:23:39+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" }, "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/9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", "shasum": "" }, "require": { @@ -7103,13 +7197,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": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7137,7 +7232,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/v7.4.0" }, "funding": [ { @@ -7157,7 +7252,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-10-28T09:38:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -7235,95 +7330,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": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd", + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7351,7 +7376,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/v7.4.0" }, "funding": [ { @@ -7371,20 +7396,20 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-11-05T05:42:40+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d" + "reference": "b38026df55197f9e39a44f3215788edf83187b80" }, "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/b38026df55197f9e39a44f3215788edf83187b80", + "reference": "b38026df55197f9e39a44f3215788edf83187b80", "shasum": "" }, "require": { @@ -7422,7 +7447,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.3.3" + "source": "https://github.com/symfony/options-resolver/tree/v7.4.0" }, "funding": [ { @@ -7442,7 +7467,7 @@ "type": "tidelift" } ], - "time": "2025-08-05T10:16:07+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -7692,17 +7717,97 @@ "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/process", - "version": "v7.3.3", + "name": "symfony/polyfill-php84", + "version": "v1.33.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1" + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" + }, + "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-06-24T13:30:11+00:00" + }, + { + "name": "symfony/process", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", "shasum": "" }, "require": { @@ -7734,7 +7839,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.3" + "source": "https://github.com/symfony/process/tree/v7.4.0" }, "funding": [ { @@ -7754,20 +7859,20 @@ "type": "tidelift" } ], - "time": "2025-08-18T09:42:54+00:00" + "time": "2025-10-16T11:21:06+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": { @@ -7821,7 +7926,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": [ { @@ -7832,25 +7937,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": "2025-04-25T09:37:31+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + "reference": "8a24af0a2e8a872fb745047180649b8418303084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8a24af0a2e8a872fb745047180649b8418303084", + "reference": "8a24af0a2e8a872fb745047180649b8418303084", "shasum": "" }, "require": { @@ -7883,7 +7992,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/v7.4.0" }, "funding": [ { @@ -7894,31 +8003,36 @@ "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:05:15+00:00" }, { "name": "symfony/string", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c" + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", + "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.33", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, @@ -7926,12 +8040,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7970,7 +8083,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.3" + "source": "https://github.com/symfony/string/tree/v7.4.0" }, "funding": [ { @@ -7990,37 +8103,38 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-11-27T13:27:24+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": { @@ -8035,7 +8149,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": [ { @@ -8047,20 +8161,20 @@ "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.5.24", + "version": "13.0.0", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "4b90f2b6efed9508000968eac2397ac7aff34354" + "reference": "24708c6673871e342245c692e1bb304f119ffc58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/4b90f2b6efed9508000968eac2397ac7aff34354", - "reference": "4b90f2b6efed9508000968eac2397ac7aff34354", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/24708c6673871e342245c692e1bb304f119ffc58", + "reference": "24708c6673871e342245c692e1bb304f119ffc58", "shasum": "" }, "require": { @@ -8096,7 +8210,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.5.24" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/13.0.0" }, "funding": [ { @@ -8108,20 +8222,20 @@ "type": "github" } ], - "time": "2025-08-21T06:57:14+00:00" + "time": "2025-11-06T14:47:06+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { @@ -8150,7 +8264,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/1.3.1" }, "funding": [ { @@ -8158,7 +8272,7 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], diff --git a/modules/Admin/Controllers/NotificationController.php b/modules/Admin/Controllers/NotificationController.php index 33c7d9ac..36091773 100644 --- a/modules/Admin/Controllers/NotificationController.php +++ b/modules/Admin/Controllers/NotificationController.php @@ -91,7 +91,7 @@ class NotificationController extends BaseController public function markAllAsRead(): RedirectResponse { $notifications = (new NotificationModel())->where('target_actor_id', $this->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 67c1596d..f4cf4d10 100644 --- a/modules/Admin/Controllers/PodcastController.php +++ b/modules/Admin/Controllers/PodcastController.php @@ -733,7 +733,7 @@ class PodcastController extends BaseController $episodes = (new EpisodeModel()) ->where('podcast_id', $this->podcast->id) - ->where('published_at !=', null) + ->where('published_at !=') ->findAll(); foreach ($episodes as $episode) { @@ -901,7 +901,7 @@ class PodcastController extends BaseController $episodes = (new EpisodeModel()) ->where('podcast_id', $this->podcast->id) - ->where('published_at !=', null) + ->where('published_at !=') ->findAll(); foreach ($episodes as $episode) { @@ -968,7 +968,7 @@ class PodcastController extends BaseController $episodes = (new EpisodeModel()) ->where('podcast_id', $this->podcast->id) - ->where('published_at !=', null) + ->where('published_at !=') ->findAll(); foreach ($episodes as $episode) { diff --git a/modules/Auth/Controllers/ContributorController.php b/modules/Auth/Controllers/ContributorController.php index da5989df..7876af20 100644 --- a/modules/Auth/Controllers/ContributorController.php +++ b/modules/Auth/Controllers/ContributorController.php @@ -83,7 +83,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[$user->id] = $user->username; return $result; }, diff --git a/modules/Auth/Helpers/auth_helper.php b/modules/Auth/Helpers/auth_helper.php index b4765c87..93e2032c 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')) { '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/Fediverse/Entities/Activity.php b/modules/Fediverse/Entities/Activity.php index 0865ff45..34d34cec 100644 --- a/modules/Fediverse/Entities/Activity.php +++ b/modules/Fediverse/Entities/Activity.php @@ -61,10 +61,6 @@ class Activity extends UuidEntity public function getActor(): Actor { - if ($this->actor_id === null) { - throw new RuntimeException('Activity must have an actor_id before getting the actor.'); - } - if (! $this->actor instanceof Actor) { $this->actor = model('ActorModel', false) ->getActorById($this->actor_id); diff --git a/modules/Fediverse/Entities/Actor.php b/modules/Fediverse/Entities/Actor.php index 059af415..9b6bdb42 100644 --- a/modules/Fediverse/Entities/Actor.php +++ b/modules/Fediverse/Entities/Actor.php @@ -11,7 +11,6 @@ declare(strict_types=1); namespace Modules\Fediverse\Entities; use CodeIgniter\Entity\Entity; -use RuntimeException; /** * @property int $id @@ -42,7 +41,7 @@ class Actor extends Entity protected string $public_key_id; /** - * @var \Modules\Fediverse\Entities\Actor[]|null + * @var Actor[]|null */ protected ?array $followers = null; @@ -96,10 +95,6 @@ class Actor extends Entity */ public function getFollowers(): array { - if ($this->id === null) { - throw new RuntimeException('Actor must be created before getting followers.'); - } - if ($this->followers === null) { $this->followers = model('ActorModel', false) ->getFollowers($this->id); diff --git a/modules/Fediverse/Entities/Notification.php b/modules/Fediverse/Entities/Notification.php index 5e5f89d0..869f1bea 100644 --- a/modules/Fediverse/Entities/Notification.php +++ b/modules/Fediverse/Entities/Notification.php @@ -65,10 +65,6 @@ class Notification extends UuidEntity public function getActor(): ?Actor { - if ($this->actor_id === null) { - throw new RuntimeException('Notification must have an actor_id before getting actor.'); - } - if (! $this->actor instanceof Actor) { $this->actor = (new ActorModel())->getActorById($this->actor_id); } @@ -78,10 +74,6 @@ class Notification extends UuidEntity public function getTargetActor(): ?Actor { - if ($this->target_actor_id === null) { - throw new RuntimeException('Notification must have a target_actor_id before getting target actor.'); - } - if (! $this->target_actor instanceof Actor) { $this->target_actor = (new ActorModel())->getActorById($this->target_actor_id); } diff --git a/modules/Fediverse/Entities/Post.php b/modules/Fediverse/Entities/Post.php index c1b5e3ac..10d41a2a 100644 --- a/modules/Fediverse/Entities/Post.php +++ b/modules/Fediverse/Entities/Post.php @@ -94,10 +94,6 @@ class Post extends UuidEntity */ public function getActor(): Actor { - if ($this->actor_id === null) { - throw new RuntimeException('Post must have an actor_id before getting actor.'); - } - if (! $this->actor instanceof Actor) { $this->actor = model('ActorModel', false) ->getActorById($this->actor_id); @@ -108,10 +104,6 @@ class Post extends UuidEntity public function getPreviewCard(): ?PreviewCard { - if ($this->id === null) { - throw new RuntimeException('Post must be created before getting preview_card.'); - } - if (! $this->preview_card instanceof PreviewCard) { $this->preview_card = model('PreviewCardModel', false) ->getPostPreviewCard($this->id); @@ -125,10 +117,6 @@ class Post extends UuidEntity */ public function getReplies(): array { - if ($this->id === null) { - throw new RuntimeException('Post must be created before getting replies.'); - } - if ($this->replies === null) { $this->replies = model('PostModel', false) ->getPostReplies($this->id); @@ -161,10 +149,6 @@ class Post extends UuidEntity */ public function getReblogs(): array { - if ($this->id === null) { - throw new RuntimeException('Post must be created before getting reblogs.'); - } - if ($this->reblogs === null) { $this->reblogs = model('PostModel', false) ->getPostReblogs($this->id); diff --git a/modules/PremiumPodcasts/Entities/Subscription.php b/modules/PremiumPodcasts/Entities/Subscription.php index a198e46e..a292635a 100644 --- a/modules/PremiumPodcasts/Entities/Subscription.php +++ b/modules/PremiumPodcasts/Entities/Subscription.php @@ -15,7 +15,6 @@ use App\Models\PodcastModel; use CodeIgniter\Entity\Entity; use CodeIgniter\I18n\Time; use Modules\Analytics\Models\AnalyticsPodcastBySubscriptionModel; -use RuntimeException; /** * @property int $id @@ -102,10 +101,6 @@ class Subscription extends Entity */ public function getPodcast(): ?Podcast { - if ($this->podcast_id === null) { - throw new RuntimeException('Subscription must have a podcast_id before getting podcast.'); - } - if (! $this->podcast instanceof Podcast) { $this->podcast = (new PodcastModel())->getPodcastById($this->podcast_id); } diff --git a/modules/PremiumPodcasts/Models/SubscriptionModel.php b/modules/PremiumPodcasts/Models/SubscriptionModel.php index f9d9aea3..1fc17622 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 6bd3cd0d..47d61f97 100644 --- a/package.json +++ b/package.json @@ -28,16 +28,16 @@ "dependencies": { "@amcharts/amcharts4": "^4.10.40", "@amcharts/amcharts4-geodata": "^4.1.31", - "@codemirror/commands": "^6.8.1", + "@codemirror/commands": "^6.10.1", "@codemirror/lang-xml": "^6.1.0", "@codemirror/language": "^6.11.3", "@codemirror/state": "^6.5.2", - "@codemirror/view": "^6.38.1", + "@codemirror/view": "^6.39.4", "@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.8", + "@github/relative-time-element": "^5.0.0", "@tailwindcss/nesting": "0.0.0-insiders.565cd3e", "@vime/core": "^5.4.1", "choices.js": "^11.1.0", @@ -46,56 +46,56 @@ "leaflet": "^1.9.4", "leaflet.markercluster": "^1.5.3", "lit": "^3.3.1", - "marked": "^16.2.1", - "wavesurfer.js": "^7.10.1", - "xml-formatter": "^3.6.6" + "marked": "^17.0.1", + "wavesurfer.js": "^7.12.1", + "xml-formatter": "^3.6.7" }, "devDependencies": { - "@commitlint/cli": "^19.8.1", - "@commitlint/config-conventional": "^19.8.1", + "@commitlint/cli": "^20.2.0", + "@commitlint/config-conventional": "^20.2.0", "@csstools/css-tokenizer": "^3.0.4", - "@eslint/js": "9.34.0", + "@eslint/js": "9.39.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^7.1.0", "@semantic-release/git": "^10.0.1", - "@semantic-release/gitlab": "^13.2.8", - "@tailwindcss/forms": "^0.5.10", - "@tailwindcss/typography": "^0.5.16", - "@types/leaflet": "^1.9.20", - "@typescript-eslint/eslint-plugin": "^8.41.0", - "@typescript-eslint/parser": "^8.41.0", + "@semantic-release/gitlab": "^13.2.9", + "@tailwindcss/forms": "^0.5.11", + "@tailwindcss/typography": "^0.5.19", + "@types/leaflet": "^1.9.21", + "@typescript-eslint/eslint-plugin": "^8.50.0", + "@typescript-eslint/parser": "^8.50.0", "all-contributors-cli": "^6.26.1", "commitizen": "^4.3.1", - "cross-env": "^10.0.0", - "cssnano": "^7.1.1", + "cross-env": "^10.1.0", + "cssnano": "^7.1.2", "cz-conventional-changelog": "^3.3.0", - "eslint": "^9.34.0", + "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.3.0", + "globals": "^16.5.0", "husky": "^9.1.7", "is-ci": "^4.1.0", - "lint-staged": "^16.1.5", + "lint-staged": "^16.2.7", "postcss": "^8.5.6", "postcss-import": "^16.1.1", "postcss-nesting": "^13.0.2", - "postcss-preset-env": "^10.3.1", + "postcss-preset-env": "^10.5.0", "postcss-reporter": "^7.1.0", - "prettier": "3.6.2", - "prettier-plugin-organize-imports": "^4.2.0", - "semantic-release": "^24.2.7", - "stylelint": "^16.23.1", - "stylelint-config-standard": "^39.0.0", + "prettier": "3.7.4", + "prettier-plugin-organize-imports": "^4.3.0", + "semantic-release": "^25.0.2", + "stylelint": "^16.26.1", + "stylelint-config-standard": "^39.0.1", "svgo": "^4.0.0", - "tailwindcss": "^3.4.17", - "typescript": "~5.9.2", - "typescript-eslint": "^8.41.0", - "vite": "^7.1.3", - "vite-plugin-pwa": "^1.0.3", - "workbox-build": "^7.3.0", - "workbox-core": "^7.3.0", - "workbox-routing": "^7.3.0", - "workbox-strategies": "^7.3.0" + "tailwindcss": "^3.4.19", + "typescript": "~5.9.3", + "typescript-eslint": "^8.50.0", + "vite": "^7.3.0", + "vite-plugin-pwa": "^1.2.0", + "workbox-build": "^7.4.0", + "workbox-core": "^7.4.0", + "workbox-routing": "^7.4.0", + "workbox-strategies": "^7.4.0" }, "lint-staged": { "*.{ts,js}": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c5bf8ee7..f4b04e28 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.8.1 - version: 6.8.1 + specifier: ^6.10.1 + version: 6.10.1 "@codemirror/lang-xml": specifier: ^6.1.0 version: 6.1.0 @@ -26,8 +26,8 @@ importers: specifier: ^6.5.2 version: 6.5.2 "@codemirror/view": - specifier: ^6.38.1 - version: 6.38.1 + specifier: ^6.39.4 + version: 6.39.4 "@floating-ui/dom": specifier: ^1.7.4 version: 1.7.4 @@ -41,8 +41,8 @@ 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 "@tailwindcss/nesting": specifier: 0.0.0-insiders.565cd3e version: 0.0.0-insiders.565cd3e(postcss@8.5.6) @@ -68,81 +68,81 @@ importers: specifier: ^3.3.1 version: 3.3.1 marked: - specifier: ^16.2.1 - version: 16.2.1 + specifier: ^17.0.1 + version: 17.0.1 wavesurfer.js: - specifier: ^7.10.1 - version: 7.10.1 + specifier: ^7.12.1 + version: 7.12.1 xml-formatter: - specifier: ^3.6.6 - version: 3.6.6 + specifier: ^3.6.7 + version: 3.6.7 devDependencies: "@commitlint/cli": - specifier: ^19.8.1 - version: 19.8.1(@types/node@24.3.0)(typescript@5.9.2) + specifier: ^20.2.0 + version: 20.2.0(@types/node@24.3.0)(typescript@5.9.3) "@commitlint/config-conventional": - specifier: ^19.8.1 - version: 19.8.1 + specifier: ^20.2.0 + version: 20.2.0 "@csstools/css-tokenizer": specifier: ^3.0.4 version: 3.0.4 "@eslint/js": - specifier: 9.34.0 - version: 9.34.0 + specifier: 9.39.2 + version: 9.39.2 "@semantic-release/changelog": specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.2.7(typescript@5.9.2)) + version: 6.0.3(semantic-release@25.0.2(typescript@5.9.3)) "@semantic-release/exec": specifier: ^7.1.0 - version: 7.1.0(semantic-release@24.2.7(typescript@5.9.2)) + version: 7.1.0(semantic-release@25.0.2(typescript@5.9.3)) "@semantic-release/git": specifier: ^10.0.1 - version: 10.0.1(semantic-release@24.2.7(typescript@5.9.2)) + version: 10.0.1(semantic-release@25.0.2(typescript@5.9.3)) "@semantic-release/gitlab": - specifier: ^13.2.8 - version: 13.2.8(semantic-release@24.2.7(typescript@5.9.2)) + specifier: ^13.2.9 + version: 13.2.9(semantic-release@25.0.2(typescript@5.9.3)) "@tailwindcss/forms": - specifier: ^0.5.10 - version: 0.5.10(tailwindcss@3.4.17) + specifier: ^0.5.11 + version: 0.5.11(tailwindcss@3.4.19) "@tailwindcss/typography": - specifier: ^0.5.16 - version: 0.5.16(tailwindcss@3.4.17) + specifier: ^0.5.19 + version: 0.5.19(tailwindcss@3.4.19) "@types/leaflet": - specifier: ^1.9.20 - version: 1.9.20 + specifier: ^1.9.21 + version: 1.9.21 "@typescript-eslint/eslint-plugin": - specifier: ^8.41.0 - version: 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) + specifier: ^8.50.0 + version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) "@typescript-eslint/parser": - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.50.0 + version: 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) all-contributors-cli: specifier: ^6.26.1 version: 6.26.1 commitizen: specifier: ^4.3.1 - version: 4.3.1(@types/node@24.3.0)(typescript@5.9.2) + version: 4.3.1(@types/node@24.3.0)(typescript@5.9.3) cross-env: - specifier: ^10.0.0 - version: 10.0.0 + 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.3.0)(typescript@5.9.2) + version: 3.3.0(@types/node@24.3.0)(typescript@5.9.3) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.5.1) + specifier: ^9.39.2 + version: 9.39.2(jiti@2.5.1) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.34.0(jiti@2.5.1)) + version: 10.1.8(eslint@9.39.2(jiti@2.5.1)) eslint-plugin-prettier: specifier: ^5.5.4 - version: 5.5.4(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) + version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.5.1)))(eslint@9.39.2(jiti@2.5.1))(prettier@3.7.4) globals: - specifier: ^16.3.0 - version: 16.3.0 + specifier: ^16.5.0 + version: 16.5.0 husky: specifier: ^9.1.7 version: 9.1.7 @@ -150,8 +150,8 @@ importers: specifier: ^4.1.0 version: 4.1.0 lint-staged: - specifier: ^16.1.5 - version: 16.1.5 + specifier: ^16.2.7 + version: 16.2.7 postcss: specifier: ^8.5.6 version: 8.5.6 @@ -162,58 +162,82 @@ importers: specifier: ^13.0.2 version: 13.0.2(postcss@8.5.6) postcss-preset-env: - specifier: ^10.3.1 - version: 10.3.1(postcss@8.5.6) + specifier: ^10.5.0 + version: 10.5.0(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.7.4 + version: 3.7.4 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.7.4)(typescript@5.9.3) semantic-release: - specifier: ^24.2.7 - version: 24.2.7(typescript@5.9.2) + specifier: ^25.0.2 + version: 25.0.2(typescript@5.9.3) stylelint: - specifier: ^16.23.1 - version: 16.23.1(typescript@5.9.2) + specifier: ^16.26.1 + version: 16.26.1(typescript@5.9.3) stylelint-config-standard: - specifier: ^39.0.0 - version: 39.0.0(stylelint@16.23.1(typescript@5.9.2)) + specifier: ^39.0.1 + version: 39.0.1(stylelint@16.26.1(typescript@5.9.3)) svgo: specifier: ^4.0.0 version: 4.0.0 tailwindcss: - specifier: ^3.4.17 - version: 3.4.17 + specifier: ^3.4.19 + version: 3.4.19 typescript: - specifier: ~5.9.2 - version: 5.9.2 + specifier: ~5.9.3 + version: 5.9.3 typescript-eslint: - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.50.0 + version: 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) vite: - 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) + specifier: ^7.3.0 + version: 7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) vite-plugin-pwa: - 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) + specifier: ^1.2.0 + version: 1.2.0(vite@7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.4.0)(workbox-window@7.4.0) 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@2.0.1": + resolution: + { + integrity: sha512-oBfqT3GwkvLlo1fjvhQLQxuwZCGTarTE5OuZ2Wg10hvhBj7LRIlF611WT4aZS6fDhO5ZKlY7lCAZTlpmyaHaeg==, + } + + "@actions/exec@2.0.0": + resolution: + { + integrity: sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==, + } + + "@actions/http-client@3.0.0": + resolution: + { + integrity: sha512-1s3tXAfVMSz9a4ZEBkXXRQD4QhY3+GAsWSbaYpeknPOKEeyRiU3lH+bHiLMZdo2x/fIeQ/hscL1wCkDLVM2DZQ==, + } + + "@actions/io@2.0.0": + resolution: + { + integrity: sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==, + } + "@alloc/quick-lru@5.2.0": resolution: { @@ -1014,16 +1038,28 @@ packages: } engines: { node: ">=6.9.0" } + "@cacheable/memory@2.0.6": + resolution: + { + integrity: sha512-7e8SScMocHxcAb8YhtkbMhGG+EKLRIficb1F5sjvhSYsWTZGxvg4KIDp8kgxnV2PUJ3ddPe6J9QESjKvBWRDkg==, + } + + "@cacheable/utils@2.3.2": + resolution: + { + integrity: sha512-8kGE2P+HjfY8FglaOiW+y8qxcaQAfAhVML+i66XJR3YX5FtyDqn6Txctr3K2FrbxLKixRRYYBWMbuGciOhYNDg==, + } + "@codemirror/autocomplete@6.18.6": resolution: { integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==, } - "@codemirror/commands@6.8.1": + "@codemirror/commands@6.10.1": resolution: { - integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==, + integrity: sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q==, } "@codemirror/lang-xml@6.1.0": @@ -1056,10 +1092,10 @@ packages: integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==, } - "@codemirror/view@6.38.1": + "@codemirror/view@6.39.4": resolution: { - integrity: sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==, + integrity: sha512-xMF6OfEAUVY5Waega4juo1QGACfNkNF+aJLqpd8oUJz96ms2zbfQ9Gh35/tI3y8akEV31FruKfj7hBnIU/nkqA==, } "@colors/colors@1.5.0": @@ -1069,18 +1105,18 @@ packages: } engines: { node: ">=0.1.90" } - "@commitlint/cli@19.8.1": + "@commitlint/cli@20.2.0": resolution: { - integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==, + integrity: sha512-l37HkrPZ2DZy26rKiTUvdq/LZtlMcxz+PeLv9dzK9NzoFGuJdOQyYU7IEkEQj0pO++uYue89wzOpZ0hcTtoqUA==, } engines: { node: ">=v18" } hasBin: true - "@commitlint/config-conventional@19.8.1": + "@commitlint/config-conventional@20.2.0": resolution: { - integrity: sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==, + integrity: sha512-MsRac+yNIbTB4Q/psstKK4/ciVzACHicSwz+04Sxve+4DW+PiJeTjU0JnS4m/oOnulrXYN+yBPlKaBSGemRfgQ==, } engines: { node: ">=v18" } @@ -1091,10 +1127,17 @@ packages: } engines: { node: ">=v18" } - "@commitlint/ensure@19.8.1": + "@commitlint/config-validator@20.2.0": resolution: { - integrity: sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==, + integrity: sha512-SQCBGsL9MFk8utWNSthdxd9iOD1pIVZSHxGBwYIGfd67RTjxqzFOSAYeQVXOu3IxRC3YrTOH37ThnTLjUlyF2w==, + } + engines: { node: ">=v18" } + + "@commitlint/ensure@20.2.0": + resolution: + { + integrity: sha512-+8TgIGv89rOWyt3eC6lcR1H7hqChAKkpawytlq9P1i/HYugFRVqgoKJ8dhd89fMnlrQTLjA5E97/4sF09QwdoA==, } engines: { node: ">=v18" } @@ -1105,24 +1148,31 @@ packages: } engines: { node: ">=v18" } - "@commitlint/format@19.8.1": + "@commitlint/execute-rule@20.0.0": resolution: { - integrity: sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==, + integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==, } engines: { node: ">=v18" } - "@commitlint/is-ignored@19.8.1": + "@commitlint/format@20.2.0": resolution: { - integrity: sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==, + integrity: sha512-PhNoLNhxpfIBlW/i90uZ3yG3hwSSYx7n4d9Yc+2FAorAHS0D9btYRK4ZZXX+Gm3W5tDtu911ow/eWRfcRVgNWg==, } engines: { node: ">=v18" } - "@commitlint/lint@19.8.1": + "@commitlint/is-ignored@20.2.0": resolution: { - integrity: sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==, + integrity: sha512-Lz0OGeZCo/QHUDLx5LmZc0EocwanneYJUM8z0bfWexArk62HKMLfLIodwXuKTO5y0s6ddXaTexrYHs7v96EOmw==, + } + engines: { node: ">=v18" } + + "@commitlint/lint@20.2.0": + resolution: + { + integrity: sha512-cQEEB+jlmyQbyiji/kmh8pUJSDeUmPiWq23kFV0EtW3eM+uAaMLMuoTMajbrtWYWQpPzOMDjYltQ8jxHeHgITg==, } engines: { node: ">=v18" } @@ -1133,24 +1183,31 @@ packages: } engines: { node: ">=v18" } - "@commitlint/message@19.8.1": + "@commitlint/load@20.2.0": resolution: { - integrity: sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==, + integrity: sha512-iAK2GaBM8sPFTSwtagI67HrLKHIUxQc2BgpgNc/UMNme6LfmtHpIxQoN1TbP+X1iz58jq32HL1GbrFTCzcMi6g==, } engines: { node: ">=v18" } - "@commitlint/parse@19.8.1": + "@commitlint/message@20.0.0": resolution: { - integrity: sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==, + integrity: sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==, } engines: { node: ">=v18" } - "@commitlint/read@19.8.1": + "@commitlint/parse@20.2.0": resolution: { - integrity: sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==, + integrity: sha512-LXStagGU1ivh07X7sM+hnEr4BvzFYn1iBJ6DRg2QsIN8lBfSzyvkUcVCDwok9Ia4PWiEgei5HQjju6xfJ1YaSQ==, + } + engines: { node: ">=v18" } + + "@commitlint/read@20.2.0": + resolution: + { + integrity: sha512-+SjF9mxm5JCbe+8grOpXCXMMRzAnE0WWijhhtasdrpJoAFJYd5UgRTj/oCq5W3HJTwbvTOsijEJ0SUGImECD7Q==, } engines: { node: ">=v18" } @@ -1161,24 +1218,31 @@ packages: } engines: { node: ">=v18" } - "@commitlint/rules@19.8.1": + "@commitlint/resolve-extends@20.2.0": resolution: { - integrity: sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==, + integrity: sha512-KVoLDi9BEuqeq+G0wRABn4azLRiCC22/YHR2aCquwx6bzCHAIN8hMt3Nuf1VFxq/c8ai6s8qBxE8+ZD4HeFTlQ==, } engines: { node: ">=v18" } - "@commitlint/to-lines@19.8.1": + "@commitlint/rules@20.2.0": resolution: { - integrity: sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==, + integrity: sha512-27rHGpeAjnYl/A+qUUiYDa7Yn1WIjof/dFJjYW4gA1Ug+LUGa1P0AexzGZ5NBxTbAlmDgaxSZkLLxtLVqtg8PQ==, } engines: { node: ">=v18" } - "@commitlint/top-level@19.8.1": + "@commitlint/to-lines@20.0.0": resolution: { - integrity: sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==, + integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==, + } + engines: { node: ">=v18" } + + "@commitlint/top-level@20.0.0": + resolution: + { + integrity: sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==, } engines: { node: ">=v18" } @@ -1189,6 +1253,13 @@ packages: } engines: { node: ">=v18" } + "@commitlint/types@20.2.0": + resolution: + { + integrity: sha512-KTy0OqRDLR5y/zZMnizyx09z/rPlPC/zKhYgH8o/q6PuAjoQAKlRfY4zzv0M64yybQ//6//4H1n14pxaLZfUnA==, + } + engines: { node: ">=v18" } + "@csstools/cascade-layer-name-parser@2.0.5": resolution: { @@ -1235,6 +1306,13 @@ packages: peerDependencies: "@csstools/css-tokenizer": ^3.0.4 + "@csstools/css-syntax-patches-for-csstree@1.0.21": + resolution: + { + integrity: sha512-plP8N8zKfEZ26figX4Nvajx8DuzfuRpLTqglQ5d0chfnt35Qt3X+m6ASZ+rG0D0kxe/upDVNwSIVJP5n4FuNfw==, + } + engines: { node: ">=18" } + "@csstools/css-tokenizer@3.0.4": resolution: { @@ -1252,10 +1330,10 @@ packages: "@csstools/css-parser-algorithms": ^3.0.5 "@csstools/css-tokenizer": ^3.0.4 - "@csstools/postcss-alpha-function@1.0.0": + "@csstools/postcss-alpha-function@1.0.1": resolution: { - integrity: sha512-r2L8KNg5Wriq5n8IUQcjzy2Rh37J5YjzP9iOyHZL5fxdWYHB08vqykHQa4wAzN/tXwDuCHnhQDGCtxfS76xn7g==, + integrity: sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==, } engines: { node: ">=18" } peerDependencies: @@ -1270,46 +1348,55 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-function-display-p3-linear@1.0.0": + "@csstools/postcss-color-function-display-p3-linear@1.0.1": resolution: { - integrity: sha512-7q+OuUqfowRrP84m/Jl0wv3pfCQyUTCW5MxDIux+/yty5IkUUHOTigCjrC0Fjy3OT0ncGLudHbfLWmP7E1arNA==, + integrity: sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-function@4.0.11": + "@csstools/postcss-color-function@4.0.12": resolution: { - integrity: sha512-AtH22zLHTLm64HLdpv5EedT/zmYTm1MtdQbQhRZXxEB6iYtS6SrS1jLX3TcmUWMFzpumK/OVylCm3HcLms4slw==, + integrity: sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-mix-function@3.0.11": + "@csstools/postcss-color-mix-function@3.0.12": resolution: { - integrity: sha512-cQpXBelpTx0YhScZM5Ve0jDCA4RzwFc7oNafzZOGgCHt/GQVYiU8Vevz9QJcwy/W0Pyi/BneY+KMjz23lI9r+Q==, + integrity: sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-mix-variadic-function-arguments@1.0.1": + "@csstools/postcss-color-mix-variadic-function-arguments@1.0.2": resolution: { - integrity: sha512-c7hyBtbF+jlHIcUGVdWY06bHICgguV9ypfcELU3eU3W/9fiz2dxM8PqxQk2ndXYTzLnwPvNNqu1yCmQ++N6Dcg==, + integrity: sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-content-alt-text@2.0.7": + "@csstools/postcss-content-alt-text@2.0.8": resolution: { - integrity: sha512-cq/zWaEkpcg3RttJ5+GdNwk26NwxY5KgqgtNL777Fdd28AVGHxuBvqmK4Jq4oKhW1NX4M2LbgYAVVN0NZ+/XYQ==, + integrity: sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==, + } + engines: { node: ">=18" } + peerDependencies: + postcss: ^8.4 + + "@csstools/postcss-contrast-color-function@2.0.12": + resolution: + { + integrity: sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==, } engines: { node: ">=18" } peerDependencies: @@ -1342,28 +1429,28 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-gradients-interpolation-method@5.0.11": + "@csstools/postcss-gradients-interpolation-method@5.0.12": resolution: { - integrity: sha512-8M3mcNTL3cGIJXDnvrJ2oWEcKi3zyw7NeYheFKePUlBmLYm1gkw9Rr/BA7lFONrOPeQA3yeMPldrrws6lqHrug==, + integrity: sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-hwb-function@4.0.11": + "@csstools/postcss-hwb-function@4.0.12": resolution: { - integrity: sha512-9meZbsVWTZkWsSBazQips3cHUOT29a/UAwFz0AMEXukvpIGGDR9+GMl3nIckWO5sPImsadu4F5Zy+zjt8QgCdA==, + integrity: sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-ic-unit@4.0.3": + "@csstools/postcss-ic-unit@4.0.4": resolution: { - integrity: sha512-RtYYm2qUIu9vAaHB0cC8rQGlOCQAUgEc2tMr7ewlGXYipBQKjoWmyVArqsk7SEr8N3tErq6P6UOJT3amaVof5Q==, + integrity: sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==, } engines: { node: ">=18" } peerDependencies: @@ -1387,10 +1474,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-light-dark-function@2.0.10": + "@csstools/postcss-light-dark-function@2.0.11": resolution: { - integrity: sha512-g7Lwb294lSoNnyrwcqoooh9fTAp47rRNo+ILg7SLRSMU3K9ePIwRt566sNx+pehiCelv4E1ICaU1EwLQuyF2qw==, + integrity: sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==, } engines: { node: ">=18" } peerDependencies: @@ -1477,19 +1564,28 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-oklab-function@4.0.11": + "@csstools/postcss-oklab-function@4.0.12": resolution: { - integrity: sha512-9f03ZGxZ2VmSCrM4SDXlAYP+Xpu4VFzemfQUQFL9OYxAbpvDy0FjDipZ0i8So1pgs8VIbQI0bNjFWgfdpGw8ig==, + integrity: sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-progressive-custom-properties@4.2.0": + "@csstools/postcss-position-area-property@1.0.0": resolution: { - integrity: sha512-fWCXRasX17N1NCPTCuwC3FJDV+Wc031f16cFuuMEfIsYJ1q5ABCa59W0C6VeMGqjNv6ldf37vvwXXAeaZjD9PA==, + integrity: sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==, + } + engines: { node: ">=18" } + peerDependencies: + postcss: ^8.4 + + "@csstools/postcss-progressive-custom-properties@4.2.1": + resolution: + { + integrity: sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==, } engines: { node: ">=18" } peerDependencies: @@ -1504,10 +1600,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-relative-color-syntax@3.0.11": + "@csstools/postcss-relative-color-syntax@3.0.12": resolution: { - integrity: sha512-oQ5fZvkcBrWR+k6arHXk0F8FlkmD4IxM+rcGDLWrF2f31tWyEM3lSraeWAV0f7BGH6LIrqmyU3+Qo/1acfoJng==, + integrity: sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==, } engines: { node: ">=18" } peerDependencies: @@ -1540,6 +1636,15 @@ packages: peerDependencies: postcss: ^8.4 + "@csstools/postcss-system-ui-font-family@1.0.0": + resolution: + { + integrity: sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==, + } + engines: { node: ">=18" } + peerDependencies: + postcss: ^8.4 + "@csstools/postcss-text-decoration-shorthand@4.0.3": resolution: { @@ -1594,10 +1699,10 @@ packages: peerDependencies: postcss: ^8.4 - "@dual-bundle/import-meta-resolve@4.1.0": + "@dual-bundle/import-meta-resolve@4.2.1": resolution: { - integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==, + integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==, } "@epic-web/invariant@1.0.0": @@ -1606,235 +1711,235 @@ packages: integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==, } - "@esbuild/aix-ppc64@0.25.9": + "@esbuild/aix-ppc64@0.27.2": resolution: { - integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==, + integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==, } engines: { node: ">=18" } cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.25.9": + "@esbuild/android-arm64@0.27.2": resolution: { - integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==, + integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==, } engines: { node: ">=18" } cpu: [arm64] os: [android] - "@esbuild/android-arm@0.25.9": + "@esbuild/android-arm@0.27.2": resolution: { - integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==, + integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==, } engines: { node: ">=18" } cpu: [arm] os: [android] - "@esbuild/android-x64@0.25.9": + "@esbuild/android-x64@0.27.2": resolution: { - integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==, + integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==, } engines: { node: ">=18" } cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.25.9": + "@esbuild/darwin-arm64@0.27.2": resolution: { - integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==, + integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==, } engines: { node: ">=18" } cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.25.9": + "@esbuild/darwin-x64@0.27.2": resolution: { - integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==, + integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==, } engines: { node: ">=18" } cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.25.9": + "@esbuild/freebsd-arm64@0.27.2": resolution: { - integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==, + integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==, } engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.25.9": + "@esbuild/freebsd-x64@0.27.2": resolution: { - integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==, + integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==, } engines: { node: ">=18" } cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.25.9": + "@esbuild/linux-arm64@0.27.2": resolution: { - integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==, + integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==, } engines: { node: ">=18" } cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.25.9": + "@esbuild/linux-arm@0.27.2": resolution: { - integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==, + integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==, } engines: { node: ">=18" } cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.25.9": + "@esbuild/linux-ia32@0.27.2": resolution: { - integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==, + integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==, } engines: { node: ">=18" } cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.25.9": + "@esbuild/linux-loong64@0.27.2": resolution: { - integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==, + integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==, } engines: { node: ">=18" } cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.25.9": + "@esbuild/linux-mips64el@0.27.2": resolution: { - integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==, + integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==, } engines: { node: ">=18" } cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.25.9": + "@esbuild/linux-ppc64@0.27.2": resolution: { - integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==, + integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==, } engines: { node: ">=18" } cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.25.9": + "@esbuild/linux-riscv64@0.27.2": resolution: { - integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==, + integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==, } engines: { node: ">=18" } cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.25.9": + "@esbuild/linux-s390x@0.27.2": resolution: { - integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==, + integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==, } engines: { node: ">=18" } cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.25.9": + "@esbuild/linux-x64@0.27.2": resolution: { - integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==, + integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==, } engines: { node: ">=18" } cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.25.9": + "@esbuild/netbsd-arm64@0.27.2": resolution: { - integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==, + integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==, } engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.25.9": + "@esbuild/netbsd-x64@0.27.2": resolution: { - integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==, + integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==, } engines: { node: ">=18" } cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.25.9": + "@esbuild/openbsd-arm64@0.27.2": resolution: { - integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==, + integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==, } engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.25.9": + "@esbuild/openbsd-x64@0.27.2": resolution: { - integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==, + integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==, } engines: { node: ">=18" } cpu: [x64] os: [openbsd] - "@esbuild/openharmony-arm64@0.25.9": + "@esbuild/openharmony-arm64@0.27.2": resolution: { - integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==, + integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==, } engines: { node: ">=18" } cpu: [arm64] os: [openharmony] - "@esbuild/sunos-x64@0.25.9": + "@esbuild/sunos-x64@0.27.2": resolution: { - integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==, + integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==, } engines: { node: ">=18" } cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.25.9": + "@esbuild/win32-arm64@0.27.2": resolution: { - integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==, + integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==, } engines: { node: ">=18" } cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.25.9": + "@esbuild/win32-ia32@0.27.2": resolution: { - integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==, + integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==, } engines: { node: ">=18" } cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.25.9": + "@esbuild/win32-x64@0.27.2": resolution: { - integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==, + integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==, } engines: { node: ">=18" } cpu: [x64] @@ -1849,6 +1954,15 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + "@eslint-community/eslint-utils@4.9.0": + resolution: + { + integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==, + } + 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": resolution: { @@ -1856,24 +1970,24 @@ packages: } engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - "@eslint/config-array@0.21.0": + "@eslint/config-array@0.21.1": resolution: { - integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==, + integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/config-helpers@0.3.1": + "@eslint/config-helpers@0.4.2": resolution: { - integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==, + integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/core@0.15.2": + "@eslint/core@0.17.0": resolution: { - integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==, + integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -1884,27 +1998,34 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/js@9.34.0": + "@eslint/js@9.39.2": resolution: { - integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==, + integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/object-schema@2.1.6": + "@eslint/object-schema@2.1.7": resolution: { - integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==, + integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/plugin-kit@0.3.5": + "@eslint/plugin-kit@0.4.1": resolution: { - integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==, + integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + "@fastify/busboy@2.1.1": + resolution: + { + integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==, + } + engines: { node: ">=14" } + "@floating-ui/core@1.7.3": resolution: { @@ -1965,10 +2086,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": @@ -2006,6 +2127,20 @@ packages: } engines: { node: ">=18.18" } + "@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: { @@ -2044,10 +2179,19 @@ packages: integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==, } - "@keyv/serialize@1.1.0": + "@keyv/bigmap@1.3.0": resolution: { - integrity: sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==, + integrity: sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==, + } + engines: { node: ">= 18" } + peerDependencies: + keyv: ^5.5.4 + + "@keyv/serialize@1.1.1": + resolution: + { + integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==, } "@lezer/common@1.2.3": @@ -2147,10 +2291,16 @@ packages: integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==, } - "@octokit/plugin-paginate-rest@13.1.1": + "@octokit/openapi-types@27.0.0": resolution: { - integrity: sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw==, + integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==, + } + + "@octokit/plugin-paginate-rest@14.0.0": + resolution: + { + integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==, } engines: { node: ">= 20" } peerDependencies: @@ -2194,6 +2344,12 @@ packages: integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==, } + "@octokit/types@16.0.0": + resolution: + { + integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==, + } + "@pkgjs/parseargs@0.11.0": resolution: { @@ -2512,37 +2668,37 @@ packages: peerDependencies: semantic-release: ">=18.0.0" - "@semantic-release/github@11.0.4": + "@semantic-release/github@12.0.2": resolution: { - integrity: sha512-fU/nLSjkp9DmB0h7FVO5imhhWJMvq2LjD4+3lz3ZAzpDLY9+KYwC+trJ+g7LbZeJv9y3L9fSFSg2DduUpiT6bw==, + integrity: sha512-qyqLS+aSGH1SfXIooBKjs7mvrv0deg8v+jemegfJg1kq6ji+GJV8CO08VJDEsvjp3O8XJmTTIAjjZbMzagzsdw==, } - engines: { node: ">=20.8.1" } + engines: { node: ^22.14.0 || >= 24.10.0 } peerDependencies: semantic-release: ">=24.1.0" - "@semantic-release/gitlab@13.2.8": + "@semantic-release/gitlab@13.2.9": resolution: { - integrity: sha512-uTRRpTHHMQ4kC94E5yN18tkpVZ/gxtFDfWhfluE7xS3AhNG2cBKuZi0cDp0kwdMpiNRB6YdPTnLyXJxV7BKoiA==, + integrity: sha512-oEWyNK3hfdGdoq6aoSunQ/VR1Svrjivmg1ochCIJ77b8pKMI5y5PPGSS8KozWGg07yqc2uudULk8lHtgTbZspQ==, } engines: { node: ">=20.8.1" } peerDependencies: semantic-release: ">=20.1.0" - "@semantic-release/npm@12.0.2": + "@semantic-release/npm@13.1.3": resolution: { - integrity: sha512-+M9/Lb35IgnlUO6OSJ40Ie+hUsZLuph2fqXC/qrKn0fMvUU/jiCjpoL6zEm69vzcmaZJ8yNKtMBEKHWN49WBbQ==, + integrity: sha512-q7zreY8n9V0FIP1Cbu63D+lXtRAVAIWb30MH5U3TdrfXt6r2MIrWCY0whAImN53qNvSGp0Zt07U95K+Qp9GpEg==, } - engines: { node: ">=20.8.1" } + engines: { node: ^22.14.0 || >= 24.10.0 } peerDependencies: semantic-release: ">=20.1.0" - "@semantic-release/release-notes-generator@14.0.3": + "@semantic-release/release-notes-generator@14.1.0": resolution: { - integrity: sha512-XxAZRPWGwO5JwJtS83bRdoIhCiYIx8Vhr+u231pQAsdFIAbm19rSVJLdnBN+Avvk7CKvNQE/nJ4y7uqKH6WTiw==, + integrity: sha512-CcyDRk7xq+ON/20YNR+1I/jP7BYKICr1uKd1HHpROSnnTdGqOTburi4jcRiTYz0cpfhxSloQO3cGhnoot7IEkA==, } engines: { node: ">=20.8.1" } peerDependencies: @@ -2597,10 +2753,10 @@ packages: } engines: { node: ">=14.16" } - "@tailwindcss/forms@0.5.10": + "@tailwindcss/forms@0.5.11": 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" @@ -2613,10 +2769,10 @@ packages: peerDependencies: postcss: ^8.2.15 - "@tailwindcss/typography@0.5.16": + "@tailwindcss/typography@0.5.19": resolution: { - integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==, + integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==, } peerDependencies: tailwindcss: ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" @@ -2663,10 +2819,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.3.0": @@ -2693,92 +2849,92 @@ packages: integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, } - "@typescript-eslint/eslint-plugin@8.41.0": + "@typescript-eslint/eslint-plugin@8.50.0": resolution: { - integrity: sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==, + integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - "@typescript-eslint/parser": ^8.41.0 + "@typescript-eslint/parser": ^8.50.0 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/parser@8.41.0": + "@typescript-eslint/parser@8.50.0": resolution: { - integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==, + integrity: sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/project-service@8.41.0": + "@typescript-eslint/project-service@8.50.0": resolution: { - integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==, + integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==, } 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": + "@typescript-eslint/scope-manager@8.50.0": resolution: { - integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==, + integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/tsconfig-utils@8.41.0": + "@typescript-eslint/tsconfig-utils@8.50.0": resolution: { - integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==, + integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==, } 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": + "@typescript-eslint/type-utils@8.50.0": resolution: { - integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==, + integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/types@8.41.0": + "@typescript-eslint/types@8.50.0": resolution: { - integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==, + integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/typescript-estree@8.41.0": + "@typescript-eslint/typescript-estree@8.50.0": resolution: { - integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==, + integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/utils@8.41.0": + "@typescript-eslint/utils@8.50.0": resolution: { - integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==, + integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/visitor-keys@8.41.0": + "@typescript-eslint/visitor-keys@8.50.0": resolution: { - integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==, + integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -2986,10 +3142,10 @@ packages: } engines: { node: ">= 4.0.0" } - autoprefixer@10.4.21: + autoprefixer@10.4.23: resolution: { - integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==, + integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==, } engines: { node: ^10 || ^12 || >=14 } hasBin: true @@ -3051,6 +3207,13 @@ packages: integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, } + baseline-browser-mapping@2.9.11: + resolution: + { + integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==, + } + hasBin: true + before-after-hook@4.0.0: resolution: { @@ -3115,6 +3278,14 @@ packages: engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true + browserslist@4.28.1: + resolution: + { + integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + buffer-from@1.1.2: resolution: { @@ -3141,10 +3312,10 @@ packages: } engines: { node: ">=18" } - cacheable@1.10.4: + cacheable@2.3.1: resolution: { - integrity: sha512-Gd7ccIUkZ9TE2odLQVS+PDjIvQCdJKUlLdJRVvZu0aipj07Qfx+XIej7hhDrKGGoIxV5m5fT/kOJNJPQhQneRg==, + integrity: sha512-yr+FSHWn1ZUou5LkULX/S+jhfgfnLbuKQjE40tyEd4fxGZVMbBL5ifno0J0OauykS8UiCSgHi+DV/YD+rjFxFg==, } cachedir@2.3.0: @@ -3208,6 +3379,12 @@ packages: integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==, } + caniuse-lite@1.0.30001761: + resolution: + { + integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==, + } + chalk@2.4.2: resolution: { @@ -3312,12 +3489,12 @@ packages: } engines: { node: 10.* || >= 12.* } - cli-truncate@4.0.0: + cli-truncate@5.1.1: resolution: { - integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==, + integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==, } - engines: { node: ">=18" } + engines: { node: ">=20" } cli-width@3.0.0: resolution: @@ -3345,6 +3522,13 @@ packages: } engines: { node: ">=12" } + cliui@9.0.1: + resolution: + { + integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==, + } + engines: { node: ">=20" } + clone@1.0.4: resolution: { @@ -3402,10 +3586,10 @@ packages: } engines: { node: ">=16" } - commander@14.0.0: + commander@14.0.2: resolution: { - integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==, + integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==, } engines: { node: ">=20" } @@ -3580,10 +3764,10 @@ packages: integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==, } - cross-env@10.0.0: + cross-env@10.1.0: resolution: { - integrity: sha512-aU8qlEK/nHYtVuN4p7UQgAwVljzMg8hB4YK5ThRqD2l/ziSnryncPNn7bMLt5cFYsKVKBh8HqLqyCoTupEUu7Q==, + integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==, } engines: { node: ">=20" } hasBin: true @@ -3685,10 +3869,10 @@ packages: } engines: { node: ">= 6" } - cssdb@8.4.0: + cssdb@8.5.2: resolution: { - integrity: sha512-lyATYGyvXwQ8h55WeQeEHXhI+47rl52pXSYkFK/ZrCbAJSgVIaPFjYc3RM8TpRHKk7W3wsAZImmLps+P5VyN9g==, + integrity: sha512-Pmoj9RmD8RIoIzA2EQWO4D4RMeDts0tgAH0VXdlNdxjuBGI3a9wMOIcUwaPNmD4r2qtIa06gqkIf7sECl+cBCg==, } cssesc@3.0.0: @@ -3699,10 +3883,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: @@ -3717,10 +3901,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: @@ -3867,6 +4051,18 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: + { + integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: { @@ -4045,6 +4241,12 @@ packages: integrity: sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==, } + electron-to-chromium@1.5.267: + resolution: + { + integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==, + } + emoji-regex@10.4.0: resolution: { @@ -4083,6 +4285,13 @@ packages: } engines: { node: ^18.17 || >=20.6.1 } + env-ci@11.2.0: + resolution: + { + integrity: sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==, + } + engines: { node: ^18.17 || >=20.6.1 } + env-paths@2.2.1: resolution: { @@ -4145,10 +4354,10 @@ packages: } engines: { node: ">= 0.4" } - esbuild@0.25.9: + esbuild@0.27.2: resolution: { - integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==, + integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==, } engines: { node: ">=18" } hasBin: true @@ -4228,10 +4437,10 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eslint@9.34.0: + eslint@9.39.2: resolution: { - integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==, + integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } hasBin: true @@ -4418,10 +4627,10 @@ packages: } engines: { node: ">=18" } - file-entry-cache@10.1.4: + file-entry-cache@11.1.1: resolution: { - integrity: sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==, + integrity: sha512-TPVFSDE7q91Dlk1xpFLvFllf8r0HyOMOlnWy7Z2HBku5H3KhIeOGInexrIeg2D64DosVB/JXkrrk6N/7Wriq4A==, } file-entry-cache@8.0.0: @@ -4512,10 +4721,10 @@ packages: } engines: { node: ">=16" } - flat-cache@6.1.13: + flat-cache@6.1.19: resolution: { - integrity: sha512-gmtS2PaUjSPa4zjObEIn4WWliKyZzYljgxODBfxugpK6q6HU9ClXzgCJ+nlcPKY9Bt090ypTOLIFWkV0jbKFjw==, + integrity: sha512-l/K33newPTZMTGAnnzaiqSl6NnH7Namh8jBNjrgjprWxGmZUuxx/sJNIRaijOh3n7q7ESbhNZC+pvVZMFdeU4A==, } flatpickr@4.6.13: @@ -4558,10 +4767,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: @@ -4748,6 +4957,14 @@ packages: } hasBin: true + glob@11.1.0: + resolution: + { + integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==, + } + engines: { node: 20 || >=22 } + hasBin: true + glob@7.2.3: resolution: { @@ -4797,10 +5014,10 @@ packages: } engines: { node: ">=18" } - globals@16.3.0: + globals@16.5.0: resolution: { - integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==, + integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==, } engines: { node: ">=18" } @@ -4857,12 +5074,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: { @@ -4919,6 +5130,13 @@ packages: } engines: { node: ">= 0.4" } + hashery@1.3.0: + resolution: + { + integrity: sha512-fWltioiy5zsSAs9ouEnvhsVJeAXRybGCNNv0lvzpzNOSDbULXRy7ivFWwCCv4I5Am6kSo75hmbsCduOoc2/K4w==, + } + engines: { node: ">=20" } + hasown@2.0.2: resolution: { @@ -4939,17 +5157,17 @@ packages: } engines: { node: ">=0.10.0" } - hook-std@3.0.0: + hook-std@4.0.0: resolution: { - integrity: sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==, + integrity: sha512-IHI4bEVOt3vRUDJ+bFA9VUJlo7SzvFARPNLw75pqSmAOP2HmTWfFJtPvLBrDrlgjEYXY9zs7SFdHPQaJShkSCQ==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: ">=20" } - hookified@1.11.0: + hookified@1.14.0: resolution: { - integrity: sha512-aDdIN3GyU5I6wextPplYdfmWCo+aLmjjVbntmX6HLD5RCi/xKsivYEBhnRD+d9224zFf008ZpLMPlWF0ZodYZw==, + integrity: sha512-pi1ynXIMFx/uIIwpWJ/5CEtOHLGtnUB0WhGeeYT+fKcQ+WCQbm3/rrkAXnpfph++PgepNqPdTC2WTj8A6k6zoQ==, } hosted-git-info@7.0.2: @@ -4959,12 +5177,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: @@ -5289,13 +5507,6 @@ packages: } engines: { node: ">=8" } - is-fullwidth-code-point@4.0.0: - resolution: - { - integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==, - } - engines: { node: ">=12" } - is-fullwidth-code-point@5.0.0: resolution: { @@ -5542,6 +5753,13 @@ packages: integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, } + jackspeak@4.1.1: + resolution: + { + integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==, + } + engines: { node: 20 || >=22 } + jake@10.9.4: resolution: { @@ -5689,10 +5907,10 @@ packages: integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, } - keyv@5.5.0: + keyv@5.5.5: resolution: { - integrity: sha512-QG7qR2tijh1ftOvClut4YKKg1iW6cx3GZsKoGyJPxHkGWK9oJhG9P3j5deP0QQOGDowBMVQFaP+Vm4NpGYvmIQ==, + integrity: sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==, } kind-of@6.0.3: @@ -5749,18 +5967,18 @@ packages: integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } - lint-staged@16.1.5: + lint-staged@16.2.7: resolution: { - integrity: sha512-uAeQQwByI6dfV7wpt/gVqg+jAPaSp8WwOA8kKC/dv1qw14oGpnpAisY65ibGHUGDUv0rYaZ8CAJZ/1U8hUvC2A==, + integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==, } engines: { node: ">=20.17" } hasBin: true - listr2@9.0.2: + listr2@9.0.5: resolution: { - integrity: sha512-VVd7cS6W+vLJu2wmq4QmfVj14Iep7cz4r/OWNk36Aq5ZOY7G8/BfCrQFexcwB1OIxB3yERiePfE/REBjEFulag==, + integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==, } engines: { node: ">=20.0.0" } @@ -5835,12 +6053,6 @@ packages: integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==, } - lodash.castarray@4.4.0: - resolution: - { - integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==, - } - lodash.debounce@4.0.8: resolution: { @@ -5977,6 +6189,13 @@ packages: integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, } + lru-cache@11.2.4: + resolution: + { + integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==, + } + engines: { node: 20 || >=22 } + lru-cache@5.1.1: resolution: { @@ -6006,10 +6225,10 @@ packages: engines: { node: ">= 18" } hasBin: true - marked@16.2.1: + marked@17.0.1: resolution: { - integrity: sha512-r3UrXED9lMlHF97jJByry90cwrZBBvZmjG1L68oYfuPMW+uDTnuMbyJDymCWwbTE+f+3LhpNDKfpR3a3saFyjA==, + integrity: sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==, } engines: { node: ">= 20" } hasBin: true @@ -6129,6 +6348,13 @@ packages: } hasBin: true + minimatch@10.1.1: + resolution: + { + integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==, + } + engines: { node: 20 || >=22 } + minimatch@3.1.2: resolution: { @@ -6192,10 +6418,10 @@ packages: integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, } - nano-spawn@1.0.2: + nano-spawn@2.0.0: resolution: { - integrity: sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==, + integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==, } engines: { node: ">=20.17" } @@ -6250,6 +6476,12 @@ packages: integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, } + node-releases@2.0.27: + resolution: + { + integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==, + } + normalize-package-data@6.0.2: resolution: { @@ -6257,6 +6489,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: { @@ -6264,13 +6503,6 @@ packages: } engines: { node: ">=0.10.0" } - normalize-range@0.1.2: - resolution: - { - integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, - } - engines: { node: ">=0.10.0" } - normalize-url@8.0.2: resolution: { @@ -6299,12 +6531,12 @@ packages: } engines: { node: ">=18" } - npm@10.9.3: + npm@11.7.0: resolution: { - integrity: sha512-6Eh1u5Q+kIVXeA8e7l2c/HpnFFcwrkt37xDMujD5be1gloWa9p6j3Fsv3mByXXmqJHy+2cElRMML8opNT7xIJQ==, + integrity: sha512-wiCZpv/41bIobCoJ31NStIWKfAxxYyD1iYnWCtiyns8s5v3+l8y0HCP/sScuH6B5+GhIfda4HQKiqeGZwJWhFw==, } - engines: { node: ^18.17.0 || >=20.5.0 } + engines: { node: ^20.17.0 || >=22.9.0 } hasBin: true bundledDependencies: - "@isaacs/string-locale-compare" @@ -6312,6 +6544,7 @@ packages: - "@npmcli/config" - "@npmcli/fs" - "@npmcli/map-workspaces" + - "@npmcli/metavuln-calculator" - "@npmcli/package-json" - "@npmcli/promise-spawn" - "@npmcli/redact" @@ -6336,7 +6569,6 @@ packages: - libnpmdiff - libnpmexec - libnpmfund - - libnpmhook - libnpmorg - libnpmpack - libnpmpublish @@ -6350,7 +6582,6 @@ packages: - ms - node-gyp - nopt - - normalize-package-data - npm-audit-report - npm-install-checks - npm-package-arg @@ -6374,7 +6605,6 @@ packages: - treeverse - validate-npm-package-name - which - - write-file-atomic nth-check@2.1.1: resolution: @@ -6738,6 +6968,13 @@ packages: } engines: { node: ">=16 || 14 >=14.18" } + path-scurry@2.0.1: + resolution: + { + integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==, + } + engines: { node: 20 || >=22 } + path-type@4.0.0: resolution: { @@ -6882,10 +7119,10 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.11: + postcss-color-functional-notation@7.0.12: resolution: { - integrity: sha512-zfqoUSaHMko/k2PA9xnaydVTHqYv5vphq5Q2AHcG/dCdv/OkHYWcVWfVTBKZ526uzT8L7NghuvSw3C9PxlKnLg==, + integrity: sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==, } engines: { node: ">=18" } peerDependencies: @@ -6909,19 +7146,19 @@ packages: 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: @@ -6963,10 +7200,10 @@ packages: 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: @@ -6999,10 +7236,10 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-double-position-gradients@6.0.3: + postcss-double-position-gradients@6.0.4: resolution: { - integrity: sha512-Dl0Z9sdbMwrPslgOaGBZRGo3TASmmgTcqcUODr82MTYyJk6devXZM6MlQjpQKMJqlLJ6oL1w78U7IXFdPA5+ug==, + integrity: sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==, } engines: { node: ">=18" } peerDependencies: @@ -7079,10 +7316,10 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-lab-function@7.0.11: + postcss-lab-function@7.0.12: resolution: { - integrity: sha512-BEA4jId8uQe1gyjZZ6Bunb6ZsH2izks+v25AxQJDBtigXCjTLmCPWECwQpLTtcxH589MVxhs/9TAmRC6lUEmXQ==, + integrity: sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==, } engines: { node: ">=18" } peerDependencies: @@ -7121,10 +7358,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: @@ -7148,10 +7385,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: @@ -7247,10 +7484,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: @@ -7318,10 +7555,10 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.3.1: + postcss-preset-env@10.5.0: resolution: { - integrity: sha512-8ZOOWVwQ0iMpfEYkYo+U6W7fE2dJ/tP6dtEFwPJ66eB5JjnFupfYh+y6zo+vWDO72nGhKOVdxwhTjfzcSNRg4Q==, + integrity: sha512-xgxFQPAPxeWmsgy8cR7GM1PGAL/smA5E9qU7K//D4vucS01es3M0fDujhDJn3kY8Ip7/vVYcecbe1yY+vBo3qQ==, } engines: { node: ">=18" } peerDependencies: @@ -7336,10 +7573,10 @@ packages: 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: @@ -7461,10 +7698,10 @@ packages: } engines: { node: ">=6.0.0" } - prettier-plugin-organize-imports@4.2.0: + prettier-plugin-organize-imports@4.3.0: resolution: { - integrity: sha512-Zdy27UhlmyvATZi67BTnLcKTo8fm6Oik59Sz6H64PgZJVs6NJpPD1mT240mmJn62c98/QaL+r3kx9Q3gRpDajg==, + integrity: sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw==, } peerDependencies: prettier: ">=2.0" @@ -7482,10 +7719,10 @@ packages: engines: { node: ">=10.13.0" } hasBin: true - prettier@3.6.2: + prettier@3.7.4: resolution: { - integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, + integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==, } engines: { node: ">=14" } hasBin: true @@ -7536,6 +7773,13 @@ packages: } engines: { node: ">=6" } + qified@0.5.3: + resolution: + { + integrity: sha512-kXuQdQTB6oN3KhI6V4acnBSZx8D2I4xzZvn9+wFLLFCoBNQY/sFnCW6c43OL7pOQ2HvGV4lnWIXNmgfp7cTWhQ==, + } + engines: { node: ">=20" } + queue-microtask@1.2.3: resolution: { @@ -7581,6 +7825,20 @@ packages: } engines: { node: ">=18" } + read-package-up@12.0.0: + resolution: + { + integrity: sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==, + } + engines: { node: ">=20" } + + read-pkg@10.0.0: + resolution: + { + integrity: sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==, + } + engines: { node: ">=20" } + read-pkg@9.0.1: resolution: { @@ -7851,20 +8109,21 @@ packages: integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, } - semantic-release@24.2.7: + semantic-release@25.0.2: resolution: { - integrity: sha512-g7RssbTAbir1k/S7uSwSVZFfFXwpomUB9Oas0+xi9KStSCmeDXcA7rNhiskjLqvUe/Evhx8fVCT16OSa34eM5g==, + integrity: sha512-6qGjWccl5yoyugHt3jTgztJ9Y0JVzyH8/Voc/D8PlLat9pwxQYXz7W1Dpnq5h0/G5GCYGUaDSlYcyk3AMh5A6g==, } - engines: { node: ">=20.8.1" } + engines: { node: ^22.14.0 || >= 24.10.0 } hasBin: true - semver-diff@4.0.0: + semver-diff@5.0.0: resolution: { - integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==, + 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: @@ -8011,13 +8270,6 @@ packages: } engines: { node: ">=10" } - slice-ansi@5.0.0: - resolution: - { - integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==, - } - engines: { node: ">=12" } - slice-ansi@7.1.0: resolution: { @@ -8163,6 +8415,13 @@ packages: } engines: { node: ">=18" } + string-width@8.1.0: + resolution: + { + integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==, + } + engines: { node: ">=20" } + string.prototype.matchall@4.0.12: resolution: { @@ -8304,19 +8563,19 @@ packages: peerDependencies: stylelint: ^16.23.0 - stylelint-config-standard@39.0.0: + stylelint-config-standard@39.0.1: resolution: { - integrity: sha512-JabShWORb8Bmc1A47ZyJstran60P3yUdI1zWMpGYPeFiC6xzHXJMkpKAd8EjIhq3HPUplIWWMDJ/xu0AiPd+kA==, + integrity: sha512-b7Fja59EYHRNOTa3aXiuWnhUWXFU2Nfg6h61bLfAb5GS5fX3LMUD0U5t4S8N/4tpHQg3Acs2UVPR9jy2l1g/3A==, } engines: { node: ">=18.12.0" } peerDependencies: stylelint: ^16.23.0 - stylelint@16.23.1: + stylelint@16.26.1: resolution: { - integrity: sha512-dNvDTsKV1U2YtiUDfe9d2gp902veFeo3ecCWdGlmLm2WFrAV0+L5LoOj/qHSBABQwMsZPJwfC4bf39mQm1S5zw==, + integrity: sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==, } engines: { node: ">=18.12.0" } hasBin: true @@ -8392,10 +8651,17 @@ packages: } engines: { node: ">=10.0.0" } - tailwindcss@3.4.17: + tagged-tag@1.0.0: resolution: { - integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==, + 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 @@ -8500,6 +8766,13 @@ packages: } engines: { node: ">=12.0.0" } + tinyglobby@0.2.15: + resolution: + { + integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==, + } + engines: { node: ">=12.0.0" } + tinyqueue@2.0.3: resolution: { @@ -8566,6 +8839,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: { @@ -8608,6 +8888,13 @@ packages: } engines: { node: ">=16" } + type-fest@5.3.1: + resolution: + { + integrity: sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg==, + } + engines: { node: ">=20" } + typed-array-buffer@1.0.3: resolution: { @@ -8636,20 +8923,20 @@ packages: } engines: { node: ">= 0.4" } - typescript-eslint@8.41.0: + typescript-eslint@8.50.0: resolution: { - integrity: sha512-n66rzs5OBXW3SFSnZHr2T685q1i4ODm2nulFJhMZBotaTavsS8TrI3d7bDlRSs9yWo7HmyWrN9qDu14Qv7Y0Dw==, + integrity: sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - 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 @@ -8675,6 +8962,20 @@ packages: integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==, } + undici@5.29.0: + resolution: + { + integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==, + } + engines: { node: ">=14.0" } + + undici@7.16.0: + resolution: + { + integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==, + } + engines: { node: ">=20.18.1" } + unicode-canonical-property-names-ecmascript@2.0.1: resolution: { @@ -8779,6 +9080,15 @@ packages: peerDependencies: browserslist: ">= 4.21.0" + update-browserslist-db@1.2.3: + resolution: + { + integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==, + } + hasBin: true + peerDependencies: + browserslist: ">= 4.21.0" + uri-js@4.4.1: resolution: { @@ -8810,25 +9120,25 @@ packages: integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, } - 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@7.1.3: + vite@7.3.0: resolution: { - integrity: sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==, + integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==, } engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true @@ -8874,10 +9184,10 @@ packages: integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, } - wavesurfer.js@7.10.1: + wavesurfer.js@7.12.1: resolution: { - integrity: sha512-tF1ptFCAi8SAqKbM1e7705zouLC3z4ulXCg15kSP5dQ7VDV30Q3x/xFRcuVIYTT5+jB/PdkhiBRCfsMshZG1Ug==, + integrity: sha512-NswPjVHxk0Q1F/VMRemCPUzSojjuHHisQrBqQiRXg7MVbe3f5vQ6r0rTTXA/a/neC/4hnOEC4YpXca4LpH0SUg==, } wcwidth@1.0.1: @@ -8972,101 +9282,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: @@ -9110,17 +9420,17 @@ packages: } engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - xml-formatter@3.6.6: + xml-formatter@3.6.7: resolution: { - integrity: sha512-yfofQht42x2sN1YThT6Er6GFXiQinfDAsMTNvMPi2uZw5/Vtc2PYHfvALR8U+b2oN2ekBxLd2tGWV06rAM8nQA==, + integrity: sha512-IsfFYJQuoDqtUlKhm4EzeoBOb+fQwzQVeyxxAQ0sThn/nFnQmyLPTplqq4yRhaOENH/tAyujD2TBfIYzUKB6hg==, } engines: { node: ">= 16" } - xml-parser-xo@4.1.4: + xml-parser-xo@4.1.5: resolution: { - integrity: sha512-wo+yWDNeMwd1ctzH4CsiGXaAappDsxuR+VnmPewOzHk/zvefksT2ZlcWpAePl11THOWgnIZM4GjvumevurNWZw==, + integrity: sha512-TxyRxk9sTOUg3glxSIY6f0nfuqRll2OEF8TspLgh5mZkLuBgheCn3zClcDSGJ58TvNmiwyCCuat4UajPud/5Og==, } engines: { node: ">= 16" } @@ -9186,6 +9496,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: { @@ -9207,6 +9524,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: { @@ -9229,6 +9553,22 @@ packages: engines: { node: ">=18" } snapshots: + "@actions/core@2.0.1": + dependencies: + "@actions/exec": 2.0.0 + "@actions/http-client": 3.0.0 + + "@actions/exec@2.0.0": + dependencies: + "@actions/io": 2.0.0 + + "@actions/http-client@3.0.0": + dependencies: + tunnel: 0.0.6 + undici: 5.29.0 + + "@actions/io@2.0.0": {} + "@alloc/quick-lru@5.2.0": {} "@amcharts/amcharts4-geodata@4.1.31": {} @@ -9916,18 +10256,30 @@ snapshots: "@babel/helper-string-parser": 7.27.1 "@babel/helper-validator-identifier": 7.27.1 + "@cacheable/memory@2.0.6": + dependencies: + "@cacheable/utils": 2.3.2 + "@keyv/bigmap": 1.3.0(keyv@5.5.5) + hookified: 1.14.0 + keyv: 5.5.5 + + "@cacheable/utils@2.3.2": + dependencies: + hashery: 1.3.0 + keyv: 5.5.5 + "@codemirror/autocomplete@6.18.6": dependencies: "@codemirror/language": 6.11.3 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.1 + "@codemirror/view": 6.39.4 "@lezer/common": 1.2.3 - "@codemirror/commands@6.8.1": + "@codemirror/commands@6.10.1": dependencies: "@codemirror/language": 6.11.3 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.1 + "@codemirror/view": 6.39.4 "@lezer/common": 1.2.3 "@codemirror/lang-xml@6.1.0": @@ -9935,14 +10287,14 @@ snapshots: "@codemirror/autocomplete": 6.18.6 "@codemirror/language": 6.11.3 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.1 + "@codemirror/view": 6.39.4 "@lezer/common": 1.2.3 "@lezer/xml": 1.0.6 "@codemirror/language@6.11.3": dependencies: "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.1 + "@codemirror/view": 6.39.4 "@lezer/common": 1.2.3 "@lezer/highlight": 1.2.1 "@lezer/lr": 1.4.2 @@ -9951,20 +10303,20 @@ snapshots: "@codemirror/lint@6.8.5": dependencies: "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.1 + "@codemirror/view": 6.39.4 crelt: 1.0.6 "@codemirror/search@6.5.11": dependencies: "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.1 + "@codemirror/view": 6.39.4 crelt: 1.0.6 "@codemirror/state@6.5.2": dependencies: "@marijn/find-cluster-break": 1.0.2 - "@codemirror/view@6.38.1": + "@codemirror/view@6.39.4": dependencies: "@codemirror/state": 6.5.2 crelt: 1.0.6 @@ -9974,66 +10326,92 @@ snapshots: "@colors/colors@1.5.0": optional: true - "@commitlint/cli@19.8.1(@types/node@24.3.0)(typescript@5.9.2)": + "@commitlint/cli@20.2.0(@types/node@24.3.0)(typescript@5.9.3)": dependencies: - "@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 + "@commitlint/format": 20.2.0 + "@commitlint/lint": 20.2.0 + "@commitlint/load": 20.2.0(@types/node@24.3.0)(typescript@5.9.3) + "@commitlint/read": 20.2.0 + "@commitlint/types": 20.2.0 tinyexec: 1.0.1 yargs: 17.7.2 transitivePeerDependencies: - "@types/node" - typescript - "@commitlint/config-conventional@19.8.1": + "@commitlint/config-conventional@20.2.0": dependencies: - "@commitlint/types": 19.8.1 + "@commitlint/types": 20.2.0 conventional-changelog-conventionalcommits: 7.0.2 "@commitlint/config-validator@19.8.1": dependencies: "@commitlint/types": 19.8.1 ajv: 8.17.1 + optional: true - "@commitlint/ensure@19.8.1": + "@commitlint/config-validator@20.2.0": dependencies: - "@commitlint/types": 19.8.1 + "@commitlint/types": 20.2.0 + ajv: 8.17.1 + + "@commitlint/ensure@20.2.0": + dependencies: + "@commitlint/types": 20.2.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.8.1": {} + "@commitlint/execute-rule@19.8.1": + optional: true - "@commitlint/format@19.8.1": + "@commitlint/execute-rule@20.0.0": {} + + "@commitlint/format@20.2.0": dependencies: - "@commitlint/types": 19.8.1 + "@commitlint/types": 20.2.0 chalk: 5.6.0 - "@commitlint/is-ignored@19.8.1": + "@commitlint/is-ignored@20.2.0": dependencies: - "@commitlint/types": 19.8.1 + "@commitlint/types": 20.2.0 semver: 7.7.2 - "@commitlint/lint@19.8.1": + "@commitlint/lint@20.2.0": dependencies: - "@commitlint/is-ignored": 19.8.1 - "@commitlint/parse": 19.8.1 - "@commitlint/rules": 19.8.1 - "@commitlint/types": 19.8.1 + "@commitlint/is-ignored": 20.2.0 + "@commitlint/parse": 20.2.0 + "@commitlint/rules": 20.2.0 + "@commitlint/types": 20.2.0 - "@commitlint/load@19.8.1(@types/node@24.3.0)(typescript@5.9.2)": + "@commitlint/load@19.8.1(@types/node@24.3.0)(typescript@5.9.3)": dependencies: "@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) + cosmiconfig: 9.0.0(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@24.3.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 + transitivePeerDependencies: + - "@types/node" + - typescript + optional: true + + "@commitlint/load@20.2.0(@types/node@24.3.0)(typescript@5.9.3)": + dependencies: + "@commitlint/config-validator": 20.2.0 + "@commitlint/execute-rule": 20.0.0 + "@commitlint/resolve-extends": 20.2.0 + "@commitlint/types": 20.2.0 + chalk: 5.6.0 + cosmiconfig: 9.0.0(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@24.3.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 @@ -10041,18 +10419,18 @@ snapshots: - "@types/node" - typescript - "@commitlint/message@19.8.1": {} + "@commitlint/message@20.0.0": {} - "@commitlint/parse@19.8.1": + "@commitlint/parse@20.2.0": dependencies: - "@commitlint/types": 19.8.1 + "@commitlint/types": 20.2.0 conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 - "@commitlint/read@19.8.1": + "@commitlint/read@20.2.0": dependencies: - "@commitlint/top-level": 19.8.1 - "@commitlint/types": 19.8.1 + "@commitlint/top-level": 20.0.0 + "@commitlint/types": 20.2.0 git-raw-commits: 4.0.0 minimist: 1.2.8 tinyexec: 1.0.1 @@ -10065,17 +10443,27 @@ snapshots: import-meta-resolve: 4.1.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 + optional: true - "@commitlint/rules@19.8.1": + "@commitlint/resolve-extends@20.2.0": dependencies: - "@commitlint/ensure": 19.8.1 - "@commitlint/message": 19.8.1 - "@commitlint/to-lines": 19.8.1 - "@commitlint/types": 19.8.1 + "@commitlint/config-validator": 20.2.0 + "@commitlint/types": 20.2.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.8.1": {} + "@commitlint/rules@20.2.0": + dependencies: + "@commitlint/ensure": 20.2.0 + "@commitlint/message": 20.0.0 + "@commitlint/to-lines": 20.0.0 + "@commitlint/types": 20.2.0 - "@commitlint/top-level@19.8.1": + "@commitlint/to-lines@20.0.0": {} + + "@commitlint/top-level@20.0.0": dependencies: find-up: 7.0.0 @@ -10083,6 +10471,12 @@ snapshots: dependencies: "@types/conventional-commits-parser": 5.0.1 chalk: 5.6.0 + optional: true + + "@commitlint/types@20.2.0": + dependencies: + "@types/conventional-commits-parser": 5.0.1 + chalk: 5.6.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: @@ -10107,6 +10501,8 @@ snapshots: dependencies: "@csstools/css-tokenizer": 3.0.4 + "@csstools/css-syntax-patches-for-csstree@1.0.21": {} + "@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)": @@ -10114,12 +10510,12 @@ snapshots: "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) "@csstools/css-tokenizer": 3.0.4 - "@csstools/postcss-alpha-function@1.0.0(postcss@8.5.6)": + "@csstools/postcss-alpha-function@1.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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -10129,47 +10525,56 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.0 - "@csstools/postcss-color-function-display-p3-linear@1.0.0(postcss@8.5.6)": + "@csstools/postcss-color-function-display-p3-linear@1.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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-color-function@4.0.11(postcss@8.5.6)": + "@csstools/postcss-color-function@4.0.12(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-color-mix-function@3.0.11(postcss@8.5.6)": + "@csstools/postcss-color-mix-function@3.0.12(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-color-mix-variadic-function-arguments@1.0.1(postcss@8.5.6)": + "@csstools/postcss-color-mix-variadic-function-arguments@1.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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-content-alt-text@2.0.7(postcss@8.5.6)": + "@csstools/postcss-content-alt-text@2.0.8(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) + "@csstools/utilities": 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + "@csstools/postcss-contrast-color-function@2.0.12(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) postcss: 8.5.6 @@ -10193,27 +10598,27 @@ snapshots: "@csstools/css-tokenizer": 3.0.4 postcss: 8.5.6 - "@csstools/postcss-gradients-interpolation-method@5.0.11(postcss@8.5.6)": + "@csstools/postcss-gradients-interpolation-method@5.0.12(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-hwb-function@4.0.11(postcss@8.5.6)": + "@csstools/postcss-hwb-function@4.0.12(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-ic-unit@4.0.3(postcss@8.5.6)": + "@csstools/postcss-ic-unit@4.0.4(postcss@8.5.6)": dependencies: - "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -10228,11 +10633,11 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.0 - "@csstools/postcss-light-dark-function@2.0.10(postcss@8.5.6)": + "@csstools/postcss-light-dark-function@2.0.11(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -10285,16 +10690,20 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - "@csstools/postcss-oklab-function@4.0.11(postcss@8.5.6)": + "@csstools/postcss-oklab-function@4.0.12(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 - "@csstools/postcss-progressive-custom-properties@4.2.0(postcss@8.5.6)": + "@csstools/postcss-position-area-property@1.0.0(postcss@8.5.6)": + dependencies: + postcss: 8.5.6 + + "@csstools/postcss-progressive-custom-properties@4.2.1(postcss@8.5.6)": dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -10306,12 +10715,12 @@ snapshots: "@csstools/css-tokenizer": 3.0.4 postcss: 8.5.6 - "@csstools/postcss-relative-color-syntax@3.0.11(postcss@8.5.6)": + "@csstools/postcss-relative-color-syntax@3.0.12(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -10334,6 +10743,12 @@ snapshots: "@csstools/css-tokenizer": 3.0.4 postcss: 8.5.6 + "@csstools/postcss-system-ui-font-family@1.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 + postcss: 8.5.6 + "@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.6)": dependencies: "@csstools/color-helpers": 5.1.0 @@ -10363,106 +10778,113 @@ snapshots: dependencies: postcss: 8.5.6 - "@dual-bundle/import-meta-resolve@4.1.0": {} + "@dual-bundle/import-meta-resolve@4.2.1": {} "@epic-web/invariant@1.0.0": {} - "@esbuild/aix-ppc64@0.25.9": + "@esbuild/aix-ppc64@0.27.2": optional: true - "@esbuild/android-arm64@0.25.9": + "@esbuild/android-arm64@0.27.2": optional: true - "@esbuild/android-arm@0.25.9": + "@esbuild/android-arm@0.27.2": optional: true - "@esbuild/android-x64@0.25.9": + "@esbuild/android-x64@0.27.2": optional: true - "@esbuild/darwin-arm64@0.25.9": + "@esbuild/darwin-arm64@0.27.2": optional: true - "@esbuild/darwin-x64@0.25.9": + "@esbuild/darwin-x64@0.27.2": optional: true - "@esbuild/freebsd-arm64@0.25.9": + "@esbuild/freebsd-arm64@0.27.2": optional: true - "@esbuild/freebsd-x64@0.25.9": + "@esbuild/freebsd-x64@0.27.2": optional: true - "@esbuild/linux-arm64@0.25.9": + "@esbuild/linux-arm64@0.27.2": optional: true - "@esbuild/linux-arm@0.25.9": + "@esbuild/linux-arm@0.27.2": optional: true - "@esbuild/linux-ia32@0.25.9": + "@esbuild/linux-ia32@0.27.2": optional: true - "@esbuild/linux-loong64@0.25.9": + "@esbuild/linux-loong64@0.27.2": optional: true - "@esbuild/linux-mips64el@0.25.9": + "@esbuild/linux-mips64el@0.27.2": optional: true - "@esbuild/linux-ppc64@0.25.9": + "@esbuild/linux-ppc64@0.27.2": optional: true - "@esbuild/linux-riscv64@0.25.9": + "@esbuild/linux-riscv64@0.27.2": optional: true - "@esbuild/linux-s390x@0.25.9": + "@esbuild/linux-s390x@0.27.2": optional: true - "@esbuild/linux-x64@0.25.9": + "@esbuild/linux-x64@0.27.2": optional: true - "@esbuild/netbsd-arm64@0.25.9": + "@esbuild/netbsd-arm64@0.27.2": optional: true - "@esbuild/netbsd-x64@0.25.9": + "@esbuild/netbsd-x64@0.27.2": optional: true - "@esbuild/openbsd-arm64@0.25.9": + "@esbuild/openbsd-arm64@0.27.2": optional: true - "@esbuild/openbsd-x64@0.25.9": + "@esbuild/openbsd-x64@0.27.2": optional: true - "@esbuild/openharmony-arm64@0.25.9": + "@esbuild/openharmony-arm64@0.27.2": optional: true - "@esbuild/sunos-x64@0.25.9": + "@esbuild/sunos-x64@0.27.2": optional: true - "@esbuild/win32-arm64@0.25.9": + "@esbuild/win32-arm64@0.27.2": optional: true - "@esbuild/win32-ia32@0.25.9": + "@esbuild/win32-ia32@0.27.2": optional: true - "@esbuild/win32-x64@0.25.9": + "@esbuild/win32-x64@0.27.2": optional: true - "@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.5.1))": + "@eslint-community/eslint-utils@4.7.0(eslint@9.39.2(jiti@2.5.1))": dependencies: - eslint: 9.34.0(jiti@2.5.1) + eslint: 9.39.2(jiti@2.5.1) + eslint-visitor-keys: 3.4.3 + + "@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.5.1))": + dependencies: + eslint: 9.39.2(jiti@2.5.1) eslint-visitor-keys: 3.4.3 "@eslint-community/regexpp@4.12.1": {} - "@eslint/config-array@0.21.0": + "@eslint/config-array@0.21.1": dependencies: - "@eslint/object-schema": 2.1.6 + "@eslint/object-schema": 2.1.7 debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - "@eslint/config-helpers@0.3.1": {} + "@eslint/config-helpers@0.4.2": + dependencies: + "@eslint/core": 0.17.0 - "@eslint/core@0.15.2": + "@eslint/core@0.17.0": dependencies: "@types/json-schema": 7.0.15 @@ -10480,15 +10902,17 @@ snapshots: transitivePeerDependencies: - supports-color - "@eslint/js@9.34.0": {} + "@eslint/js@9.39.2": {} - "@eslint/object-schema@2.1.6": {} + "@eslint/object-schema@2.1.7": {} - "@eslint/plugin-kit@0.3.5": + "@eslint/plugin-kit@0.4.1": dependencies: - "@eslint/core": 0.15.2 + "@eslint/core": 0.17.0 levn: 0.4.1 + "@fastify/busboy@2.1.1": {} + "@floating-ui/core@1.7.3": dependencies: "@floating-ui/utils": 0.2.10 @@ -10532,7 +10956,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": {} @@ -10547,6 +10971,12 @@ snapshots: "@humanwhocodes/retry@0.4.3": {} + "@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 @@ -10575,7 +11005,13 @@ snapshots: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.5 - "@keyv/serialize@1.1.0": {} + "@keyv/bigmap@1.3.0(keyv@5.5.5)": + dependencies: + hashery: 1.3.0 + hookified: 1.14.0 + keyv: 5.5.5 + + "@keyv/serialize@1.1.1": {} "@lezer/common@1.2.3": {} @@ -10638,10 +11074,12 @@ snapshots: "@octokit/openapi-types@25.1.0": {} - "@octokit/plugin-paginate-rest@13.1.1(@octokit/core@7.0.3)": + "@octokit/openapi-types@27.0.0": {} + + "@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.3)": dependencies: "@octokit/core": 7.0.3 - "@octokit/types": 14.1.0 + "@octokit/types": 16.0.0 "@octokit/plugin-retry@8.0.1(@octokit/core@7.0.3)": dependencies: @@ -10672,6 +11110,10 @@ snapshots: dependencies: "@octokit/openapi-types": 25.1.0 + "@octokit/types@16.0.0": + dependencies: + "@octokit/openapi-types": 27.0.0 + "@pkgjs/parseargs@0.11.0": optional: true @@ -10799,15 +11241,15 @@ snapshots: "@sec-ant/readable-stream@0.4.1": {} - "@semantic-release/changelog@6.0.3(semantic-release@24.2.7(typescript@5.9.2))": + "@semantic-release/changelog@6.0.3(semantic-release@25.0.2(typescript@5.9.3))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 fs-extra: 11.3.1 lodash: 4.17.21 - semantic-release: 24.2.7(typescript@5.9.2) + semantic-release: 25.0.2(typescript@5.9.3) - "@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.7(typescript@5.9.2))": + "@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.2(typescript@5.9.3))": dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.2.0 @@ -10817,7 +11259,7 @@ snapshots: import-from-esm: 2.0.0 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 24.2.7(typescript@5.9.2) + semantic-release: 25.0.2(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -10825,7 +11267,7 @@ snapshots: "@semantic-release/error@4.0.0": {} - "@semantic-release/exec@7.1.0(semantic-release@24.2.7(typescript@5.9.2))": + "@semantic-release/exec@7.1.0(semantic-release@25.0.2(typescript@5.9.3))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 3.1.0 @@ -10833,11 +11275,11 @@ snapshots: execa: 9.6.0 lodash-es: 4.17.21 parse-json: 8.3.0 - semantic-release: 24.2.7(typescript@5.9.2) + semantic-release: 25.0.2(typescript@5.9.3) transitivePeerDependencies: - supports-color - "@semantic-release/git@10.0.1(semantic-release@24.2.7(typescript@5.9.2))": + "@semantic-release/git@10.0.1(semantic-release@25.0.2(typescript@5.9.3))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 @@ -10847,33 +11289,34 @@ snapshots: lodash: 4.17.21 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 24.2.7(typescript@5.9.2) + semantic-release: 25.0.2(typescript@5.9.3) transitivePeerDependencies: - supports-color - "@semantic-release/github@11.0.4(semantic-release@24.2.7(typescript@5.9.2))": + "@semantic-release/github@12.0.2(semantic-release@25.0.2(typescript@5.9.3))": dependencies: "@octokit/core": 7.0.3 - "@octokit/plugin-paginate-rest": 13.1.1(@octokit/core@7.0.3) + "@octokit/plugin-paginate-rest": 14.0.0(@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.1 dir-glob: 3.0.1 - globby: 14.1.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 issue-parser: 7.0.1 lodash-es: 4.17.21 mime: 4.0.7 p-filter: 4.1.0 - semantic-release: 24.2.7(typescript@5.9.2) + semantic-release: 25.0.2(typescript@5.9.3) + tinyglobby: 0.2.14 + undici: 7.16.0 url-join: 5.0.0 transitivePeerDependencies: - supports-color - "@semantic-release/gitlab@13.2.8(semantic-release@24.2.7(typescript@5.9.2))": + "@semantic-release/gitlab@13.2.9(semantic-release@25.0.2(typescript@5.9.3))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 @@ -10887,29 +11330,31 @@ snapshots: hpagent: 1.2.0 lodash-es: 4.17.21 parse-url: 10.0.3 - semantic-release: 24.2.7(typescript@5.9.2) + semantic-release: 25.0.2(typescript@5.9.3) url-join: 4.0.1 transitivePeerDependencies: - supports-color - "@semantic-release/npm@12.0.2(semantic-release@24.2.7(typescript@5.9.2))": + "@semantic-release/npm@13.1.3(semantic-release@25.0.2(typescript@5.9.3))": dependencies: + "@actions/core": 2.0.1 "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 + env-ci: 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.2 - npm: 10.9.3 + npm: 11.7.0 rc: 1.2.8 - read-pkg: 9.0.1 + read-pkg: 10.0.0 registry-auth-token: 5.1.0 - semantic-release: 24.2.7(typescript@5.9.2) + semantic-release: 25.0.2(typescript@5.9.3) semver: 7.7.2 tempy: 3.1.0 - "@semantic-release/release-notes-generator@14.0.3(semantic-release@24.2.7(typescript@5.9.2))": + "@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.2(typescript@5.9.3))": dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.2.0 @@ -10921,7 +11366,7 @@ snapshots: into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 24.2.7(typescript@5.9.2) + semantic-release: 25.0.2(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -10946,23 +11391,20 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - "@tailwindcss/forms@0.5.10(tailwindcss@3.4.17)": + "@tailwindcss/forms@0.5.11(tailwindcss@3.4.19)": dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.17 + tailwindcss: 3.4.19 "@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.5.6)": dependencies: postcss: 8.5.6 postcss-nested: 5.0.6(postcss@8.5.6) - "@tailwindcss/typography@0.5.16(tailwindcss@3.4.17)": + "@tailwindcss/typography@0.5.19(tailwindcss@3.4.19)": dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.17 + tailwindcss: 3.4.19 "@types/conventional-commits-parser@5.0.1": dependencies: @@ -10980,7 +11422,7 @@ snapshots: "@types/json-schema@7.0.15": {} - "@types/leaflet@1.9.20": + "@types/leaflet@1.9.21": dependencies: "@types/geojson": 7946.0.16 @@ -10994,97 +11436,95 @@ snapshots: "@types/trusted-types@2.0.7": {} - "@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/eslint-plugin@8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)": dependencies: "@eslint-community/regexpp": 4.12.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 + "@typescript-eslint/parser": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/scope-manager": 8.50.0 + "@typescript-eslint/type-utils": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/utils": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.50.0 + eslint: 9.39.2(jiti@2.5.1) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)": + "@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)": dependencies: - "@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 + "@typescript-eslint/scope-manager": 8.50.0 + "@typescript-eslint/types": 8.50.0 + "@typescript-eslint/typescript-estree": 8.50.0(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.50.0 debug: 4.4.1 - eslint: 9.34.0(jiti@2.5.1) - typescript: 5.9.2 + eslint: 9.39.2(jiti@2.5.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/project-service@8.41.0(typescript@5.9.2)": + "@typescript-eslint/project-service@8.50.0(typescript@5.9.3)": dependencies: - "@typescript-eslint/tsconfig-utils": 8.41.0(typescript@5.9.2) - "@typescript-eslint/types": 8.41.0 + "@typescript-eslint/tsconfig-utils": 8.50.0(typescript@5.9.3) + "@typescript-eslint/types": 8.50.0 debug: 4.4.1 - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.41.0": + "@typescript-eslint/scope-manager@8.50.0": dependencies: - "@typescript-eslint/types": 8.41.0 - "@typescript-eslint/visitor-keys": 8.41.0 + "@typescript-eslint/types": 8.50.0 + "@typescript-eslint/visitor-keys": 8.50.0 - "@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.9.2)": + "@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)": dependencies: - typescript: 5.9.2 + typescript: 5.9.3 - "@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)": + "@typescript-eslint/type-utils@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)": 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) + "@typescript-eslint/types": 8.50.0 + "@typescript-eslint/typescript-estree": 8.50.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) 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 + eslint: 9.39.2(jiti@2.5.1) + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.41.0": {} + "@typescript-eslint/types@8.50.0": {} - "@typescript-eslint/typescript-estree@8.41.0(typescript@5.9.2)": + "@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)": 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 + "@typescript-eslint/project-service": 8.50.0(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.50.0(typescript@5.9.3) + "@typescript-eslint/types": 8.50.0 + "@typescript-eslint/visitor-keys": 8.50.0 debug: 4.4.1 - 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.2) - typescript: 5.9.2 + tinyglobby: 0.2.15 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)": + "@typescript-eslint/utils@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)": dependencies: - "@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 + "@eslint-community/eslint-utils": 4.7.0(eslint@9.39.2(jiti@2.5.1)) + "@typescript-eslint/scope-manager": 8.50.0 + "@typescript-eslint/types": 8.50.0 + "@typescript-eslint/typescript-estree": 8.50.0(typescript@5.9.3) + eslint: 9.39.2(jiti@2.5.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.41.0": + "@typescript-eslint/visitor-keys@8.50.0": dependencies: - "@typescript-eslint/types": 8.41.0 + "@typescript-eslint/types": 8.50.0 eslint-visitor-keys: 4.2.1 "@vime/core@5.4.1": @@ -11211,12 +11651,11 @@ snapshots: at-least-node@1.0.0: {} - autoprefixer@10.4.21(postcss@8.5.6): + autoprefixer@10.4.23(postcss@8.5.6): dependencies: - browserslist: 4.25.3 - caniuse-lite: 1.0.30001737 - fraction.js: 4.3.7 - normalize-range: 0.1.2 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001761 + fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -11257,6 +11696,8 @@ snapshots: base64-js@1.5.1: {} + baseline-browser-mapping@2.9.11: {} + before-after-hook@4.0.0: {} binary-extensions@2.3.0: {} @@ -11295,6 +11736,14 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.3) + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.11 + caniuse-lite: 1.0.30001761 + electron-to-chromium: 1.5.267 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + buffer-from@1.1.2: {} buffer@5.7.1: @@ -11314,10 +11763,13 @@ snapshots: normalize-url: 8.0.2 responselike: 3.0.0 - cacheable@1.10.4: + cacheable@2.3.1: dependencies: - hookified: 1.11.0 - keyv: 5.5.0 + "@cacheable/memory": 2.0.6 + "@cacheable/utils": 2.3.2 + hookified: 1.14.0 + keyv: 5.5.5 + qified: 0.5.3 cachedir@2.3.0: {} @@ -11346,13 +11798,15 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.25.3 + browserslist: 4.28.1 caniuse-lite: 1.0.30001737 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 caniuse-lite@1.0.30001737: {} + caniuse-lite@1.0.30001761: {} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -11419,10 +11873,10 @@ snapshots: optionalDependencies: "@colors/colors": 1.5.0 - cli-truncate@4.0.0: + cli-truncate@5.1.1: dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 + slice-ansi: 7.1.0 + string-width: 8.1.0 cli-width@3.0.0: {} @@ -11444,17 +11898,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.0 + wrap-ansi: 9.0.0 + clone@1.0.4: {} codemirror@6.0.2: dependencies: "@codemirror/autocomplete": 6.18.6 - "@codemirror/commands": 6.8.1 + "@codemirror/commands": 6.10.1 "@codemirror/language": 6.11.3 "@codemirror/lint": 6.8.5 "@codemirror/search": 6.5.11 "@codemirror/state": 6.5.2 - "@codemirror/view": 6.38.1 + "@codemirror/view": 6.39.4 color-convert@1.9.3: dependencies: @@ -11474,7 +11934,7 @@ snapshots: commander@11.1.0: {} - commander@14.0.0: {} + commander@14.0.2: {} commander@2.20.3: {} @@ -11482,10 +11942,10 @@ snapshots: commander@7.2.0: {} - commitizen@4.3.1(@types/node@24.3.0)(typescript@5.9.2): + commitizen@4.3.1(@types/node@24.3.0)(typescript@5.9.3): dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@24.3.0)(typescript@5.9.2) + cz-conventional-changelog: 3.3.0(@types/node@24.3.0)(typescript@5.9.3) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -11562,25 +12022,25 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@24.3.0)(cosmiconfig@9.0.0(typescript@5.9.2))(typescript@5.9.2): + cosmiconfig-typescript-loader@6.1.0(@types/node@24.3.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): dependencies: "@types/node": 24.3.0 - cosmiconfig: 9.0.0(typescript@5.9.2) + cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.5.1 - typescript: 5.9.2 + typescript: 5.9.3 - cosmiconfig@9.0.0(typescript@5.9.2): + cosmiconfig@9.0.0(typescript@5.9.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 crelt@1.0.6: {} - cross-env@10.0.0: + cross-env@10.1.0: dependencies: "@epic-web/invariant": 1.0.0 cross-spawn: 7.0.6 @@ -11641,28 +12101,28 @@ snapshots: css-what@6.2.2: {} - cssdb@8.4.0: {} + cssdb@8.5.2: {} 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.25.3 + browserslist: 4.28.1 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-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) @@ -11670,11 +12130,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) @@ -11683,9 +12143,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 @@ -11693,16 +12153,16 @@ snapshots: dependencies: css-tree: 2.2.1 - cz-conventional-changelog@3.3.0(@types/node@24.3.0)(typescript@5.9.2): + cz-conventional-changelog@3.3.0(@types/node@24.3.0)(typescript@5.9.3): dependencies: chalk: 2.4.2 - commitizen: 4.3.1(@types/node@24.3.0)(typescript@5.9.2) + commitizen: 4.3.1(@types/node@24.3.0)(typescript@5.9.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.8.1(@types/node@24.3.0)(typescript@5.9.2) + "@commitlint/load": 19.8.1(@types/node@24.3.0)(typescript@5.9.3) transitivePeerDependencies: - "@types/node" - typescript @@ -11776,6 +12236,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decamelize@1.2.0: {} decompress-response@6.0.0: @@ -11871,6 +12335,8 @@ snapshots: electron-to-chromium@1.5.208: {} + electron-to-chromium@1.5.267: {} + emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} @@ -11886,6 +12352,11 @@ snapshots: execa: 8.0.1 java-properties: 1.0.2 + env-ci@11.2.0: + dependencies: + execa: 8.0.1 + java-properties: 1.0.2 + env-paths@2.2.1: {} environment@1.1.0: {} @@ -11972,34 +12443,34 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.25.9: + esbuild@0.27.2: 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.27.2 + "@esbuild/android-arm": 0.27.2 + "@esbuild/android-arm64": 0.27.2 + "@esbuild/android-x64": 0.27.2 + "@esbuild/darwin-arm64": 0.27.2 + "@esbuild/darwin-x64": 0.27.2 + "@esbuild/freebsd-arm64": 0.27.2 + "@esbuild/freebsd-x64": 0.27.2 + "@esbuild/linux-arm": 0.27.2 + "@esbuild/linux-arm64": 0.27.2 + "@esbuild/linux-ia32": 0.27.2 + "@esbuild/linux-loong64": 0.27.2 + "@esbuild/linux-mips64el": 0.27.2 + "@esbuild/linux-ppc64": 0.27.2 + "@esbuild/linux-riscv64": 0.27.2 + "@esbuild/linux-s390x": 0.27.2 + "@esbuild/linux-x64": 0.27.2 + "@esbuild/netbsd-arm64": 0.27.2 + "@esbuild/netbsd-x64": 0.27.2 + "@esbuild/openbsd-arm64": 0.27.2 + "@esbuild/openbsd-x64": 0.27.2 + "@esbuild/openharmony-arm64": 0.27.2 + "@esbuild/sunos-x64": 0.27.2 + "@esbuild/win32-arm64": 0.27.2 + "@esbuild/win32-ia32": 0.27.2 + "@esbuild/win32-x64": 0.27.2 escalade@3.2.0: {} @@ -12009,18 +12480,18 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.5.1)): + eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.5.1)): dependencies: - eslint: 9.34.0(jiti@2.5.1) + eslint: 9.39.2(jiti@2.5.1) - eslint-plugin-prettier@5.5.4(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): + eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.5.1)))(eslint@9.39.2(jiti@2.5.1))(prettier@3.7.4): dependencies: - eslint: 9.34.0(jiti@2.5.1) - prettier: 3.6.2 + eslint: 9.39.2(jiti@2.5.1) + prettier: 3.7.4 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@9.34.0(jiti@2.5.1)) + eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.5.1)) eslint-scope@8.4.0: dependencies: @@ -12031,21 +12502,20 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.34.0(jiti@2.5.1): + eslint@9.39.2(jiti@2.5.1): dependencies: - "@eslint-community/eslint-utils": 4.7.0(eslint@9.34.0(jiti@2.5.1)) + "@eslint-community/eslint-utils": 4.9.0(eslint@9.39.2(jiti@2.5.1)) "@eslint-community/regexpp": 4.12.1 - "@eslint/config-array": 0.21.0 - "@eslint/config-helpers": 0.3.1 - "@eslint/core": 0.15.2 + "@eslint/config-array": 0.21.1 + "@eslint/config-helpers": 0.4.2 + "@eslint/core": 0.17.0 "@eslint/eslintrc": 3.3.1 - "@eslint/js": 9.34.0 - "@eslint/plugin-kit": 0.3.5 + "@eslint/js": 9.39.2 + "@eslint/plugin-kit": 0.4.1 "@humanfs/node": 0.16.6 "@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 @@ -12188,9 +12658,9 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-entry-cache@10.1.4: + file-entry-cache@11.1.1: dependencies: - flat-cache: 6.1.13 + flat-cache: 6.1.19 file-entry-cache@8.0.0: dependencies: @@ -12250,11 +12720,11 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 - flat-cache@6.1.13: + flat-cache@6.1.19: dependencies: - cacheable: 1.10.4 + cacheable: 2.3.1 flatted: 3.3.3 - hookified: 1.11.0 + hookified: 1.14.0 flatpickr@4.6.13: {} @@ -12273,7 +12743,7 @@ snapshots: formdata-node@6.0.3: {} - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} from2@2.3.0: dependencies: @@ -12392,6 +12862,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.1.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.1.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -12431,7 +12910,7 @@ snapshots: globals@14.0.0: {} - globals@16.3.0: {} + globals@16.5.0: {} globalthis@1.0.4: dependencies: @@ -12478,8 +12957,6 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -12509,6 +12986,10 @@ snapshots: dependencies: has-symbols: 1.1.0 + hashery@1.3.0: + dependencies: + hookified: 1.14.0 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -12519,17 +13000,17 @@ snapshots: dependencies: parse-passwd: 1.0.0 - hook-std@3.0.0: {} + hook-std@4.0.0: {} - hookified@1.11.0: {} + hookified@1.14.0: {} 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.4 hpagent@1.2.0: {} @@ -12723,8 +13204,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@4.0.0: {} - is-fullwidth-code-point@5.0.0: dependencies: get-east-asian-width: 1.3.0 @@ -12842,6 +13321,10 @@ snapshots: optionalDependencies: "@pkgjs/parseargs": 0.11.0 + jackspeak@4.1.1: + dependencies: + "@isaacs/cliui": 8.0.2 + jake@10.9.4: dependencies: async: 3.2.6 @@ -12902,9 +13385,9 @@ snapshots: dependencies: json-buffer: 3.0.1 - keyv@5.5.0: + keyv@5.5.5: dependencies: - "@keyv/serialize": 1.1.0 + "@keyv/serialize": 1.1.1 kind-of@6.0.3: {} @@ -12927,24 +13410,19 @@ snapshots: lines-and-columns@1.2.4: {} - lint-staged@16.1.5: + lint-staged@16.2.7: dependencies: - chalk: 5.6.0 - commander: 14.0.0 - debug: 4.4.1 - lilconfig: 3.1.3 - listr2: 9.0.2 + commander: 14.0.2 + listr2: 9.0.5 micromatch: 4.0.8 - nano-spawn: 1.0.2 + nano-spawn: 2.0.0 pidtree: 0.6.0 string-argv: 0.3.2 yaml: 2.8.1 - transitivePeerDependencies: - - supports-color - listr2@9.0.2: + listr2@9.0.5: dependencies: - cli-truncate: 4.0.0 + cli-truncate: 5.1.1 colorette: 2.0.20 eventemitter3: 5.0.1 log-update: 6.1.0 @@ -12997,8 +13475,6 @@ snapshots: lodash.capitalize@4.2.1: {} - lodash.castarray@4.4.0: {} - lodash.debounce@4.0.8: {} lodash.escaperegexp@4.1.2: {} @@ -13052,6 +13528,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.2.4: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -13073,7 +13551,7 @@ snapshots: marked@15.0.12: {} - marked@16.2.1: {} + marked@17.0.1: {} math-intrinsics@1.1.0: {} @@ -13112,6 +13590,10 @@ snapshots: mini-svg-data-uri@1.4.4: {} + minimatch@10.1.1: + dependencies: + "@isaacs/brace-expansion": 5.0.0 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -13142,7 +13624,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nano-spawn@1.0.2: {} + nano-spawn@2.0.0: {} nanoid@3.3.11: {} @@ -13165,15 +13647,21 @@ snapshots: node-releases@2.0.19: {} + node-releases@2.0.27: {} + normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 semver: 7.7.2 validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} + normalize-package-data@8.0.0: + dependencies: + hosted-git-info: 9.0.2 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 - normalize-range@0.1.2: {} + normalize-path@3.0.0: {} normalize-url@8.0.2: {} @@ -13190,7 +13678,7 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 - npm@10.9.3: {} + npm@11.7.0: {} nth-check@2.1.1: dependencies: @@ -13380,6 +13868,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.1: + dependencies: + lru-cache: 11.2.4 + minipass: 7.1.2 + path-type@4.0.0: {} path-type@6.0.0: {} @@ -13440,12 +13933,12 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.11(postcss@8.5.6): + postcss-color-functional-notation@7.0.12(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -13461,17 +13954,17 @@ snapshots: 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.25.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.25.3 + browserslist: 4.28.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -13505,7 +13998,7 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.0 - 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 @@ -13522,9 +14015,9 @@ snapshots: dependencies: postcss: 8.5.6 - postcss-double-position-gradients@6.0.3(postcss@8.5.6): + postcss-double-position-gradients@6.0.4(postcss@8.5.6): dependencies: - "@csstools/postcss-progressive-custom-properties": 4.2.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -13572,12 +14065,12 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-lab-function@7.0.11(postcss@8.5.6): + postcss-lab-function@7.0.12(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.0(postcss@8.5.6) + "@csstools/postcss-progressive-custom-properties": 4.2.1(postcss@8.5.6) "@csstools/utilities": 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -13599,9 +14092,9 @@ snapshots: postcss-value-parser: 4.2.0 stylehacks: 7.0.6(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.25.3 + browserslist: 4.28.1 caniuse-api: 3.0.0 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 @@ -13619,9 +14112,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.25.3 + browserslist: 4.28.1 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -13678,9 +14171,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.25.3 + browserslist: 4.28.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -13718,24 +14211,25 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-preset-env@10.3.1(postcss@8.5.6): + postcss-preset-env@10.5.0(postcss@8.5.6): dependencies: - "@csstools/postcss-alpha-function": 1.0.0(postcss@8.5.6) + "@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.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-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.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-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.10(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) @@ -13745,39 +14239,41 @@ snapshots: "@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-oklab-function": 4.0.12(postcss@8.5.6) + "@csstools/postcss-position-area-property": 1.0.0(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.11(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-system-ui-font-family": 1.0.0(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 + autoprefixer: 10.4.23(postcss@8.5.6) + browserslist: 4.28.1 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.0 + cssdb: 8.5.2 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-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.3(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-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-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-opacity-percentage: 3.0.0(postcss@8.5.6) @@ -13793,9 +14289,9 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-reduce-initial@7.0.4(postcss@8.5.6): + postcss-reduce-initial@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.28.1 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -13865,15 +14361,15 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2): + prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3): dependencies: - prettier: 3.6.2 - typescript: 5.9.2 + prettier: 3.7.4 + typescript: 5.9.3 prettier@2.8.8: optional: true - prettier@3.6.2: {} + prettier@3.7.4: {} pretty-bytes@5.6.0: {} @@ -13891,6 +14387,10 @@ snapshots: punycode@2.3.1: {} + qified@0.5.3: + dependencies: + hookified: 1.14.0 + queue-microtask@1.2.3: {} quick-lru@5.1.1: {} @@ -13920,6 +14420,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.0.0 + type-fest: 5.3.1 + + read-pkg@10.0.0: + dependencies: + "@types/normalize-package-data": 2.4.4 + normalize-package-data: 8.0.0 + parse-json: 8.3.0 + type-fest: 5.3.1 + unicorn-magic: 0.3.0 + read-pkg@9.0.1: dependencies: "@types/normalize-package-data": 2.4.4 @@ -14109,15 +14623,15 @@ snapshots: sax@1.4.1: {} - semantic-release@24.2.7(typescript@5.9.2): + semantic-release@25.0.2(typescript@5.9.3): dependencies: - "@semantic-release/commit-analyzer": 13.0.1(semantic-release@24.2.7(typescript@5.9.2)) + "@semantic-release/commit-analyzer": 13.0.1(semantic-release@25.0.2(typescript@5.9.3)) "@semantic-release/error": 4.0.0 - "@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)) + "@semantic-release/github": 12.0.2(semantic-release@25.0.2(typescript@5.9.3)) + "@semantic-release/npm": 13.1.3(semantic-release@25.0.2(typescript@5.9.3)) + "@semantic-release/release-notes-generator": 14.1.0(semantic-release@25.0.2(typescript@5.9.3)) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.9.2) + cosmiconfig: 9.0.0(typescript@5.9.3) debug: 4.4.1 env-ci: 11.1.1 execa: 9.6.0 @@ -14125,8 +14639,8 @@ snapshots: 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.1.0 + hook-std: 4.0.0 + hosted-git-info: 9.0.2 import-from-esm: 2.0.0 lodash-es: 4.17.21 marked: 15.0.12 @@ -14134,17 +14648,17 @@ snapshots: 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: 4.0.0 + semver-diff: 5.0.0 signale: 1.4.0 - yargs: 17.7.2 + yargs: 18.0.0 transitivePeerDependencies: - supports-color - typescript - semver-diff@4.0.0: + semver-diff@5.0.0: dependencies: semver: 7.7.2 @@ -14240,11 +14754,6 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - slice-ansi@7.1.0: dependencies: ansi-styles: 6.2.1 @@ -14323,6 +14832,11 @@ snapshots: get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 + string-width@8.1.0: + dependencies: + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 @@ -14404,35 +14918,36 @@ snapshots: stylehacks@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.28.1 postcss: 8.5.6 postcss-selector-parser: 7.1.0 - stylelint-config-recommended@17.0.0(stylelint@16.23.1(typescript@5.9.2)): + stylelint-config-recommended@17.0.0(stylelint@16.26.1(typescript@5.9.3)): dependencies: - stylelint: 16.23.1(typescript@5.9.2) + stylelint: 16.26.1(typescript@5.9.3) - stylelint-config-standard@39.0.0(stylelint@16.23.1(typescript@5.9.2)): + stylelint-config-standard@39.0.1(stylelint@16.26.1(typescript@5.9.3)): dependencies: - stylelint: 16.23.1(typescript@5.9.2) - stylelint-config-recommended: 17.0.0(stylelint@16.23.1(typescript@5.9.2)) + stylelint: 16.26.1(typescript@5.9.3) + stylelint-config-recommended: 17.0.0(stylelint@16.26.1(typescript@5.9.3)) - stylelint@16.23.1(typescript@5.9.2): + stylelint@16.26.1(typescript@5.9.3): dependencies: "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-syntax-patches-for-csstree": 1.0.21 "@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 + "@dual-bundle/import-meta-resolve": 4.2.1 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.9.2) + cosmiconfig: 9.0.0(typescript@5.9.3) css-functions-list: 3.2.3 css-tree: 3.1.0 - debug: 4.4.1 + 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.1 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 @@ -14515,7 +15030,9 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tailwindcss@3.4.17: + tagged-tag@1.0.0: {} + + tailwindcss@3.4.19: dependencies: "@alloc/quick-lru": 5.2.0 arg: 5.0.2 @@ -14599,6 +15116,11 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tinyqueue@2.0.3: {} tmp@0.0.33: @@ -14617,9 +15139,9 @@ snapshots: traverse@0.6.8: {} - ts-api-utils@2.1.0(typescript@5.9.2): + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: - typescript: 5.9.2 + typescript: 5.9.3 ts-interface-checker@0.1.13: {} @@ -14627,6 +15149,8 @@ snapshots: tslib@2.8.1: {} + tunnel@0.0.6: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -14641,6 +15165,10 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.3.1: + dependencies: + tagged-tag: 1.0.0 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -14674,18 +15202,18 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): + typescript-eslint@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3): dependencies: - "@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 + "@typescript-eslint/eslint-plugin": 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/parser": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/typescript-estree": 8.50.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.5.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript@5.9.2: {} + typescript@5.9.3: {} uglify-js@3.19.3: optional: true @@ -14699,6 +15227,12 @@ snapshots: undici-types@7.10.0: {} + undici@5.29.0: + dependencies: + "@fastify/busboy": 2.1.1 + + undici@7.16.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-emoji-modifier-base@1.0.0: {} @@ -14746,6 +15280,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -14761,25 +15301,25 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - 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): + vite-plugin-pwa@1.2.0(vite@7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.4.0)(workbox-window@7.4.0): dependencies: debug: 4.4.1 pretty-bytes: 6.1.1 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 + vite: 7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) + workbox-build: 7.4.0 + workbox-window: 7.4.0 transitivePeerDependencies: - supports-color - vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1): + vite@7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1): dependencies: - esbuild: 0.25.9 + esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.47.1 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 optionalDependencies: "@types/node": 24.3.0 fsevents: 2.3.3 @@ -14789,7 +15329,7 @@ snapshots: w3c-keyname@2.2.8: {} - wavesurfer.js@7.10.1: {} + wavesurfer.js@7.12.1: {} wcwidth@1.0.1: dependencies: @@ -14865,16 +15405,16 @@ 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.3 @@ -14889,7 +15429,7 @@ snapshots: common-tags: 1.8.2 fast-json-stable-stringify: 2.1.0 fs-extra: 9.1.0 - glob: 7.2.3 + glob: 11.1.0 lodash: 4.17.21 pretty-bytes: 5.6.0 rollup: 2.79.2 @@ -14898,85 +15438,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: @@ -15009,11 +15549,11 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - xml-formatter@3.6.6: + xml-formatter@3.6.7: dependencies: - xml-parser-xo: 4.1.4 + xml-parser-xo: 4.1.5 - xml-parser-xo@4.1.4: {} + xml-parser-xo@4.1.5: {} xmldoc@2.0.2: dependencies: @@ -15038,6 +15578,8 @@ snapshots: yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + yargs@15.4.1: dependencies: cliui: 6.0.0 @@ -15072,6 +15614,15 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + 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@0.1.0: {} yocto-queue@1.2.1: {} diff --git a/preload.php b/preload.php index e98cac07..5e9937cf 100644 --- a/preload.php +++ b/preload.php @@ -91,7 +91,9 @@ class preload } require_once $file[0]; - echo 'Loaded: ' . $file[0] . "\n"; + // Uncomment only for debugging (to inspect which files are included). + // Never use this in production - preload scripts must not generate output. + // echo 'Loaded: ' . $file[0] . "\n"; } } } diff --git a/rector.php b/rector.php index ac690c93..2ba3efa0 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'], From 49a43d08cc8db91100cfe29222b37106d97d8088 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sat, 20 Dec 2025 15:59:02 +0000 Subject: [PATCH 175/210] 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 527f0c7a725191a4e5f479210f2c676a4d98f863 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 20 Dec 2025 19:04:39 +0000 Subject: [PATCH 176/210] chore(release): 1.13.8 [skip ci] ## 1.13.8 (2025-12-20) * chore: update CI4 to v4.6.4 + php and js packages to latest ([133e308](https://code.castopod.org/adaures/castopod/commit/133e308)) * fix(fediverse): match episode posts replies fields with comments in union query ([d438190](https://code.castopod.org/adaures/castopod/commit/d438190)), closes [#577](https://code.castopod.org/adaures/castopod/issues/577) --- CHANGELOG.md | 8 ++++++++ app/Config/Constants.php | 2 +- composer.json | 2 +- package.json | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89a93081..128f8998 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.13.8 (2025-12-20) + +- chore: update CI4 to v4.6.4 + php and js packages to latest + ([133e308](https://code.castopod.org/adaures/castopod/commit/133e308)) +- fix(fediverse): match episode posts replies fields with comments in union + query ([d438190](https://code.castopod.org/adaures/castopod/commit/d438190)), + closes [#577](https://code.castopod.org/adaures/castopod/issues/577) + ## 1.13.7 (2025-11-03) - fix(rss): set person's avatar url to "federation" for width and height of diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 05c0e67c..4f9657e7 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.13.7'); +defined('CP_VERSION') || define('CP_VERSION', '1.13.8'); /* | -------------------------------------------------------------------- diff --git a/composer.json b/composer.json index d54435e4..755f116d 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.13.7", + "version": "1.13.8", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", diff --git a/package.json b/package.json index 47d61f97..7fdb21cf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "castopod", - "version": "1.13.7", + "version": "1.13.8", "description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "private": true, "license": "AGPL-3.0-or-later", From 9582f2a93fa3e383e3dbb0eef4d1e460bb5e0568 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Fri, 23 Jan 2026 16:36:10 +0000 Subject: [PATCH 177/210] feat: add Lithuanian and Czech languages --- app/Config/App.php | 20 +- app/Language/.rsync-filter | 20 +- app/Language/cs/Comment.php | 34 ++ app/Language/cs/Common.php | 30 ++ app/Language/cs/Episode.php | 50 +++ app/Language/cs/Fediverse.php | 37 ++ app/Language/cs/Home.php | 20 ++ app/Language/cs/Page.php | 17 + app/Language/cs/Podcast.php | 55 +++ app/Language/cs/Post.php | 40 +++ app/Language/lt/Comment.php | 36 ++ app/Language/lt/Common.php | 30 ++ app/Language/lt/Episode.php | 52 +++ app/Language/lt/Fediverse.php | 37 ++ app/Language/lt/Home.php | 20 ++ app/Language/lt/Page.php | 17 + app/Language/lt/Podcast.php | 60 ++++ app/Language/lt/Post.php | 43 +++ docs/src/.i18n-filter | 2 +- modules/Admin/Language/.rsync-filter | 20 +- modules/Admin/Language/cs/AboutCastopod.php | 22 ++ modules/Admin/Language/cs/Admin.php | 15 + modules/Admin/Language/cs/Breadcrumb.php | 57 +++ modules/Admin/Language/cs/Charts.php | 41 +++ modules/Admin/Language/cs/Common.php | 52 +++ modules/Admin/Language/cs/Contributor.php | 41 +++ modules/Admin/Language/cs/Countries.php | 264 ++++++++++++++ modules/Admin/Language/cs/Dashboard.php | 28 ++ modules/Admin/Language/cs/Episode.php | 225 ++++++++++++ .../Admin/Language/cs/EpisodeNavigation.php | 23 ++ modules/Admin/Language/cs/Fediverse.php | 32 ++ modules/Admin/Language/cs/Home.php | 14 + modules/Admin/Language/cs/Install.php | 61 ++++ modules/Admin/Language/cs/MyAccount.php | 18 + modules/Admin/Language/cs/Navigation.php | 44 +++ modules/Admin/Language/cs/Notifications.php | 19 + modules/Admin/Language/cs/Page.php | 30 ++ modules/Admin/Language/cs/Pager.php | 21 ++ modules/Admin/Language/cs/Person.php | 65 ++++ modules/Admin/Language/cs/Platforms.php | 43 +++ modules/Admin/Language/cs/Podcast.php | 330 +++++++++++++++++ modules/Admin/Language/cs/PodcastImport.php | 37 ++ .../Admin/Language/cs/PodcastNavigation.php | 42 +++ modules/Admin/Language/cs/Settings.php | 58 +++ modules/Admin/Language/cs/Soundbite.php | 31 ++ modules/Admin/Language/cs/User.php | 56 +++ modules/Admin/Language/cs/Validation.php | 17 + modules/Admin/Language/cs/VideoClip.php | 72 ++++ modules/Admin/Language/lt/AboutCastopod.php | 22 ++ modules/Admin/Language/lt/Admin.php | 15 + modules/Admin/Language/lt/Breadcrumb.php | 57 +++ modules/Admin/Language/lt/Charts.php | 41 +++ modules/Admin/Language/lt/Common.php | 52 +++ modules/Admin/Language/lt/Contributor.php | 41 +++ modules/Admin/Language/lt/Countries.php | 264 ++++++++++++++ modules/Admin/Language/lt/Dashboard.php | 28 ++ modules/Admin/Language/lt/Episode.php | 227 ++++++++++++ .../Admin/Language/lt/EpisodeNavigation.php | 23 ++ modules/Admin/Language/lt/Fediverse.php | 32 ++ modules/Admin/Language/lt/Home.php | 14 + modules/Admin/Language/lt/Install.php | 61 ++++ modules/Admin/Language/lt/MyAccount.php | 18 + modules/Admin/Language/lt/Navigation.php | 44 +++ modules/Admin/Language/lt/Notifications.php | 19 + modules/Admin/Language/lt/Page.php | 30 ++ modules/Admin/Language/lt/Pager.php | 21 ++ modules/Admin/Language/lt/Person.php | 65 ++++ modules/Admin/Language/lt/Platforms.php | 43 +++ modules/Admin/Language/lt/Podcast.php | 333 ++++++++++++++++++ modules/Admin/Language/lt/PodcastImport.php | 37 ++ .../Admin/Language/lt/PodcastNavigation.php | 42 +++ modules/Admin/Language/lt/Settings.php | 58 +++ modules/Admin/Language/lt/Soundbite.php | 31 ++ modules/Admin/Language/lt/User.php | 56 +++ modules/Admin/Language/lt/Validation.php | 17 + modules/Admin/Language/lt/VideoClip.php | 72 ++++ modules/Auth/Language/.rsync-filter | 14 + modules/Auth/Language/cs/Auth.php | 95 +++++ modules/Auth/Language/cs/Contributor.php | 47 +++ modules/Auth/Language/cs/MyAccount.php | 18 + modules/Auth/Language/cs/User.php | 60 ++++ modules/Auth/Language/lt/Auth.php | 95 +++++ modules/Auth/Language/lt/Contributor.php | 47 +++ modules/Auth/Language/lt/MyAccount.php | 18 + modules/Auth/Language/lt/User.php | 60 ++++ modules/Install/Language/.rsync-filter | 19 +- modules/Install/Language/cs/Install.php | 62 ++++ modules/Install/Language/lt/Install.php | 62 ++++ modules/PodcastImport/Language/.rsync-filter | 14 + .../Language/cs/PodcastImport.php | 66 ++++ .../Language/lt/PodcastImport.php | 74 ++++ .../PremiumPodcasts/Language/.rsync-filter | 14 + .../Language/cs/PremiumPodcasts.php | 34 ++ .../Language/cs/Subscription.php | 100 ++++++ .../Language/lt/PremiumPodcasts.php | 34 ++ .../Language/lt/Subscription.php | 100 ++++++ 96 files changed, 5157 insertions(+), 37 deletions(-) create mode 100644 app/Language/cs/Comment.php create mode 100644 app/Language/cs/Common.php create mode 100644 app/Language/cs/Episode.php create mode 100644 app/Language/cs/Fediverse.php create mode 100644 app/Language/cs/Home.php create mode 100644 app/Language/cs/Page.php create mode 100644 app/Language/cs/Podcast.php create mode 100644 app/Language/cs/Post.php create mode 100644 app/Language/lt/Comment.php create mode 100644 app/Language/lt/Common.php create mode 100644 app/Language/lt/Episode.php create mode 100644 app/Language/lt/Fediverse.php create mode 100644 app/Language/lt/Home.php create mode 100644 app/Language/lt/Page.php create mode 100644 app/Language/lt/Podcast.php create mode 100644 app/Language/lt/Post.php create mode 100644 modules/Admin/Language/cs/AboutCastopod.php create mode 100644 modules/Admin/Language/cs/Admin.php create mode 100644 modules/Admin/Language/cs/Breadcrumb.php create mode 100644 modules/Admin/Language/cs/Charts.php create mode 100644 modules/Admin/Language/cs/Common.php create mode 100644 modules/Admin/Language/cs/Contributor.php create mode 100644 modules/Admin/Language/cs/Countries.php create mode 100644 modules/Admin/Language/cs/Dashboard.php create mode 100644 modules/Admin/Language/cs/Episode.php create mode 100644 modules/Admin/Language/cs/EpisodeNavigation.php create mode 100644 modules/Admin/Language/cs/Fediverse.php create mode 100644 modules/Admin/Language/cs/Home.php create mode 100644 modules/Admin/Language/cs/Install.php create mode 100644 modules/Admin/Language/cs/MyAccount.php create mode 100644 modules/Admin/Language/cs/Navigation.php create mode 100644 modules/Admin/Language/cs/Notifications.php create mode 100644 modules/Admin/Language/cs/Page.php create mode 100644 modules/Admin/Language/cs/Pager.php create mode 100644 modules/Admin/Language/cs/Person.php create mode 100644 modules/Admin/Language/cs/Platforms.php create mode 100644 modules/Admin/Language/cs/Podcast.php create mode 100644 modules/Admin/Language/cs/PodcastImport.php create mode 100644 modules/Admin/Language/cs/PodcastNavigation.php create mode 100644 modules/Admin/Language/cs/Settings.php create mode 100644 modules/Admin/Language/cs/Soundbite.php create mode 100644 modules/Admin/Language/cs/User.php create mode 100644 modules/Admin/Language/cs/Validation.php create mode 100644 modules/Admin/Language/cs/VideoClip.php create mode 100644 modules/Admin/Language/lt/AboutCastopod.php create mode 100644 modules/Admin/Language/lt/Admin.php create mode 100644 modules/Admin/Language/lt/Breadcrumb.php create mode 100644 modules/Admin/Language/lt/Charts.php create mode 100644 modules/Admin/Language/lt/Common.php create mode 100644 modules/Admin/Language/lt/Contributor.php create mode 100644 modules/Admin/Language/lt/Countries.php create mode 100644 modules/Admin/Language/lt/Dashboard.php create mode 100644 modules/Admin/Language/lt/Episode.php create mode 100644 modules/Admin/Language/lt/EpisodeNavigation.php create mode 100644 modules/Admin/Language/lt/Fediverse.php create mode 100644 modules/Admin/Language/lt/Home.php create mode 100644 modules/Admin/Language/lt/Install.php create mode 100644 modules/Admin/Language/lt/MyAccount.php create mode 100644 modules/Admin/Language/lt/Navigation.php create mode 100644 modules/Admin/Language/lt/Notifications.php create mode 100644 modules/Admin/Language/lt/Page.php create mode 100644 modules/Admin/Language/lt/Pager.php create mode 100644 modules/Admin/Language/lt/Person.php create mode 100644 modules/Admin/Language/lt/Platforms.php create mode 100644 modules/Admin/Language/lt/Podcast.php create mode 100644 modules/Admin/Language/lt/PodcastImport.php create mode 100644 modules/Admin/Language/lt/PodcastNavigation.php create mode 100644 modules/Admin/Language/lt/Settings.php create mode 100644 modules/Admin/Language/lt/Soundbite.php create mode 100644 modules/Admin/Language/lt/User.php create mode 100644 modules/Admin/Language/lt/Validation.php create mode 100644 modules/Admin/Language/lt/VideoClip.php create mode 100644 modules/Auth/Language/.rsync-filter create mode 100644 modules/Auth/Language/cs/Auth.php create mode 100644 modules/Auth/Language/cs/Contributor.php create mode 100644 modules/Auth/Language/cs/MyAccount.php create mode 100644 modules/Auth/Language/cs/User.php create mode 100644 modules/Auth/Language/lt/Auth.php create mode 100644 modules/Auth/Language/lt/Contributor.php create mode 100644 modules/Auth/Language/lt/MyAccount.php create mode 100644 modules/Auth/Language/lt/User.php create mode 100644 modules/Install/Language/cs/Install.php create mode 100644 modules/Install/Language/lt/Install.php create mode 100644 modules/PodcastImport/Language/.rsync-filter create mode 100644 modules/PodcastImport/Language/cs/PodcastImport.php create mode 100644 modules/PodcastImport/Language/lt/PodcastImport.php create mode 100644 modules/PremiumPodcasts/Language/.rsync-filter create mode 100644 modules/PremiumPodcasts/Language/cs/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/cs/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/lt/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/lt/Subscription.php diff --git a/app/Config/App.php b/app/Config/App.php index b165f67d..304c6f52 100644 --- a/app/Config/App.php +++ b/app/Config/App.php @@ -123,17 +123,19 @@ class App extends BaseConfig * @var list */ public array $supportedLocales = [ - 'en', - 'fr', - 'pl', - 'de', - 'pt-br', - 'nn-no', - 'es', - 'zh-hans', - 'ca', 'br', + 'ca', + 'cs', + 'de', + 'en', + 'es', + 'fr', + 'lt', + 'nn-no', + 'pl', + 'pt-br', 'sr-latn', + 'zh-hans', ]; /** diff --git a/app/Language/.rsync-filter b/app/Language/.rsync-filter index b802a93d..38526af5 100644 --- a/app/Language/.rsync-filter +++ b/app/Language/.rsync-filter @@ -1,12 +1,14 @@ -+ en/*** -+ fr/*** -+ pl/*** -+ de/*** -+ pt-br/*** -+ nn-no/*** -+ es/*** -+ zh-hans/*** -+ ca/*** + br/*** ++ ca/*** ++ cs/*** ++ de/*** ++ en/*** ++ es/*** ++ fr/*** ++ lt/*** ++ nn-no/*** ++ pl/*** ++ pt-br/*** + sr-latn/*** ++ zh-hans/*** - ** diff --git a/app/Language/cs/Comment.php b/app/Language/cs/Comment.php new file mode 100644 index 00000000..30e337c4 --- /dev/null +++ b/app/Language/cs/Comment.php @@ -0,0 +1,34 @@ + "Komentář {actorDisplayName} k {episodeTitle}", + 'back_to_comments' => 'Zpět na komentáře', + 'form' => [ + 'episode_message_placeholder' => 'Napište komentář…', + 'reply_to_placeholder' => 'Odpovědět @{actorUsername}', + 'submit' => 'Odeslat', + 'submit_reply' => 'Odpovědět', + ], + 'likes' => '{numberOfLikes, plural, + one {# se líbí} + other {# se líbí} + }', + 'replies' => '{numberOfReplies, plural, + one {# odpověď} + other {# odpovědi} + }', + 'like' => 'Líbí se mi', + 'reply' => 'Odpovědět', + 'view_replies' => 'Zobrazit odpovědi ({numberOfReplies})', + 'block_actor' => 'Blokovat uživatele @{actorUsername}', + 'block_domain' => 'Blokovat doménu @{actorDomain}', + 'delete' => 'Odstranit komentář', +]; diff --git a/app/Language/cs/Common.php b/app/Language/cs/Common.php new file mode 100644 index 00000000..774798b7 --- /dev/null +++ b/app/Language/cs/Common.php @@ -0,0 +1,30 @@ + 'Ano', + 'no' => 'Ne', + 'cancel' => 'Zrušit', + 'optional' => 'Volitelné', + 'close' => 'Zavřít', + 'home' => 'Domů', + 'explicit' => 'Explicitní', + 'powered_by' => 'Běží na {castopod}', + 'go_back' => 'Jít zpět', + 'play_episode_button' => [ + 'play' => 'Přehrát', + 'playing' => 'Přehrávání', + ], + 'read_more' => 'Číst více', + 'read_less' => 'Číst méně', + 'see_more' => 'Zobraz více', + 'see_less' => 'Zobrazit méně', + 'legal_notice' => 'Právní ustanovení', +]; diff --git a/app/Language/cs/Episode.php b/app/Language/cs/Episode.php new file mode 100644 index 00000000..0688c582 --- /dev/null +++ b/app/Language/cs/Episode.php @@ -0,0 +1,50 @@ + 'Série: {{seasonNumber}}', + 'season_abbr' => 'S{seasonNumber}', + 'number' => 'Epizoda {episodeNumber}', + 'number_abbr' => 'Ep. {episodeNumber}', + 'season_episode' => 'Série {seasonNumber} epizoda {episodeNumber}', + 'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}', + 'persons' => '{personsCount, plural, + one {# osoba} + other {# osoby} + }', + 'persons_list' => 'Osoby', + 'back_to_episodes' => 'Zpět na epizody {podcast}', + 'comments' => 'Komentáře', + 'activity' => 'Aktivita', + 'chapters' => 'Kapitoly', + 'transcript' => 'Přepis', + 'description' => 'Popis epizody', + 'number_of_comments' => '{numberOfComments, plural, + one {# komentář} + other {# komentáře} + }', + 'all_podcast_episodes' => 'Všechny epizody podcastu', + 'back_to_podcast' => 'Přejít zpět na podcast', + 'preview' => [ + 'title' => 'Náhled', + 'not_published' => 'Nezveřejněno', + 'text' => '{publication_status, select, + published {Tato epizoda ještě není publikována.} + scheduled {Tato epizoda je naplánována na {publication_date}} + with_podcast {Tato epizoda bude zveřejněna současně s podcastem.} + other {Tato epizoda ještě není publikována.} + }', + 'publish' => 'Publikovat', + 'publish_edit' => 'Editovat publikaci', + ], + 'no_chapters' => 'Pro tuto epizodu nejsou k dispozici žádné kapitoly.', + 'download_transcript' => 'Stáhnout přepis ({extension})', + 'no_transcript' => 'Pro tuto epizodu není k dispozici žádný přepis.', +]; diff --git a/app/Language/cs/Fediverse.php b/app/Language/cs/Fediverse.php new file mode 100644 index 00000000..22e42e08 --- /dev/null +++ b/app/Language/cs/Fediverse.php @@ -0,0 +1,37 @@ + 'Vaše handle', + 'your_handle_hint' => 'Zadejte @username@doména, ze které chcete působit.', + 'follow' => [ + 'label' => 'Sledovat', + 'title' => 'Sledovat {actorDisplayName}', + 'subtitle' => 'Budete sledovat:', + 'accountNotFound' => 'Účet nebyl nalezen.', + 'remoteFollowNotAllowed' => 'Zdá se, že server účtu neumožňuje vzdálené sledování…', + 'submit' => 'Pokračovat a sledovat', + ], + 'favourite' => [ + 'title' => "Oblíbený příspěvek {actorDisplayName}", + 'subtitle' => 'Oblíbíte si:', + 'submit' => 'Pokračovat a oblíbit', + ], + 'reblog' => [ + 'title' => "Sdílet {actorDisplayName}příspěvek", + 'subtitle' => 'Budete sdílet:', + 'submit' => 'Pokračovat ke sdílení', + ], + 'reply' => [ + 'title' => "Odpovědět na příspěvek {actorDisplayName}", + 'subtitle' => 'Chystáte se odpovědět:', + 'submit' => 'Pokračovat k odpovědi', + ], +]; diff --git a/app/Language/cs/Home.php b/app/Language/cs/Home.php new file mode 100644 index 00000000..184e132d --- /dev/null +++ b/app/Language/cs/Home.php @@ -0,0 +1,20 @@ + 'Všechny podcasty', + 'sort_by' => 'Seřadit podle', + 'sort_options' => [ + 'activity' => 'Poslední aktivita', + 'created_desc' => 'Od nejnovějších', + 'created_asc' => 'Od nejstarších', + ], + 'no_podcast' => 'Nebyly nalezeny žádné podcasty', +]; diff --git a/app/Language/cs/Page.php b/app/Language/cs/Page.php new file mode 100644 index 00000000..0cd1fef4 --- /dev/null +++ b/app/Language/cs/Page.php @@ -0,0 +1,17 @@ + 'Zpátky domů', + 'map' => [ + 'title' => 'Mapa', + 'description' => 'Objevte epizody podcastu na {siteName} , které jsou umístěny na mapě! Cestujte přes mapu a poslouchejte epizody, které hovoří o konkrétních místech.', + ], +]; diff --git a/app/Language/cs/Podcast.php b/app/Language/cs/Podcast.php new file mode 100644 index 00000000..607b9339 --- /dev/null +++ b/app/Language/cs/Podcast.php @@ -0,0 +1,55 @@ + 'RSS Podcast kanál', + 'season' => 'Série: {seasonNumber}', + 'list_of_episodes_year' => '{year} epizody ({episodeCount})', + 'list_of_episodes_season' => + 'Epizody ({episodeCount}) série {seasonNumber}', + 'no_episode' => 'Nebyla nalezena žádná epizoda', + 'follow' => 'Sledovat', + 'followTitle' => 'Sledujte {actorDisplayName} na fediverse!', + 'followers' => '{numberOfFollowers, plural, + one {# sledující} + other {# sledující} + }', + 'posts' => '{numberOfPosts, plural, + one {# příspěvek} + other {# příspěvky} + }', + 'links' => 'Odkazy', + 'activity' => 'Aktivita', + 'episodes' => 'Epizody', + 'episodes_title' => 'Epizody {podcastTitle}', + 'about' => 'Informace', + 'stats' => [ + 'title' => 'Statistiky', + 'number_of_seasons' => '{0, plural, + one {# série} + other {# série} + }', + 'number_of_episodes' => '{0, plural, + one {# epizoda} + other {# epizody} + }', + 'first_published_at' => 'První epizoda zveřejněna na {0, date, medium}', + ], + 'sponsor' => 'Sponzorovat', + 'funding_links' => 'Odkazy na financování pro {podcastTitle}', + 'find_on' => 'Najít {podcastTitle} na', + 'listen_on' => 'Poslouchat na', + 'persons' => '{personsCount, plural, + one {# osoba} + other {# osoby} + }', + 'persons_list' => 'Osoby', + 'castopod_website' => 'Castopod (webová stránka)', +]; diff --git a/app/Language/cs/Post.php b/app/Language/cs/Post.php new file mode 100644 index 00000000..02ebcc28 --- /dev/null +++ b/app/Language/cs/Post.php @@ -0,0 +1,40 @@ + "Příspěvek {actorDisplayName}", + 'back_to_actor_posts' => 'Zpět na příspěvky {actor}', + 'actor_shared' => '{actor} sdílen(a)', + 'reply_to' => 'Odpovědět @{actorUsername}', + 'form' => [ + 'message_placeholder' => 'Napsat zprávu…', + 'episode_message_placeholder' => 'Napsat zprávu pro epizodu…', + 'episode_url_placeholder' => 'URL epizody', + 'reply_to_placeholder' => 'Odpovědět @{actorUsername}', + 'submit' => 'Odeslat', + 'submit_reply' => 'Odpovědět', + ], + 'favourites' => '{numberOfFavourites, plural, + one {# oblíbil} + other {# oblíbili} + }', + 'reblogs' => '{numberOfReblogs, plural, + one {# sdílení} + other {# sdílení} + }', + 'replies' => '{numberOfReplies, plural, + one {# odpověď} + other {# odpovědi} + }', + 'expand' => 'Rozbalit příspěvek', + 'block_actor' => 'Blokovat uživatele @{actorUsername}', + 'block_domain' => 'Blokovat doménu @{actorDomain}', + 'delete' => 'Smazat příspěvek', +]; diff --git a/app/Language/lt/Comment.php b/app/Language/lt/Comment.php new file mode 100644 index 00000000..30bc6cfa --- /dev/null +++ b/app/Language/lt/Comment.php @@ -0,0 +1,36 @@ + "{actorDisplayName} pakomentavo „{episodeTitle}“", + 'back_to_comments' => 'Grįžti į komentarus', + 'form' => [ + 'episode_message_placeholder' => 'Parašyti komentarą…', + 'reply_to_placeholder' => 'Atsakyti @{actorUsername}', + 'submit' => 'Siųsti', + 'submit_reply' => 'Atsakyti', + ], + 'likes' => '{numberOfLikes, plural, + one {# patiktukas} + few {# patiktukai} + other {# patiktukų} + }', + 'replies' => '{numberOfReplies, plural, + one {# atsakymas} + few {# atsakymai} + other {# atsakymų} + }', + 'like' => 'Patinka', + 'reply' => 'Atsakyti', + 'view_replies' => 'Rodyti atsakymus ({numberOfReplies})', + 'block_actor' => 'Blokuoti naudotoją @{actorUsername}', + 'block_domain' => 'Blokuoti domeną @{actorDomain}', + 'delete' => 'Šalinti komentarą', +]; diff --git a/app/Language/lt/Common.php b/app/Language/lt/Common.php new file mode 100644 index 00000000..e1201ef1 --- /dev/null +++ b/app/Language/lt/Common.php @@ -0,0 +1,30 @@ + 'Taip', + 'no' => 'Ne', + 'cancel' => 'Atsisakyti', + 'optional' => 'Neprivaloma', + 'close' => 'Užverti', + 'home' => 'Pradžia', + 'explicit' => 'Atviras', + 'powered_by' => 'Veikia {castopod} pagrindu', + 'go_back' => 'Grįžti', + 'play_episode_button' => [ + 'play' => 'Leisti', + 'playing' => 'Leidžiama', + ], + 'read_more' => 'Išsamiau', + 'read_less' => 'Glausčiau', + 'see_more' => 'Išsamiau', + 'see_less' => 'Glausčiau', + 'legal_notice' => 'Teisinė informacija', +]; diff --git a/app/Language/lt/Episode.php b/app/Language/lt/Episode.php new file mode 100644 index 00000000..21f32e5e --- /dev/null +++ b/app/Language/lt/Episode.php @@ -0,0 +1,52 @@ + '{seasonNumber} sezonas', + 'season_abbr' => 'S{seasonNumber}', + 'number' => '{episodeNumber} epizodas', + 'number_abbr' => '{episodeNumber} ep.', + 'season_episode' => '{seasonNumber} sezono {episodeNumber} epizodas', + 'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}', + 'persons' => '{personsCount, plural, + one {# asmuo} + few {# asmenys} + other {# asmenų} + }', + 'persons_list' => 'Asmenys', + 'back_to_episodes' => 'Grįžti į „{podcast}“ epizodų sąrašą', + 'comments' => 'Komentarai', + 'activity' => 'Veikla', + 'chapters' => 'Skyreliai', + 'transcript' => 'Nuorašas', + 'description' => 'Epizodo aprašymas', + 'number_of_comments' => '{numberOfComments, plural, + one {# komentaras} + few {# komentarai} + other {# komentarų} + }', + 'all_podcast_episodes' => 'Visi tinklalaidės epizodai', + 'back_to_podcast' => 'Grįžti į tinklalaidę', + 'preview' => [ + 'title' => 'Peržiūrėti', + 'not_published' => 'Nepaskelbtas', + 'text' => '{publication_status, select, + published {Šis epizodas dar nepaskelbtas.} + scheduled {Šį epizodą planuojama paskelbti {publication_date}.} + with_podcast {Šį epizodą planuojama paskelbti kartu su tinklalaide.} + other {Šis epizodas dar nepaskelbtas.} + }', + 'publish' => 'Paskelbti', + 'publish_edit' => 'Taisyti paskelbimą', + ], + 'no_chapters' => 'Šis epizodas neišskaidytas skyreliais.', + 'download_transcript' => 'Parsisiųsti nuorašą ({extension})', + 'no_transcript' => 'Šio epizodo nuorašas nepateiktas.', +]; diff --git a/app/Language/lt/Fediverse.php b/app/Language/lt/Fediverse.php new file mode 100644 index 00000000..54c27673 --- /dev/null +++ b/app/Language/lt/Fediverse.php @@ -0,0 +1,37 @@ + 'Jūsų paskyros vardas', + 'your_handle_hint' => 'Įrašykite naudotinos paskyros vardą @naudotojas@domenas formatu.', + 'follow' => [ + 'label' => 'Sekti', + 'title' => 'Sekti {actorDisplayName}', + 'subtitle' => 'Ketinate sekti:', + 'accountNotFound' => 'Paskyra nerasta.', + 'remoteFollowNotAllowed' => 'Panašu, jog paskyros serveris neleidžia nuotolinių sekimo užklausų…', + 'submit' => 'Inicijuoti sekimą', + ], + 'favourite' => [ + 'title' => "Pamėgti {actorDisplayName} įrašą", + 'subtitle' => 'Ketinate pamėgti:', + 'submit' => 'Inicijuoti pamėgimą', + ], + 'reblog' => [ + 'title' => "Pasidalinti {actorDisplayName} įrašu", + 'subtitle' => 'Ketinate pasidalinti:', + 'submit' => 'Inicijuoti pasidalijimą', + ], + 'reply' => [ + 'title' => "Atsakyti į {actorDisplayName} įrašą", + 'subtitle' => 'Ketinate atsakyti į:', + 'submit' => 'Inicijuoti atsakymą', + ], +]; diff --git a/app/Language/lt/Home.php b/app/Language/lt/Home.php new file mode 100644 index 00000000..8e5d3439 --- /dev/null +++ b/app/Language/lt/Home.php @@ -0,0 +1,20 @@ + 'Visos tinklalaidės', + 'sort_by' => 'Rikiuoti pagal', + 'sort_options' => [ + 'activity' => 'Paskiausia veikla', + 'created_desc' => 'Prad', + 'created_asc' => 'Pirma seniausi', + ], + 'no_podcast' => 'Tinklalaidė nerasta', +]; diff --git a/app/Language/lt/Page.php b/app/Language/lt/Page.php new file mode 100644 index 00000000..9a643e68 --- /dev/null +++ b/app/Language/lt/Page.php @@ -0,0 +1,17 @@ + 'Grįžti į pradžią', + 'map' => [ + 'title' => 'Žemėlapis', + 'description' => 'Atraskite „{siteName}“ paskelbtus tinklalaidžių epizodus žemėlapyje! Keliaukite po žemėlapį ir klausykitės epizodų, kuriuose kalbama apie konkrečias vietoves.', + ], +]; diff --git a/app/Language/lt/Podcast.php b/app/Language/lt/Podcast.php new file mode 100644 index 00000000..bd37957b --- /dev/null +++ b/app/Language/lt/Podcast.php @@ -0,0 +1,60 @@ + 'Tinklalaidės RSS sklaidos kanalas', + 'season' => '{seasonNumber} sezonas', + 'list_of_episodes_year' => '{year} metų epizodai ({episodeCount})', + 'list_of_episodes_season' => + '{seasonNumber} sezono epizodai ({episodeCount})', + 'no_episode' => 'Epizodų nerasta!', + 'follow' => 'Sekti', + 'followTitle' => 'Sekti {actorDisplayName} Fedivisatoje!', + 'followers' => '{numberOfFollowers, plural, + one {# sekėjas} + few {# sekėjai} + other {# sekėjų} + }', + 'posts' => '{numberOfPosts, plural, + one {# įrašas} + few {# įrašai} + other {# įrašų} + }', + 'links' => 'Nuorodos', + 'activity' => 'Veikla', + 'episodes' => 'Epizodai', + 'episodes_title' => '„{podcastTitle}“ epizodai', + 'about' => 'Apie', + 'stats' => [ + 'title' => 'Statistika', + 'number_of_seasons' => '{0, plural, + one {# sezonas} + few {# sezonai} + other {# sezonų} + }', + 'number_of_episodes' => '{0, plural, + one {# epizodas} + few {# epizodai} + other {# epizodų} + }', + 'first_published_at' => 'Pirmasis epizodas paskelbtas {0, date, medium}', + ], + 'sponsor' => 'Paremti', + 'funding_links' => '„{podcastTitle}“ rėmimo nuorodos', + 'find_on' => 'Raskite „{podcastTitle}“', + 'listen_on' => 'Klausykitės', + 'persons' => '{personsCount, plural, + one {# asmuo} + few {# asmenys} + other {# asmenų} + }', + 'persons_list' => 'Asmenys', + 'castopod_website' => 'Castopod (svetainė)', +]; diff --git a/app/Language/lt/Post.php b/app/Language/lt/Post.php new file mode 100644 index 00000000..68197945 --- /dev/null +++ b/app/Language/lt/Post.php @@ -0,0 +1,43 @@ + "{actorDisplayName} įrašas", + 'back_to_actor_posts' => 'Grįžti į {actor} įrašus', + 'actor_shared' => '{actor} pasidalijo', + 'reply_to' => 'Atsakyti @{actorUsername}', + 'form' => [ + 'message_placeholder' => 'Parašykite žinutę…', + 'episode_message_placeholder' => 'Parašykite žinutę šiam epizodui…', + 'episode_url_placeholder' => 'Epizodo URL adresas', + 'reply_to_placeholder' => 'Atsakyti @{actorUsername}', + 'submit' => 'Siųsti', + 'submit_reply' => 'Atsakyti', + ], + 'favourites' => '{numberOfFavourites, plural, + one {# pamėgimas} + few {# pamėgimai} + other {# pamėgimų} + }', + 'reblogs' => '{numberOfReblogs, plural, + one {# pasidalijimas} + few {# pasidalijimai} + other {# pasidalijimų} + }', + 'replies' => '{numberOfReplies, plural, + one {# atsakymas} + few {# atsakymai} + other {# atsakymų} + }', + 'expand' => 'Išskleisti įrašą', + 'block_actor' => 'Blokuoti naudotoją @{actorUsername}', + 'block_domain' => 'Blokuoti domeną @{actorDomain}', + 'delete' => 'Šalinti įrašą', +]; diff --git a/docs/src/.i18n-filter b/docs/src/.i18n-filter index 9871cee8..f113dae9 100644 --- a/docs/src/.i18n-filter +++ b/docs/src/.i18n-filter @@ -1,6 +1,6 @@ -en ca de +en es fr nn-no diff --git a/modules/Admin/Language/.rsync-filter b/modules/Admin/Language/.rsync-filter index b802a93d..38526af5 100644 --- a/modules/Admin/Language/.rsync-filter +++ b/modules/Admin/Language/.rsync-filter @@ -1,12 +1,14 @@ -+ en/*** -+ fr/*** -+ pl/*** -+ de/*** -+ pt-br/*** -+ nn-no/*** -+ es/*** -+ zh-hans/*** -+ ca/*** + br/*** ++ ca/*** ++ cs/*** ++ de/*** ++ en/*** ++ es/*** ++ fr/*** ++ lt/*** ++ nn-no/*** ++ pl/*** ++ pt-br/*** + sr-latn/*** ++ zh-hans/*** - ** diff --git a/modules/Admin/Language/cs/AboutCastopod.php b/modules/Admin/Language/cs/AboutCastopod.php new file mode 100644 index 00000000..77803886 --- /dev/null +++ b/modules/Admin/Language/cs/AboutCastopod.php @@ -0,0 +1,22 @@ + 'O Castopodu', + 'host_name' => 'Název hostitele', + 'version' => 'Verze Castopodu', + 'php_version' => 'PHP verze', + 'os' => 'Operační systém', + 'languages' => 'Jazyky', + 'update_database' => 'Aktualizovat databázi', + 'messages' => [ + 'databaseUpdateSuccess' => 'Databáze je aktuální!', + ], +]; diff --git a/modules/Admin/Language/cs/Admin.php b/modules/Admin/Language/cs/Admin.php new file mode 100644 index 00000000..0aa00192 --- /dev/null +++ b/modules/Admin/Language/cs/Admin.php @@ -0,0 +1,15 @@ + 'Administrátorský panel', + 'welcome_message' => 'Vítejte v administrační oblasti!', + 'choose_interact' => 'Zvolte způsob interakce', +]; diff --git a/modules/Admin/Language/cs/Breadcrumb.php b/modules/Admin/Language/cs/Breadcrumb.php new file mode 100644 index 00000000..83880787 --- /dev/null +++ b/modules/Admin/Language/cs/Breadcrumb.php @@ -0,0 +1,57 @@ + 'breadcrumb', + config('Admin') + ->gateway => 'Domovská stránka', + 'podcasts' => 'podcasty', + 'episodes' => 'epizody', + 'subscriptions' => 'Odběry', + 'contributors' => 'Přispívající', + 'pages' => 'stránky', + 'settings' => 'nastavení', + 'theme' => 'motiv', + 'about' => 'info', + 'add' => 'přidat', + 'new' => 'nový', + 'edit' => 'upravit', + 'persons' => 'osoby', + 'publish' => 'publikovat', + 'publish-edit' => 'upravit publikování', + 'publish-date-edit' => 'upravit datum publikování', + 'unpublish' => 'zrušit publikování', + 'delete' => 'smazat', + 'remove' => 'odstranit', + 'fediverse' => 'fediverse', + 'blocked-actors' => 'blokované subjekty', + 'blocked-domains' => 'blokované domény', + 'users' => 'uživatelé', + 'my-account' => 'můj účet', + 'change-password' => 'změna hesla', + 'imports' => 'importy', + 'sync-feeds' => 'synchronizovat kanály', + 'platforms' => 'platformy', + 'social' => 'sociální sítě', + 'funding' => 'financování', + 'monetization-other' => 'ostatní monetizace', + 'analytics' => 'analytika', + 'locations' => 'lokality', + 'webpages' => 'webové stránky', + 'unique-listeners' => 'unikátní posluchači', + 'players' => 'přehrávače', + 'listening-time' => 'čas poslechu', + 'time-periods' => 'časové období', + 'soundbites' => 'úryvky', + 'video-clips' => 'videoklipy', + 'embed' => 'vestavitelný přehrávač', + 'notifications' => 'oznámení', + 'suspend' => 'pozastavit', +]; diff --git a/modules/Admin/Language/cs/Charts.php b/modules/Admin/Language/cs/Charts.php new file mode 100644 index 00000000..08ea16cb --- /dev/null +++ b/modules/Admin/Language/cs/Charts.php @@ -0,0 +1,41 @@ + 'Stažení epizody podle služby (za poslední týden)', + 'by_player_weekly' => 'Stažení epizody podle přehrávače (za poslední týden)', + 'by_player_yearly' => 'Stažení epizody podle přehrávače (za poslední rok)', + 'by_device_weekly' => 'Stažení epizody podle podle zařízení (za poslední týden)', + 'by_os_weekly' => 'Stažení epizody podle O.S. (za poslední týden)', + 'podcast_by_region' => 'Stažení epizody podle regionu (za poslední týden)', + 'unique_daily_listeners' => 'Denní unikátní posluchači', + 'unique_monthly_listeners' => 'Měsíční unikátní posluchači', + 'by_browser' => 'Využití webových stránek podle prohlížeče (za poslední týden)', + 'podcast_by_day' => 'Denní stažení epizody', + 'podcast_by_month' => 'Měsíční stažení epizody', + 'episode_by_day' => 'Denní stažení epizody (prvních 60 dní)', + 'episode_by_month' => 'Měsíční stažení epizody', + 'episodes_by_day' => + 'Stažení 5 posledních epizod (během prvních 60 dnů)', + 'by_country_weekly' => 'Stažení epizody podle země (za poslední týden)', + 'by_country_yearly' => 'Stažení epizody podle země (za poslední rok)', + 'by_domain_weekly' => 'Návštěvy webových stránek podle zdroje (za minulý týden)', + 'by_domain_yearly' => 'Návštěvy webových stránek podle zdroje (za poslední rok)', + 'by_entry_page' => 'Návštěvy webových stránek podle vstupní stránky (za minulý týden)', + 'podcast_bots' => 'Roboti (crawlers)', + 'daily_listening_time' => 'Denní souhrnný čas poslechu', + 'monthly_listening_time' => 'Měsíční souhrnný čas poslechu', + 'by_weekday' => 'Podle dne v týdnu (za poslednách 60 dní)', + 'by_hour' => 'Podle denní doby (za posledních 60 dní)', + 'podcast_by_bandwidth' => 'Denní využití dat (v MB)', + 'total_storage_by_month' => 'Měsíční úložiště (v MB)', + 'total_bandwidth_by_month' => 'Měsíční využití dat (v MB)', + 'total_bandwidth_by_month_limit' => 'Omezeno na {totalBandwidth} měsíčně', +]; diff --git a/modules/Admin/Language/cs/Common.php b/modules/Admin/Language/cs/Common.php new file mode 100644 index 00000000..59187fa8 --- /dev/null +++ b/modules/Admin/Language/cs/Common.php @@ -0,0 +1,52 @@ + 'Ano', + 'no' => 'Ne', + 'cancel' => 'Zrušit', + 'optional' => 'Volitelné', + 'more' => 'Více', + 'no_data' => 'Nenalezena žádná data', + 'close' => 'Zavřít', + 'edit' => 'Editovat', + 'copy' => 'Kopírovat', + 'copied' => 'Zkopírováno!', + 'home' => 'Domů', + 'explicit' => 'Explicitní', + 'powered_by' => 'Běží na {castopod}', + 'actions' => 'Akce', + 'pageInfo' => 'Strana {currentPage} z {pageCount}', + 'go_back' => 'Jít zpět', + 'forms' => [ + 'editor' => [ + 'write' => 'Zapsat', + 'preview' => 'Náhled', + 'help' => 'Používá markdown', + ], + 'multiSelect' => [ + 'selectText' => 'Stiskněte pro výběr', + 'loadingText' => 'Načítání…', + 'noResultsText' => 'Nebyly nalezeny žádné výsledky', + 'noChoicesText' => 'Žádná volba pro výběr', + 'maxItemText' => 'Nelze přidat více položek', + ], + 'upload_file' => 'Nahrát soubor', + 'remote_url' => 'Vzdálené URL', + 'save' => 'Uložit', + ], + 'play_episode_button' => [ + 'play' => 'Přehrát', + 'playing' => 'Přehrávání', + ], + 'size_limit' => 'Omezení velikosti: {0}.', + 'choose_interact' => 'Zvolte způsob interakce', + 'view' => 'Zobrazit', +]; diff --git a/modules/Admin/Language/cs/Contributor.php b/modules/Admin/Language/cs/Contributor.php new file mode 100644 index 00000000..aa359073 --- /dev/null +++ b/modules/Admin/Language/cs/Contributor.php @@ -0,0 +1,41 @@ + 'Přispěvatelé podcastu', + 'view' => "Příspěvek {username} pro {podcastTitle}", + 'add' => 'Přidat přispěvatele', + 'add_contributor' => 'Přidat přispěvatele pro {0}', + 'edit_role' => 'Aktualizovat roli pro {0}', + 'edit' => 'Upravit', + 'remove' => 'Odstranit', + 'list' => [ + 'username' => 'Uživatelské jméno', + 'role' => 'Role', + ], + 'form' => [ + 'user' => 'Uživatel', + 'user_placeholder' => 'Vyberte uživatele…', + 'role' => 'Role', + 'role_placeholder' => 'Vyberte roli…', + 'submit_add' => 'Přidat přispěvatele', + 'submit_edit' => 'Aktualizovat roli', + ], + 'roles' => [ + 'podcast_admin' => 'Administrátor podcastu', + ], + 'messages' => [ + 'removeOwnerError' => "Vlastníka podcastu nelze odstranit!", + 'removeSuccess' => + 'Úspěšně jste odstranili {username} z {podcastTitle}', + 'alreadyAddedError' => + "Přispěvatel, který se pokoušíte přidat, již byl přidán!", + ], +]; diff --git a/modules/Admin/Language/cs/Countries.php b/modules/Admin/Language/cs/Countries.php new file mode 100644 index 00000000..a7af49a9 --- /dev/null +++ b/modules/Admin/Language/cs/Countries.php @@ -0,0 +1,264 @@ + 'Andorra', + 'AE' => 'Spojené arabské emiráty', + 'AF' => 'Afghánistán', + 'AG' => 'Antigua a Barbuda', + 'AI' => 'Anguilla', + 'AL' => 'Albánie', + 'AM' => 'Arménie', + 'AO' => 'Angola', + 'AQ' => 'Antarktida', + 'AR' => 'Argentina', + 'AS' => 'Americká Samoa', + 'AT' => 'Rakousko', + 'AU' => 'Austrálie', + 'AW' => 'Aruba', + 'AX' => 'Alandské ostrovy', + 'AZ' => 'Azerbajdžán', + 'BA' => 'Bosna a Hercegovina', + 'BB' => 'Barbados', + 'BD' => 'Bangladéš', + 'BE' => 'Belgie', + 'BF' => 'Burkina Faso', + 'BG' => 'Bulharsko', + 'BH' => 'Bahrajn', + 'BI' => 'Burundi', + 'BJ' => 'Benin', + 'BL' => 'Svatý Bartoloměj', + 'BM' => 'Bermudy', + 'BN' => 'Brunej', + 'BO' => 'Bolívie', + 'BQ' => 'Bonaire, Svatý Eustach a Saba', + 'BR' => 'Brazílie', + 'BS' => 'Bahamy', + 'BT' => 'Bhútán', + 'BV' => 'Bouvetův ostrov', + 'BW' => 'Botswana', + 'BY' => 'Bělorusko', + 'BZ' => 'Belize', + 'CA' => 'Kanada', + 'CC' => 'Kokosové (Keelingovy) ostrovy', + 'CD' => 'Konžská demokratická republika', + 'CF' => 'Středoafrická republika', + 'CG' => 'Kongo', + 'CH' => 'Švýcarsko', + 'CI' => "Pobřeží slonoviny", + 'CK' => 'Cookovy ostrovy', + 'CL' => 'Chile', + 'CM' => 'Kamerun', + 'CN' => 'Čína', + 'CO' => 'Kolumbie', + 'CR' => 'Kostarika', + 'CU' => 'Kuba', + 'CV' => 'Kapverdy', + 'CW' => 'Curaçao', + 'CX' => 'Vánoční ostrov', + 'CY' => 'Kypr', + 'CZ' => 'Česká republika', + 'DE' => 'Německo', + 'DJ' => 'Džibuti', + 'DK' => 'Dánsko', + 'DM' => 'Dominika', + 'DO' => 'Dominikánská republika', + 'DZ' => 'Alžírsko', + 'EC' => 'Ekvádor', + 'EE' => 'Estonsko', + 'EG' => 'Egypt', + 'EH' => 'Západní Sahara', + 'ER' => 'Eritrea', + 'ES' => 'Španělsko', + 'ET' => 'Etiopie', + 'FI' => 'Finsko', + 'FJ' => 'Fidži', + 'FK' => 'Falklandy', + 'FM' => 'Federativní státy Mikronésie', + 'FO' => 'Faerské ostrovy', + 'FR' => 'Francie', + 'GA' => 'Gabon', + 'GB' => 'Spojené království', + 'GD' => 'Grenada', + 'GE' => 'Gruzie', + 'GF' => 'Francouzská Guyana', + 'GG' => 'Guernsey', + 'GH' => 'Ghana', + 'GI' => 'Gibraltar', + 'GL' => 'Grónsko', + 'GM' => 'Gambie', + 'GN' => 'Guinea', + 'GP' => 'Guadeloupe', + 'GQ' => 'Rovníková Guinea', + 'GR' => 'Řecko', + 'GS' => 'Jižní Georgie a Jižní Sandwichovy ostrovy', + 'GT' => 'Guatemala', + 'GU' => 'Guam', + 'GW' => 'Guinea-Bissau', + 'GY' => 'Guyana', + 'HK' => 'Hong Kong', + 'HM' => 'Heardův ostrov a McDonaldovy ostrovy', + 'HN' => 'Honduras', + 'HR' => 'Chorvatsko', + 'HT' => 'Haiti', + 'HU' => 'Maďarsko', + 'ID' => 'Indonésie', + 'IE' => 'Irsko', + 'IL' => 'Izrael', + 'IM' => 'Ostrov Man', + 'IN' => 'Indie', + 'IO' => 'Britské indickooceánské území', + 'IQ' => 'Irák', + 'IR' => 'Íránská islámská republika', + 'IS' => 'Island', + 'IT' => 'Itálie', + 'JE' => 'Jersey', + 'JM' => 'Jamajka', + 'JO' => 'Jordánsko', + 'JP' => 'Japonsko', + 'KE' => 'Keňa', + 'KG' => 'Kyrgyzstán', + 'KH' => 'Kambodža', + 'KI' => 'Kiribati', + 'KM' => 'Komory', + 'KN' => 'Svatý Kryštof a Nevis', + 'KP' => "Severní Korea", + 'KR' => 'Korea', + 'KW' => 'Kuvajt', + 'KY' => 'Kajmanské ostrovy', + 'KZ' => 'Kazachstán', + 'LA' => "Laos", + 'LB' => 'Libanon', + 'LC' => 'Svatá Lucie', + 'LI' => 'Lichtenštejnsko', + 'LK' => 'Srí Lanka', + 'LR' => 'Libérie', + 'LS' => 'Lesotho', + 'LT' => 'Litva', + 'LU' => 'Lucembursko', + 'LV' => 'Lotyšsko', + 'LY' => 'Libye', + 'MA' => 'Maroko', + 'MC' => 'Monako', + 'MD' => 'Moldavská republika', + 'ME' => 'Černá Hora', + 'MF' => 'Svatý Martin (francouzská část)', + 'MG' => 'Madagaskar', + 'MH' => 'Marshallovy ostrovy', + 'MK' => 'Makedonie, bývalá Jugoslávie', + 'ML' => 'Mali', + 'MM' => 'Myanmar (Barma)', + 'MN' => 'Mongolsko', + 'MO' => 'Macao', + 'MP' => 'Severní Mariany', + 'MQ' => 'Martinik', + 'MR' => 'Mauritánie', + 'MS' => 'Montserrat', + 'MT' => 'Malta', + 'MU' => 'Mauricius', + 'MV' => 'Maledivy', + 'MW' => 'Malawi', + 'MX' => 'Mexiko', + 'MY' => 'Malajsie', + 'MZ' => 'Mosambik', + 'N/A' => 'Nelze zvolit (lokální IP…)', + 'NA' => 'Namibie', + 'NC' => 'Nová Kaledonie', + 'NE' => 'Niger', + 'NF' => 'Ostrov Norfolk', + 'NG' => 'Nigérie', + 'NI' => 'Nikaragua', + 'NL' => 'Nizozemsko', + 'NO' => 'Norsko', + 'NP' => 'Nepál', + 'NR' => 'Nauru', + 'NU' => 'Niué', + 'NZ' => 'Nový Zéland', + 'OM' => 'Omán', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PF' => 'Francouzská Polynésie', + 'PG' => 'Papua-Nová Guinea', + 'PH' => 'Filipíny', + 'PK' => 'Pákistán', + 'PL' => 'Polsko', + 'PM' => 'Saint Pierre a Miquelon', + 'PN' => 'Pitcairnovy ostrovy', + 'PR' => 'Portoriko', + 'PS' => 'Palestina', + 'PT' => 'Portugalsko', + 'PW' => 'Palau', + 'PY' => 'Paraguay', + 'QA' => 'Katar', + 'RE' => 'Réunion', + 'RO' => 'Rumunsko', + 'RS' => 'Srbsko', + 'RU' => 'Ruská federace', + 'RW' => 'Rwanda', + 'SA' => 'Saúdská Arábie', + 'SB' => 'Šalamounovy ostrovy', + 'SC' => 'Seychely', + 'SD' => 'Súdán', + 'SE' => 'Švédsko', + 'SG' => 'Singapur', + 'SH' => 'Svatá Helena, Ascension a Tristan da Cunha', + 'SI' => 'Slovinsko', + 'SJ' => 'Špicberky', + 'SK' => 'Slovensko', + 'SL' => 'Sierra Leone', + 'SM' => 'San Marino', + 'SN' => 'Senegal', + 'SO' => 'Somálsko', + 'SR' => 'Surinam', + 'SS' => 'Jižní Súdán', + 'ST' => 'Svatý Tomáš a Princův ostrov', + 'SV' => 'El Salvador', + 'SX' => 'Svatý Martin (nizozemská část)', + 'SY' => 'Sýrie', + 'SZ' => 'Svazijsko', + 'TC' => 'Ostrovy Turks a Caicos', + 'TD' => 'Čad', + 'TF' => 'Francouzská jižní území', + 'TG' => 'Togo', + 'TH' => 'Thajsko', + 'TJ' => 'Tádžikistán', + 'TK' => 'Tokelau', + 'TL' => 'Východní Timor', + 'TM' => 'Turkmenistán', + 'TN' => 'Tunisko', + 'TO' => 'Tonga', + 'TR' => 'Turecko', + 'TT' => 'Trinidad a Tobago', + 'TV' => 'Tuvalu', + 'TW' => 'Tchajwan, provincie Číny', + 'TZ' => 'Tanzanie, Spojené republiky', + 'UA' => 'Ukrajina', + 'UG' => 'Uganda', + 'UM' => 'Menší odlehlé ostrovy Spojených států amerických', + 'US' => 'Spojené státy', + 'UY' => 'Uruguay', + 'UZ' => 'Uzbekistán', + 'VA' => 'Svatý stolec (Vatikánský městský stát)', + 'VC' => 'Svatý Vincent a Grenadiny', + 'VE' => 'Venezuela, Bolívarovská republika', + 'VG' => 'Britské Panenské ostrovy', + 'VI' => 'Americké Panenské ostrovy', + 'VN' => 'Vietnam', + 'VU' => 'Vanuatu', + 'WF' => 'Wallis a Futuna', + 'WS' => 'Samoa', + 'YE' => 'Jemen', + 'YT' => 'Mayotte', + 'ZA' => 'Jižní Afrika', + 'ZM' => 'Zambie', + 'ZW' => 'Zimbabwe', +]; diff --git a/modules/Admin/Language/cs/Dashboard.php b/modules/Admin/Language/cs/Dashboard.php new file mode 100644 index 00000000..e66e362b --- /dev/null +++ b/modules/Admin/Language/cs/Dashboard.php @@ -0,0 +1,28 @@ + 'Administrátorský panel', + 'welcome_message' => 'Vítejte v admin oblasti!', + 'podcasts' => [ + 'title' => 'Podcasty', + 'not_found' => 'Žádné publikované podcasty', + 'last_published' => 'Naposledy publikováno {lastPublicationDate}', + ], + 'episodes' => [ + 'title' => 'Epizody', + 'not_found' => 'Žádné publikované epizody', + 'last_published' => 'Naposledy publikováno {lastPublicationDate}', + ], + 'storage' => [ + 'title' => 'Úložiště', + 'subtitle' => '{totalUploaded} z {totalStorage}', + ], +]; diff --git a/modules/Admin/Language/cs/Episode.php b/modules/Admin/Language/cs/Episode.php new file mode 100644 index 00000000..2595eb2e --- /dev/null +++ b/modules/Admin/Language/cs/Episode.php @@ -0,0 +1,225 @@ + 'Série {seasonNumber}', + 'season_abbr' => 'S{seasonNumber}', + 'number' => 'Epizoda {episodeNumber}', + 'number_abbr' => 'Ep. {episodeNumber}', + 'season_episode' => 'Série {seasonNumber} epizoda {episodeNumber}', + 'season_episode_abbr' => 'S{seasonNumber}E{episodeNumber}', + 'number_of_comments' => '{numberOfComments, plural, + one {# komentář} + other {# komentáře} + }', + 'all_podcast_episodes' => 'Všechny epizody podcastu', + 'back_to_podcast' => 'Přejít zpět na podcast', + 'edit' => 'Upravit', + 'preview' => 'Náhled', + 'publish' => 'Publikovat', + 'publish_edit' => 'Upravit publikování', + 'publish_date_edit' => 'Upravit datum publikování', + 'unpublish' => 'Zrušit publikování', + 'publish_error' => 'Epizoda již byla publikována.', + 'publish_edit_error' => 'Epizoda již byla publikována.', + 'publish_cancel_error' => 'Epizoda již byla publikována.', + 'publish_date_edit_error' => 'Epizoda ještě nebyla publikována, nemůžete upravit datum jejího zveřejnění.', + 'publish_date_edit_future_error' => 'Datum publikování epizody může být nastaveno pouze na dřívější datum! Pokud chcete změnit naplánování, nejprve zrušte publikování.', + 'publish_date_edit_success' => 'Datum publikování epizody bylo úspěšně aktualizováno!', + 'unpublish_error' => 'Epizoda není publikována.', + 'delete' => 'Smazat', + 'go_to_page' => 'Přejít na stránku', + 'create' => 'Přidat epizodu', + 'publication_status' => [ + 'published' => 'Publikováno', + 'with_podcast' => 'Publikováno', + 'scheduled' => 'Naplánováno', + 'not_published' => 'Nepublikováno', + ], + 'with_podcast_hint' => 'Zveřejní se současně s podcastem', + 'list' => [ + 'search' => [ + 'placeholder' => 'Hledat epizodu', + 'clear' => 'Vymazat vyhledávání', + 'submit' => 'Hledat', + ], + 'number_of_episodes' => '{numberOfEpisodes, plural, + one {# epizoda} + other {# epizody} + }', + 'episode' => 'Epizoda', + 'visibility' => 'Viditelnost', + 'downloads' => 'Stažení', + 'comments' => 'Komentáře', + 'actions' => 'Akce', + ], + 'messages' => [ + 'createSuccess' => 'Epizoda byla úspěšně vytvořena!', + 'editSuccess' => 'Epizoda byla úspěšně aktualizována!', + 'publishSuccess' => '{publication_status, select, + published {Epizoda byla úspěšně publikována!} + scheduled {Publikace epizody byla úspěšně naplánována!} + with_podcast {Tato epizoda bude zveřejněna současně s podcastem.} + other {Tato epizoda není publikována.} + }', + 'publishCancelSuccess' => 'Publikování epizody úspěšně zrušeno!', + 'unpublishBeforeDeleteTip' => 'Je nutné zrušit publikování epizody před jejím odstraněním.', + 'scheduleDateError' => 'Musí být nastaveno datum publikování!', + 'deletePublishedEpisodeError' => 'Před odstraněním epizody prosím zrušte publikování.', + 'deleteSuccess' => 'Epizoda byla úspěšně smazána!', + 'deleteError' => 'U epizody se nepodařilo odstranit {type, select, + transcript {přepis} + chapters {kapitoly} + image {obal} + audio {audio} + other {media} + }', + 'deleteFileError' => 'Nepodařilo se odstranit {type, select, + transcript {přepis} + chapters {kapitoly} + image {obal} + audio {audio} + other {média} + } soubor {file_key}. Můžete ručně odebrat ze svého disku.', + 'sameSlugError' => 'Epizoda se zvolenou částí URL již existuje.', + ], + 'form' => [ + 'file_size_error' => + 'Soubor je příliš velký! Maximální velikost je {0}. Zvyšte hodnoty `memory_limit`, `upload_max_filesize` a `post_max_size` v konfiguračním souboru php a pak restartujte váš webový server pro nahrání souboru.', + 'audio_file' => 'Zvukový soubor', + 'audio_file_hint' => 'Vyberte zvukový soubor .mp3 nebo .m4a.', + 'info_section_title' => 'Informace o epizodě', + 'cover' => 'Obal epizody', + 'cover_hint' => + 'Pokud nenastavíte obal, bude místo toho použit obal podcastu.', + 'cover_size_hint' => 'Obal musí být čtvercový a nejméně 1400px široký a vysoký.', + 'title' => 'Název', + 'title_hint' => + 'Mělo by obsahovat jasný a stručný název epizody. Zde nespecifikujte čísla epizod nebo sezóny.', + 'permalink' => 'Trvalý odkaz', + 'season_number' => 'Série', + 'episode_number' => 'Epizoda', + 'type' => [ + 'label' => 'Typ', + 'full' => 'Plné', + 'full_hint' => 'Kompletní obsah (epizoda)', + 'trailer' => 'Upoutávka', + 'trailer_hint' => 'Krátký propagační materiál, který představuje náhled aktuálního seriálu', + 'bonus' => 'Bonus', + 'bonus_hint' => 'Extra obsah pro seriál (například ze zákulisí nebo rozhovory s účinkujícími) nebo průřezový propagační obsah pro jiný seriál', + ], + 'premium_title' => 'Prémium', + 'premium' => 'Epizoda musí být přístupná pouze pro prémiové odběratele', + 'parental_advisory' => [ + 'label' => 'Rodičovské informace', + 'hint' => 'Obsahuje epizoda explicitní obsah?', + 'undefined' => 'nedefinováno', + 'clean' => 'Čisté', + 'explicit' => 'Explicitní', + ], + 'show_notes_section_title' => 'Zobrazit poznámky', + 'show_notes_section_subtitle' => + 'Až 4000 znaků, buďte jasní a struční. Poznámky pomáhají potenciálním posluchačům při hledání epizody.', + 'description' => 'Popis', + 'description_footer' => 'Zápatí popisu', + 'description_footer_hint' => + 'Tento text je přidán na konec popisu každé epizody, je to dobré místo pro vložení vašich sociálních odkazů.', + 'additional_files_section_title' => 'Další soubory', + 'additional_files_section_subtitle' => + 'Tyto soubory mohou být použity jinými platformami pro lepší zážitek pro vaše publikum. Pro více informací si přečtěte {podcastNamespaceLink}.', + 'location_section_title' => 'Místo', + 'location_section_subtitle' => 'O kterém místě je tato epizoda?', + 'location_name' => 'Název nebo adresa místa', + 'location_name_hint' => 'Toto může být skutečné nebo fiktivní místo', + 'transcript' => 'Přepis (titulky)', + 'transcript_hint' => 'Jsou povoleny pouze .srt nebo .vtt.', + 'transcript_download' => 'Stáhnout přepis', + 'transcript_file' => 'Soubor přepisu (.srt nebo .vtt)', + 'transcript_remote_url' => 'Vzdálená URL pro přepis', + 'transcript_file_delete' => 'Odstranit soubor přepisu', + 'chapters' => 'Kapitoly', + 'chapters_hint' => 'Soubor musí být ve formátu JSON kapitol.', + 'chapters_download' => 'Stáhnout kapitoly', + 'chapters_file' => 'Soubor kapitol', + 'chapters_remote_url' => 'Vzdálená url pro soubor kapitol', + 'chapters_file_delete' => 'Odstranit soubor kapitol', + 'advanced_section_title' => 'Pokročilá nastavení', + 'advanced_section_subtitle' => + 'Pokud potřebujete RSS tagy, které Castopod nepodporuje, nastavte je zde.', + 'custom_rss' => 'Vlastní RSS tagy pro epizodu', + 'custom_rss_hint' => 'Toto bude vloženo do tagu ❬item❭.', + 'block' => 'Epizoda by měla být skryta ve veřejných katalogech', + 'block_hint' => + 'Zobrazit nebo skrýt stav: přepnutí tohoto zabraňuje tomu, aby se epizoda objevila v Apple Podcasts, Google Podcasts, a všech aplikacích třetích stran, které stahují seriály z těchto adresářů. (Nezaručeno)', + 'submit_create' => 'Vytvořit epizodu', + 'submit_edit' => 'Uložit epizodu', + ], + 'publish_form' => [ + 'back_to_episode_dashboard' => 'Zpět na nástěnku epizody', + 'post' => 'Váš oznamovací příspěvek', + 'post_hint' => + "Napište zprávu pro oznámení zveřejnění vaší epizody. Zpráva bude odeslána všem vašim následovníkům ve fediverse a bude zobrazena na domovské stránce vašeho podcastu.", + 'message_placeholder' => 'Napište zprávu…', + 'publication_date' => 'Datum publikování', + 'publication_method' => [ + 'now' => 'Teď', + 'schedule' => 'Naplánovat', + 'with_podcast' => 'Publikovat s podcastem', + ], + 'scheduled_publication_date' => 'Naplánované datum publikování', + 'scheduled_publication_date_clear' => 'Vymazat datum publikování', + 'scheduled_publication_date_hint' => + 'Vydání epizody můžete naplánovat nastavením data zveřejnění. Toto pole musí být formátováno jako YY-MM-DD HH:mm', + 'submit' => 'Publikovat', + 'submit_edit' => 'Upravit publikování', + 'cancel_publication' => 'Zrušit publikování', + 'message_warning' => 'Nepsali jste zprávu pro váš příspěvek s oznámením!', + 'message_warning_hint' => 'Zpráva zvyšuje viditelnost na sociálních sítích, což má za následek lepší popularitu vaší epizody.', + 'message_warning_submit' => 'Přesto publikovat', + ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'Nové datum publikace', + 'new_publication_date_hint' => 'Musí být nastaveno na uplynulé datum.', + 'submit' => 'Upravit datum publikace', + ], + 'unpublish_form' => [ + 'disclaimer' => + "Zrušením publikování epizody smažete všechny komentáře a příspěvky spojené s ní a odeberete z RSS kanálu podcastu.", + 'understand' => 'Chápu, chci zrušit publikování epizody', + 'submit' => 'Zrušit publikování', + ], + 'delete_form' => [ + 'disclaimer' => + "Smazáním epizody smažete všechny mediální soubory, komentáře, videoklipy a zvuky, které jsou s ní spojeny.", + 'understand' => 'Chápu, chci odstranit epizodu', + 'submit' => 'Smazat', + ], + 'embed' => [ + 'title' => 'Vložitelný přehrávač', + 'label' => + 'Vyberte si barvu motivu, zkopírujte vložený přehrávač do schránky a vložte jej na váš web.', + 'clipboard_iframe' => 'Kopírovat vložitelný přehrávač do schránky', + 'clipboard_url' => 'Kopírovat adresu do schránky', + 'dark' => 'Tmavý', + 'dark-transparent' => 'Tmavý průhledný', + 'light' => 'Světlý', + 'light-transparent' => 'Světlý průhledný', + ], + 'publication_status_banner' => [ + 'draft_mode' => 'režim konceptu', + 'text' => '{publication_status, select, + published {Tato epizoda ještě není publikována.} + scheduled {Tato epizoda je naplánována pro publikování na {publication_date}} + with_podcast {Tato epizoda bude zveřejněna současně s podcastem.} + other {Tato epizoda ještě není publikována.} + }', + 'preview' => 'Náhled', + ], +]; diff --git a/modules/Admin/Language/cs/EpisodeNavigation.php b/modules/Admin/Language/cs/EpisodeNavigation.php new file mode 100644 index 00000000..46fd1d15 --- /dev/null +++ b/modules/Admin/Language/cs/EpisodeNavigation.php @@ -0,0 +1,23 @@ + 'Zobrazit stránku epizody', + 'dashboard' => 'Nástěnka epizody', + 'episode-view' => 'Domů', + 'episode-edit' => 'Upravit epizodu', + 'episode-persons-manage' => 'Spravovat osoby', + 'embed-add' => 'Vložitelný přehrávač', + 'clips' => 'Klipy', + 'video-clips-list' => 'Videoklipy', + 'video-clips-create' => 'Nový video klip', + 'soundbites-list' => 'Úryvky', + 'soundbites-create' => 'Nový úryvek', +]; diff --git a/modules/Admin/Language/cs/Fediverse.php b/modules/Admin/Language/cs/Fediverse.php new file mode 100644 index 00000000..d74fac27 --- /dev/null +++ b/modules/Admin/Language/cs/Fediverse.php @@ -0,0 +1,32 @@ + [ + 'actorNotFound' => 'Účet nebyl nalezen.', + 'blockActorSuccess' => '{actor} byl zablokován!', + 'unblockActorSuccess' => 'Subjekt byl odblokován!', + 'blockDomainSuccess' => '{domain} bylo zablokováno!', + 'unblockDomainSuccess' => '{domain} bylo odblokováno!', + ], + 'blocked_actors' => 'Blokované účty', + 'blocked_domains' => 'Blokované domény', + 'block_lists_form' => [ + 'handle' => 'Handle účtu', + 'handle_hint' => 'Vložte @username@domain účet.', + 'domain' => 'Název domény', + 'submit' => 'Blokovat!', + ], + 'list' => [ + 'actor' => 'Účet', + 'domain' => 'Název domény', + 'unblock' => 'Odblokovat', + ], +]; diff --git a/modules/Admin/Language/cs/Home.php b/modules/Admin/Language/cs/Home.php new file mode 100644 index 00000000..25068818 --- /dev/null +++ b/modules/Admin/Language/cs/Home.php @@ -0,0 +1,14 @@ + 'Všechny podcasty', + 'no_podcast' => 'Nebyly nalezeny žádné podcasty', +]; diff --git a/modules/Admin/Language/cs/Install.php b/modules/Admin/Language/cs/Install.php new file mode 100644 index 00000000..f39c1182 --- /dev/null +++ b/modules/Admin/Language/cs/Install.php @@ -0,0 +1,61 @@ + 'Ruční konfigurace', + 'manual_config_subtitle' => + 'Vytvořte soubor `.env` s vaším nastavením a obnovte stránku pro pokračování instalace.', + 'form' => [ + 'instance_config' => 'Konfigurace instance', + 'hostname' => 'Název hostitele', + 'media_base_url' => 'URL pro média', + 'media_base_url_hint' => + 'Pokud používáte CDN a/nebo externí analytickou službu, můžete je nastavit zde.', + 'admin_gateway' => 'Administrační brána', + 'admin_gateway_hint' => + 'Cesta pro přístup k administraci (např. https://example.com/cp-admin). Ve výchozím nastavení je nastaveno jako cp-admin, doporučujeme ji z bezpečnostních důvodů změnit.', + 'auth_gateway' => 'Ověřovací brána', + 'auth_gateway_hint' => + 'Cesta pro přístup k ověřovacím stránkám (např. https://example.com/cp-auth). Ve výchozím nastavení je nastaveno jako cp-auth, doporučujeme ji z bezpečnostních důvodů změnit.', + 'database_config' => 'Konfigurace databáze', + 'database_config_hint' => + 'Castopod se musí připojit k databázi MySQL (nebo MariaDB). Pokud nemáte tyto požadované informace, kontaktujte prosím správce serveru.', + 'db_hostname' => 'Název hostitele databáze', + 'db_name' => 'Název databáze', + 'db_username' => 'Uživatelské jméno databáze', + 'db_password' => 'Heslo k databázi', + 'db_prefix' => 'Předpona databáze', + 'db_prefix_hint' => + "Předpona Castopod tabulky, neměňte pokud nevíte, co to znamená.", + 'cache_config' => 'Nastavení mezipaměti', + 'cache_config_hint' => + 'Vyberte preferovaného zpracovatele mezipaměti. Ponechte výchozí hodnotu, pokud nemáte přehled o tom, co to znamená.', + 'cache_handler' => 'Zpracovatel mezipaměti', + 'cacheHandlerOptions' => [ + 'file' => 'Soubor', + 'redis' => 'Redis', + 'predis' => 'Predis', + ], + 'next' => 'Další', + 'submit' => 'Dokončit instalaci', + 'create_superadmin' => 'Vytvořte si svůj superadmin účet', + 'email' => 'Email', + 'username' => 'Uživatelské jméno', + 'password' => 'Heslo', + ], + 'messages' => [ + 'createSuperAdminSuccess' => + 'Váš superadmin účet byl úspěšně vytvořen. Přihlaste se a začněte s podcastem!', + 'databaseConnectError' => + 'Castopod se nemohl připojit k databázi. Upravte konfiguraci databáze a zkuste to znovu.', + 'writeError' => + "Nelze vytvořit / zapsat soubor `.env`. Musíte jej vytvořit ručně podle šablony souboru `.env.example` v balíčku Castopod.", + ], +]; diff --git a/modules/Admin/Language/cs/MyAccount.php b/modules/Admin/Language/cs/MyAccount.php new file mode 100644 index 00000000..5687a728 --- /dev/null +++ b/modules/Admin/Language/cs/MyAccount.php @@ -0,0 +1,18 @@ + 'Info o účtu', + 'changePassword' => 'Změnit heslo', + 'messages' => [ + 'wrongPasswordError' => "Zadali jste špatné heslo, zkuste to znovu.", + 'passwordChangeSuccess' => 'Heslo bylo úspěšně změněno', + ], +]; diff --git a/modules/Admin/Language/cs/Navigation.php b/modules/Admin/Language/cs/Navigation.php new file mode 100644 index 00000000..10514836 --- /dev/null +++ b/modules/Admin/Language/cs/Navigation.php @@ -0,0 +1,44 @@ + 'Boční lišta', + 'go_to_website' => 'Přejít na web', + 'go_to_admin' => 'Přejít do administrace', + 'not-authorized' => 'Neautorizovaný', + 'dashboard' => 'Nástěnka', + 'admin' => 'Domovská stránka', + 'podcasts' => 'Podcasty', + 'podcast-list' => 'Všechny podcasty', + 'podcast-create' => 'Nový podcast', + 'all-podcast-imports' => 'Všechny importy podcastu', + 'podcast-imports-add' => 'Importovat podcast', + 'persons' => 'Osoby', + 'person-list' => 'Všechny osoby', + 'person-create' => 'Nová osoba', + 'fediverse' => 'Fediverse', + 'fediverse-blocked-actors' => 'Blokované účty', + 'fediverse-blocked-domains' => 'Blokované domény', + 'users' => 'Uživatelé', + 'user-list' => 'Všichni uživatelé', + 'user-create' => 'Nový uživatel', + 'pages' => 'Stránky', + 'page-list' => 'Všechny stránky', + 'page-create' => 'Nová stránka', + 'settings' => 'Nastavení', + 'settings-general' => 'Obecné', + 'settings-theme' => 'Motiv', + 'admin-about' => 'Info', + 'account' => [ + 'my-account' => 'Můj účet', + 'change-password' => 'Změna hesla', + 'logout' => 'Odhlásit se', + ], +]; diff --git a/modules/Admin/Language/cs/Notifications.php b/modules/Admin/Language/cs/Notifications.php new file mode 100644 index 00000000..0912671e --- /dev/null +++ b/modules/Admin/Language/cs/Notifications.php @@ -0,0 +1,19 @@ + 'Oznámení', + 'reply' => '{actor_username} odpověděl na Váš příspěvek', + 'favourite' => '{actor_username} si oblíbil Váš příspěvek', + 'reblog' => '{actor_username} sdílel Váš příspěvek', + 'follow' => '{actor_username} Vás začal sledovat', + 'no_notifications' => 'Žádná oznámení', + 'mark_all_as_read' => 'Označit vše jako přečtené', +]; diff --git a/modules/Admin/Language/cs/Page.php b/modules/Admin/Language/cs/Page.php new file mode 100644 index 00000000..841172aa --- /dev/null +++ b/modules/Admin/Language/cs/Page.php @@ -0,0 +1,30 @@ + 'Zpátky domů', + 'page' => 'Stránka', + 'all_pages' => 'Všechny stránky', + 'create' => 'Nová stránka', + 'go_to_page' => 'Přejít na stránku', + 'edit' => 'Upravit stránku', + 'delete' => 'Odstranit stránku', + 'form' => [ + 'title' => 'Název', + 'permalink' => 'Trvalý odkaz', + 'content' => 'Obsah', + 'submit_create' => 'Vytvořit stránku', + 'submit_edit' => 'Uložit', + ], + 'messages' => [ + 'createSuccess' => 'Stránka „{pageTitle}“ byla úspěšně vytvořena!', + 'editSuccess' => 'Stránka úspěšně aktualizována!', + ], +]; diff --git a/modules/Admin/Language/cs/Pager.php b/modules/Admin/Language/cs/Pager.php new file mode 100644 index 00000000..34dab87c --- /dev/null +++ b/modules/Admin/Language/cs/Pager.php @@ -0,0 +1,21 @@ + 'Navigace ve stránce', + 'first' => 'První', + 'previous' => 'Předchozí', + 'next' => 'Další', + 'last' => 'Poslední', + 'older' => 'Starší', + 'newer' => 'Novější', + 'invalidTemplate' => '{0} není platná Pager šablona.', + 'invalidPaginationGroup' => '{0} není platná Pagination skupina.', +]; diff --git a/modules/Admin/Language/cs/Person.php b/modules/Admin/Language/cs/Person.php new file mode 100644 index 00000000..6405203d --- /dev/null +++ b/modules/Admin/Language/cs/Person.php @@ -0,0 +1,65 @@ + 'Osoby', + 'all_persons' => 'Všechny osoby', + 'no_person' => 'Nikdo nenalezen!', + 'create' => 'Vytvořit osobu', + 'view' => 'Zobrazit osobu', + 'edit' => 'Upravit osobu', + 'delete' => 'Smazat osobu', + 'messages' => [ + 'createSuccess' => 'Osoba byla úspěšně vytvořena!', + 'editSuccess' => 'Osoba byla úspěšně aktualizována!', + 'deleteSuccess' => 'Osoba byla odstraněna!', + ], + 'form' => [ + 'avatar' => 'Avatar', + 'avatar_size_hint' => + 'Avatar musí být čtvercový a alespoň 400px široký a vysoký.', + 'full_name' => 'Celé jméno', + 'full_name_hint' => 'Toto je celé jméno nebo přezdívka osoby.', + 'unique_name' => 'Jedinečné jméno', + 'unique_name_hint' => 'Používá se pro URL', + 'information_url' => 'URL informací', + 'information_url_hint' => + 'URL na relevantní zdroj informací o osobě, jako je domovská stránka nebo platforma profilu třetí strany.', + 'submit_create' => 'Vytvořit osobu', + 'submit_edit' => 'Uložit osobu', + ], + 'podcast_form' => [ + 'title' => 'Spravovat osoby', + 'add_section_title' => 'Přidat osoby do tohoto podcastu', + 'add_section_subtitle' => 'Můžete si vybrat několik osob a rolí.', + 'persons' => 'Osoby', + 'persons_hint' => + 'Můžete vybrat jednu nebo více osob se stejnými roli. Nejprve je třeba vytvořit osoby.', + 'roles' => 'Role', + 'roles_hint' => + 'Můžete si vybrat žádné, jednu nebo více rolí pro osobu.', + 'submit_add' => 'Přidat osobu (osoby)', + 'remove' => 'Odstranit', + ], + 'episode_form' => [ + 'title' => 'Spravovat osoby', + 'add_section_title' => 'Přidat osoby do této epizody', + 'add_section_subtitle' => 'Můžete si vybrat několik osob a rolí.', + 'persons' => 'Osoby', + 'persons_hint' => + 'Můžete vybrat jednu nebo více osob se stejnými roli. Nejprve je třeba vytvořit osoby.', + 'roles' => 'Role', + 'roles_hint' => + 'Můžete si vybrat žádné, jednu nebo více rolí pro osobu.', + 'submit_add' => 'Přidat osobu (osoby)', + 'remove' => 'Odebrat', + ], + 'credits' => 'Zásluhy', +]; diff --git a/modules/Admin/Language/cs/Platforms.php b/modules/Admin/Language/cs/Platforms.php new file mode 100644 index 00000000..d1219d7e --- /dev/null +++ b/modules/Admin/Language/cs/Platforms.php @@ -0,0 +1,43 @@ + [ + 'podcasting' => 'Platformy pro podcast', + 'social' => 'Sociální sítě', + 'funding' => 'Odkazy na financování', + ], + 'website' => 'Webová stránka', + 'home_url' => 'Přejít na web {platformName}', + 'register' => 'Registrovat se', + 'submit_url' => 'Odeslat podcast na {platformName}', + 'your_link' => 'Váš odkaz', + 'your_id' => [ + 'podcasting' => 'Vaše ID', + 'social' => 'Vaše ID', + 'funding' => 'Vaše CTA', + ], + 'your_cta' => 'Vaše výzva k akci', + 'visible' => 'Zobrazit na domovské stránce podcastu?', + 'on_embed' => 'Zobrazit na vložitelném přehrávači?', + 'remove' => 'Odstranit {platformName}', + 'submit' => 'Uložit', + 'messages' => [ + 'updateSuccess' => 'Odkazy na platformu byly úspěšně aktualizovány!', + 'removeLinkSuccess' => 'Odkaz na platformu byl odstraněn.', + 'removeLinkError' => + 'Odkaz na platformu nelze odstranit. Zkuste to znovu.', + ], + 'description' => [ + 'podcasting' => 'ID podcastu na této platformě', + 'social' => 'ID účtu podcast na této platformě', + 'funding' => 'Zpráva u výzvy k akci', + ], +]; diff --git a/modules/Admin/Language/cs/Podcast.php b/modules/Admin/Language/cs/Podcast.php new file mode 100644 index 00000000..b65f2221 --- /dev/null +++ b/modules/Admin/Language/cs/Podcast.php @@ -0,0 +1,330 @@ + 'Všechny podcasty', + 'no_podcast' => 'Nenalezeny žádné podcasty!', + 'create' => 'Vytvořit podcast', + 'import' => 'Importovat podcast', + 'all_imports' => 'Importy podcastu', + 'new_episode' => 'Nová epizoda', + 'view' => 'Zobrazit podcast', + 'edit' => 'Upravit podcast', + 'publish' => 'Publikovat podcast', + 'publish_edit' => 'Upravit publikování', + 'delete' => 'Odstranit podcast', + 'see_episodes' => 'Zobrazit epizody', + 'see_contributors' => 'Zobrazit přispěvatele', + 'monetization_other' => 'Jiná monetizace', + 'go_to_page' => 'Přejít na stránku', + 'latest_episodes' => 'Nejnovější epizody', + 'see_all_episodes' => 'Zobrazit všechny epizody', + 'draft' => 'Koncept', + 'messages' => [ + 'createSuccess' => 'Podcast úspěšně vytvořen!', + 'editSuccess' => 'Podcast byl úspěšně aktualizován!', + 'importSuccess' => 'Podcast byl úspěšně importován!', + 'deleteSuccess' => 'Podcast @{podcast_handle} byl úspěšně smazán!', + 'deletePodcastMediaError' => 'U podcastu se nepodařilo odstranit {type, select, + cover {obal} + banner {banner} + other {media} + }', + 'deleteEpisodeMediaError' => 'U epizody podcastu {episode_slug} se nepodařilo odstranit {type, select, + transcript {přepis} + chapters {kapitoly} + image {obal} + audio {audio} + other {media} + }', + 'deletePodcastMediaFolderError' => 'Odstranění složky médií podcast {folder_path} se nezdařilo. Můžete ji ručně odebrat z disku.', + 'podcastFeedUpdateSuccess' => 'Úspěšná aktualizace: {number_of_new_episodes, plural, + one {# epizoda byla přidána} + other {# epizody byly přidány} + } k podcastu!', + 'podcastFeedUpToDate' => 'Podcast je již aktuální.', + 'publishError' => 'Tento podcast je buď již zveřejněn, nebo je naplánován na publikování.', + 'publishEditError' => 'Tento podcast není naplánován na publikování.', + 'publishCancelSuccess' => 'Publikování podcastu bylo úspěšně zrušeno!', + 'scheduleDateError' => 'Musí být nastaveno datum publikování!', + ], + 'form' => [ + 'identity_section_title' => 'Identita podcastu', + 'identity_section_subtitle' => 'Tato pole vám umožňují získat pozornost.', + 'fediverse_section_title' => 'Fediverse identita', + + 'cover' => 'Obal podcastu', + 'cover_size_hint' => 'Obal musí být čtvercový a nejméně 1400px široký a vysoký.', + 'banner' => 'Banner podcastu', + 'banner_size_hint' => 'Banner musí mít poměr 3:1 a musí být alespoň 1500px široký.', + 'banner_delete' => 'Odstranit banner podcastu', + 'title' => 'Název', + 'handle' => 'Handle', + 'handle_hint' => + 'Používá se k identifikaci podcastu. Velká písmena, malá písmena, čísla a podtržítka jsou přijímána.', + 'type' => [ + 'label' => 'Typ', + 'episodic' => 'Epizodický', + 'episodic_hint' => 'Pokud jsou epizody určeny ke sledování bez konkrétního pořadí. Nejnovější epizody budou prezentovány jako první.', + 'serial' => 'Sériový', + 'serial_hint' => 'Pokud mají být epizody sledovány v sekvenčním pořadí. Epizody budou uvedeny v číselném pořadí.', + ], + 'medium' => [ + 'label' => 'Medium', + 'hint' => 'Medium reprezentováno podcast:medium tagem v RSS. Změna může změnit způsob prezentace vašeho kanálu.', + 'podcast' => 'Podcast', + 'podcast_hint' => 'Popisuje kanál pro seriál podcastu.', + 'music' => 'Hudba', + 'music_hint' => 'Zdroj hudby organizovaný do alba, s každou skladbou v albu.', + 'audiobook' => 'Audiokniha', + 'audiobook_hint' => 'Specifické typy zvuku s jednou položkou z každého zdroje nebo tam, kde položky představují kapitoly v knize.', + ], + 'description' => 'Popis', + 'classification_section_title' => 'Klasifikace', + 'classification_section_subtitle' => + 'Tyto oblasti ovlivní vaše publikum a konkurenci.', + 'language' => 'Jazyk', + 'category' => 'Kategorie', + 'category_placeholder' => 'Vyberte kategorii…', + 'other_categories' => 'Ostatní kategorie', + 'parental_advisory' => [ + 'label' => 'Rodičovské info', + 'hint' => 'Obsahuje explicitní obsah?', + 'undefined' => 'nedefinováno', + 'clean' => 'Čistý', + 'explicit' => 'Explicitní', + ], + 'author_section_title' => 'Autor', + 'author_section_subtitle' => 'Kdo spravuje podcast?', + 'owner_name' => 'Jméno vlastníka', + 'owner_name_hint' => + 'Pouze pro administrativní použití. Viditelné ve veřejném kanálu RSS.', + 'owner_email' => 'E-mail vlastníka', + 'owner_email_hint' => + 'Bude použito většinou platforem k ověření vlastnictví podcastu. Viditelné ve veřejném RSS kanálu.', + 'is_owner_email_removed_from_feed' => 'Odstranit e-mail vlastníka z veřejného RSS kanálu', + 'is_owner_email_removed_from_feed_hint' => 'Možná budete muset dočasně odkrýt e-mail, aby mohl adresář ověřit vlastnictví podcastu.', + 'publisher' => 'Vydavatel', + 'publisher_hint' => + 'Skupina odpovědná za vytvoření seriálu. Často odkazuje na mateřskou společnost nebo síť podcastu. Toto pole je někdy označeno jako \'Autor\'.', + 'copyright' => 'Autorská práva', + 'location_section_title' => 'Místo', + 'location_section_subtitle' => 'O kterém místě je tento podcast?', + 'location_name' => 'Název nebo adresa místa', + 'location_name_hint' => 'To může být skutečné místo nebo fiktivní', + 'monetization_section_title' => 'Monetizace', + 'monetization_section_subtitle' => + 'Vydělávejte peníze díky vašemu publiku.', + 'premium' => 'Prémium', + 'premium_by_default' => 'Epizody musí být nastaveny jako prémiové', + 'premium_by_default_hint' => 'Epizody podcastu budou ve výchozím nastavení označeny jako prémiové. Stále si můžete vybrat nastavení některých epizod, trailery nebo bonusy jako veřejné.', + 'op3' => 'Open Podcast Prefix Project (OP3)', + 'op3_link' => 'Navštivte OP3 dashboard (externí odkaz)', + 'op3_hint' => 'Ohodnoťte svá analytická data OP3, otevřený zdroj a důvěryhodná analytická služba třetích stran. Sdílejte, ověřte a porovnejte svá analytická data s otevřeným ekosystémem podcastingu.', + 'op3_enable' => 'Povolit OP3 analytickou službu', + 'op3_enable_hint' => 'Z bezpečnostních důvodů nebudou analytická data prémiových epizod sdílena s OP3.', + 'payment_pointer' => 'Platební ukazatel pro Web Monetization', + 'payment_pointer_hint' => + 'Toto je Vaše místo, kde obdržíte peníze díky Web Monetization', + 'advanced_section_title' => 'Pokročilá nastavení', + 'advanced_section_subtitle' => + 'Pokud potřebujete RSS tagy, které Castopod nepodporuje, nastavte je zde.', + 'custom_rss' => 'Vlastní RSS tagy pro podcast', + 'custom_rss_hint' => 'Toto bude vloženo do tagu ❬channel❭.', + 'verify_txt' => 'Ověření vlastnictví TXT', + 'verify_txt_hint' => 'Některé služby třetích stran mohou spíše než spoléhat na e-mail, potvrdit vlastnictví podcastu požadavkem na vložení ověřovacího textu do vašeho kanálu.', + 'verify_txt_helper' => 'Tento text je vložen do tagu.', + 'new_feed_url' => 'Nová URL kanálu', + 'new_feed_url_hint' => 'Použijte toto pole při přesunu na jinou doménu nebo hostitelskou platformu podcastu. Ve výchozím nastavení je hodnota nastavena na aktuální RSS URL, pokud je podcast importován.', + 'old_feed_url' => 'Stará URL kanálu', + 'partnership' => 'Partnerství', + 'partner_id' => 'ID', + 'partner_link_url' => 'URL odkazu', + 'partner_image_url' => 'URL obrázku', + 'partner_id_hint' => 'Vaše vlastní partnerské ID', + 'partner_link_url_hint' => 'Generická adresa partnera', + 'partner_image_url_hint' => 'Generická adresa obrázku partnera', + 'block' => 'Podcast by měl být skrytý před veřejnými katalogy', + 'block_hint' => + 'Zobrazit nebo skrýt stav podcastu: přepnutí zabraňuje tomu, aby se celý podcast objevil v Apple Podcasts, Google Podcasts, a všech aplikacích třetích stran, které stahují seriály z těchto adresářů. (Nezaručeno)', + 'complete' => 'Podcast nebude mít nové epizody', + 'lock' => 'Zabránit kopírování podcastu', + 'lock_hint' => + 'Účelem je sdělit ostatním platformám podcastu, zda mohou tento kanál importovat. Hodnota ano znamená, že jakýkoli pokus o import tohoto kanálu do nové platformy by měl být zamítnut.', + 'submit_create' => 'Vytvořit podcast', + 'submit_edit' => 'Uložit podcast', + ], + 'category_options' => [ + 'uncategorized' => 'bez kategorie', + 'arts' => 'Umění', + 'business' => 'Byznys', + 'comedy' => 'Komedie', + 'education' => 'Vzdělání', + 'fiction' => 'Fikce', + 'government' => 'Vláda', + 'health_and_fitness' => 'Zdraví a fitness', + 'history' => 'Historie', + 'kids_and_family' => 'Děti a rodina', + 'leisure' => 'Volný čas', + 'music' => 'Hudba', + 'news' => 'Novinky', + 'religion_and_spirituality' => 'Náboženství a spiritualita', + 'science' => 'Věda', + 'society_and_culture' => 'Společnost a kultura', + 'sports' => 'Sport', + 'technology' => 'Technologie', + 'true_crime' => 'Skutečný zločin', + 'tv_and_film' => 'TV a film', + 'books' => 'Knihy', + 'design' => 'Design', + 'fashion_and_beauty' => 'Móda a Krása', + 'food' => 'Jídlo', + 'performing_arts' => 'Umělecké vystoupení', + 'visual_arts' => 'Vizuální umění', + 'careers' => 'Kariéra', + 'entrepreneurship' => 'Podnikání', + 'investing' => 'Investice', + 'management' => 'Management', + 'marketing' => 'Marketing', + 'non_profit' => 'Neziskovky', + 'comedy_interviews' => 'Komední rozhovory', + 'improv' => 'Improvizace', + 'stand_up' => 'Standup', + 'courses' => 'Learn-paths (spůsob učení)', + 'how_to' => 'Návody', + 'language_learning' => 'Studium jazyků', + 'self_improvement' => 'Sebezdokonalování', + 'comedy_fiction' => 'Komediální fikce', + 'drama' => 'Drama', + 'science_fiction' => 'Sci-Fi', + 'alternative_health' => 'Alternativní medicína', + 'fitness' => 'Zdraví', + 'medicine' => 'Medicína', + 'mental_health' => 'Duševní zdraví', + 'nutrition' => 'Výživa', + 'sexuality' => 'Sexualita', + 'education_for_kids' => 'Vzdělávání pro děti', + 'parenting' => 'Rodičovství', + 'pets_and_animals' => 'Zvířata a mazlíčci', + 'stories_for_kids' => 'Příběhy pro děti', + 'animation_and_manga' => 'Anime a manga', + 'automotive' => 'Automobily', + 'aviation' => 'Letectví', + 'crafts' => 'Výroba', + 'games' => 'Hry', + 'hobbies' => 'Koníčky', + 'home_and_garden' => 'Dům a zahrada', + 'video_games' => 'Videohry', + 'music_commentary' => 'Hudební komentář', + 'music_history' => 'Historie hudby', + 'music_interviews' => 'Hudební rozhovory', + 'business_news' => 'Obchodní novinky', + 'daily_news' => 'Denní zprávy', + 'entertainment_news' => 'Zábavné novinky', + 'news_commentary' => 'Komentář novinek', + 'politics' => 'Politika', + 'sports_news' => 'Sportovní zprávy', + 'tech_news' => 'Technické novinky', + 'buddhism' => 'Budhismus', + 'christianity' => 'Křesťanství', + 'hinduism' => 'Hinduismus', + 'islam' => 'Islám', + 'judaism' => 'Židovství', + 'religion' => 'Náboženství', + 'spirituality' => 'Duchovnost', + 'astronomy' => 'Astronomie', + 'chemistry' => 'Chemie', + 'earth_sciences' => 'Vědy o Zemi', + 'life_sciences' => 'Vědy o životě', + 'mathematics' => 'Matematika', + 'natural_sciences' => 'Přírodní vědy', + 'nature' => 'Příroda', + 'physics' => 'Fyzika', + 'social_sciences' => 'Společenské vědy', + 'documentary' => 'Dokumenty', + 'personal_journals' => 'Osobní deníky', + 'philosophy' => 'Filosofie', + 'places_and_travel' => 'Místa a cestování', + 'relationships' => 'Vztahy', + 'baseball' => 'Baseball', + 'basketball' => 'Basketbal', + 'cricket' => 'Kriket', + 'fantasy_sports' => 'Fantasy sporty', + 'football' => 'Fotbal', + 'golf' => 'Golf', + 'hockey' => 'Hokej', + 'rugby' => 'Rugby', + 'running' => 'Běh', + 'soccer' => 'Fotbal', + 'swimming' => 'Plavání', + 'tennis' => 'Tenis', + 'volleyball' => 'Volejbal', + 'wilderness' => 'Divočina', + 'wrestling' => 'Wrestling', + 'after_shows' => 'Po pořadu', + 'film_history' => 'Filmová historie', + 'film_interviews' => 'Filmové rozhovory', + 'film_reviews' => 'Filmové recenze', + 'tv_reviews' => 'Televizní recenze', + ], + 'publish_form' => [ + 'back_to_podcast_dashboard' => 'Zpět na nástěnku podcastu', + 'post' => 'Váš oznamovací příspěvek', + 'post_hint' => + "Napište zprávu pro oznámení zveřejnění vašeho podcastu. Zpráva bude zobrazena na domovské stránce vašeho podcastu.", + 'message_placeholder' => 'Napište zprávu…', + 'submit' => 'Publikovat', + 'publication_date' => 'Datum publikování', + 'publication_method' => [ + 'now' => 'Nyní', + 'schedule' => 'Naplánovat', + ], + 'scheduled_publication_date' => 'Plánované datum publikování', + 'scheduled_publication_date_hint' => + 'Vydání podcast můžete naplánovat nastavením data budoucího zveřejnění. Toto pole musí být formátováno jako YY-MM-DD HH:mm', + 'submit_edit' => 'Upravit publikování', + 'cancel_publication' => 'Zrušit publikování', + 'message_warning' => 'Nepsali jste zprávu pro váš příspěvek s oznámením!', + 'message_warning_hint' => 'Zpráva zvyšuje viditelnost na sociálních sítích, což má za následek lepší popularitu pro vaše podcasty.', + 'message_warning_submit' => 'Přesto publikovat', + ], + 'publication_status_banner' => [ + 'draft_mode' => 'režim konceptu', + 'not_published' => 'Tento podcast ještě není publikován.', + 'scheduled' => 'Tento podcast je naplánován na publikování {publication_date}.', + ], + 'delete_form' => [ + 'disclaimer' => + "Smazání podcastu smaže všechny epizody, mediální soubory, příspěvky a analytiky spojené s ními. Tato akce je nevratná, poté je nebudete moci získat zpět.", + 'understand' => 'Chápu, chci, aby byl podcast trvale odstraněn', + 'submit' => 'Smazat', + ], + 'by' => 'Od {publisher}', + 'season' => 'Série {seasonNumber}', + 'list_of_episodes_year' => 'Epizody v {year} ({episodeCount})', + 'list_of_episodes_season' => + 'Epizody série {seasonNumber} ({episodeCount})', + 'no_episode' => 'Nebyla nalezena žádná epizoda', + 'follow' => 'Sledovat', + 'followers' => '{numberOfFollowers, plural, + one {# sledující} + other {# sledující} + }', + 'posts' => '{numberOfPosts, plural, + one {# příspěvek} + other {# příspěvků} + }', + 'activity' => 'Aktivita', + 'episodes' => 'Epizody', + 'sponsor' => 'Sponzor', + 'funding_links' => 'Odkazy na financování {podcastTitle}', + 'find_on' => 'Najít {podcastTitle} na', + 'listen_on' => 'Poslouchat na', +]; diff --git a/modules/Admin/Language/cs/PodcastImport.php b/modules/Admin/Language/cs/PodcastImport.php new file mode 100644 index 00000000..a37d7724 --- /dev/null +++ b/modules/Admin/Language/cs/PodcastImport.php @@ -0,0 +1,37 @@ + + 'Tento postup může trvat dlouho. Vzhledem k tomu, že aktuální verze nezobrazuje žádný pokrok při spuštění, neuvidíte nic aktualizovaného, dokud nebude hotovo. V případě chyby timeoutu, zvýšte hodnotu `max_execution_time`.', + 'old_podcast_section_title' => 'Podcast k importu', + 'old_podcast_section_subtitle' => + 'Ujistěte se, že vlastníte práva pro tento podcast před jeho importem. Kopírování a vysílání bez řádných práv je pirátství a podléhá stíhání.', + 'imported_feed_url' => 'URL kanálu', + 'imported_feed_url_hint' => 'Zdroj musí být ve formátu XML nebo RSS.', + 'new_podcast_section_title' => 'Nový podcast', + 'advanced_params_section_title' => 'Pokročilá nastavení', + 'advanced_params_section_subtitle' => + 'Ponechte výchozí hodnoty, pokud nemáte žádnou představu o tom, k čemu jsou tato pole určena.', + 'slug_field' => 'Pole pro výpočet URL adresy epizody', + 'description_field' => + 'Zdrojové pole použité pro popis epizody / zobrazení poznámek', + 'force_renumber' => 'Vynutit přečíslování epizod', + 'force_renumber_hint' => + 'Toto použijte, pokud váš podcast nemá čísla epizody, ale přeje si je nastavit během importu.', + 'season_number' => 'Číslo série', + 'season_number_hint' => + 'Toto použijte, pokud váš podcast nemá číslo série, ale chce jej nastavit během importu. V opačném případě ponechte prázdné.', + 'max_episodes' => 'Maximální počet epizod k importu', + 'max_episodes_hint' => 'Nechte prázdné pro import všech epizod', + 'lock_import' => + 'Tento kanál je chráněn. Nemůžete jej importovat. Pokud jste vlastník, zrušte ochranu na zdrojové platformě.', + 'submit' => 'Importovat podcast', +]; diff --git a/modules/Admin/Language/cs/PodcastNavigation.php b/modules/Admin/Language/cs/PodcastNavigation.php new file mode 100644 index 00000000..1e8cbc66 --- /dev/null +++ b/modules/Admin/Language/cs/PodcastNavigation.php @@ -0,0 +1,42 @@ + 'Přejít na stránku podcastu', + 'rss_feed' => 'Kanál RSS', + 'dashboard' => 'Nástěnka podcastu', + 'podcast-view' => 'Domovská stránka', + 'podcast-edit' => 'Upravit podcast', + 'podcast-persons-manage' => 'Spravovat osoby', + 'podcast-imports' => 'Importy podcastu', + 'podcast-imports-sync' => 'Synchronizovat kanály', + 'episodes' => 'Epizody', + 'episode-list' => 'Všechny epizody', + 'episode-create' => 'Nová epizoda', + 'analytics' => 'Analytiky', + 'podcast-analytics' => 'Přehled diváků', + 'podcast-analytics-webpages' => 'Návštěvy webových stránek', + 'podcast-analytics-locations' => 'Místa', + 'podcast-analytics-unique-listeners' => 'Unikátní posluchači', + 'podcast-analytics-players' => 'Přehrávače', + 'podcast-analytics-listening-time' => 'Doba poslechu', + 'podcast-analytics-time-periods' => 'Časové období', + 'monetization' => 'Monetizace', + 'subscription-list' => 'Všechny odběry', + 'subscription-create' => 'Přidat odběr', + 'contributors' => 'Přispěvatelé', + 'contributor-list' => 'Všichni přispěvatelé', + 'contributor-add' => 'Přidat přispěvatele', + 'broadcast' => 'Vysílání', + 'platforms-podcasting' => 'Podcastovací aplikace', + 'platforms-social' => 'Sociální sítě', + 'platforms-funding' => 'Odkazy na financování', + 'podcast-monetization-other' => 'Ostatní', +]; diff --git a/modules/Admin/Language/cs/Settings.php b/modules/Admin/Language/cs/Settings.php new file mode 100644 index 00000000..080d7797 --- /dev/null +++ b/modules/Admin/Language/cs/Settings.php @@ -0,0 +1,58 @@ + 'Obecné nastavení', + 'instance' => [ + 'title' => 'Instalační soubor', + 'site_icon' => 'Ikona stránky', + 'site_icon_delete' => 'Odstranit ikonu stránky', + 'site_icon_hint' => 'Ikony stránky jsou to, co vidíte na kartách prohlížeče, v panelu záložek, a když přidáte webové stránky jako zkratku na mobilních zařízeních.', + 'site_icon_helper' => 'Ikona musí být čtvercová a alespoň 512px široká a vysoká.', + 'site_name' => 'Název stránky', + 'site_description' => 'Popis stránky', + 'submit' => 'Uložit', + 'editSuccess' => 'Instance byla úspěšně aktualizována!', + 'deleteIconSuccess' => 'Ikona stránek byla úspěšně odstraněna!', + ], + 'images' => [ + 'title' => 'Obrázky', + 'subtitle' => 'Zde můžete obnovit všechny obrázky na základě originálů, které byly nahrány. Použije se, pokud zjistíte, že některé obrázky chybí. Tato úloha může chvíli trvat.', + 'regenerate' => 'Obnovit obrázky', + 'regenerationSuccess' => 'Všechny obrázky byly úspěšně obnoveny!', + ], + 'housekeeping' => [ + 'title' => 'Úklid', + 'subtitle' => 'Spustí různé úklidové úkoly. Použijte tuto funkci, pokud někdy narazíte na problémy s mediálními soubory nebo integritou dat. Tyto úkoly mohou chvíli trvat.', + 'reset_counts' => 'Vynulovat počítadla', + 'reset_counts_helper' => 'Tato možnost přepočítá a resetuje všechny počty dat (počet sledovatelů, příspěvků, komentářů, …).', + 'rewrite_media' => 'Přepsat metadata médií', + 'rewrite_media_helper' => 'Tato možnost odstraní všechny nadbytečné mediální soubory a znovu je obnoví (obrázky, zvukové soubory, přepisy, kapitoly, …)', + 'rename_episodes_files' => 'Přejmenovat zvukové soubory epizody', + 'rename_episodes_files_hint' => 'Tato možnost přejmenuje všechny epizody zvukových souborů na náhodný řetězec znaků. Toto použijte pro opětovné skrytí, pokud uniklo URL jedné z vašich soukromých epizod.', + 'clear_cache' => 'Vymazat všechny mezipaměti', + 'clear_cache_helper' => 'Tato volba bude vyčistí redis mezipaměť nebo zapisovatelné soubory.', + 'run' => 'Spustit úklid', + 'runSuccess' => 'Úklid byl úspěšný!', + ], + 'theme' => [ + 'title' => 'Motiv', + 'accent_section_title' => 'Barevný tón', + 'accent_section_subtitle' => 'Vyberte barvu pro vzhled a dojem všech veřejných stránek', + 'pine' => 'Borovice', + 'crimson' => 'Purpurový', + 'amber' => 'Jantarový', + 'lake' => 'Jezero', + 'jacaranda' => 'Jacaranda', + 'onyx' => 'Onyx ', + 'submit' => 'Uložit', + 'setInstanceThemeSuccess' => 'Šablona byla úspěšně aktualizována!', + ], +]; diff --git a/modules/Admin/Language/cs/Soundbite.php b/modules/Admin/Language/cs/Soundbite.php new file mode 100644 index 00000000..e08a6e9c --- /dev/null +++ b/modules/Admin/Language/cs/Soundbite.php @@ -0,0 +1,31 @@ + [ + 'title' => 'Úryvky', + 'soundbite' => 'Úryvek', + ], + 'messages' => [ + 'createSuccess' => 'Úryvek byl úspěšně vytvořen!', + 'deleteSuccess' => 'Úryvek byl úspěšně odstraněn!', + ], + 'form' => [ + 'title' => 'Nový úryvek', + 'soundbite_title' => 'Název úryvku', + 'start_time' => 'Začátek v', + 'duration' => 'Doba trvání', + 'submit' => 'Vytvořit úryvek', + ], + 'play' => 'Přehrát úryvek', + 'stop' => 'Zastavit úryvek', + 'create' => 'Nový úryvek', + 'delete' => 'Smazat úryvek', +]; diff --git a/modules/Admin/Language/cs/User.php b/modules/Admin/Language/cs/User.php new file mode 100644 index 00000000..fb0b4fa1 --- /dev/null +++ b/modules/Admin/Language/cs/User.php @@ -0,0 +1,56 @@ + "Upravit role {username}", + 'forcePassReset' => 'Vynutit obnovení hesla', + 'ban' => 'Ban', + 'unban' => 'Odbanovat', + 'delete' => 'Smazat', + 'create' => 'Nový uživatel', + 'view' => "Informace o {username}", + 'all_users' => 'Všichni uživatelé', + 'list' => [ + 'user' => 'Uživatel', + 'roles' => 'Role', + 'banned' => 'Zabanován?', + ], + 'form' => [ + 'email' => 'E-mail', + 'username' => 'Uživatelské jméno', + 'password' => 'Heslo', + 'new_password' => 'Nové heslo', + 'roles' => 'Role', + 'permissions' => 'Oprávnění', + 'submit_create' => 'Vytvořit uživatele', + 'submit_edit' => 'Uložit', + 'submit_password_change' => 'Změnit!', + ], + 'roles' => [ + 'superadmin' => 'Super admin', + ], + 'messages' => [ + 'createSuccess' => + 'Uživatel byl úspěšně vytvořen! {username} bude požádán o obnovení hesla při prvním ověření.', + 'rolesEditSuccess' => + "Role {username} byly úspěšně aktualizovány.", + 'forcePassResetSuccess' => + '{username} bude požádán o obnovení hesla při příští návštěvě.', + 'banSuccess' => '{username} byl zabanován.', + 'unbanSuccess' => '{username} byl odbanován.', + 'editOwnerError' => + '{username} je vlastníkem instance, nemůžete upravit role.', + 'banSuperAdminError' => + '{username} je superadmin, ban superadmina asi neni to pravé ořechové…', + 'deleteSuperAdminError' => + '{username} je superadmin, ostranit jej neni dobrý nápad…', + 'deleteSuccess' => '{username} byl smazán.', + ], +]; diff --git a/modules/Admin/Language/cs/Validation.php b/modules/Admin/Language/cs/Validation.php new file mode 100644 index 00000000..bd619ec7 --- /dev/null +++ b/modules/Admin/Language/cs/Validation.php @@ -0,0 +1,17 @@ + + '{field} buď není obrázek, nebo není dostatečně široký nebo vysoký.', + 'is_image_ratio' => + '{field} buď není obrázek, nebo nemá správný poměr.', + 'is_json' => '{field} obsahuje neplatný JSON.', +]; diff --git a/modules/Admin/Language/cs/VideoClip.php b/modules/Admin/Language/cs/VideoClip.php new file mode 100644 index 00000000..2ac97c40 --- /dev/null +++ b/modules/Admin/Language/cs/VideoClip.php @@ -0,0 +1,72 @@ + [ + 'title' => 'Videoklipy', + 'status' => [ + 'label' => 'Stav', + 'queued' => 've frontě', + 'queued_hint' => 'Klip čeká na zpracování.', + 'pending' => 'čeká', + 'pending_hint' => 'Klip bude brzy vygenerován.', + 'running' => 'běží', + 'running_hint' => 'Vytváří se klip.', + 'failed' => 'selhalo', + 'failed_hint' => 'Klip nelze vygenerovat: skript selhal.', + 'passed' => 'prošel', + 'passed_hint' => 'Klip byl úspěšně vygenerován!', + ], + 'clip' => 'Klip', + 'duration' => 'Trvání úlohy', + ], + 'title' => 'Videoklip: {videoClipLabel}', + 'download_clip' => 'Stáhnout klip', + 'create' => 'Nový videoklip', + 'go_to_page' => 'Přejít na stránku klipu', + 'retry' => 'Opakovat generování klipu', + 'delete' => 'Odstranit klip', + 'logs' => 'Záznamy úloh', + 'messages' => [ + 'alreadyExistingError' => 'Videoklip, který se pokoušíte vytvořit, již existuje!', + 'addToQueueSuccess' => 'Videoklip byl přidán do fronty, čeká na vytvoření!', + 'deleteSuccess' => 'Videoklip byl úspěšně odstraněn!', + ], + 'format' => [ + 'landscape' => 'Na šířku', + 'portrait' => 'Na výšku', + 'squared' => 'Čtverec', + ], + 'form' => [ + 'title' => 'Nový videoklip', + 'params_section_title' => 'Parametry videoklipu', + 'clip_title' => 'Název klipu', + 'format' => [ + 'label' => 'Vyberte formát', + 'landscape_hint' => 'S poměrem 16:9 jsou videa na šířku skvělá pro PeerTube, YouTube a Vimeo.', + 'portrait_hint' => 'S poměrem 9:16 jsou videa na výšku skvělá pro TikTok, YouTube shorts a Instagram příběhy.', + 'squared_hint' => 'S poměrem 1:1 jsou čtvercová videa skvělá pro Mastodon, Facebook, Twitter a LinkedIn.', + ], + 'theme' => 'Vyberte šablonu', + 'start_time' => 'Začátek v', + 'duration' => 'Doba trvání', + 'trim_start' => 'Oříznout začátek', + 'trim_end' => 'Oříznout konec', + 'submit' => 'Vytvořit videoklip', + ], + 'requirements' => [ + 'title' => 'Chybějící požadavky', + 'missing' => 'Máte chybějící požadavky. Ujistěte se, že přidáte všechny požadované položky, aby bylo možné pro tuto epizodu vytvořit video!', + 'ffmpeg' => 'FFmpeg', + 'gd' => 'Graphics Draw (GD)', + 'freetype' => 'Freetype library pro GD', + 'transcript' => 'Soubor přepisu (.srt)', + ], +]; diff --git a/modules/Admin/Language/lt/AboutCastopod.php b/modules/Admin/Language/lt/AboutCastopod.php new file mode 100644 index 00000000..c0b50fc3 --- /dev/null +++ b/modules/Admin/Language/lt/AboutCastopod.php @@ -0,0 +1,22 @@ + 'Apie „Castopod“', + 'host_name' => 'Serverio vardas', + 'version' => '„Castopod“ versija', + 'php_version' => 'PHP versija', + 'os' => 'Operacinė sistema', + 'languages' => 'Kalbos', + 'update_database' => 'Atnaujinti duomenų bazę', + 'messages' => [ + 'databaseUpdateSuccess' => 'Duomenų bazė atnaujinta!', + ], +]; diff --git a/modules/Admin/Language/lt/Admin.php b/modules/Admin/Language/lt/Admin.php new file mode 100644 index 00000000..1b5cf166 --- /dev/null +++ b/modules/Admin/Language/lt/Admin.php @@ -0,0 +1,15 @@ + 'Administratoriaus skydelis', + 'welcome_message' => 'Sveiki, tai – administratoriaus skydelis!', + 'choose_interact' => 'Pasirinkite, kaip sąveikausite', +]; diff --git a/modules/Admin/Language/lt/Breadcrumb.php b/modules/Admin/Language/lt/Breadcrumb.php new file mode 100644 index 00000000..0c329961 --- /dev/null +++ b/modules/Admin/Language/lt/Breadcrumb.php @@ -0,0 +1,57 @@ + 'naršymo kelio elementas', + config('Admin') + ->gateway => 'Pradžia', + 'podcasts' => 'tinklalaidės', + 'episodes' => 'epizodai', + 'subscriptions' => 'prenumeratos', + 'contributors' => 'talkininkai', + 'pages' => 'puslapiai', + 'settings' => 'nuostatos', + 'theme' => 'apipavidalinimas', + 'about' => 'apie', + 'add' => 'pridėti', + 'new' => 'naujas', + 'edit' => 'taisyti', + 'persons' => 'asmenys', + 'publish' => 'skelbti', + 'publish-edit' => 'taisyti skelbimą', + 'publish-date-edit' => 'taisyti skelbimo datą', + 'unpublish' => 'nebeskelbti', + 'delete' => 'šalinti', + 'remove' => 'šalinti', + 'fediverse' => 'Fedivisata', + 'blocked-actors' => 'blokuojami naudotojai', + 'blocked-domains' => 'blokuojami domenai', + 'users' => 'naudotojai', + 'my-account' => 'mano paskyra', + 'change-password' => 'keisti slaptažodį', + 'imports' => 'importas', + 'sync-feeds' => 'sinchronizuoti srautus', + 'platforms' => 'platformos', + 'social' => 'socialiniai tinklai', + 'funding' => 'finansavimas', + 'monetization-other' => 'kiti monetizavimo būdai', + 'analytics' => 'analitika', + 'locations' => 'vietovės', + 'webpages' => 'interneto tinklalapiai', + 'unique-listeners' => 'unikalūs klausytojai', + 'players' => 'grotuvai', + 'listening-time' => 'klausymosi laikas', + 'time-periods' => 'laiko periodai', + 'soundbites' => 'įrašo ištraukos', + 'video-clips' => 'vaizdo klipai', + 'embed' => 'įtaisomasis grotuvas', + 'notifications' => 'pranešimai', + 'suspend' => 'sustabdyti', +]; diff --git a/modules/Admin/Language/lt/Charts.php b/modules/Admin/Language/lt/Charts.php new file mode 100644 index 00000000..30ae212e --- /dev/null +++ b/modules/Admin/Language/lt/Charts.php @@ -0,0 +1,41 @@ + 'Epizodų parsisiuntimai pagal tarnybą (pastarąją savaitę)', + 'by_player_weekly' => 'Epizodų parsisiuntimai pagal grotuvą (pastarąją savaitę)', + 'by_player_yearly' => 'Epizodų parsisiuntimai pagal grotuvą (pastaruosius metus)', + 'by_device_weekly' => 'Epizodų parsisiuntimai pagal įrenginį (pastarąją savaitę)', + 'by_os_weekly' => 'Epizodų parsisiuntimai pagal operacinę sistemą (pastarąją savaitę)', + 'podcast_by_region' => 'Epizodų parsisiuntimai pagal regioną (pastarąją savaitę)', + 'unique_daily_listeners' => 'Unikalūs klausytojai per dieną', + 'unique_monthly_listeners' => 'Unikalūs klausytojai per mėnesį', + 'by_browser' => 'Tinklalapių naudojimas pagal naršyklę (pastarąją savaitę)', + 'podcast_by_day' => 'Epizodų parsisiuntimai per dieną', + 'podcast_by_month' => 'Epizodų parsisiuntimai per mėnesį', + 'episode_by_day' => 'Epizodų parsisiuntimai per dieną (pirmas 60 dienų)', + 'episode_by_month' => 'Epizodų parsisiuntimai per mėnesį', + 'episodes_by_day' => + 'Pastarųjų 5 epizodų parsisiuntimai (pirmas 60 dienų)', + 'by_country_weekly' => 'Epizodų parsisiuntimai pagal šalį (pastarąją savaitę)', + 'by_country_yearly' => 'Epizodų parsisiuntimai pagal grotuvą (pastaruosius metus)', + 'by_domain_weekly' => 'Tinklalapių vizitai pagal šaltinį (pastarąją savaitę)', + 'by_domain_yearly' => 'Tinklalapių vizitai pagal šaltinį (pastaruosius metus)', + 'by_entry_page' => 'Tinklalapių vizitai pagal įėjimo tinklalapį (pastarąją savaitę)', + 'podcast_bots' => 'Robotai (siurbėlės)', + 'daily_listening_time' => 'Sukauptas perklausų laikas per dieną', + 'monthly_listening_time' => 'Sukauptas perklausų laikas per mėnesį', + 'by_weekday' => 'Pagal savaitės dieną (pastarąsias 60 dienų)', + 'by_hour' => 'Pagal paros laiką (pastarąsias 60 dienų)', + 'podcast_by_bandwidth' => 'Srauto naudojimas (MB) per dieną', + 'total_storage_by_month' => 'Saugyklos naudojimas (MB) per mėnesį', + 'total_bandwidth_by_month' => 'Srauto naudojimas (MB) per mėnesį', + 'total_bandwidth_by_month_limit' => 'Ribojama iki {totalBandwidth} per mėnesį', +]; diff --git a/modules/Admin/Language/lt/Common.php b/modules/Admin/Language/lt/Common.php new file mode 100644 index 00000000..bc166f7b --- /dev/null +++ b/modules/Admin/Language/lt/Common.php @@ -0,0 +1,52 @@ + 'Taip', + 'no' => 'Ne', + 'cancel' => 'Atsisakyti', + 'optional' => 'Neprivaloma', + 'more' => 'Plačiau', + 'no_data' => 'Duomenų nėra!', + 'close' => 'Užverti', + 'edit' => 'Taisyti', + 'copy' => 'Kopijuoti', + 'copied' => 'Nukopijuota!', + 'home' => 'Pradžia', + 'explicit' => 'Atviras', + 'powered_by' => 'Veikia {castopod} pagrindu', + 'actions' => 'Veiksmai', + 'pageInfo' => '{currentPage} puslapis iš {pageCount}', + 'go_back' => 'Grįžti', + 'forms' => [ + 'editor' => [ + 'write' => 'Rašyti', + 'preview' => 'Peržiūrėti', + 'help' => 'Patobulinta „markdown“', + ], + 'multiSelect' => [ + 'selectText' => 'Spustelėkite pasirinkti', + 'loadingText' => 'Įkeliama…', + 'noResultsText' => 'Rezultatų nerasta', + 'noChoicesText' => 'Galimų pasirinkimų nėra', + 'maxItemText' => 'Daugiau elementų pridėti negalima', + ], + 'upload_file' => 'Įkelti failą', + 'remote_url' => 'Nuotolinis URL', + 'save' => 'Įrašyti', + ], + 'play_episode_button' => [ + 'play' => 'Leisti', + 'playing' => 'Leidžiama', + ], + 'size_limit' => 'Leistinas dydis: iki {0}.', + 'choose_interact' => 'Pasirinkite, kaip sąveikausite', + 'view' => 'Rodymas', +]; diff --git a/modules/Admin/Language/lt/Contributor.php b/modules/Admin/Language/lt/Contributor.php new file mode 100644 index 00000000..a2b02c64 --- /dev/null +++ b/modules/Admin/Language/lt/Contributor.php @@ -0,0 +1,41 @@ + 'Tinklalaidės talkininkai', + 'view' => "{username} indėlis į „{podcastTitle}“", + 'add' => 'Pridėti talkininką', + 'add_contributor' => 'Pridėti „{0}“ talkininką', + 'edit_role' => 'Atnaujinti {0} rolę', + 'edit' => 'Taisyti', + 'remove' => 'Šalinti', + 'list' => [ + 'username' => 'Naudotojo vardas', + 'role' => 'Rolė', + ], + 'form' => [ + 'user' => 'Naudotojas', + 'user_placeholder' => 'Pasirinkite naudotoją…', + 'role' => 'Rolė', + 'role_placeholder' => 'Pasirinkite rolę…', + 'submit_add' => 'Pridėti talkininką', + 'submit_edit' => 'Atnaujinti rolę', + ], + 'roles' => [ + 'podcast_admin' => 'Tinklalaidės administratorius', + ], + 'messages' => [ + 'removeOwnerError' => "Tinklalaidės savininko pašalinti negalite!", + 'removeSuccess' => + '{username} pašalinta(s) iš „{podcastTitle}“', + 'alreadyAddedError' => + "Bandomas pridėti talkininkas jau ir taip pridėtas!", + ], +]; diff --git a/modules/Admin/Language/lt/Countries.php b/modules/Admin/Language/lt/Countries.php new file mode 100644 index 00000000..e3c49fb4 --- /dev/null +++ b/modules/Admin/Language/lt/Countries.php @@ -0,0 +1,264 @@ + 'Andora', + 'AE' => 'Jungtiniai Arabų Emyratai', + 'AF' => 'Afganistanas', + 'AG' => 'Antigva ir Barbuda', + 'AI' => 'Angilija', + 'AL' => 'Albanija', + 'AM' => 'Armėnija', + 'AO' => 'Angola', + 'AQ' => 'Antarktida', + 'AR' => 'Argentina', + 'AS' => 'Amerikos Samoa', + 'AT' => 'Austrija', + 'AU' => 'Australija', + 'AW' => 'Aruba', + 'AX' => 'Alandai', + 'AZ' => 'Azerbaidžanas', + 'BA' => 'Bosnija ir Hercegovina', + 'BB' => 'Barbadosas', + 'BD' => 'Bangladešas', + 'BE' => 'Belgija', + 'BF' => 'Burkina Fasas', + 'BG' => 'Bulgarija', + 'BH' => 'Bahreinas', + 'BI' => 'Burundis', + 'BJ' => 'Beninas', + 'BL' => 'San Bartelemis', + 'BM' => 'Bermuda', + 'BN' => 'Brunėjaus Darusalamas', + 'BO' => 'Bolivijos Daugiatautė Valstybė', + 'BQ' => 'Bonairė, Sint Eustatijus ir Saba', + 'BR' => 'Brazilija', + 'BS' => 'Bahamos', + 'BT' => 'Butanas', + 'BV' => 'Buvė sala', + 'BW' => 'Botsvana', + 'BY' => 'Baltarusija', + 'BZ' => 'Belizas', + 'CA' => 'Kanada', + 'CC' => 'Kokosų (Kilingo) salos', + 'CD' => 'Kongo Demokratinė Respublika', + 'CF' => 'Centrinės Afrikos Respublika', + 'CG' => 'Kongas', + 'CH' => 'Šveicarija', + 'CI' => "Dramblio Kaulo Krantas", + 'CK' => 'Kuko salos', + 'CL' => 'Čilė', + 'CM' => 'Kamerūnas', + 'CN' => 'Kinija', + 'CO' => 'Kolumbija', + 'CR' => 'Kosta Rika', + 'CU' => 'Kuba', + 'CV' => 'Žaliasis Kyšulys', + 'CW' => 'Kiurasao', + 'CX' => 'Kalėdų sala', + 'CY' => 'Kipras', + 'CZ' => 'Čekijos Respublika', + 'DE' => 'Vokietija', + 'DJ' => 'Džibutis', + 'DK' => 'Danija', + 'DM' => 'Dominika', + 'DO' => 'Dominikos Respublika', + 'DZ' => 'Alžyras', + 'EC' => 'Ekvadoras', + 'EE' => 'Estija', + 'EG' => 'Egiptas', + 'EH' => 'Vakarų Sachara', + 'ER' => 'Eritrėja', + 'ES' => 'Ispanija', + 'ET' => 'Etiopija', + 'FI' => 'Suomija', + 'FJ' => 'Fidžis', + 'FK' => 'Folklando (Malvinų) salos', + 'FM' => 'Mikronezijos Federacinės Valstijos', + 'FO' => 'Farerų salos', + 'FR' => 'Prancūzija', + 'GA' => 'Gabonas', + 'GB' => 'Jungtinė Karalystė', + 'GD' => 'Grenada', + 'GE' => 'Gruzija', + 'GF' => 'Prancūzijos Gviana', + 'GG' => 'Gernsis', + 'GH' => 'Gana', + 'GI' => 'Gibraltaras', + 'GL' => 'Grenlandija', + 'GM' => 'Gambija', + 'GN' => 'Gvinėja', + 'GP' => 'Gvadelupa', + 'GQ' => 'Pusiaujo Gvinėja', + 'GR' => 'Graikija', + 'GS' => 'Pietų Džordžijos ir Pietų Sandvičo salos', + 'GT' => 'Gvatemala', + 'GU' => 'Guamas', + 'GW' => 'Bisau Gvinėja', + 'GY' => 'Gajana', + 'HK' => 'Honkongas', + 'HM' => 'Herdo ir Makdonaldo salos', + 'HN' => 'Hondūras', + 'HR' => 'Kroatija', + 'HT' => 'Haitis', + 'HU' => 'Vengrija', + 'ID' => 'Indonezija', + 'IE' => 'Airija', + 'IL' => 'Izraelis', + 'IM' => 'Meno sala', + 'IN' => 'Indija', + 'IO' => 'Indijos Vandenyno Britų sritis', + 'IQ' => 'Irakas', + 'IR' => 'Irano Islamo Respublika', + 'IS' => 'Islandija', + 'IT' => 'Italija', + 'JE' => 'Džersis', + 'JM' => 'Jamaika', + 'JO' => 'Jordanija', + 'JP' => 'Japonija', + 'KE' => 'Kenija', + 'KG' => 'Kirgizija', + 'KH' => 'Kambodža', + 'KI' => 'Kiribatis', + 'KM' => 'Komorai', + 'KN' => 'Sent Kitsas ir Nevis', + 'KP' => "Korėjos Liaudies Demokratinė Respublika", + 'KR' => 'Korėjos Respublika', + 'KW' => 'Kuveitas', + 'KY' => 'Kaimanų salos', + 'KZ' => 'Kazachstanas', + 'LA' => "Laoso Liaudies Demokratinė Respublika", + 'LB' => 'Libanas', + 'LC' => 'Sent Lusija', + 'LI' => 'Lichtenšteinas', + 'LK' => 'Šri Lanka', + 'LR' => 'Liberija', + 'LS' => 'Lesotas', + 'LT' => 'Lietuva', + 'LU' => 'Liuksemburgas', + 'LV' => 'Latvija', + 'LY' => 'Libija', + 'MA' => 'Marokas', + 'MC' => 'Monakas', + 'MD' => 'Moldovos Respublika', + 'ME' => 'Juodkalnija', + 'MF' => 'San Martenas (Prancūzijos dalis)', + 'MG' => 'Madagaskaras', + 'MH' => 'Maršalo salos', + 'MK' => 'Šiaurės Makedonija', + 'ML' => 'Malis', + 'MM' => 'Mianmaras', + 'MN' => 'Mongolija', + 'MO' => 'Makao', + 'MP' => 'Marianos šiaurinės salos', + 'MQ' => 'Martinika', + 'MR' => 'Mauritanija', + 'MS' => 'Montseratas', + 'MT' => 'Malta', + 'MU' => 'Mauricijus', + 'MV' => 'Maldyvai', + 'MW' => 'Malavis', + 'MX' => 'Meksika', + 'MY' => 'Malaizija', + 'MZ' => 'Mozambikas', + 'N/A' => 'Netaikoma (vietinis IP…)', + 'NA' => 'Namibija', + 'NC' => 'Naujoji Kaledonija', + 'NE' => 'Nigeris', + 'NF' => 'Norfolko sala', + 'NG' => 'Nigerija', + 'NI' => 'Nikaragva', + 'NL' => 'Nyderlandai', + 'NO' => 'Norvegija', + 'NP' => 'Nepalas', + 'NR' => 'Nauru', + 'NU' => 'Niujė', + 'NZ' => 'Naujoji Zelandija', + 'OM' => 'Omanas', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PF' => 'Prancūzijos Polinezija', + 'PG' => 'Papua Naujoji Gvinėja', + 'PH' => 'Filipinai', + 'PK' => 'Pakistanas', + 'PL' => 'Lenkija', + 'PM' => 'Sen Pjeras ir Mikelonas', + 'PN' => 'Pitkernas', + 'PR' => 'Puerto Rikas', + 'PS' => 'Palestinos valstybė', + 'PT' => 'Portugalija', + 'PW' => 'Palau', + 'PY' => 'Paragvajus', + 'QA' => 'Kataras', + 'RE' => 'Reunjonas', + 'RO' => 'Rumunija', + 'RS' => 'Serbija', + 'RU' => 'Rusijos Federacija', + 'RW' => 'Ruanda', + 'SA' => 'Saudo Arabija', + 'SB' => 'Saliamono salos', + 'SC' => 'Seišeliai', + 'SD' => 'Sudanas', + 'SE' => 'Švedija', + 'SG' => 'Singapūras', + 'SH' => 'Šv. Elenos, Dangun Žengimo ir Tristano da Kunjos salos', + 'SI' => 'Slovėnija', + 'SJ' => 'Svalbardas ir Jan Majenas', + 'SK' => 'Slovakija', + 'SL' => 'Siera Leonė', + 'SM' => 'San Marinas', + 'SN' => 'Senegalas', + 'SO' => 'Somalis', + 'SR' => 'Surinamas', + 'SS' => 'Pietų Sudanas', + 'ST' => 'San Tomė ir Prinsipė', + 'SV' => 'Salvadoras', + 'SX' => 'Sin Martenas (Nyderalandų dalis)', + 'SY' => 'Sirijos Arabų Respublika', + 'SZ' => 'Svazilendas', + 'TC' => 'Terkso ir Kaikoso salos', + 'TD' => 'Čadas', + 'TF' => 'Prancūzijos Pietų Sritys', + 'TG' => 'Togas', + 'TH' => 'Tailandas', + 'TJ' => 'Tadžikija', + 'TK' => 'Tokelau', + 'TL' => 'Rytų Timoras', + 'TM' => 'Turkmėnija', + 'TN' => 'Tunisas', + 'TO' => 'Tonga', + 'TR' => 'Turkija', + 'TT' => 'Trinidadas ir Tobagas', + 'TV' => 'Tuvalu', + 'TW' => 'Taivanas, Kinijos provincija', + 'TZ' => 'Tanzanijos Jungtinė Respublika', + 'UA' => 'Ukraina', + 'UG' => 'Uganda', + 'UM' => 'Jungtinių Valstijų Mažosios pakraštinės salos', + 'US' => 'Jungtinės Amerikos Valstijos', + 'UY' => 'Urugvajus', + 'UZ' => 'Uzbekija', + 'VA' => 'Šventasis Sostas (Vatikano Miesto Valstybė)', + 'VC' => 'Sent Vinsentas ir Grenadinai', + 'VE' => 'Venesuelos Bolivaro Respublika', + 'VG' => 'Mergelių salos (Britų)', + 'VI' => 'Mergelių salos (JAV)', + 'VN' => 'Vietnamas', + 'VU' => 'Vanuatu', + 'WF' => 'Volisas ir Futūna', + 'WS' => 'Samoa', + 'YE' => 'Jemenas', + 'YT' => 'Majotas', + 'ZA' => 'Pietų Afrika', + 'ZM' => 'Zambija', + 'ZW' => 'Zimbabvė', +]; diff --git a/modules/Admin/Language/lt/Dashboard.php b/modules/Admin/Language/lt/Dashboard.php new file mode 100644 index 00000000..5e1ddd75 --- /dev/null +++ b/modules/Admin/Language/lt/Dashboard.php @@ -0,0 +1,28 @@ + 'Administratoriaus skydelis', + 'welcome_message' => 'Sveiki, tai – administratoriaus skydelis!', + 'podcasts' => [ + 'title' => 'Tinklalaidės', + 'not_found' => 'Nėra paskelbtų tinklalaidžių', + 'last_published' => 'Paskiausiai skelbta {lastPublicationDate}', + ], + 'episodes' => [ + 'title' => 'Epizodai', + 'not_found' => 'Nėra paskelbtų epizodų', + 'last_published' => 'Paskiausiai skelbta {lastPublicationDate}', + ], + 'storage' => [ + 'title' => 'Saugykla', + 'subtitle' => '{totalUploaded} iš {totalStorage}', + ], +]; diff --git a/modules/Admin/Language/lt/Episode.php b/modules/Admin/Language/lt/Episode.php new file mode 100644 index 00000000..60256a1e --- /dev/null +++ b/modules/Admin/Language/lt/Episode.php @@ -0,0 +1,227 @@ + '{seasonNumber} sezonas', + 'season_abbr' => 'S{seasonNumber}', + 'number' => '{episodeNumber} epizodas', + 'number_abbr' => 'Ep. {episodeNumber}', + 'season_episode' => '{seasonNumber} sezono {episodeNumber} epizodas', + 'season_episode_abbr' => 'S{seasonNumber}E{episodeNumber}', + 'number_of_comments' => '{numberOfComments, plural, + one {# komentaras} + few {# komentarai} + other {# komentarų} + }', + 'all_podcast_episodes' => 'Visi tinklalaidės epizodai', + 'back_to_podcast' => 'Grįžti į tinklalaidę', + 'edit' => 'Taisyti', + 'preview' => 'Peržiūrėti', + 'publish' => 'Paskelbti', + 'publish_edit' => 'Taisyti paskelbimą', + 'publish_date_edit' => 'Taisyti paskelbimo datą', + 'unpublish' => 'Nebeskelbti', + 'publish_error' => 'Šis epizodas jau paskelbtas.', + 'publish_edit_error' => 'Šis epizodas jau paskelbtas.', + 'publish_cancel_error' => 'Šis epizodas jau paskelbtas.', + 'publish_date_edit_error' => 'Šis epizodas dar nepaskelbtas, jo paskelbimo datos taisyti negalima.', + 'publish_date_edit_future_error' => 'Nurodyta epizodo paskelbimo data gali būti tik praeityje. Jei norite jį paskelbti vėliau, pirma nurodykite jo nebeskelbti.', + 'publish_date_edit_success' => 'Epizodo paskelbimo data sėkmingai pakeista!', + 'unpublish_error' => 'Šis epizodas dar nepaskelbtas.', + 'delete' => 'Šalinti', + 'go_to_page' => 'Eiti į puslapį', + 'create' => 'Pridėti epizodą', + 'publication_status' => [ + 'published' => 'Paskelbtas', + 'with_podcast' => 'Paskelbtas', + 'scheduled' => 'Suplanuotas', + 'not_published' => 'Nepaskelbtas', + ], + 'with_podcast_hint' => 'Bus paskelbtas kartu su tinklalaide', + 'list' => [ + 'search' => [ + 'placeholder' => 'Ieškoti epizodo', + 'clear' => 'Išvalyti paiešką', + 'submit' => 'Ieškoti', + ], + 'number_of_episodes' => '{numberOfEpisodes, plural, + one {# epizodas} + few {# epizodai} + other {# epizodų} + }', + 'episode' => 'Epizodas', + 'visibility' => 'Matomumas', + 'downloads' => 'Parsisiuntimai', + 'comments' => 'Komentarai', + 'actions' => 'Veiksmai', + ], + 'messages' => [ + 'createSuccess' => 'Epizodas sėkmingai sukurtas!', + 'editSuccess' => 'Epizodas sėkmingai atnaujintas!', + 'publishSuccess' => '{publication_status, select, + published {Epizodas sėkmingai paskelbtas!} + scheduled {Epizodo paskelbimo data numatyta sėkmingai.} + with_podcast {Epizodą planuojama paskelbti kartu su tinklalaide.} + other {Šis epizodas nepaskelbtas.} + }', + 'publishCancelSuccess' => 'Epizodo paskelbimas sėkmingai atšauktas!', + 'unpublishBeforeDeleteTip' => 'Prieš šalindami epizodą, turite atšaukti jo paskelbimą.', + 'scheduleDateError' => 'Turite nurodyti paskelbimo datą!', + 'deletePublishedEpisodeError' => 'Prieš pašalindami šį epizodą, atšaukite jo paskelbimą.', + 'deleteSuccess' => 'Epizodas sėkmingai pašalintas!', + 'deleteError' => 'Nepavyko pašalinti epizodo {type, select, + transcript {nuorašo} + chapters {skyrelių} + image {viršelio} + audio {garso įrašo} + other {daugialypės terpės} + }.', + 'deleteFileError' => 'Nepavyko pašalinti {type, select, + transcript {nuorašo} + chapters {skyrelių} + image {viršelio} + audio {garso įrašo} + other {daugialypės terpės} + } failo {file_key}. Jį galite pašalinti iš disko rankiniu būdu.', + 'sameSlugError' => 'Epizodas su tokiu nuorodiniu pavadinimu jau yra.', + ], + 'form' => [ + 'file_size_error' => + 'Jūsų įkeltas failas per didelis! Leistinas dydis yra iki {0}. Jei norite šį failą įkelti, savo PHP konfigūracijoje padidinkite `memory_limit`, `upload_max_filesize` ir `post_max_size` reikšmes, tada perleiskite saityno serverio tarnybą.', + 'audio_file' => 'Garso įrašas', + 'audio_file_hint' => 'Pasirinkite .mp3 arba .m4a garso įrašą.', + 'info_section_title' => 'Epizodo duomenys', + 'cover' => 'Epizodo viršelis', + 'cover_hint' => + 'Jei viršelio nenurodysite, bus naudojamas tinklalaidės viršelis.', + 'cover_size_hint' => 'Viršelis turi būti kvadratinis, bent 1400 taškų aukščio ir pločio.', + 'title' => 'Pavadinimas', + 'title_hint' => + 'Įveskite glaustą ir aiškų epizodo pavadinimą. Čia nerašykite epizodo ar sezono numerio.', + 'permalink' => 'Pastovi nuoroda', + 'season_number' => 'Sezonas', + 'episode_number' => 'Epizodas', + 'type' => [ + 'label' => 'Tipas', + 'full' => 'Visas', + 'full_hint' => 'Visas turinys (epizodas)', + 'trailer' => 'Anonsas', + 'trailer_hint' => 'Trumpas reklaminis įrašas, pristatantis šią laidą', + 'bonus' => 'Papildomas', + 'bonus_hint' => 'Papildomas laidos turinys (pavyzdžiui, įrašas „už kadro“ ar interviu su komanda) arba kitos laidos reklama', + ], + 'premium_title' => 'Premium', + 'premium' => 'Epizodas turi būti pasiekiamas tik premium prenumeratoriams', + 'parental_advisory' => [ + 'label' => 'Pastaba tėvams', + 'hint' => 'Ar epizode yra atviro turinio (necenzūrinės leksikos, nevaikiškų temų ar pan.)?', + 'undefined' => 'neapibrėžta', + 'clean' => 'Saugus', + 'explicit' => 'Atviras', + ], + 'show_notes_section_title' => 'Laidos pastabos', + 'show_notes_section_subtitle' => + 'Iki 4000 ženklų, rašykite aiškiai ir glaustai. Laidos pastabos gali padėti potencialiems klausytojams atrasti šį epizodą.', + 'description' => 'Aprašymas', + 'description_footer' => 'Aprašymo prierašas', + 'description_footer_hint' => + 'Šis tekstas bus pridedamas prie kiekvieno epizodo aprašymo. Tai – nebloga vieta, pavyzdžiui, sudėti nuorodoms į jūsų soc. tinklų profilius.', + 'additional_files_section_title' => 'Papildomi failai', + 'additional_files_section_subtitle' => + 'Šie failai gali būti naudojami kitų platformų geresnei jūsų klausytojų patirčiai suteikti. Išsamiau apie juos – čia: {podcastNamespaceLink}.', + 'location_section_title' => 'Vietovė', + 'location_section_subtitle' => 'Apie kokią vietovę yra šis epizodas?', + 'location_name' => 'Vietovės vardas ar adresas', + 'location_name_hint' => 'Vietovė gali būti tikra ar išgalvota', + 'transcript' => 'Nuorašas (subtitrai)', + 'transcript_hint' => 'Leidžiami tik .srt ir .vtt failai.', + 'transcript_download' => 'Parsisiųsti nuorašą', + 'transcript_file' => 'Nuorašo failas (.srt ar .vtt)', + 'transcript_remote_url' => 'Nuorašo URL adresas', + 'transcript_file_delete' => 'Šalinti nuorašo failą', + 'chapters' => 'Skyreliai', + 'chapters_hint' => 'Failas turi būti „JSON Chapters“ formatu.', + 'chapters_download' => 'Parsisiųsti skyrelius', + 'chapters_file' => 'Skyrelių failas', + 'chapters_remote_url' => 'Skyrelių failo URL adresas', + 'chapters_file_delete' => 'Šalinti skyrelių failą', + 'advanced_section_title' => 'Papildomi parametrai', + 'advanced_section_subtitle' => + 'Jeigu norite naudoti RSS gaires, kurių „Castopod“ neapdoroja, galite jas nustatyti čia.', + 'custom_rss' => 'Papildomos epizodo RSS gairės', + 'custom_rss_hint' => 'Tai bus įterpta į gairę.', + 'block' => 'Epizodas neturėtų būti matomas viešuosiuose kataloguose', + 'block_hint' => + 'Ribotas epizodo matomumas: įjungus šią parinktį, epizodas nebus matomas „Apple Podcasts“, „Google Podcasts“ ir kitose trečiųjų šalių programose, naudojančiose šių tarnybų katalogus (negarantuojama).', + 'submit_create' => 'Sukurti epizodą', + 'submit_edit' => 'Įrašyti epizodą', + ], + 'publish_form' => [ + 'back_to_episode_dashboard' => 'Grįžti į epizodų skydelį', + 'post' => 'Jūsų įrašas-anonsas', + 'post_hint' => + "Parašykite pranešimą, kuriuo anonsuosite šio epizodo išleidimą. Šis pranešimas bus ištransliuotas visiems jūsų sekėjams Fedivisatoje bei matomas jūsų tinklalaidės pradžios tinklalapyje.", + 'message_placeholder' => 'Parašykite savo pranešimą…', + 'publication_date' => 'Paskelbimo data', + 'publication_method' => [ + 'now' => 'Dabar', + 'schedule' => 'Suplanuoti', + 'with_podcast' => 'Paskelbti kartu su tinklalaide', + ], + 'scheduled_publication_date' => 'Suplanuota paskelbimo data', + 'scheduled_publication_date_clear' => 'Pašalinti paskelbimo datą', + 'scheduled_publication_date_hint' => + 'Galite suplanuoti epizodo paskelbimą pagal tvarkaraštį, nurodydami paskelbimo datą ateityje. Reikšmę turite įrašyti tokiu formatu: metai-mėnuo-diena valandos:minutės', + 'submit' => 'Paskelbti', + 'submit_edit' => 'Taisyti paskelbimą', + 'cancel_publication' => 'Atšaukti paskelbimą', + 'message_warning' => 'Neparašėte teksto savo įrašui-anonsui!', + 'message_warning_hint' => 'Parašę trumpą pranešimą, padidinsite epizodo matomumą ir klausytojų įsitraukimą.', + 'message_warning_submit' => 'Vis tiek paskelbti', + ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'Nauja paskelbimo data', + 'new_publication_date_hint' => 'Data turi būti praeityje.', + 'submit' => 'Taisyti paskelbimo datą', + ], + 'unpublish_form' => [ + 'disclaimer' => + "Nutraukdami epizodo skelbimą, pašalinsite visus su juo susijusius komentarus ir įrašus bei pašalinsite jį iš tinklalaidės RSS sklaidos kanalo.", + 'understand' => 'Suprantu, bet vis tiek noriu nutraukti epizodo skelbimą', + 'submit' => 'Nebeskelbti', + ], + 'delete_form' => [ + 'disclaimer' => + "Pašalinus epizodą, bus pašalinti ir visi su juo susieti daugialypės terpės failai, komentarai, vaizdo įrašai bei įrašo ištraukos.", + 'understand' => 'Suprantu, bet vis tiek noriu pašalinti epizodą', + 'submit' => 'Šalinti', + ], + 'embed' => [ + 'title' => 'Įtaisomasis grotuvas', + 'label' => + 'Pasirinkite akcento slapvą, nukopijuokite įtaisomąjį grotuvą į iškarpinę, tada įdėkite jį į savo svetainę.', + 'clipboard_iframe' => 'Kopijuoti įtaisomąjį grotuvą į iškarpinę', + 'clipboard_url' => 'Kopijuoti adresą į iškarpinę', + 'dark' => 'Tamsus', + 'dark-transparent' => 'Tamsus skaidrus', + 'light' => 'Šviesus', + 'light-transparent' => 'Šviesus skaidrus', + ], + 'publication_status_banner' => [ + 'draft_mode' => 'juodraščio veiksena', + 'text' => '{publication_status, select, + published {Šis epizodas dar nepaskelbtas.} + scheduled {Šį epizodą numatoma paskelbti {publication_date}.} + with_podcast {Šį epizodą numatoma paskelbti kartu su tinklalaide.} + other {Šis epizodas dar nepaskelbtas.} + }', + 'preview' => 'Peržiūra', + ], +]; diff --git a/modules/Admin/Language/lt/EpisodeNavigation.php b/modules/Admin/Language/lt/EpisodeNavigation.php new file mode 100644 index 00000000..0010724b --- /dev/null +++ b/modules/Admin/Language/lt/EpisodeNavigation.php @@ -0,0 +1,23 @@ + 'Parodyti epizodo tinklalapį', + 'dashboard' => 'Epizodų skydelis', + 'episode-view' => 'Pradžia', + 'episode-edit' => 'Taisyti epizodą', + 'episode-persons-manage' => 'Tvarkyti asmenis', + 'embed-add' => 'Įtaisomasis grotuvas', + 'clips' => 'Klipai', + 'video-clips-list' => 'Vaizdo klipai', + 'video-clips-create' => 'Naujas vaizdo klipas', + 'soundbites-list' => 'įrašo ištraukos', + 'soundbites-create' => 'Nauja įrašo ištrauka', +]; diff --git a/modules/Admin/Language/lt/Fediverse.php b/modules/Admin/Language/lt/Fediverse.php new file mode 100644 index 00000000..5db088ea --- /dev/null +++ b/modules/Admin/Language/lt/Fediverse.php @@ -0,0 +1,32 @@ + [ + 'actorNotFound' => 'Paskyra nerasta!', + 'blockActorSuccess' => 'Paskyra {actor} užblokuota!', + 'unblockActorSuccess' => 'Paskyra atblokuota!', + 'blockDomainSuccess' => 'Domenas {domain} užblokuotas!', + 'unblockDomainSuccess' => 'Domenas {domain} atblokuotas!', + ], + 'blocked_actors' => 'Blokuojamos paskyros', + 'blocked_domains' => 'Blokuojami domenai', + 'block_lists_form' => [ + 'handle' => 'Paskyros vardas', + 'handle_hint' => 'Įveskite paskyrą @naudotojas@domenas formatu.', + 'domain' => 'Domeno vardas', + 'submit' => 'Blokuoti!', + ], + 'list' => [ + 'actor' => 'Paskyra', + 'domain' => 'Domeno vardas', + 'unblock' => 'Atblokuoti', + ], +]; diff --git a/modules/Admin/Language/lt/Home.php b/modules/Admin/Language/lt/Home.php new file mode 100644 index 00000000..b6332546 --- /dev/null +++ b/modules/Admin/Language/lt/Home.php @@ -0,0 +1,14 @@ + 'Visos tinklalaidės', + 'no_podcast' => 'Tinklalaidžių nerasta', +]; diff --git a/modules/Admin/Language/lt/Install.php b/modules/Admin/Language/lt/Install.php new file mode 100644 index 00000000..710652e2 --- /dev/null +++ b/modules/Admin/Language/lt/Install.php @@ -0,0 +1,61 @@ + 'Rankinis konfigūravimas', + 'manual_config_subtitle' => + 'Sukurkite failą `.env` su naudotinais nustatymais ir įkelkite šį tinklalapį iš naujo diegimui pratęsti.', + 'form' => [ + 'instance_config' => 'Serverio konfigūracija', + 'hostname' => 'Serverio vardas', + 'media_base_url' => 'Daugialypės terpės failų bazinis URL', + 'media_base_url_hint' => + 'Jei naudojatės CDN ir/ar išorine srauto analizės tarnyba, galite tai nurodyti čia.', + 'admin_gateway' => 'Administratoriaus skydelio adresas', + 'admin_gateway_hint' => + 'Kelias administratoriaus skydeliui pasiekti (pvz., https://example.com/cp-admin). Numatytuoju atveju naudojamas kelias „cp-admin“, tačiau mes rekomenduojame jį pasikeisti saugumo sumetimais.', + 'auth_gateway' => 'Autentifikacijos tinklalapių adresas', + 'auth_gateway_hint' => + 'Kelias autentifikacijos tinklalapiams pasiekti (pvz., https://example.com/cp-auth). Numatytuoju atveju naudojamas kelias „cp-auth“, tačiau mes rekomenduojame jį pasikeisti saugumo sumetimais.', + 'database_config' => 'Duomenų bazės konfigūracija', + 'database_config_hint' => + '„Castopod“ reikia prisijungti prie jūsų „MySQL“ ar „MariaDB“ duomenų bazės. Jei neturite prisijungimo prie duomenų bazės duomenų, kreipkitės į savo serverio administratorių.', + 'db_hostname' => 'DB serveris', + 'db_name' => 'DB pavadinimas', + 'db_username' => 'DB naudotojo vardas', + 'db_password' => 'DB slaptažodis', + 'db_prefix' => 'DB prefiksas', + 'db_prefix_hint' => + "„Castopod“ lentelių pavadinimų prefiksas. Jei nežinote, kas tai – palikite kas įrašyta.", + 'cache_config' => 'Podėlio konfigūracija', + 'cache_config_hint' => + 'Pasirinkite ketinamą naudoti podėlio tipą. Jei nežinote, kas tai – palikite numatytąjį parinktį.', + 'cache_handler' => 'Podėlio tipas', + 'cacheHandlerOptions' => [ + 'file' => 'Failas', + 'redis' => '„Redis“', + 'predis' => '„Predis“', + ], + 'next' => 'Toliau', + 'submit' => 'Užbaigti diegimą', + 'create_superadmin' => 'Susikurkite savo superadministratoriaus paskyrą', + 'email' => 'El. paštas', + 'username' => 'Naudotojo vardas', + 'password' => 'Slaptažodis', + ], + 'messages' => [ + 'createSuperAdminSuccess' => + 'Jūsų superadministratoriaus paskyra sukurta sėkmingai. Prisijunkite ir kurkite savo pirmąją tinklalaidę!', + 'databaseConnectError' => + '„Castopod“ nepavyko prisijungti prie nurodytos duomenų bazės. Pakoreguokite DB konfigūraciją ir bandykite dar kartą.', + 'writeError' => + "Nepavyko sukurti/rašyti į jūsų `.env` failą. Užpildykite jį rankiniu būdu, pasinaudodami šabloniniu `.env.example` failu iš „Castopod“ paketo.", + ], +]; diff --git a/modules/Admin/Language/lt/MyAccount.php b/modules/Admin/Language/lt/MyAccount.php new file mode 100644 index 00000000..fefc5fd6 --- /dev/null +++ b/modules/Admin/Language/lt/MyAccount.php @@ -0,0 +1,18 @@ + 'Mano paskyros duomenys', + 'changePassword' => 'Keisti mano slaptažodį', + 'messages' => [ + 'wrongPasswordError' => "Įvedėte blogą slaptažodį, pabandykite dar kartą.", + 'passwordChangeSuccess' => 'Slaptažodis sėkmingai pakeistas!', + ], +]; diff --git a/modules/Admin/Language/lt/Navigation.php b/modules/Admin/Language/lt/Navigation.php new file mode 100644 index 00000000..1253a76b --- /dev/null +++ b/modules/Admin/Language/lt/Navigation.php @@ -0,0 +1,44 @@ + 'Įjungti/išjungti šoninę juostą', + 'go_to_website' => 'Eiti į svetainę', + 'go_to_admin' => 'Eiti į administravimą', + 'not-authorized' => 'Trūksta teisių', + 'dashboard' => 'Skydelis', + 'admin' => 'Pradžia', + 'podcasts' => 'Tinklalaidės', + 'podcast-list' => 'Visos tinklalaidės', + 'podcast-create' => 'Nauja tinklalaidė', + 'all-podcast-imports' => 'Visos importuojamos tinklalaidės', + 'podcast-imports-add' => 'Importuoti tinklalaidę', + 'persons' => 'Asmenys', + 'person-list' => 'Visi asmenys', + 'person-create' => 'Naujas asmuo', + 'fediverse' => 'Fedivisata', + 'fediverse-blocked-actors' => 'Blokuojamos paskyros', + 'fediverse-blocked-domains' => 'Blokuojami domenai', + 'users' => 'Naudotojai', + 'user-list' => 'Visi naudotojai', + 'user-create' => 'Naujas naudotojas', + 'pages' => 'Tinklalapiai', + 'page-list' => 'Visi tinklalapiai', + 'page-create' => 'Naujas tinklalapis', + 'settings' => 'Nuostatos', + 'settings-general' => 'Bendrosios', + 'settings-theme' => 'Apipavidalinimas', + 'admin-about' => 'Apie', + 'account' => [ + 'my-account' => 'Mano paskyra', + 'change-password' => 'Keisti slaptažodį', + 'logout' => 'Atsijungti', + ], +]; diff --git a/modules/Admin/Language/lt/Notifications.php b/modules/Admin/Language/lt/Notifications.php new file mode 100644 index 00000000..b79b61cf --- /dev/null +++ b/modules/Admin/Language/lt/Notifications.php @@ -0,0 +1,19 @@ + 'Prranešimai', + 'reply' => '{actor_username} atsakė į jūsų įrašą', + 'favourite' => '{actor_username} pamėgo jūsų įrašą', + 'reblog' => '{actor_username} pasidalino jūsų įrašu', + 'follow' => '{actor_username} pradėjo jus sekti', + 'no_notifications' => 'Pranešimų nėra', + 'mark_all_as_read' => 'Žymėti visus kaip skaitytus', +]; diff --git a/modules/Admin/Language/lt/Page.php b/modules/Admin/Language/lt/Page.php new file mode 100644 index 00000000..b66367c1 --- /dev/null +++ b/modules/Admin/Language/lt/Page.php @@ -0,0 +1,30 @@ + 'Grįžti į pradžią', + 'page' => 'Tinklalapis', + 'all_pages' => 'Visi tinklalapiai', + 'create' => 'Naujas tinklalapis', + 'go_to_page' => 'Eiti į tinklalapį', + 'edit' => 'Taisyti tinklalapį', + 'delete' => 'Šalinti tinklalapį', + 'form' => [ + 'title' => 'Pavadinimas', + 'permalink' => 'Pastovi nuoroda', + 'content' => 'Turinys', + 'submit_create' => 'Kurti tinklalapį', + 'submit_edit' => 'Įrašyti', + ], + 'messages' => [ + 'createSuccess' => 'Tinklalapis „{pageTitle}“ sėkmingai sukurtas!', + 'editSuccess' => 'Tinklalapis sėkmingai atnaujintas!', + ], +]; diff --git a/modules/Admin/Language/lt/Pager.php b/modules/Admin/Language/lt/Pager.php new file mode 100644 index 00000000..22c8a7ad --- /dev/null +++ b/modules/Admin/Language/lt/Pager.php @@ -0,0 +1,21 @@ + 'Tinklalapių naršymas', + 'first' => 'Pirmas', + 'previous' => 'Ankstesnis', + 'next' => 'Kitas', + 'last' => 'Paskutinis', + 'older' => 'Senesnis', + 'newer' => 'Naujesnis', + 'invalidTemplate' => 'Puslapiavimo šablonas „{0}“ negalimas.', + 'invalidPaginationGroup' => 'Puslapiavimo grupė „{0}“ negalima.', +]; diff --git a/modules/Admin/Language/lt/Person.php b/modules/Admin/Language/lt/Person.php new file mode 100644 index 00000000..d8e402e7 --- /dev/null +++ b/modules/Admin/Language/lt/Person.php @@ -0,0 +1,65 @@ + 'Asmenys', + 'all_persons' => 'Visi asmenys', + 'no_person' => 'Nieko nerasta!', + 'create' => 'Kurti asmenį', + 'view' => 'Rodyti asmenį', + 'edit' => 'Taisyti asmenį', + 'delete' => 'Šalinti asmenį', + 'messages' => [ + 'createSuccess' => 'Asmuo sėkmingai sukurtas!', + 'editSuccess' => 'Asmuo sėkmingai atnaujintas!', + 'deleteSuccess' => 'Asmuo pašalintas!', + ], + 'form' => [ + 'avatar' => 'Avataras', + 'avatar_size_hint' => + 'Avataras turi būti kvadratinis ir bent 400 taškų aukščio ir pločio.', + 'full_name' => 'Visas vardas', + 'full_name_hint' => 'Tai – asmens vardas ir pavardė arba pseudonimas.', + 'unique_name' => 'Unikalus vardas', + 'unique_name_hint' => 'Naudojamas URL adresuose', + 'information_url' => 'Informacinis URL', + 'information_url_hint' => + 'Su asmeniu susijusio ištekliaus, pavyzdžiui, jo svetainės ar profilio socialiniame tinkle, URL adresas.', + 'submit_create' => 'Sukurti asmenį', + 'submit_edit' => 'Įrašyti asmenį', + ], + 'podcast_form' => [ + 'title' => 'Tvarkyti asmenis', + 'add_section_title' => 'Pridėti asmenis prie šios tinklalaidės', + 'add_section_subtitle' => 'Galite pasirinkti keletą asmenų ir jų rolių.', + 'persons' => 'Asmenys', + 'persons_hint' => + 'Tą pačią rolę gali atlikti vienas ar keli asmenys. Asmenys turi būti jau sukurti sistemoje.', + 'roles' => 'Rolės', + 'roles_hint' => + 'Asmeniui galite parinkti vieną ar kelias roles, ar neparinkti jokios rolės.', + 'submit_add' => 'Pridėti asmenį(-is)', + 'remove' => 'Šalinti', + ], + 'episode_form' => [ + 'title' => 'Tvarkyti asmenis', + 'add_section_title' => 'Pridėti asmenis prie šio epizodo', + 'add_section_subtitle' => 'Galite pasirinkti keletą asmenų ir rolių.', + 'persons' => 'Asmenys', + 'persons_hint' => + 'Toje pačioje rolėje gali dalyvauti vienas ar keli asmenys. Asmenys turi būti jau sukurti sistemoje.', + 'roles' => 'Rolės', + 'roles_hint' => + 'Asmeniui galite parinkti vieną ar kelias roles, ar neparinkti jokios rolės.', + 'submit_add' => 'Pridėti asmenį(-is)', + 'remove' => 'Šalinti', + ], + 'credits' => 'Autoriai ir padėkos', +]; diff --git a/modules/Admin/Language/lt/Platforms.php b/modules/Admin/Language/lt/Platforms.php new file mode 100644 index 00000000..24046658 --- /dev/null +++ b/modules/Admin/Language/lt/Platforms.php @@ -0,0 +1,43 @@ + [ + 'podcasting' => 'Tinklalaidžių skelbimo platformos', + 'social' => 'Socialiniai tinklai', + 'funding' => 'Rėmimo nuorodos', + ], + 'website' => 'Svetainė', + 'home_url' => 'Eiti į „{platformName}“ svetainę', + 'register' => 'Registruoti', + 'submit_url' => 'Registruoti jūsų tinklalaidę į „platformName}“', + 'your_link' => 'Jūsų nuoroda', + 'your_id' => [ + 'podcasting' => 'Jūsų ID', + 'social' => 'Jūsų ID', + 'funding' => 'Jūsų raginimas veikti', + ], + 'your_cta' => 'Jūsų raginimas veikti', + 'visible' => 'Rodyti tinklalaidės pradžios tinklalapyje?', + 'on_embed' => 'Rodyti įtaisomajame grotuve?', + 'remove' => 'Pašalinti „{platformName}“', + 'submit' => 'Įrašyti', + 'messages' => [ + 'updateSuccess' => 'Platformų nuorodos sėkmingai atnaujintos!', + 'removeLinkSuccess' => 'Platformos nuoroda pašalinta.', + 'removeLinkError' => + 'Platformos nuorodos pašalinti nepavyko. Pabandykite dar kartą.', + ], + 'description' => [ + 'podcasting' => 'Tinklalaidės ID šioje platformoje', + 'social' => 'Tinklalaidės paskyros ID šioje platformoje', + 'funding' => 'Raginimo veikti žinutė', + ], +]; diff --git a/modules/Admin/Language/lt/Podcast.php b/modules/Admin/Language/lt/Podcast.php new file mode 100644 index 00000000..17fbb30a --- /dev/null +++ b/modules/Admin/Language/lt/Podcast.php @@ -0,0 +1,333 @@ + 'Visos tinklalaidės', + 'no_podcast' => 'Jokių tinklalaidžių nerasta!', + 'create' => 'Kurti tinklalaidę', + 'import' => 'Importuoti tinklalaidę', + 'all_imports' => 'Importuojamos tinklalaidės', + 'new_episode' => 'Naujas epizodas', + 'view' => 'Rodyti tinklalaidę', + 'edit' => 'Taisyti tinklalaidę', + 'publish' => 'Paskelbti tinklalaidę', + 'publish_edit' => 'Taisyti paskelbimą', + 'delete' => 'Šalinti tinklalaidę', + 'see_episodes' => 'Rodyti epizodus', + 'see_contributors' => 'Rodyti talkininkus', + 'monetization_other' => 'Kiti monetizavimo būdai', + 'go_to_page' => 'Eiti į tinklalapį', + 'latest_episodes' => 'Paskiausi epizodai', + 'see_all_episodes' => 'Rodyti visus epizodus', + 'draft' => 'Juodraštis', + 'messages' => [ + 'createSuccess' => 'Tinklalaidė sėkmingai sukurta!', + 'editSuccess' => 'Tinklalaidė sėkmingai atnaujinta!', + 'importSuccess' => 'Tinklalaidė sėkmingai importuota!', + 'deleteSuccess' => 'Tinklalaidė @{podcast_handle} sėkmingai pašalinta!', + 'deletePodcastMediaError' => 'Nepavyko pašalinti tinklalaidės {type, select, + cover {viršelio} + banner {reklamjuostės} + other {medijos failo} + }.', + 'deleteEpisodeMediaError' => 'Nepavyko pašalinti tinklalaidės epizodo {episode_slug} {type, select, + transcript {nuorašo} + chapters {skyrelių failo} + image {viršelio} + audio {garso įrašo} + other {medijos failo} + }.', + 'deletePodcastMediaFolderError' => 'Nepavyko pašalinti tinklalaidės medijos aplanko {folder_path}. Jį iš disko galite pašalinti rankiniu būdu.', + 'podcastFeedUpdateSuccess' => 'Sėkmingai atnaujinta: {number_of_new_episodes, plural, + one {# epizodas pridėtas} + other {# epizodai pridėti} + other {# epizodų pridėta} + } prie tinklalaidės!', + 'podcastFeedUpToDate' => 'Tinklalaidė jau yra atnaujinta.', + 'publishError' => 'Ši tinklalaidė arba jau paskelbta, arba jos paskelbimas suplanuotas.', + 'publishEditError' => 'Ši tinklalaidė nesuplanuota paskelbimui.', + 'publishCancelSuccess' => 'Tinklalaidės paskelbimas sėkmingai atšauktas!', + 'scheduleDateError' => 'Turite nurodyti paskelbimo datą!', + ], + 'form' => [ + 'identity_section_title' => 'Tinklalaidės identitetas', + 'identity_section_subtitle' => 'Šie laukai jums padės išsiskirti.', + 'fediverse_section_title' => 'Identitetas fedivisatoje', + + 'cover' => 'Tinklalaidės viršelis', + 'cover_size_hint' => 'Viršelis turi būti kvadratinis, bent 1400 taškų aukščio ir pločio.', + 'banner' => 'Tinklalaidės reklamjuostė', + 'banner_size_hint' => 'Reklamjuostės kraštinių santykis turi būti 3∶1, o plotis – bent 1500 taškų.', + 'banner_delete' => 'Šalinti tinklalaidės reklamjuostę', + 'title' => 'Pavadinimas', + 'handle' => 'Paskyros vardas', + 'handle_hint' => + 'Naudojamas tinklalaidei identifikuoti. Galima naudoti didžiąsias ir mažąsias raides, skaitmenis ir apatinio brūkšnio ženklą.', + 'type' => [ + 'label' => 'Tipas', + 'episodic' => 'Epizodinė', + 'episodic_hint' => 'Jei epizodus galima klausyti nepaisant konkrečios tvarkos. Naujausi epizodai bus pateikiami viršuje.', + 'serial' => 'Nuosekli', + 'serial_hint' => 'Jei epizodai turėtų būti klausomi iš eilės. Epizodai bus rikiuojami didėjančia tvarka pagal eilės numerį.', + ], + 'medium' => [ + 'label' => 'Turinio tipas', + 'hint' => 'Turinio tipas nurodomas `podcast:medium` RSS gairėje. Keičiant šią reikšmę, gali keistis sklaidos kanalo turinys pateikimas grotuvuose.', + 'podcast' => 'Tinklalaidė', + 'podcast_hint' => 'Nurodo, jog sklaidos kanalo turinys yra tinklalaidė.', + 'music' => 'Muzika', + 'music_hint' => 'Sklaidos kanalą sudaro muzika, sugrupuota albumais, kur kiekvienas elementas – tai kūrinys albume.', + 'audiobook' => 'Audioknyga', + 'audiobook_hint' => 'Specifinio tipo garso įrašai, pateikiami su vienu įrašu kanale, arba kai kiekvienas įrašas yra atskiras knygos skyrius.', + ], + 'description' => 'Aprašymas', + 'classification_section_title' => 'Klasifikacija', + 'classification_section_subtitle' => + 'Šių laukų nurodytos reikšmės turės įtakos jūsų galimai auditorijai ir konkurencijai.', + 'language' => 'Kalba', + 'category' => 'Kategorija', + 'category_placeholder' => 'Pasirinkite kategoriją…', + 'other_categories' => 'Kitos kategorijos', + 'parental_advisory' => [ + 'label' => 'Pastaba tėvams', + 'hint' => 'Ar yra atviro turinio?', + 'undefined' => 'neapibrėžta', + 'clean' => 'Saugi', + 'explicit' => 'Atvira', + ], + 'author_section_title' => 'Autorius', + 'author_section_subtitle' => 'Kas valdo šią tinklalaidę?', + 'owner_name' => 'Savininkas', + 'owner_name_hint' => + 'Tik administracinėms reikmėms. Matoma viešame RSS sklaidos kanale.', + 'owner_email' => 'Savininko el. pašto adresas', + 'owner_email_hint' => + 'Bus naudojama daugumoje platformų tinklalaidės nuosavybės patvirtinimui. Matoma viešame RSS sklaidos kanale.', + 'is_owner_email_removed_from_feed' => 'Pašalinti savininko el. pašto adresą iš viešo RSS sklaidos kanalo', + 'is_owner_email_removed_from_feed_hint' => 'Gali būti, kad laikinai turėsite padaryti el. paštą matomą, kad katalogas galėtų patikrinti, jog tinklalaidė priklauso jums.', + 'publisher' => 'Leidėjas', + 'publisher_hint' => + 'Grupė, atsakinga už laidos kūrimą. Dažnai čia nurodoma tinklalaidės motininė įmonė ar tinklas. Kartais šis laukas pristatomas kaip autoriaus laukas.', + 'copyright' => 'Autorių teisės', + 'location_section_title' => 'Vietovė', + 'location_section_subtitle' => 'Apie kokią vietą kalbama šioje tinklalaidėje?', + 'location_name' => 'Vietovės vardas ar adresas', + 'location_name_hint' => 'Vietovė gali būti tikra ar išgalvota', + 'monetization_section_title' => 'Monetizavimas', + 'monetization_section_subtitle' => + 'Uždirbkite pinigų iš savo auditorijos.', + 'premium' => 'Premium', + 'premium_by_default' => 'Epizodai numatytai turi būti laikomi premium', + 'premium_by_default_hint' => 'Tinklalaidės epizodai bus numatytai žymimi kaip premium. Norimus epizodus, anonsus ir/ar papildomus failus galėsite palikti viešus.', + 'op3' => 'Open Podcast Prefix Project (OP3)', + 'op3_link' => 'Apsilankyti jūsų OP3 skydelyje (išorinis saitas)', + 'op3_hint' => 'OP3 – tai atviro kodo patikima trečiosios šalies analitikos tarnyba. Ja naudodamiesi, galite dalintis, tikrinti ir lyginti savo analitikos duomenis su kitomis atvirosiomis tinklalaidėmis.', + 'op3_enable' => 'Įgalinti OP3 analitikos tarnybą', + 'op3_enable_hint' => 'Saugumo sumetimais premium epizodų analitikos duomenimis nebus dalinamasi su OP3.', + 'payment_pointer' => '„Web Monetization“ Mokėjimų rodyklė („Payment Pointer“)', + 'payment_pointer_hint' => + 'Čia gausite pinigus „Web Monetization“ dėka', + 'advanced_section_title' => 'Papildomi parametrai', + 'advanced_section_subtitle' => + 'Jeigu norite naudoti RSS gaires, kurių „Castopod“ neapdoroja, galite jas nustatyti čia.', + 'custom_rss' => 'Tinklalaidės papildomos RSS gairės', + 'custom_rss_hint' => 'Tai bus įterpta į gairę.', + 'verify_txt' => 'Nuosavybės patvirtinimo TXT', + 'verify_txt_hint' => 'Užuot pasikliovusios el. pašto adresu, kai kurios trečiųjų šalių tarnybos gali reikalauti patvirtinti jūsų tinklalaidės nuosavybę, patvirtinimo kodą įterpiant į jūsų sklaidos kanalą.', + 'verify_txt_helper' => 'Ši reikšmė bus pateikta gairėje.', + 'new_feed_url' => 'Naujo sklaidos kanalo URL', + 'new_feed_url_hint' => 'Pasinaudokite šiuo lauku, jei norėsite perkelti savo tinklalaidę į kitą domeną ar tinklalaidžių platformą. Numatytuoju atveju, čia bus dabartinio RSS sklaidos kanalo URL, jei ši tinklalaidė importuota.', + 'old_feed_url' => 'Seno sklaidos kanalo URL', + 'partnership' => 'Bendradarbiavimas', + 'partner_id' => 'ID', + 'partner_link_url' => 'Nuorodos URL', + 'partner_image_url' => 'Atvaizdo URL', + 'partner_id_hint' => 'Jūsų nuosavas partnerio ID', + 'partner_link_url_hint' => 'Bendrinės nuorodos partneriams adresas', + 'partner_image_url_hint' => 'Bendrinio paveikslėlio partneriams adresas', + 'block' => 'Tinklaraidė neturėtų būti matoma viešuosiuose kataloguose', + 'block_hint' => + 'Ribotas tinklalaidės matomumas: įjungus šią parinktį, tinklalaidė nebus matoma „Apple Podcasts“, „Google Podcasts“ ir kitose trečiųjų šalių programose, naudojančiose šių tarnybų katalogus (negarantuojama).', + 'complete' => 'Tinklalaidėje nebebus naujų epizodų', + 'lock' => 'Neleisti tinklalaidės kopijuoti', + 'lock_hint' => + 'Šio lauko paskirtis – informuoti kitas platformas, ar joms leidžiama importuoti šį sklaidos kanalą. Pažymėjus „Taip“, bet kokie mėginimai importuoti šį sklaidos kanalą į kitas platformas turėtų būti atmetami.', + 'submit_create' => 'Sukurti tinklalaidę', + 'submit_edit' => 'Įrašyti tinklalaidę', + ], + 'category_options' => [ + 'uncategorized' => 'be kategorijos', + 'arts' => 'Menas', + 'business' => 'Verslas', + 'comedy' => 'Komedija', + 'education' => 'Švietimas', + 'fiction' => 'Fantastika', + 'government' => 'Vyriausybė', + 'health_and_fitness' => 'Sveikata ir kūno rengyba', + 'history' => 'Istorija', + 'kids_and_family' => 'Vaikai ir šeima', + 'leisure' => 'Laisvalaikis', + 'music' => 'Muzika', + 'news' => 'Naujienos', + 'religion_and_spirituality' => 'Religija ir dvasingumas', + 'science' => 'Mokslas', + 'society_and_culture' => 'Visuomenė ir kultūra', + 'sports' => 'Sportas', + 'technology' => 'Technologijos', + 'true_crime' => 'Nusikaltimai', + 'tv_and_film' => 'Televizija ir filmai', + 'books' => 'Knygos', + 'design' => 'Dizainas', + 'fashion_and_beauty' => 'Mada ir grožis', + 'food' => 'Maistas', + 'performing_arts' => 'Atliekamieji menai', + 'visual_arts' => 'Vaizduojamieji menai', + 'careers' => 'Karjera', + 'entrepreneurship' => 'Entreprenerystė', + 'investing' => 'Investavimas', + 'management' => 'Vadyba', + 'marketing' => 'Rinkodara', + 'non_profit' => 'Visuomeninė veikla', + 'comedy_interviews' => 'Komediniai interviu', + 'improv' => 'Improvizacijos', + 'stand_up' => '„Stand-up“ pasirodymai', + 'courses' => 'Kursai', + 'how_to' => 'Instrukcijos', + 'language_learning' => 'Kalbų mokymasis', + 'self_improvement' => 'Savęs tobulinimas', + 'comedy_fiction' => 'Komedinė fantastika', + 'drama' => 'Drama', + 'science_fiction' => 'Mokslinė fantastika', + 'alternative_health' => 'Alternatyvioji sveikata', + 'fitness' => 'Kūno rengyba', + 'medicine' => 'Medicina', + 'mental_health' => 'Psichinė sveikata', + 'nutrition' => 'Mityba', + 'sexuality' => 'Seksualumas', + 'education_for_kids' => 'Vaikų švietimas', + 'parenting' => 'Tėvystė', + 'pets_and_animals' => 'Gyvūnai', + 'stories_for_kids' => 'Pasakos vaikams', + 'animation_and_manga' => 'Animacija ir manga', + 'automotive' => 'Automobiliai', + 'aviation' => 'Aviacija', + 'crafts' => 'Rankdarbiai', + 'games' => 'Žaidimai', + 'hobbies' => 'Pomėgiai', + 'home_and_garden' => 'Namai ir sodas', + 'video_games' => 'Kompiuteriniai žaidimai', + 'music_commentary' => 'Muzikos aptarimas', + 'music_history' => 'Muzikos istorija', + 'music_interviews' => 'Muzikiniai interviu', + 'business_news' => 'Verslo naujienos', + 'daily_news' => 'Dienos naujienos', + 'entertainment_news' => 'Pramogų pasaulio naujienos', + 'news_commentary' => 'Naujienų aptarimas', + 'politics' => 'Politika', + 'sports_news' => 'Sporto naujienos', + 'tech_news' => 'Technologijų naujienos', + 'buddhism' => 'Budizmas', + 'christianity' => 'Krikščionybė', + 'hinduism' => 'Induizmas', + 'islam' => 'Islamas', + 'judaism' => 'Judaizmas', + 'religion' => 'Religija', + 'spirituality' => 'Dvasingumas', + 'astronomy' => 'Astronomija', + 'chemistry' => 'Chemija', + 'earth_sciences' => 'Žemės mokslai', + 'life_sciences' => 'Gyvybės mokslai', + 'mathematics' => 'Matematika', + 'natural_sciences' => 'Gamtos mokslai', + 'nature' => 'Gamta', + 'physics' => 'Fizika', + 'social_sciences' => 'Socialiniai mokslai', + 'documentary' => 'Dokumentika', + 'personal_journals' => 'Asmeniniai dienoraščiai', + 'philosophy' => 'Filosofija', + 'places_and_travel' => 'Vietovės ir kelionės', + 'relationships' => 'Santykiai', + 'baseball' => 'Beisbolas', + 'basketball' => 'Krepšinis', + 'cricket' => 'Kriketas', + 'fantasy_sports' => 'Fantastinės sporto šakos', + 'football' => 'Amerikietiškas futbolas', + 'golf' => 'Golfas', + 'hockey' => 'Ledo ritulys', + 'rugby' => 'Regbis', + 'running' => 'Bėgimas', + 'soccer' => 'Futbolas', + 'swimming' => 'Plaukimas', + 'tennis' => 'Tenisas', + 'volleyball' => 'Tinklinis', + 'wilderness' => 'Laukinė gamta', + 'wrestling' => 'Imtynės', + 'after_shows' => 'Pasirodymų aptarimai', + 'film_history' => 'Kino istorija', + 'film_interviews' => 'Kino interviu', + 'film_reviews' => 'Kino apžvalgos', + 'tv_reviews' => 'TV apžvalgos', + ], + 'publish_form' => [ + 'back_to_podcast_dashboard' => 'Grįžti į tinklalaidžių skydelį', + 'post' => 'Jūsų įrašas-anonsas', + 'post_hint' => + "Parašykite pranešimą šios tinklalaidės paskelbimui anansuoti. Šis pranešimas bus rodomas tinklalaidės pradžios tinklalapyje.", + 'message_placeholder' => 'Rašykite pranešimą…', + 'submit' => 'Paskelbti', + 'publication_date' => 'Paskelbimo data', + 'publication_method' => [ + 'now' => 'Dabar', + 'schedule' => 'Suplanuoti', + ], + 'scheduled_publication_date' => 'Suplanupti paskelbimo datą', + 'scheduled_publication_date_hint' => + 'Galite suplanuoti tinklalaidės paskelbimą konkrečiam laikui ateityje. Lauko reikšmės formatas: MMMM-mm-dd HH:mm', + 'submit_edit' => 'Taisyti paskelbimą', + 'cancel_publication' => 'Atšaukti paskelbimą', + 'message_warning' => 'Neparašėte teksto savo įrašui-anonsui!', + 'message_warning_hint' => 'Parašę trumpą pranešimą, padidinsite tinklalaidės matomumą ir klausytojų įsitraukimą.', + 'message_warning_submit' => 'Vis tiek paskelbti', + ], + 'publication_status_banner' => [ + 'draft_mode' => 'juodraščio veiksena', + 'not_published' => 'Ši tinklalaidė dar nepaskelbta.', + 'scheduled' => 'Šią tinklalaidę numatyta paskelbti {publication_date}.', + ], + 'delete_form' => [ + 'disclaimer' => + "Šalinant tinklalaidę, pašalinami visi jos epizodai, failai ir su ja susijusi analitika. Šis veiksmas negrįžtamas, jokių minėtų išteklių vėliau parsisiųsti nebegalėsite.", + 'understand' => 'Suprantu ir noriu visam laikui pašalinti tinklalaidę', + 'submit' => 'Šalinti', + ], + 'by' => 'Leidžia {publisher}', + 'season' => '{seasonNumber} sezonas', + 'list_of_episodes_year' => '{year} metų epizodai ({episodeCount})', + 'list_of_episodes_season' => + '{seasonNumber} sezono epizodai ({episodeCount})', + 'no_episode' => 'Epizodas nerastas!', + 'follow' => 'Sekti', + 'followers' => '{numberOfFollowers, plural, + one {# sekėjas} + few {# sekėjai} + other {# sekėjų} + }', + 'posts' => '{numberOfPosts, plural, + one {# įrašas} + few {# įrašai} + other {# įrašų} + }', + 'activity' => 'Veikla', + 'episodes' => 'Epizodai', + 'sponsor' => 'Paremti', + 'funding_links' => '„{podcastTitle}“ rėmimo nuorodos', + 'find_on' => 'Raskite „{podcastTitle}“', + 'listen_on' => 'Klausykitės', +]; diff --git a/modules/Admin/Language/lt/PodcastImport.php b/modules/Admin/Language/lt/PodcastImport.php new file mode 100644 index 00000000..2506667c --- /dev/null +++ b/modules/Admin/Language/lt/PodcastImport.php @@ -0,0 +1,37 @@ + + 'Šis procesas gali ilgai užtrukti. Šioje versijoje jokios proceso eigos jūs nematysite, kol jis nebus užbaigtas. Jei procesas netilptų į jam skirtąjį laiką ir gautumėte apie tai klaidos pranešimą, padidinkite `max_execution_time` reiškmę.', + 'old_podcast_section_title' => 'Importuotina tinklalaidė', + 'old_podcast_section_subtitle' => + 'Prieš importuodami šią tinklalaidę, įsitikinkite, jog turite teisę tai daryti. Kopijuojant ir retransliuojant tinklalaidę, neturint tam reikiamų teisių, yra piratavimas, už tai gali būti baudžiama.', + 'imported_feed_url' => 'Sklaidos kanalo URL', + 'imported_feed_url_hint' => 'Sklaidos kanalas turi būti XML arba RSS formatu.', + 'new_podcast_section_title' => 'Naujoji tinklalaidė', + 'advanced_params_section_title' => 'Papildomi parametrai', + 'advanced_params_section_subtitle' => + 'Jei nežinote, kam šie laukai reikalingi, palikite numatytąsias reikšmes.', + 'slug_field' => 'Laukas, naudotinas epizodų nuorodiniams pavadinimams formuoti', + 'description_field' => + 'Laukas su epizodų aprašymais ir rodomomis pastabomis', + 'force_renumber' => 'Pernumeruoti epizodus', + 'force_renumber_hint' => + 'Pasirinkite, jei jūsų tinklalaidėje epizodai nesunumberuoti, bet norite, kad jie būtų sunumeruoti importo metu.', + 'season_number' => 'Sezono numeris', + 'season_number_hint' => + 'Įveskite reikšmę, jei jūsų tinklalaidė nenurodo sezono numerio, tačiau norite jį nustatyti importo metu. Priešingu atveju lauką palikite tuščią.', + 'max_episodes' => 'Didžiausias leistinas importuotinų epizodų skaičius', + 'max_episodes_hint' => 'Palikite lauką tuščią, jeigu norite importuoti visus epizodus', + 'lock_import' => + 'Šis sklaidos kanalas apsaugotas. Jo importuoti negalite. Jei esate savininkas, atjunkite jo apsaugą dabartinėje platformoje.', + 'submit' => 'Importuoti tinklalaidę', +]; diff --git a/modules/Admin/Language/lt/PodcastNavigation.php b/modules/Admin/Language/lt/PodcastNavigation.php new file mode 100644 index 00000000..f0f66500 --- /dev/null +++ b/modules/Admin/Language/lt/PodcastNavigation.php @@ -0,0 +1,42 @@ + 'Eiti į tinklalaidės tinklalapį', + 'rss_feed' => 'RSS sklaidos kanalas', + 'dashboard' => 'Tinklalaidės skydelis', + 'podcast-view' => 'Pradžios tinklalapis', + 'podcast-edit' => 'Taisyti tinklalaidę', + 'podcast-persons-manage' => 'Tvarkyti asmenis', + 'podcast-imports' => 'Importuojamos tinklalaidės', + 'podcast-imports-sync' => 'Sinchronizuoti sklaidos kanalus', + 'episodes' => 'Epizodai', + 'episode-list' => 'Visi epizodai', + 'episode-create' => 'Naujas epizodas', + 'analytics' => 'Analitika', + 'podcast-analytics' => 'Auditorijos apžvalga', + 'podcast-analytics-webpages' => 'Apsilankymai tinklalapiuose', + 'podcast-analytics-locations' => 'Vietovės', + 'podcast-analytics-unique-listeners' => 'Unikalūs klausytojai', + 'podcast-analytics-players' => 'Grotuvai', + 'podcast-analytics-listening-time' => 'Klausymosi laikas', + 'podcast-analytics-time-periods' => 'Laiko periodai', + 'monetization' => 'Monetizavimas', + 'subscription-list' => 'Visos Prenumeratos', + 'subscription-create' => 'Pridėti prenumeratą', + 'contributors' => 'Talkininkai', + 'contributor-list' => 'Visi talkininkai', + 'contributor-add' => 'Pridėti talkininką', + 'broadcast' => 'Transliacija', + 'platforms-podcasting' => 'Tinklalaidžių klausymosi programos', + 'platforms-social' => 'Socialiniai tinklai', + 'platforms-funding' => 'Rėmimo nuorodos', + 'podcast-monetization-other' => 'Kita', +]; diff --git a/modules/Admin/Language/lt/Settings.php b/modules/Admin/Language/lt/Settings.php new file mode 100644 index 00000000..dc303d63 --- /dev/null +++ b/modules/Admin/Language/lt/Settings.php @@ -0,0 +1,58 @@ + 'Bendrosios nuostatos', + 'instance' => [ + 'title' => 'Serveris', + 'site_icon' => 'Svetainės piktograma', + 'site_icon_delete' => 'Šalinti svetainės piktogramą', + 'site_icon_hint' => 'Svetainės piktograma – tai ženkliukas, matomas naršyklių kortelėse, adresynuose ar įtraukus svetainės nuorodą į mobilųjį telefoną.', + 'site_icon_helper' => 'Piktograma turi būti kvadratinė ir bent 512 taškų aukščio ir pločio.', + 'site_name' => 'Svetainės pavadinimas', + 'site_description' => 'Svetainės aprašymas', + 'submit' => 'Įrašyti', + 'editSuccess' => 'Serveris atnaujintas sėkmingai!', + 'deleteIconSuccess' => 'Svetainės piktograma pašalinta sėkmingai!', + ], + 'images' => [ + 'title' => 'Vaizdai', + 'subtitle' => 'Čia galite iš naujo sugeneruoti visus vaizdo failus, remiantis įkeltais originalais. Galite pasinaudoti, jei kurių nors vaizdo failų pasigendate. Šis procesas gali užtrukti.', + 'regenerate' => 'Pergeneruoti vaizdus', + 'regenerationSuccess' => 'Visi vaizdai sėkmingai pergeneruoti!', + ], + 'housekeeping' => [ + 'title' => 'Apsitvarkymas', + 'subtitle' => 'Atliekami įvairūs apsitvarkymo darbai. Pasinaudokite šia funkcija, jei kada pastebėtumėte problemų su daugialypės terpės failais ar duomenų vientisumu. Šie procesai gali užtrukti.', + 'reset_counts' => 'Atkurti skaitliukus', + 'reset_counts_helper' => 'Perskaičiuoti ir perrašyti visus skaitliukus (sekėjų, įrašų, komentarų ir kt. skaičius).', + 'rewrite_media' => 'Perrašyti daugialypės terpės failų metaduomenis', + 'rewrite_media_helper' => 'Pašalinti visus generuotus daugialypės terpės failus (vaizdus, garso įrašus, nuorašus, skyrelius ir kt.) ir sukurti juos iš naujo', + 'rename_episodes_files' => 'Pervardinti epizodų garso įrašų failus', + 'rename_episodes_files_hint' => 'Pervardinti visus garso įrašų failus atsitiktiniais vardais. Šia parinktimi galite pasinaudoti, jei kas nors nutekintų nuorodą į kurį nors jūsų privatų epizodą, nes tai – paprastas būdas jį vėl paslėpti.', + 'clear_cache' => 'Išvalyti visą podėlį', + 'clear_cache_helper' => 'Ištuštinti „Redis“ podėlį ar podėlio failus.', + 'run' => 'Pradėti apsitvarkymą', + 'runSuccess' => 'Apsitvarkymas sėkmingai paleistas!', + ], + 'theme' => [ + 'title' => 'Apipavidalinimas', + 'accent_section_title' => 'Akcento spalva', + 'accent_section_subtitle' => 'Pasirinkite spalvą, naudotiną visuose viešuosiuose tinklalapiuose.', + 'pine' => 'Pušis', + 'crimson' => 'Raudonis', + 'amber' => 'Gintaras', + 'lake' => 'Ežeras', + 'jacaranda' => 'Žibuoklė', + 'onyx' => 'Oniksas', + 'submit' => 'Įrašyti', + 'setInstanceThemeSuccess' => 'Tema atnaujinta sėkmingai!', + ], +]; diff --git a/modules/Admin/Language/lt/Soundbite.php b/modules/Admin/Language/lt/Soundbite.php new file mode 100644 index 00000000..f63dbcf5 --- /dev/null +++ b/modules/Admin/Language/lt/Soundbite.php @@ -0,0 +1,31 @@ + [ + 'title' => 'Įrašo ištraukos', + 'soundbite' => 'Įrašo ištrauka', + ], + 'messages' => [ + 'createSuccess' => 'Įrašo ištrauka sėkmingai sukurta!', + 'deleteSuccess' => 'Įrašo ištrauka sėkmingai pašalinta!', + ], + 'form' => [ + 'title' => 'Nauja įrašo ištrauka', + 'soundbite_title' => 'Įrašo ištraukos pavadinimas', + 'start_time' => 'Pradžia', + 'duration' => 'Trukmė', + 'submit' => 'Kurti įrašo ištrauką', + ], + 'play' => 'Groti įrašo ištrauką', + 'stop' => 'Stabdyti įrašo ištrauką', + 'create' => 'Nauja įrašo ištrauka', + 'delete' => 'Šalinti įrašo ištrauką', +]; diff --git a/modules/Admin/Language/lt/User.php b/modules/Admin/Language/lt/User.php new file mode 100644 index 00000000..27515489 --- /dev/null +++ b/modules/Admin/Language/lt/User.php @@ -0,0 +1,56 @@ + "Keisti {username} roles", + 'forcePassReset' => 'Reikalauti pasikeisti slaptažodį', + 'ban' => 'Blokuoti', + 'unban' => 'Atblokuoti', + 'delete' => 'Šalinti', + 'create' => 'Naujas naudotojas', + 'view' => "{username} duomenys", + 'all_users' => 'Visi naudotojai', + 'list' => [ + 'user' => 'Naudotojas', + 'roles' => 'Rolės', + 'banned' => 'Užblokuotas?', + ], + 'form' => [ + 'email' => 'El. paštas', + 'username' => 'Naudotojo vardas', + 'password' => 'Slaptažodis', + 'new_password' => 'Naujas slaptažodis', + 'roles' => 'Rolės', + 'permissions' => 'Leidimai', + 'submit_create' => 'Kurti naudotoją', + 'submit_edit' => 'Įrašyti', + 'submit_password_change' => 'Pakeisti!', + ], + 'roles' => [ + 'superadmin' => 'Superadministratorius', + ], + 'messages' => [ + 'createSuccess' => + 'Naudotojas sukurtas sėkmingai! {username} privalės pasikeisti slaptažodį, kai primąkart prisijungs.', + 'rolesEditSuccess' => + "{username} rolės sėkmingai atnaujintos.", + 'forcePassResetSuccess' => + '{username} privalės pasikeisti slaptažodį, kai kišąkart prisijungs.', + 'banSuccess' => 'Paskyra {username} užblokuota.', + 'unbanSuccess' => 'Paskyra {username} atblokuota.', + 'editOwnerError' => + 'Paskyra {username} priklauso šio serverio savininkui, jos rolių keisti negalite.', + 'banSuperAdminError' => + 'Paskyra {username} priklauso superadministratoriui. Jos užblokuoti negalima.', + 'deleteSuperAdminError' => + 'Paskyra {username} priklauso superadministratoriui, jos pašalinti negalima.', + 'deleteSuccess' => 'Paskyra {username} pašalinta.', + ], +]; diff --git a/modules/Admin/Language/lt/Validation.php b/modules/Admin/Language/lt/Validation.php new file mode 100644 index 00000000..7223ee5f --- /dev/null +++ b/modules/Admin/Language/lt/Validation.php @@ -0,0 +1,17 @@ + + '{field} arba nėra paveikslėlis, arba yra per siauras, arba per žemas.', + 'is_image_ratio' => + '{field} arba nėra paveikslėlis, arba jo kraštinių santykis netinkamas.', + 'is_json' => 'Lauke {field} aptiktas netinkamas JSON.', +]; diff --git a/modules/Admin/Language/lt/VideoClip.php b/modules/Admin/Language/lt/VideoClip.php new file mode 100644 index 00000000..9a2cb980 --- /dev/null +++ b/modules/Admin/Language/lt/VideoClip.php @@ -0,0 +1,72 @@ + [ + 'title' => 'Vaizdo klipai', + 'status' => [ + 'label' => 'Būsena', + 'queued' => 'eilėje', + 'queued_hint' => 'Klipas laukia apdorojimo.', + 'pending' => 'laukiama', + 'pending_hint' => 'Klipas bus sugeneruotas netrukus.', + 'running' => 'rengiamas', + 'running_hint' => 'Klipas šiuo metu generuojamas.', + 'failed' => 'nepavyko', + 'failed_hint' => 'Klipo sugeneruoti nepavyko: scenarijaus klaida.', + 'passed' => 'parengtas', + 'passed_hint' => 'Klipas sėkmingai sugeneruotas!', + ], + 'clip' => 'Klipas', + 'duration' => 'Užduoties vykdymo trukmė', + ], + 'title' => 'Vaizdo klipas: {videoClipLabel}', + 'download_clip' => 'Atsisiųsti klipą', + 'create' => 'Naujas vaizdo klipas', + 'go_to_page' => 'Eiti į klipo tinklalapį', + 'retry' => 'Kartoti generavimo bandymą', + 'delete' => 'Šalinti klipą', + 'logs' => 'Užduočių žurnalai', + 'messages' => [ + 'alreadyExistingError' => 'Bandomas sukurti vaizdo klipas jau egzistuoja!', + 'addToQueueSuccess' => 'Vaizdo klipo parengimo užduotis patalpinta į eilę!', + 'deleteSuccess' => 'Vaizdo klipas sėkmingai pašalintas!', + ], + 'format' => [ + 'landscape' => 'Gulsčias', + 'portrait' => 'Stačias', + 'squared' => 'Kvadratinis', + ], + 'form' => [ + 'title' => 'Naujas vaizdo klipas', + 'params_section_title' => 'Vaizdo klipo parametrai', + 'clip_title' => 'Klipo pavadinimas', + 'format' => [ + 'label' => 'Pasirinkite formatą', + 'landscape_hint' => 'Klipai, kurių kraštinių santykis 16:9, puikiai tinka kėlimui į „PeerTube“, „Youtube“ ir „Vimeo“.', + 'portrait_hint' => 'Klipai, kurių kraštinių santykis 9:16, puikiai tinka kėlimui į „TikTok“, „Youtube shorts“ ir „Instagram stories“.', + 'squared_hint' => 'Klipai, kurių kraštinių santykis 1:1, puikiai tinka kėlimui į „Mastodon“, „Facebook“, „Twitter“ ir „LinkedIn“.', + ], + 'theme' => 'Pasirinkite temą', + 'start_time' => 'Pradžia', + 'duration' => 'Trukmė', + 'trim_start' => 'Nukirpti pradžią', + 'trim_end' => 'Nukirpti pabaigą', + 'submit' => 'Kurti vaizdo klipą', + ], + 'requirements' => [ + 'title' => 'Netenkinami reikalavimai', + 'missing' => 'Trūksta įdiegtų priklausomybių. Įsitikinkite, jog įdiegta visa programinė įranga, būtina šio epizodo vaizdo įrašui parengti!', + 'ffmpeg' => 'FFmpeg', + 'gd' => 'Graphics Draw (GD)', + 'freetype' => 'GD „Freetype“ biblioteka', + 'transcript' => 'Nuorašo failas (.srt)', + ], +]; diff --git a/modules/Auth/Language/.rsync-filter b/modules/Auth/Language/.rsync-filter new file mode 100644 index 00000000..38526af5 --- /dev/null +++ b/modules/Auth/Language/.rsync-filter @@ -0,0 +1,14 @@ ++ br/*** ++ ca/*** ++ cs/*** ++ de/*** ++ en/*** ++ es/*** ++ fr/*** ++ lt/*** ++ nn-no/*** ++ pl/*** ++ pt-br/*** ++ sr-latn/*** ++ zh-hans/*** +- ** diff --git a/modules/Auth/Language/cs/Auth.php b/modules/Auth/Language/cs/Auth.php new file mode 100644 index 00000000..8d7f2164 --- /dev/null +++ b/modules/Auth/Language/cs/Auth.php @@ -0,0 +1,95 @@ + [ + 'owner' => [ + 'title' => 'Vlastník instance', + 'description' => 'Vlastník Castopodu.', + ], + 'superadmin' => [ + 'title' => 'Super Admin', + 'description' => 'Má úplnou kontrolu nad Castopodem.', + ], + 'manager' => [ + 'title' => 'Manažer', + 'description' => 'Spravuje obsah Castopodu.', + ], + 'podcaster' => [ + 'title' => 'Podcaster', + 'description' => 'Obecní uživatelé Castopod.', + ], + ], + 'instance_permissions' => [ + 'admin.access' => 'Může se dostat do oblasti administrace Castopod.', + 'admin.settings' => 'Může přistupovat k nastavení Castopodu.', + 'users.manage' => 'Může spravovat uživatele Castopod.', + 'persons.manage' => 'Může řídit osoby.', + 'pages.manage' => 'Může spravovat stránky.', + 'podcasts.view' => 'Může zobrazit všechny podcasty.', + 'podcasts.create' => 'Může vytvářet nové podcasty.', + 'podcasts.import' => 'Může importovat podcasty.', + 'fediverse.manage-blocks' => 'Může blokovat fediverse aktéry/domény a jejch interakce s Castopodem.', + ], + 'podcast_groups' => [ + 'owner' => [ + 'title' => 'Vlastník podcastu', + 'description' => 'Vlastník podcastu.', + ], + 'admin' => [ + 'title' => 'Admin', + 'description' => 'Má úplnou kontrolu nad podcastem #{id}.', + ], + 'editor' => [ + 'title' => 'Editor', + 'description' => 'Spravuje obsah a publikace podcastu #{id}.', + ], + 'author' => [ + 'title' => 'Autor', + 'description' => 'Spravuje obsah kanálu #{id} , ale nemůže jej publikovat.', + ], + 'guest' => [ + 'title' => 'Návštěvník', + 'description' => 'Obecný přispěvatel podcastu #{id}.', + ], + ], + 'podcast_permissions' => [ + 'view' => 'Může prohlížet dashboard a analyzovat podcast #{id}.', + 'edit' => 'Může upravovat podcast #{id}.', + 'delete' => 'Může odstranit podcast #{id}.', + 'manage-import' => 'Může synchronizovat importovaný podcast #{id}.', + 'manage-persons' => 'Může spravovat odběry podcastu #{id}.', + 'manage-subscriptions' => 'Může spravovat odběry podcastu #{id}.', + 'manage-contributors' => 'Může spravovat přispěvatele podcastu #{id}.', + 'manage-platforms' => 'Může nastavit/odebrat odkazy na platformu podcastu #{id}.', + 'manage-publications' => 'Může publikovat podcast #{id}.', + 'manage-notifications' => 'Může zobrazovat a označovat oznámení jako přečtená pro podcast #{id}.', + 'interact-as' => 'Může komunikovat jako podcast #{id}, označovat jako oblíbené, sdílet nebo odpovědět na příspěvky.', + 'episodes' => [ + 'view' => 'Může prohlížet nástěnky a analyzovat epizody podcastu #{id}.', + 'create' => 'Může vytvářet epizody pro podcast #{id}.', + 'edit' => 'Může upravovat epizody vysílání #{id}.', + 'delete' => 'Může odstranit epizody podcastu #{id}.', + 'manage-persons' => 'Může spravovat osoby u epizod z podcastu #{id}.', + 'manage-clips' => 'Může spravovat videoklipy nebo úryvky podcastu #{id}.', + 'manage-publications' => 'Může publikovat/zrušit publikování epizod a příspěvků podcastu #{id}.', + 'manage-comments' => 'Může vytvářet nebo odebrat komentáře epizod podcastu #{id}.', + ], + ], + + // missing keys + 'code' => 'Váš 6-místný kód', + + 'set_password' => 'Natavte si heslo', + + // Welcome email + 'welcomeSubject' => 'Byli jste pozváni do {siteName}', + 'emailWelcomeMailBody' => 'Na {domain} byl pro Vás vytvořen účet, klikněte na přihlášení níže pro nastavení hesla. Odkaz je platný po {numberOfHours} hodin po zaslání tohoto e-mailu.', +]; diff --git a/modules/Auth/Language/cs/Contributor.php b/modules/Auth/Language/cs/Contributor.php new file mode 100644 index 00000000..2ee57044 --- /dev/null +++ b/modules/Auth/Language/cs/Contributor.php @@ -0,0 +1,47 @@ + 'Přispěvatelé podcastu', + 'view' => "Příspěvek {username} do {podcastTitle}", + 'add' => 'Přidat přispěvatele', + 'add_contributor' => 'Přidat přispěvatele pro {0}', + 'edit_role' => 'Aktualizovat roli pro {0}', + 'edit' => 'Upravit', + 'remove' => 'Odstranit', + 'list' => [ + 'username' => 'Uživatelské jméno', + 'role' => 'Role', + ], + 'form' => [ + 'user' => 'Uživatel', + 'user_placeholder' => 'Vyberte uživatele…', + 'role' => 'Role', + 'role_placeholder' => 'Vybrat roli…', + 'submit_add' => 'Přidat přispěvatele', + 'submit_edit' => 'Aktualizovat roli', + ], + 'delete_form' => [ + 'title' => 'Odebrat {contributor}', + 'disclaimer' => + 'Chystáte se odebrat {contributor} z přispěvatelů. Už nebudou mít přístup k "{podcastTitle}".', + 'understand' => 'Chápu, chci odstranit {contributor} z "{podcastTitle}"', + 'submit' => 'Odstranit', + ], + 'messages' => [ + 'editSuccess' => 'Role úspěšně změněna!', + 'editOwnerError' => "Vlastníka podcastu nelze upravovat!", + 'removeOwnerError' => "Vlastníka podcastu nelze odstranit!", + 'removeSuccess' => + 'Úspěšně jste odstranili {username} z {podcastTitle}', + 'alreadyAddedError' => + "Přispěvatel, který se pokoušíte přidat, již byl přidán!", + ], +]; diff --git a/modules/Auth/Language/cs/MyAccount.php b/modules/Auth/Language/cs/MyAccount.php new file mode 100644 index 00000000..d6431fde --- /dev/null +++ b/modules/Auth/Language/cs/MyAccount.php @@ -0,0 +1,18 @@ + 'Informace o mém účtu', + 'changePassword' => 'Změnit heslo', + 'messages' => [ + 'wrongPasswordError' => "Zadali jste špatné heslo, zkuste to znovu.", + 'passwordChangeSuccess' => 'Heslo bylo úspěšně změněno', + ], +]; diff --git a/modules/Auth/Language/cs/User.php b/modules/Auth/Language/cs/User.php new file mode 100644 index 00000000..4a624ebb --- /dev/null +++ b/modules/Auth/Language/cs/User.php @@ -0,0 +1,60 @@ + "Upravit roli {username}", + 'ban' => 'Zabanovat', + 'unban' => 'Odbanovat', + 'delete' => 'Smazat', + 'create' => 'Nový uživatel', + 'view' => "Informace o {username}", + 'all_users' => 'Všichni uživatelé', + 'list' => [ + 'user' => 'Uživatel', + 'role' => 'Role', + 'banned' => 'Zabanován?', + ], + 'form' => [ + 'email' => 'E-mail', + 'username' => 'Uživatelské jméno', + 'password' => 'Heslo', + 'new_password' => 'Nové heslo', + 'role' => 'Role', + 'roles' => 'Role', + 'permissions' => 'Oprávnění', + 'submit_create' => 'Vytvořit uživatele', + 'submit_edit' => 'Uložit', + 'submit_password_change' => 'Změnit!', + ], + 'delete_form' => [ + 'title' => 'Odstranit {user}', + 'disclaimer' => + "Chystáte se odstranit {user} trvale. Už nebude mít přístup do administrátorské oblasti.", + 'understand' => 'Chápu, chci trvale odstranit {user}', + 'submit' => 'Smazat', + ], + 'messages' => [ + 'createSuccess' => + 'Uživatel byl úspěšně vytvořen! Uvítací e-mail byl odeslán {username} s odkazem pro přihlášení, bude požádán o obnovení hesla při prvním ověření.', + 'roleEditSuccess' => + "Role {username} byly úspěšně aktualizovány.", + 'banSuccess' => 'Uživatel {username} byl zabanován.', + 'unbanSuccess' => 'Uživatel {username} byl odblokován.', + 'editOwnerError' => + '{username} je vlastníkem instance, to přece nejde…', + 'banSuperAdminError' => + '{username} je superadmin, to se nesmí…', + 'deleteOwnerError' => + '{username} je vlastníkem instance, člověk prostě neodstraní vlastníka…', + 'deleteSuperAdminError' => + '{username} je superadmin, to neni dobrý nápad…', + 'deleteSuccess' => '{username} byl smazán.', + ], +]; diff --git a/modules/Auth/Language/lt/Auth.php b/modules/Auth/Language/lt/Auth.php new file mode 100644 index 00000000..6676f7c0 --- /dev/null +++ b/modules/Auth/Language/lt/Auth.php @@ -0,0 +1,95 @@ + [ + 'owner' => [ + 'title' => 'Serverio savininkas', + 'description' => '„Castopod“ serverio savininkas.', + ], + 'superadmin' => [ + 'title' => 'Superadministratorius', + 'description' => 'Turi visas įmanomas teises „Castopod“ serveryje.', + ], + 'manager' => [ + 'title' => 'Tvarkytojas', + 'description' => 'Tvarko „Castopod“ turinį.', + ], + 'podcaster' => [ + 'title' => 'Tinklalaidininkas', + 'description' => 'Įprastas „Castopod“ naudotojas.', + ], + ], + 'instance_permissions' => [ + 'admin.access' => 'Turi prieigą prie „Castopod“ administravimo aplinkos.', + 'admin.settings' => 'Turi prieigą prie „Castopod“ nuostatų.', + 'users.manage' => 'Gali tvarkyti „Castopod“ naudotojus.', + 'persons.manage' => 'Gali tvarkyti asmenis.', + 'pages.manage' => 'Gali tvarkyti tinklalapius.', + 'podcasts.view' => 'Gali peržiūrėti visas tinklalaides.', + 'podcasts.create' => 'Gali kurti naujas tinklalaides.', + 'podcasts.import' => 'Gali importuoti tinklalaides.', + 'fediverse.manage-blocks' => 'Gali blokuoti Fedivisatos paskyrų ir domenų sąveikavimą su „Castopod“.', + ], + 'podcast_groups' => [ + 'owner' => [ + 'title' => 'Tinklalaidės savininkas', + 'description' => 'Tinklalaidės savininkas.', + ], + 'admin' => [ + 'title' => 'Administratorius', + 'description' => 'Visapusiškai valdo tinklalaidę #{id}.', + ], + 'editor' => [ + 'title' => 'Redaktorius', + 'description' => 'Tvarko tinklalaidės #{id} turinį ir publikacijas.', + ], + 'author' => [ + 'title' => 'Autorius', + 'description' => 'Tvarko tinklalaidės #{id} turinį, bet negali jo skelbti.', + ], + 'guest' => [ + 'title' => 'Svečias', + 'description' => 'Paprastas tinklalaidės #{id} talkininkas.', + ], + ], + 'podcast_permissions' => [ + 'view' => 'Gali matyti tinklalaidės #{id} skydelį ir analitiką.', + 'edit' => 'Gali taisyti tinklalaidę #{id}.', + 'delete' => 'Gali pašalinti tinklalaidę #{id}.', + 'manage-import' => 'Gali sinchronizuoti importuojamą tinklalaidę #{id}.', + 'manage-persons' => 'Gali tvarkyti tinklalaidės #{id} prenumeratas.', + 'manage-subscriptions' => 'Gali tvarkyti tinklalaidės #{id} prenumeratas.', + 'manage-contributors' => 'Gali tvarkyti tinklalaidės #{id} talkininkus.', + 'manage-platforms' => 'Gali pridėti ir šalinti tinklalaidės #{id} platformų nuorodas.', + 'manage-publications' => 'Gali skelbti tinklalaidę #{id}.', + 'manage-notifications' => 'Gali matyti ir žymėti kaip matytus tinklalaidės #{id} pranešimus.', + 'interact-as' => 'Gali tinklalaidės #{id} vardu žymėti įrašus kaip patinkančius, dalintis jais ir rašyti į juos atsakymus.', + 'episodes' => [ + 'view' => 'Gali matyti tinklalaidės #{id} epizodų skydelius ir analitiką.', + 'create' => 'Gali kurti tinklalaidės #{id} epizodus.', + 'edit' => 'Gali taisyti tinklalaidės #{id} epizodus.', + 'delete' => 'Gali šalinti tinklalaidės #{id} epizodus.', + 'manage-persons' => 'Gali tvarkyti tinklalaidės #{id} epizodų asmenų sąrašus.', + 'manage-clips' => 'Gali tvarkyti tinklalaidės #{id} epizodų vaizdo įrašus ir garso ištraukas.', + 'manage-publications' => 'Gali skelbti tinklalaidės #{id} epizodus ir įrašus arba nutraukti jų skelbimą.', + 'manage-comments' => 'Gali rašyti ir šalinti tinklalaidės #{id} epizodų komentarus.', + ], + ], + + // missing keys + 'code' => 'Jūsų 6 skaitmenų kodas', + + 'set_password' => 'Nustatykite savo slaptažodį', + + // Welcome email + 'welcomeSubject' => 'Jus pakvietė į „{siteName}“', + 'emailWelcomeMailBody' => 'Serveryje {domain} jums sukurta naudotojo paskyra. Spustelėkite žemiau esančią nuorodą ir nustatykite paskyros slaptažodį. Ši nuoroda galioja {numberOfHours} val. nuo laiško išsiuntimo momento.', +]; diff --git a/modules/Auth/Language/lt/Contributor.php b/modules/Auth/Language/lt/Contributor.php new file mode 100644 index 00000000..d17c7c0c --- /dev/null +++ b/modules/Auth/Language/lt/Contributor.php @@ -0,0 +1,47 @@ + 'Tinklalaidės talkininkai', + 'view' => "{username} indėlis į „{podcastTitle}“", + 'add' => 'Pridėti talkininką', + 'add_contributor' => 'Pridėti „{0}“ talkininką', + 'edit_role' => 'Atnaujinti {0} rolę', + 'edit' => 'Taisyti', + 'remove' => 'Šalinti', + 'list' => [ + 'username' => 'Naudotojo vardas', + 'role' => 'Rolė', + ], + 'form' => [ + 'user' => 'Naudotojas', + 'user_placeholder' => 'Pasirinkite naudotoją…', + 'role' => 'Rolė', + 'role_placeholder' => 'Pasirinkite rolę…', + 'submit_add' => 'Pridėti talkininką', + 'submit_edit' => 'Atnaujinti rolę', + ], + 'delete_form' => [ + 'title' => 'Pašalinti {contributor}', + 'disclaimer' => + '{contributor} bus pašalinta(s) iš talkininkų sąrašo. Šis asmuo nebegalės pasiekti tinklalaidės „{podcastTitle}“.', + 'understand' => 'Suprantu, noriu pašalinti {contributor} iš „{podcastTitle}“', + 'submit' => 'Šalinti', + ], + 'messages' => [ + 'editSuccess' => 'Rolė sėkmingai pakeista!', + 'editOwnerError' => "Tinklalaidės savininko taisyti negalima!", + 'removeOwnerError' => "Tinklalaidės savininko pašalinti negalima!", + 'removeSuccess' => + '{username} sėkmingai pašalinta(s) iš „{podcastTitle}“', + 'alreadyAddedError' => + "Bandomas pridėti talkininkas jau ir taip pridėtas!", + ], +]; diff --git a/modules/Auth/Language/lt/MyAccount.php b/modules/Auth/Language/lt/MyAccount.php new file mode 100644 index 00000000..fefc5fd6 --- /dev/null +++ b/modules/Auth/Language/lt/MyAccount.php @@ -0,0 +1,18 @@ + 'Mano paskyros duomenys', + 'changePassword' => 'Keisti mano slaptažodį', + 'messages' => [ + 'wrongPasswordError' => "Įvedėte blogą slaptažodį, pabandykite dar kartą.", + 'passwordChangeSuccess' => 'Slaptažodis sėkmingai pakeistas!', + ], +]; diff --git a/modules/Auth/Language/lt/User.php b/modules/Auth/Language/lt/User.php new file mode 100644 index 00000000..ada71e97 --- /dev/null +++ b/modules/Auth/Language/lt/User.php @@ -0,0 +1,60 @@ + "Keisti {username} roles", + 'ban' => 'Blokuoti', + 'unban' => 'Atblokuoti', + 'delete' => 'Šalinti', + 'create' => 'Naujas naudotojas', + 'view' => "{username} duomenys", + 'all_users' => 'Visi naudotojai', + 'list' => [ + 'user' => 'Naudotojas', + 'role' => 'Rolė', + 'banned' => 'Užblokuotas?', + ], + 'form' => [ + 'email' => 'El. paštas', + 'username' => 'Naudotojo vardas', + 'password' => 'Slaptažodis', + 'new_password' => 'Naujas slaptažodis', + 'role' => 'Rolė', + 'roles' => 'Rolės', + 'permissions' => 'Leidimai', + 'submit_create' => 'Kurti naudotoją', + 'submit_edit' => 'Įrašyti', + 'submit_password_change' => 'Pakeisti!', + ], + 'delete_form' => [ + 'title' => 'Šalinti {user}', + 'disclaimer' => + "Ketinate visam laikui pašalinti {user} paskyrą. Šis asmuo nebegalės pasiekti administratoriaus srities.", + 'understand' => 'Suprantu, noriu pašalinti {user} visam laikui', + 'submit' => 'Šalinti', + ], + 'messages' => [ + 'createSuccess' => + 'Naudotojo paskyra {username} sėkmingai sukurta! Jos savininkui(-ei) nusiųstas el. laiškas su prisijungimo nuoroda. Pirmo prisijungimo metu jis (ji) turės pasikeisti slaptažodį.', + 'roleEditSuccess' => + "{username} rolės sėkmingai atnaujintos.", + 'banSuccess' => 'Paskyra {username} užblokuota.', + 'unbanSuccess' => 'Paskyra {username} atblokuota.', + 'editOwnerError' => + 'Paskyra {username} priklauso šio serverio savininkui, jos keisti negalite.', + 'banSuperAdminError' => + 'Paskyra {username} priklauso superadministratoriui. Jos užblokuoti negalite.', + 'deleteOwnerError' => + 'Paskyra {username} priklauso šio serverio savininkui, jos pašalinti negalite.', + 'deleteSuperAdminError' => + 'Paskyra {username} priklauso superadministratoriui, jos pašalinti negalite.', + 'deleteSuccess' => 'Paskyra {username} pašalinta.', + ], +]; diff --git a/modules/Install/Language/.rsync-filter b/modules/Install/Language/.rsync-filter index b802a93d..c8d333dc 100644 --- a/modules/Install/Language/.rsync-filter +++ b/modules/Install/Language/.rsync-filter @@ -1,12 +1,13 @@ -+ en/*** -+ fr/*** -+ pl/*** -+ de/*** -+ pt-br/*** -+ nn-no/*** -+ es/*** -+ zh-hans/*** -+ ca/*** + br/*** ++ ca/*** ++ de/*** ++ en/*** ++ es/*** ++ fr/*** ++ lt/*** ++ nn-no/*** ++ pl/*** ++ pt-br/*** + sr-latn/*** ++ zh-hans/*** - ** diff --git a/modules/Install/Language/cs/Install.php b/modules/Install/Language/cs/Install.php new file mode 100644 index 00000000..6071cdc3 --- /dev/null +++ b/modules/Install/Language/cs/Install.php @@ -0,0 +1,62 @@ + 'Instalátor Castopod', + 'manual_config' => 'Ruční konfigurace', + 'manual_config_subtitle' => + 'Vytvořte soubor `.env` s vaším nastavením a obnovte stránku pro pokračování instalace.', + 'form' => [ + 'instance_config' => 'Konfigurace instance', + 'hostname' => 'Název hostitele', + 'media_base_url' => 'URL pro média', + 'media_base_url_hint' => + 'Pokud používáte CDN a/nebo externí analytickou službu, můžete je nastavit zde.', + 'admin_gateway' => 'Administrátorská brána', + 'admin_gateway_hint' => + 'Cesta pro přístup k administraci (např. https://example.com/cp-admin). Ve výchozím nastavení je nastaveno jako cp-admin, doporučujeme ji z bezpečnostních důvodů změnit.', + 'auth_gateway' => 'Ověřovací brána', + 'auth_gateway_hint' => + 'Cesta pro přístup k ověřovacím stránkám (např. https://example.com/cp-auth). Ve výchozím nastavení je nastaveno jako cp-auth, doporučujeme ji z bezpečnostních důvodů změnit.', + 'database_config' => 'Konfigurace databáze', + 'database_config_hint' => + 'Castopod se musí připojit k databázi MySQL (nebo MariaDB). Pokud nemáte tyto požadované informace, kontaktujte prosím správce serveru.', + 'db_hostname' => 'Hostname databáze', + 'db_name' => 'Název databáze', + 'db_username' => 'Uživatelské k databázi', + 'db_password' => 'Heslo k databázi', + 'db_prefix' => 'Předpona databáze', + 'db_prefix_hint' => + "Předpona Castopod tabulky, ponechejte beze změn pokud nevíte co to znamená.", + 'cache_config' => 'Nastavení mezipaměti', + 'cache_config_hint' => + 'Vyberte preferovaného zpracovatele mezipaměti. Ponechte výchozí hodnotu, pokud nemáte přehled o tom, co to znamená.', + 'cache_handler' => 'Zpracovatel mezipaměti', + 'cacheHandlerOptions' => [ + 'file' => 'Soubor', + 'redis' => 'Redis', + 'predis' => 'Predis', + ], + 'next' => 'Další', + 'submit' => 'Dokončit instalaci', + 'create_superadmin' => 'Vytvořte si svůj Super Admin účet', + 'email' => 'E-mail', + 'username' => 'Uživatelské jméno', + 'password' => 'Heslo', + ], + 'messages' => [ + 'createSuperAdminSuccess' => + 'Váš superadmin účet byl úspěšně vytvořen. Přihlaste se a začněte s podcastem!', + 'databaseConnectError' => + 'Castopod se nemohl připojit k databázi. Upravte konfiguraci databáze a zkuste to znovu.', + 'writeError' => + "Nelze vytvořit / zapsat soubor `.env`. Musíte jej vytvořit ručně podle šablony souboru `.env.example` v balíčku Castopod.", + ], +]; diff --git a/modules/Install/Language/lt/Install.php b/modules/Install/Language/lt/Install.php new file mode 100644 index 00000000..3a01029d --- /dev/null +++ b/modules/Install/Language/lt/Install.php @@ -0,0 +1,62 @@ + '„Castopod“ diegyklė', + 'manual_config' => 'Rankinis konfigūravimas', + 'manual_config_subtitle' => + 'Sukurkite failą `.env` su naudotinais nustatymais ir įkelkite šį tinklalapį iš naujo diegimui pratęsti.', + 'form' => [ + 'instance_config' => 'Serverio konfigūracija', + 'hostname' => 'Serverio vardas', + 'media_base_url' => 'Daugialypės terpės failų bazinis URL', + 'media_base_url_hint' => + 'Jei naudojatės CDN ir/ar išorine srauto analizės tarnyba, galite tai nurodyti čia.', + 'admin_gateway' => 'Administratoriaus skydelio adresas', + 'admin_gateway_hint' => + 'Kelias administratoriaus skydeliui pasiekti (pvz., https://example.com/cp-admin). Numatytuoju atveju naudojamas kelias „cp-admin“, tačiau mes rekomenduojame jį pasikeisti saugumo sumetimais.', + 'auth_gateway' => 'Autentifikacijos tinklalapių adresas', + 'auth_gateway_hint' => + 'Kelias autentifikacijos tinklalapiams pasiekti (pvz., https://example.com/cp-auth). Numatytuoju atveju naudojamas kelias „cp-auth“, tačiau mes rekomenduojame jį pasikeisti saugumo sumetimais.', + 'database_config' => 'Duomenų bazės konfigūracija', + 'database_config_hint' => + '„Castopod“ reikia prisijungti prie jūsų „MySQL“ ar „MariaDB“ duomenų bazės. Jei neturite prisijungimo prie duomenų bazės duomenų, kreipkitės į savo serverio administratorių.', + 'db_hostname' => 'DB serveris', + 'db_name' => 'DB pavadinimas', + 'db_username' => 'DB naudotojo vardas', + 'db_password' => 'DB slaptažodis', + 'db_prefix' => 'DB prefiksas', + 'db_prefix_hint' => + "„Castopod“ lentelių pavadinimų prefiksas. Jei nežinote, kas tai – palikite kas įrašyta.", + 'cache_config' => 'Podėlio konfigūracija', + 'cache_config_hint' => + 'Pasirinkite ketinamą naudoti podėlio tipą. Jei nežinote, kas tai – palikite numatytąjį parinktį.', + 'cache_handler' => 'Podėlio tipas', + 'cacheHandlerOptions' => [ + 'file' => 'Failai', + 'redis' => '„Redis“', + 'predis' => '„Predis“', + ], + 'next' => 'Toliau', + 'submit' => 'Užbaigti diegimą', + 'create_superadmin' => 'Susikurkite savo superadministratoriaus paskyrą', + 'email' => 'El. paštas', + 'username' => 'Naudotojo vardas', + 'password' => 'Slaptažodis', + ], + 'messages' => [ + 'createSuperAdminSuccess' => + 'Jūsų superadministratoriaus paskyra sukurta sėkmingai. Prisijunkite ir kurkite savo pirmąją tinklalaidę!', + 'databaseConnectError' => + '„Castopod“ nepavyko prisijungti prie nurodytos duomenų bazės. Pakoreguokite DB konfigūraciją ir bandykite dar kartą.', + 'writeError' => + "Nepavyko sukurti/rašyti į jūsų `.env` failą. Užpildykite jį rankiniu būdu, pasinaudodami šabloniniu `.env.example` failu iš „Castopod“ paketo.", + ], +]; diff --git a/modules/PodcastImport/Language/.rsync-filter b/modules/PodcastImport/Language/.rsync-filter new file mode 100644 index 00000000..38526af5 --- /dev/null +++ b/modules/PodcastImport/Language/.rsync-filter @@ -0,0 +1,14 @@ ++ br/*** ++ ca/*** ++ cs/*** ++ de/*** ++ en/*** ++ es/*** ++ fr/*** ++ lt/*** ++ nn-no/*** ++ pl/*** ++ pt-br/*** ++ sr-latn/*** ++ zh-hans/*** +- ** diff --git a/modules/PodcastImport/Language/cs/PodcastImport.php b/modules/PodcastImport/Language/cs/PodcastImport.php new file mode 100644 index 00000000..f1ada831 --- /dev/null +++ b/modules/PodcastImport/Language/cs/PodcastImport.php @@ -0,0 +1,66 @@ + [ + 'disclaimer' => 'Importuje', + 'text' => '{podcastTitle} je nyní importován.', + 'cta' => 'Zobrazit stav importu', + ], + 'old_podcast_section_title' => 'Podcast k importu', + 'old_podcast_legal_disclaimer_title' => 'Právní prohlášení', + 'old_podcast_legal_disclaimer' => + 'Ujistěte se, že vlastníte práva pro tento kanál před jeho importem. Kopírování a vysílání bez řádných práv je pirátství a podléhá stíhání.', + 'imported_feed_url' => 'Adresa kanálu', + 'imported_feed_url_hint' => 'Zdroj musí být ve formátu XML nebo RSS.', + 'new_podcast_section_title' => 'Nový kanál', + 'lock_import' => + 'Tento kanál je chráněn. Nemůžete jej importovat. Pokud jste vlastník, odemkněte jej na zdrojové platformě.', + 'submit' => 'Přidat import do fronty', + 'queue' => [ + 'status' => [ + 'label' => 'Stav', + 'queued' => 've frontě', + 'queued_hint' => 'Import čeká na zpracování.', + 'canceled' => 'zrušeno', + 'canceled_hint' => 'Import byl zrušen.', + 'running' => 'běží', + 'running_hint' => 'Probíhá zpracování importu.', + 'failed' => 'selhalo', + 'failed_hint' => 'Import nemohl být dokončen: skript selhal.', + 'passed' => 'prošel', + 'passed_hint' => 'Import úspěšně dokončen!', + ], + 'feed' => 'Kanál', + 'duration' => 'Doba trvání importu', + 'imported_episodes' => 'Importované epizody', + 'imported_episodes_hint' => '{newlyImportedCount} nově importováno, {alreadyImportedCount} již importováno.', + 'actions' => [ + 'cancel' => 'Zrušit', + 'retry' => 'Opakovat', + 'delete' => 'Smazat', + ], + ], + 'syncForm' => [ + 'title' => 'Synchronizovat kanály', + 'feed_url' => 'Adresa kanálu', + 'feed_url_hint' => 'URL kanálu, který chcete synchronizovat s aktuálním podcastem.', + 'submit' => 'Přidat do fronty', + ], + 'messages' => [ + 'canceled' => 'Import byl úspěšně zrušen!', + 'notRunning' => 'Nelze zrušit import, protože není spuštěn.', + 'alreadyRunning' => 'Import je již spuštěn. Před dalším pokusem jej můžete zrušit.', + 'retried' => 'Import byl zařazen do fronty, brzy bude znova spuštěn!', + 'deleted' => 'Import byl úspěšně smazán!', + 'importTaskQueued' => 'Nový úkol byl ve frontě, import brzy začne!', + 'syncTaskQueued' => 'Nový úkol importu byl ve frontě, synchronizace brzy začne!', + ], +]; diff --git a/modules/PodcastImport/Language/lt/PodcastImport.php b/modules/PodcastImport/Language/lt/PodcastImport.php new file mode 100644 index 00000000..89767f23 --- /dev/null +++ b/modules/PodcastImport/Language/lt/PodcastImport.php @@ -0,0 +1,74 @@ + [ + 'disclaimer' => 'Importuojama', + 'text' => 'Tinklalaidė „{podcastTitle}“ šiuo metu importuojama.', + 'cta' => 'Rodyti importo būseną', + ], + 'old_podcast_section_title' => 'Importuotina tinklalaidė', + 'old_podcast_legal_disclaimer_title' => 'Atsakomybės išsižadėjimas', + 'old_podcast_legal_disclaimer' => + 'Prieš importuodami šią tinklalaidę, įsitikinkite, jog turite teisę tai daryti. Kopijuojant ir retransliuojant tinklalaidę, neturint tam reikiamų teisių, yra piratavimas, už tai gali būti baudžiama.', + 'imported_feed_url' => 'Sklaidos kanalo URL', + 'imported_feed_url_hint' => 'Sklaidos kanalas turi būti XML arba RSS formatu.', + 'new_podcast_section_title' => 'Naujoji tinklalaidė', + 'lock_import' => + 'Šis sklaidos kanalas apsaugotas. Jo importuoti negalite. Jei esate savininkas, atjunkite jo apsaugą dabartinėje platformoje.', + 'submit' => 'Įtraukti importą į eilę', + 'queue' => [ + 'status' => [ + 'label' => 'Būsena', + 'queued' => 'eilėje', + 'queued_hint' => 'Importo užduotis laukia apdorojimo.', + 'canceled' => 'atsisakyta', + 'canceled_hint' => 'Importo užduotis atšaukta.', + 'running' => 'vykdoma', + 'running_hint' => 'Importo užduotis šiuo metu apdorojama.', + 'failed' => 'nepavyko', + 'failed_hint' => 'Importo užduotis nepayko: scenarijaus klaida.', + 'passed' => 'atlikta', + 'passed_hint' => 'Importo užduotis užbaigta sėkmingai!', + ], + 'feed' => 'Sklaidos kanalas', + 'duration' => 'Importo trukmė', + 'imported_episodes' => 'Importuota epizodų', + 'imported_episodes_hint' => '{newlyImportedCount, plural, + one {# importuotas naujai} + few {# importuoti naujai} + other {# importuota naujai} + }, {alreadyImportedCount, plural, + one {# jau buvo importuotas} + few {# jau buvo importuoti} + other {# jau buvo importuota} + }.', + 'actions' => [ + 'cancel' => 'Atsisakyti', + 'retry' => 'Bandyti dar kartą', + 'delete' => 'Šalinti', + ], + ], + 'syncForm' => [ + 'title' => 'Sinchronizuoti sklaidos kanalus', + 'feed_url' => 'Sklaidos kanalo URL', + 'feed_url_hint' => 'Sklaidos kanalo, kurį norite sinchronizuoti su šia tinklalaide, URL.', + 'submit' => 'Įtraukti į eilę', + ], + 'messages' => [ + 'canceled' => 'Importo užduotis sėkmingai atšaukta!', + 'notRunning' => 'Importo užduoties atšaukti nepavyko, nes ji nevykdoma.', + 'alreadyRunning' => 'Importo užduotis jau vykdoma. Prieš bandydami iš naujo, galite ją atšaukti.', + 'retried' => 'Importo užduotis įtraukta į eilę, netrukus bus ją bus bandoma vykdyti iš naujo!', + 'deleted' => 'Importo užduotis sėkmingai pašalinta!', + 'importTaskQueued' => 'Nauja importo užduotis įtraukta į eilę, importas bus pradėtas netrukus!', + 'syncTaskQueued' => 'Nauja importo užduotis įtraukta į eilę, sinchronizavimas bus pradėtas netrukus!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/.rsync-filter b/modules/PremiumPodcasts/Language/.rsync-filter new file mode 100644 index 00000000..38526af5 --- /dev/null +++ b/modules/PremiumPodcasts/Language/.rsync-filter @@ -0,0 +1,14 @@ ++ br/*** ++ ca/*** ++ cs/*** ++ de/*** ++ en/*** ++ es/*** ++ fr/*** ++ lt/*** ++ nn-no/*** ++ pl/*** ++ pt-br/*** ++ sr-latn/*** ++ zh-hans/*** +- ** diff --git a/modules/PremiumPodcasts/Language/cs/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/cs/PremiumPodcasts.php new file mode 100644 index 00000000..e85134b4 --- /dev/null +++ b/modules/PremiumPodcasts/Language/cs/PremiumPodcasts.php @@ -0,0 +1,34 @@ + 'Podcast obsahuje prémiové epizody', + 'episode_is_premium' => 'Epizoda je prémiová, dostupná pouze pro prémiové odběratele', + 'unlock_episode' => 'Tato epizoda je pouze pro prémiové odběratele. Klepnutím ji odemknete!', + 'banner_unlock' => 'Tento podcast obsahuje prémiové epizody, které jsou dostupné pouze pro prémiové odběratele.', + 'banner_lock' => 'Podcast je odemčen, užijte si prémiové epizody!', + 'subscribe' => 'Odebírat', + 'lock' => 'Uzamknout', + 'unlock' => 'Odemknout', + 'unlock_form' => [ + 'title' => 'Prémiový obsah', + 'subtitle' => 'Tento podcast obsahuje uzamčené prémiové epizody! Máte klíč k jejich odemčení?', + 'token' => 'Zadejte svůj klíč', + 'token_hint' => 'Pokud jste přihlášeni k odběru {podcastTitle}, můžete zkopírovat klíč, který vám byl odeslán prostřednictvím e-mailu a vložit jej zde.', + 'submit' => 'Odemknout všechny epizody!', + 'call_to_action' => 'Odemknout všechny epizody {podcastTitle}:', + 'subscribe_cta' => 'Přihlásit se k odběru nyní!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast byl úspěšně odemčen! Užijte si prémiové epizody!', + 'unlockBadAttempt' => 'Zdá se, že váš klíč nefunguje…', + 'lockSuccess' => 'Podcast byl úspěšně uzamčen!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/cs/Subscription.php b/modules/PremiumPodcasts/Language/cs/Subscription.php new file mode 100644 index 00000000..a53a8c5b --- /dev/null +++ b/modules/PremiumPodcasts/Language/cs/Subscription.php @@ -0,0 +1,100 @@ + 'Odběry podcastu', + 'add' => 'Nový odběr', + 'view' => 'Zobrazit odběry', + 'edit' => 'Upravit odebírání', + 'regenerate_token' => 'Znovu vygenerovat token', + 'suspend' => 'Pozastavit odběr', + 'resume' => 'Pokračovat v odběru', + 'delete' => 'Smazat odběr', + 'status' => [ + 'active' => 'Aktivní', + 'suspended' => 'Pozastaveno', + 'expired' => 'Vypršeno', + ], + 'list' => [ + 'number' => 'Číslo', + 'email' => 'E-mail', + 'expiration_date' => 'Datum vypršení', + 'unlimited' => 'Neomezené', + 'downloads' => 'Stažení', + 'status' => 'Stav', + ], + 'form' => [ + 'email' => 'E-mail', + 'expiration_date' => 'Datum vypršení', + 'expiration_date_hint' => 'Datum a čas, kdy vyprší odběr. Ponechte prázdné pro neomezený odběr.', + 'submit_create' => 'Vytvořit odběr', + 'submit_edit' => 'Upravit odebírání', + ], + 'form_link_add' => [ + 'link' => 'Odkaz na stránku odběru', + 'link_hint' => 'Tímto přidáte výzvu k akci na webových stránkách, které vyzývají posluchače k odběru podcastu.', + 'submit' => 'Uložit odkaz', + ], + 'suspend_form' => [ + 'disclaimer' => 'Pozastavení odběru omezí přístup k prémiovému obsahu. Později budete moci pozastavení zrušit.', + 'reason' => 'Důvod', + 'reason_placeholder' => 'Proč pozastavujete odběr?', + "submit" => 'Pozastavit odběr', + ], + 'delete_form' => [ + 'disclaimer' => 'Smazáním odběru {subscriber} odstraníte všechna analytická data, která jsou s ním spojena.', + 'understand' => 'Chápu, trvale odebrat odběr', + 'submit' => 'Odebrat odběr', + ], + 'messages' => [ + 'addSuccess' => 'Nový odběr přidán! Uvítací e-mail byl odeslán {subscriber}.', + 'addError' => 'Odběr nelze přidat.', + 'editSuccess' => 'Datum vypršení platnosti odběru bylo aktualizováno! E-mail byl odeslán {subscriber}.', + 'editError' => 'Odběr se nepodařilo smazat.', + 'regenerateTokenSuccess' => 'Token vygenerován! {subscriber} byl odeslán e-mail s novým tokenem.', + 'regenerateTokenError' => 'Token nelze obnovit.', + 'deleteSuccess' => 'Odběr byl odstraněn! {subscriber} byl odeslán e-mail .', + 'deleteError' => 'Odběr nelze odstranit.', + 'suspendSuccess' => 'Odběr byl pozastaven! E-mail byl odeslán {subscriber}.', + 'suspendError' => 'Odběr nemohl být pozastaven.', + 'resumeSuccess' => 'Odběr byl obnoven! E-mail byl odeslán {subscriber}.', + 'resumeError' => 'Odběr nelze obnovit.', + 'linkSaveSuccess' => 'Odkaz na odběr byl úspěšně uložen! Zobrazí se na webové stránce jako výzva k akci!', + 'linkRemoveSuccess' => 'Odkaz na odběr byl úspěšně odstraněn!', + ], + 'emails' => [ + 'greeting' => 'Ahoj,', + 'token' => 'Váš token: {0}', + 'unique_feed_link' => 'Váš unikátní odkaz na kanál: {0}', + 'how_to_use' => 'Návod k použití', + 'two_ways' => 'Máte dva způsoby, jak odemknout prémiové epizody:', + 'import_into_app' => 'Zkopírujte jedinečnou URL kanálu do vaší oblíbené podcast aplikace (importujte jej jako soukromý kanál, abyste zabránili odhalení vašich údajů).', + 'go_to_website' => 'Přejděte na web {podcastWebsite} a odemkněte podcast pomocí Vašeho tokenu.', + 'welcome_subject' => 'Vítejte v {podcastTitle}', + 'welcome' => 'Přihlásili jste k odběru {podcastTitle}, děkujeme a vítejte na palubě!', + 'welcome_token_title' => 'Zde jsou vaše přihlašovací údaje pro odemknutí prémiových epizod:', + 'welcome_expires' => 'Váš odběr byl nastaven na platnost do {0}.', + 'welcome_never_expires' => 'Váš odběr byl nastaven tak, že nikdy nevyprší.', + 'reset_subject' => 'Váš token byl obnoven!', + 'reset_token' => 'Váš přístup k {podcastTitle} byl obnoven!', + 'reset_token_title' => 'Nové přihlašovací údaje byly vygenerovány pro odemknutí prémiových epizod podcastu:', + 'edited_subject' => 'Váš odběr byl aktualizován!', + 'edited_expires' => 'Váš odběr {podcastTitle} byl nastaven na platnost {expiresAt}.', + 'edited_never_expires' => 'Váš odběr {podcastTitle} byl nastaven tak, aby nikdy neskončil!', + 'suspended_subject' => 'Váš odběr byl pozastaven!', + 'suspended' => 'Váš odběr {podcastTitle} byl pozastaven! Již nemůžete přistupovat k prémiovým epizodám podcastu.', + 'suspended_reason' => 'To je z následujícího důvodu: {0}', + 'resumed_subject' => 'Váš odběr byl obnoven!', + 'resumed' => 'Váš odběr {podcastTitle} byl obnoven! Můžete znovu přistupovat k prémiovým epizodám podcastu.', + 'deleted_subject' => 'Váš odběr byl odstraněn!', + 'deleted' => 'Váš odběr {podcastTitle} byl odebrán! Již nemáte přístup k prémiovým epizodám podcastu.', + 'footer' => '{castopod} je hostován na {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/lt/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/lt/PremiumPodcasts.php new file mode 100644 index 00000000..dec15f7a --- /dev/null +++ b/modules/PremiumPodcasts/Language/lt/PremiumPodcasts.php @@ -0,0 +1,34 @@ + 'Tinklalaidėje yra premium epizodų', + 'episode_is_premium' => 'Šis epizodas yra premium, jis pasiekiamas tik premium prenumeratoriams', + 'unlock_episode' => 'Šis epizodas skirtas tik premium prenumeratoriams. Spustelėkite jam atrakinti!', + 'banner_unlock' => 'Šioje tinklalaidėje yra premium epizodų, pasiekiamų tik premium prenumeratoriams.', + 'banner_lock' => 'Tinklalaidė atrakinta, mėgaukitės premium epizodu!', + 'subscribe' => 'Prenumeruoti', + 'lock' => 'Užrakinti', + 'unlock' => 'Atrakinti', + 'unlock_form' => [ + 'title' => 'Premium turinys', + 'subtitle' => 'Šioje tinklalaidėje yra užrakintų premium epizodų! Ar turite raktą jiems atrakinti?', + 'token' => 'Įveskite savo raktą', + 'token_hint' => 'Jei esate užsiprenumeravę „{podcastTitle}“, raktą galite nusikopijuoti iš mūsų jums siųsto el. laiško ir įdėti čia.', + 'submit' => 'Atrakinti visus epizodus!', + 'call_to_action' => 'Atrakinkite visus „{podcastTitle}“ epizodus:', + 'subscribe_cta' => 'Prenumeruokite dabar!', + ], + 'messages' => [ + 'unlockSuccess' => 'Tinklalaidė sėkmingai atrakinta! Mėgaukitės premium epizodais!', + 'unlockBadAttempt' => 'Panašu, kad jūsų raktas netinkamas…', + 'lockSuccess' => 'Tinklalaidė sėkmingai užrakinta!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/lt/Subscription.php b/modules/PremiumPodcasts/Language/lt/Subscription.php new file mode 100644 index 00000000..69274605 --- /dev/null +++ b/modules/PremiumPodcasts/Language/lt/Subscription.php @@ -0,0 +1,100 @@ + 'Tinklalaidžių prenumeratos', + 'add' => 'Nauja prenumerata', + 'view' => 'Peržiūrėti prenumeratą', + 'edit' => 'Keisti prenumeratą', + 'regenerate_token' => 'Perkurti prieigos raktą', + 'suspend' => 'Pristabdyti prenumeratą', + 'resume' => 'Atstatyti prenumeratą', + 'delete' => 'Šalinti prenumeratą', + 'status' => [ + 'active' => 'Aktyvi', + 'suspended' => 'Pristabdyta', + 'expired' => 'Nebegalioja', + ], + 'list' => [ + 'number' => 'Numeris', + 'email' => 'El. paštas', + 'expiration_date' => 'Galiojimo pabaigos data', + 'unlimited' => 'Neribota', + 'downloads' => 'Parsisiuntimai', + 'status' => 'Būsena', + ], + 'form' => [ + 'email' => 'El. paštas', + 'expiration_date' => 'Galiojimo pabaigos data', + 'expiration_date_hint' => 'Data ir laikas, iki kada prenumerata galioja. Palikite lauką tuščią neribotai prenumeratai.', + 'submit_create' => 'Kurti prenumeratą', + 'submit_edit' => 'Taisyti prenumeratą', + ], + 'form_link_add' => [ + 'link' => 'Prenumeratos tinklalapio adresas', + 'link_hint' => 'Užpildžius šią formą, svetainėje bus pridėta raginimo šią tinklalaidę prenumeruoti forma.', + 'submit' => 'Įrašyti nuorodą', + ], + 'suspend_form' => [ + 'disclaimer' => 'Pristabdžius šią prenumeratą, bus apribota prenumeratoriaus prieiga prie premium turinio. Prenumeratą galėsite atstatyti.', + 'reason' => 'Priežastis', + 'reason_placeholder' => 'Kodėl pristabdote šią prenumeratą?', + "submit" => 'Pristabdyti prenumeratą', + ], + 'delete_form' => [ + 'disclaimer' => 'Pašalinus {subscriber} prenumeratą, bus pašalinti ir visi su ja susiję analitikos duomenys.', + 'understand' => 'Suprantu, noriu visam laikui pašalinti prenumeratą', + 'submit' => 'Pašalinti prenumeratą', + ], + 'messages' => [ + 'addSuccess' => 'Nauja prenumerata pridėta! {subscriber} turėtų netrukus gauti pasisveikinimo el. laišką.', + 'addError' => 'Prenumeratos pridėti nepavyko.', + 'editSuccess' => 'Prenumeratos galiojimo pabaigos data atnaujinta! {subscriber} netrukus turėtų gauti el. laišką.', + 'editError' => 'Prenumeratos pakeisti nepavyko.', + 'regenerateTokenSuccess' => 'Prieigos raktas perkurtas! {subscriber} turėtų netrukus gauti el. laišką su naujuoju prieigos raktu.', + 'regenerateTokenError' => 'Prieigos rakto perkurti nepavyko.', + 'deleteSuccess' => 'Prenumerata pašalinta! {subscriber} turėtų netrukus gauti el. laišką.', + 'deleteError' => 'Prenumeratos pašalinti nepavyko.', + 'suspendSuccess' => 'Prenumerata pristabdyta! {subscriber} turėtų netrukus gauti el. laišką.', + 'suspendError' => 'Prenumeratos pristabdyti nepavyko.', + 'resumeSuccess' => 'Prenumerata atstatyta! {subscriber} turėtų netrukus gauti el. laišką.', + 'resumeError' => 'Prenumeratos atstatyti nepavyko.', + 'linkSaveSuccess' => 'Prenumeratos nuoroda įrašyta sėkmingai! Ji bus rodoma svetainėje kaip raginimas veikti!', + 'linkRemoveSuccess' => 'Prenumeratos nuoroda pašalinta sėkmingai!', + ], + 'emails' => [ + 'greeting' => 'Sveiki,', + 'token' => 'Jūsų prieigos raktas: {0}', + 'unique_feed_link' => 'Jūsų asmeninio sklaidos kanalo adresas: {0}', + 'how_to_use' => 'Kaip naudotis?', + 'two_ways' => 'Yra du būdai premium epizodams atrakinti:', + 'import_into_app' => 'Galite nukopijuoti savo asmeninio sklaidos kanalo URL į mėgstamą tinklalaidžių klausymosi programą. Nepamirškite pasirinkti, jog tai privatus sklaidos kanalas, kad neatskleistumėte savo prisijungimo duomenų.', + 'go_to_website' => 'Galite atverti „{podcastWebsite}“ svetainę ir atrakinti tinklalaidę, naudodamiesi prieigos raktu.', + 'welcome_subject' => 'Jus sveikina „{podcastTitle}“', + 'welcome' => 'Jūs užsiprenumeravote tinklalaidę „{podcastTitle}“. Dėkojame ir sveikiname prisijungus!', + 'welcome_token_title' => 'Žemiau pateikiame jūsų prisijungimo duomenis tinklalaidės premium epizodams atrakinti:', + 'welcome_expires' => 'Jūsų prenumerata galioja iki {0}.', + 'welcome_never_expires' => 'Jūsų prenumerata galioja neterminuotai.', + 'reset_subject' => 'Jūsų prieigos raktas perkurtas!', + 'reset_token' => 'Jūsų prieigos prie tinklalaidės „{podcastTitle}“ raktas perkurtas!', + 'reset_token_title' => 'Jums sugeneruoti nauji prisijungimo duomenys šios tinklalaidės premium epizodams atrakinti:', + 'edited_subject' => 'Jūsų prenumerata pakoreguota!', + 'edited_expires' => 'Jūsų tinklalaidės „{podcastTitle}“ prenumerata galios iki {expiresAt}.', + 'edited_never_expires' => 'Jūsų tinklalaidės „{podcastTitle}“ prenumerata galios neterminuotai!', + 'suspended_subject' => 'Jūsų prenumerata pristabdyta!', + 'suspended' => 'Jūsų tinklalaidės „{podcastTitle}“ prenumerata pristabdyta! Šios tinklalaidės premium epizodų pasiekti nebegalėsite.', + 'suspended_reason' => 'Tai įvyko dėl šios priežasties: {0}', + 'resumed_subject' => 'Jūsų prenumerata atstatyta!', + 'resumed' => 'Jūsų tinklalaidės „{podcastTitle}“ prenumerata atstatyta! Jūs vėl galte pasiekti šios tinklalaidės premium epizodus.', + 'deleted_subject' => 'Jūsų prenumerata atšaukta!', + 'deleted' => 'Jūsų tinklalaidės „{podcastTitle}“ prenumerata atšaukta! Šios tinklalaidės premium epizodų pasiekti nebegalėsite.', + 'footer' => '{castopod}, veikianti serveryje {host}', + ], +]; From ea9ba5adc8d5d31eb42347a51ff2f8a7c4f35306 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 23 Jan 2026 16:46:10 +0000 Subject: [PATCH 178/210] chore(release): 1.14.0 [skip ci] ## 1.14.0 (2026-01-23) * feat: add Lithuanian and Czech languages ([9582f2a](https://code.castopod.org/adaures/castopod/commit/9582f2a)) --- CHANGELOG.md | 5 +++++ app/Config/Constants.php | 2 +- composer.json | 2 +- package.json | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 128f8998..fda96094 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.14.0 (2026-01-23) + +- feat: add Lithuanian and Czech languages + ([9582f2a](https://code.castopod.org/adaures/castopod/commit/9582f2a)) + ## 1.13.8 (2025-12-20) - chore: update CI4 to v4.6.4 + php and js packages to latest diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 4f9657e7..44e4f49f 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.13.8'); +defined('CP_VERSION') || define('CP_VERSION', '1.14.0'); /* | -------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 755f116d..27ba71e7 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.13.8", + "version": "1.14.0", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", diff --git a/package.json b/package.json index 7fdb21cf..862e241d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "castopod", - "version": "1.13.8", + "version": "1.14.0", "description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "private": true, "license": "AGPL-3.0-or-later", From 44fb904ba635b301c939bd75ad63cfb97ae36cd7 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sat, 31 Jan 2026 14:31:20 +0000 Subject: [PATCH 179/210] fix(i18n): set english as first item in supported locales in case locale negotiation does not work --- app/Config/App.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Config/App.php b/app/Config/App.php index 304c6f52..9f95c964 100644 --- a/app/Config/App.php +++ b/app/Config/App.php @@ -123,13 +123,13 @@ class App extends BaseConfig * @var list */ public array $supportedLocales = [ + 'en', // keep english language first in case locale negotiation does not work + 'fr', 'br', 'ca', 'cs', 'de', - 'en', 'es', - 'fr', 'lt', 'nn-no', 'pl', From 07247bf0d21d2189aeb318632dd4dc538dd8c5e8 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 31 Jan 2026 14:50:57 +0000 Subject: [PATCH 180/210] chore(release): 1.14.1 [skip ci] ## 1.14.1 (2026-01-31) * fix(i18n): set english as first item in supported locales in case locale negotiation does not work ([44fb904](https://code.castopod.org/adaures/castopod/commit/44fb904)) --- CHANGELOG.md | 6 ++++++ app/Config/Constants.php | 2 +- composer.json | 2 +- package.json | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fda96094..28a3cf79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.14.1 (2026-01-31) + +- fix(i18n): set english as first item in supported locales in case locale + negotiation does not work + ([44fb904](https://code.castopod.org/adaures/castopod/commit/44fb904)) + ## 1.14.0 (2026-01-23) - feat: add Lithuanian and Czech languages diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 44e4f49f..8cd717b8 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.14.0'); +defined('CP_VERSION') || define('CP_VERSION', '1.14.1'); /* | -------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 27ba71e7..05e8be35 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.14.0", + "version": "1.14.1", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", diff --git a/package.json b/package.json index 862e241d..3fc41a81 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "castopod", - "version": "1.14.0", + "version": "1.14.1", "description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "private": true, "license": "AGPL-3.0-or-later", From 14089f0542ccdf187bd64bea8ad2787b9e8c7d59 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sun, 15 Feb 2026 19:32:01 +0100 Subject: [PATCH 181/210] 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 | 80 +- .releaserc.json | 3 +- app/Helpers/seo_helper.php | 176 +- composer.json | 20 +- composer.lock | 393 +-- docker/production/.gitlab-ci.yml | 74 +- docker/production/Dockerfile | 135 + docker/production/app/Dockerfile | 44 - docker/production/app/entrypoint.sh | 12 - docker/production/app/supervisord.conf | 21 - docker/production/castopod/Dockerfile | 57 - .../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/astro.config.mjs | 3 + docs/package.json | 10 +- docs/pnpm-lock.yaml | 1508 +++++----- .../docs/en/getting-started/docker.mdx | 151 +- package.json | 50 +- pnpm-lock.yaml | 2558 +++++++++-------- scripts/bundle.sh | 3 - 43 files changed, 2741 insertions(+), 2963 deletions(-) create mode 100644 .dockerignore create mode 100644 docker/production/Dockerfile delete mode 100644 docker/production/app/Dockerfile delete mode 100644 docker/production/app/entrypoint.sh delete mode 100644 docker/production/app/supervisord.conf delete mode 100644 docker/production/castopod/Dockerfile 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 90005402..759dd2f9 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 66ce8cc7..ab7d958c 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,11 +56,10 @@ lint-commit-msg: - ./scripts/lint-commit-msg.sh dependencies: - js-dependencies - only: - - develop - - main - - beta - - alpha + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - if: $CI_COMMIT_BRANCH =~ /^(develop|main|alpha|beta|next)$/ lint-php: stage: quality @@ -65,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 @@ -74,6 +85,10 @@ lint-js: - pnpm run lint dependencies: - js-dependencies + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success tests: stage: quality @@ -92,6 +107,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 @@ -112,13 +131,12 @@ bundle: name: "castopod-${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}" paths: - castopod - only: - variables: - - $CI_PROJECT_NAMESPACE == "adaures" - except: - - main - - beta - - alpha + rules: + - if: $CI_PROJECT_NAMESPACE != "adaures" + when: never + - if: $CI_COMMIT_BRANCH =~ /^(main|beta|alpha|next)$/ || $CI_COMMIT_TAG + when: never + - when: on_success release: stage: release @@ -142,38 +160,38 @@ release: artifacts: paths: - castopod - - CP_VERSION.env - only: - - main - - beta - - alpha + 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 - 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 b5b4a34d..049e4b2d 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -89,7 +89,8 @@ "package.json", "package-lock.json", "CHANGELOG.md" - ] + ], + "message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}" } ], [ diff --git a/app/Helpers/seo_helper.php b/app/Helpers/seo_helper.php index e18e659a..d8af9834 100644 --- a/app/Helpers/seo_helper.php +++ b/app/Helpers/seo_helper.php @@ -30,22 +30,25 @@ if (! function_exists('get_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' + ) ); $metatags = new MetaTags(); @@ -79,22 +82,31 @@ if (! function_exists('get_episode_metatags')) { function get_episode_metatags(Episode $episode): string { $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_ISO8601), - '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_ISO8601), + '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' + ) ); $metatags = new MetaTags(); @@ -140,32 +152,50 @@ if (! function_exists('get_episode_metatags')) { if (! function_exists('get_post_metatags')) { function get_post_metatags(Post $post): string { - $socialMediaPosting = new Thing('SocialMediaPosting', [ - '@id' => url_to('post', esc($post->actor->username), $post->id), - 'datePublished' => $post->published_at->format(DATE_ISO8601), - '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_ISO8601), + '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); @@ -192,21 +222,27 @@ if (! function_exists('get_post_metatags')) { if (! function_exists('get_episode_comment_metatags')) { function get_episode_comment_metatags(EpisodeComment $episodeComment): string { - $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_ISO8601), - '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_ISO8601), + 'author' => new Thing( + props: [ + 'name' => $episodeComment->actor->display_name, + 'url' => $episodeComment->actor->uri, + ], + type: 'Person' + ), + 'text' => $episodeComment->message, + 'upvoteCount' => $episodeComment->likes_count, + ], + type: 'SocialMediaPosting' + )); $metatags = new MetaTags(); $metatags diff --git a/composer.json b/composer.json index 05e8be35..617b3625 100644 --- a/composer.json +++ b/composer.json @@ -9,10 +9,10 @@ "php": "^8.1", "adaures/ipcat-php": "^v1.0.0", "adaures/podcast-persons-taxonomy": "^v1.0.1", - "aws/aws-sdk-php": "^3.369.0", + "aws/aws-sdk-php": "^3.369.34", "chrisjean/php-ico": "^1.0.4", "cocur/slugify": "^v4.7.1", - "codeigniter4/framework": "4.6.4", + "codeigniter4/framework": "4.6.5", "codeigniter4/settings": "v2.2.0", "codeigniter4/shield": "^1.2.0", "codeigniter4/tasks": "dev-develop", @@ -20,26 +20,26 @@ "james-heinrich/getid3": "^2.0.0-beta6", "league/commonmark": "^2.8.0", "league/html-to-markdown": "5.1.1", - "melbahja/seo": "^v2.1.1", + "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.50", - "vlucas/phpdotenv": "^5.6.2", + "phpseclib/phpseclib": "~2.0.51", + "vlucas/phpdotenv": "^5.6.3", "whichbrowser/parser": "^v2.1.8", "yassinedoghri/php-icons": "^1.3.0", "yassinedoghri/podcast-feed": "dev-main" }, "require-dev": { - "captainhook/captainhook": "^5.27.4", + "captainhook/captainhook": "^5.28.2", "codeigniter/phpstan-codeigniter": "^1.5.4", "mikey179/vfsstream": "v1.6.12", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.1.33", - "phpunit/phpunit": "^10.5.60", - "rector/rector": "^2.2.14", + "phpstan/phpstan": "^2.1.39", + "phpunit/phpunit": "^10.5.63", + "rector/rector": "^2.3.6", "symplify/coding-standard": "^13.0.0", - "symplify/easy-coding-standard": "^13.0.0" + "symplify/easy-coding-standard": "^13.0.4" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 1b9edb94..ff11b67e 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": "d656a2e88ee682f1e5eac8c7d3c29615", + "content-hash": "ea6bde95b3b80d923a0dc0e9c946a0c0", "packages": [ { "name": "adaures/ipcat-php", @@ -206,16 +206,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.369.0", + "version": "3.369.34", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "2bbe45aaaaa23a863a5daadcda326cf1c8b4a15b" + "reference": "5db21cd0e5c8a5b5344596649033acf861a5e117" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2bbe45aaaaa23a863a5daadcda326cf1c8b4a15b", - "reference": "2bbe45aaaaa23a863a5daadcda326cf1c8b4a15b", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5db21cd0e5c8a5b5344596649033acf861a5e117", + "reference": "5db21cd0e5c8a5b5344596649033acf861a5e117", "shasum": "" }, "require": { @@ -229,7 +229,7 @@ "mtdowling/jmespath.php": "^2.8.0", "php": ">=8.1", "psr/http-message": "^1.0 || ^2.0", - "symfony/filesystem": "^v6.4.3 || ^v7.1.0 || ^v8.0.0" + "symfony/filesystem": "^v5.4.45 || ^v6.4.3 || ^v7.1.0 || ^v8.0.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", @@ -297,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.369.0" + "source": "https://github.com/aws/aws-sdk-php/tree/3.369.34" }, - "time": "2025-12-19T19:08:40+00:00" + "time": "2026-02-13T19:09:12+00:00" }, { "name": "brick/math", - "version": "0.14.1", + "version": "0.14.8", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "f05858549e5f9d7bb45875a75583240a38a281d0" + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f05858549e5f9d7bb45875a75583240a38a281d0", - "reference": "f05858549e5f9d7bb45875a75583240a38a281d0", + "url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629", + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629", "shasum": "" }, "require": { @@ -351,7 +351,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.1" + "source": "https://github.com/brick/math/tree/0.14.8" }, "funding": [ { @@ -359,7 +359,7 @@ "type": "github" } ], - "time": "2025-11-24T14:40:29+00:00" + "time": "2026-02-10T14:33:43+00:00" }, { "name": "chrisjean/php-ico", @@ -484,16 +484,16 @@ }, { "name": "codeigniter4/framework", - "version": "v4.6.4", + "version": "v4.6.5", "source": { "type": "git", "url": "https://github.com/codeigniter4/framework.git", - "reference": "e4d3702037a34549582453dbf59b7b67877ae82e" + "reference": "116e0919590a412c09d2b9e4f6b8addda18224d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/framework/zipball/e4d3702037a34549582453dbf59b7b67877ae82e", - "reference": "e4d3702037a34549582453dbf59b7b67877ae82e", + "url": "https://api.github.com/repos/codeigniter4/framework/zipball/116e0919590a412c09d2b9e4f6b8addda18224d8", + "reference": "116e0919590a412c09d2b9e4f6b8addda18224d8", "shasum": "" }, "require": { @@ -554,7 +554,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/CodeIgniter4" }, - "time": "2025-12-12T10:37:42+00:00" + "time": "2026-02-01T17:59:34+00:00" }, { "name": "codeigniter4/queue", @@ -562,16 +562,16 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/queue.git", - "reference": "3acaa081701b44aaab3ffe8ad6740d138c949e4b" + "reference": "b44386ad29f0a2124e59582ef5ba170788b926ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/queue/zipball/3acaa081701b44aaab3ffe8ad6740d138c949e4b", - "reference": "3acaa081701b44aaab3ffe8ad6740d138c949e4b", + "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.3", @@ -620,7 +620,7 @@ "issues": "https://github.com/codeigniter4/queue/issues", "source": "https://github.com/codeigniter4/queue/tree/develop" }, - "time": "2025-12-18T07:26:23+00:00" + "time": "2026-02-15T08:22:24+00:00" }, { "name": "codeigniter4/settings", @@ -754,23 +754,23 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/tasks.git", - "reference": "9804e5f42a881fee90db4aee114d6d0bfd8a3d4b" + "reference": "8d0c0f83d48dd1ac322d30a4c51ff309ab5368e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/9804e5f42a881fee90db4aee114d6d0bfd8a3d4b", - "reference": "9804e5f42a881fee90db4aee114d6d0bfd8a3d4b", + "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", @@ -855,7 +855,7 @@ "source": "https://github.com/codeigniter4/tasks/tree/develop", "issues": "https://github.com/codeigniter4/tasks/issues" }, - "time": "2025-11-23T18:40:42+00:00" + "time": "2026-02-15T08:22:03+00:00" }, { "name": "composer/ca-bundle", @@ -1064,24 +1064,24 @@ }, { "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": { @@ -1110,7 +1110,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": [ { @@ -1122,7 +1122,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:45:45+00:00" + "time": "2025-12-27T19:43:20+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1939,16 +1939,16 @@ }, { "name": "maxmind/web-service-common", - "version": "v0.11.0", + "version": "v0.11.1", "source": { "type": "git", "url": "https://github.com/maxmind/web-service-common-php.git", - "reference": "5b9e3d3472213361eebdb3ab8879e91b8952091b" + "reference": "c309236b5a5555b96cf560089ec3cead12d845d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/5b9e3d3472213361eebdb3ab8879e91b8952091b", - "reference": "5b9e3d3472213361eebdb3ab8879e91b8952091b", + "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/c309236b5a5555b96cf560089ec3cead12d845d2", + "reference": "c309236b5a5555b96cf560089ec3cead12d845d2", "shasum": "" }, "require": { @@ -1960,7 +1960,7 @@ "require-dev": { "friendsofphp/php-cs-fixer": "3.*", "phpstan/phpstan": "*", - "phpunit/phpunit": "^8.0 || ^9.0", + "phpunit/phpunit": "^10.0", "squizlabs/php_codesniffer": "4.*" }, "type": "library", @@ -1984,32 +1984,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.11.0" + "source": "https://github.com/maxmind/web-service-common-php/tree/v0.11.1" }, - "time": "2025-11-20T18:33:17+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": { @@ -2029,24 +2029,29 @@ "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", @@ -2241,16 +2246,16 @@ }, { "name": "nette/schema", - "version": "v1.3.3", + "version": "v1.3.4", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004" + "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004", - "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004", + "url": "https://api.github.com/repos/nette/schema/zipball/086497a2f34b82fede9b5a41cc8e131d087cd8f7", + "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7", "shasum": "" }, "require": { @@ -2258,8 +2263,8 @@ "php": "8.1 - 8.5" }, "require-dev": { - "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^2.0@stable", + "nette/tester": "^2.6", + "phpstan/phpstan": "^2.0@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -2300,22 +2305,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.3" + "source": "https://github.com/nette/schema/tree/v1.3.4" }, - "time": "2025-10-30T22:57:59+00:00" + "time": "2026-02-08T02:54:00+00:00" }, { "name": "nette/utils", - "version": "v4.1.0", + "version": "v4.1.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0" + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", - "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", + "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", "shasum": "" }, "require": { @@ -2327,8 +2332,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": { @@ -2389,9 +2396,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.0" + "source": "https://github.com/nette/utils/tree/v4.1.3" }, - "time": "2025-12-01T17:49:23+00:00" + "time": "2026-02-13T03:05:33+00:00" }, { "name": "opawg/user-agents-v2-php", @@ -2435,16 +2442,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": { @@ -2494,7 +2501,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": [ { @@ -2506,20 +2513,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.50", + "version": "2.0.51", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "1815ddd00195487cc922577751c175f339f4e20f" + "reference": "ed661e7cdaeb8c419e609e2f3203551a13c2ed48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/1815ddd00195487cc922577751c175f339f4e20f", - "reference": "1815ddd00195487cc922577751c175f339f4e20f", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/ed661e7cdaeb8c419e609e2f3203551a13c2ed48", + "reference": "ed661e7cdaeb8c419e609e2f3203551a13c2ed48", "shasum": "" }, "require": { @@ -2600,7 +2607,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/2.0.50" + "source": "https://github.com/phpseclib/phpseclib/tree/2.0.51" }, "funding": [ { @@ -2616,7 +2623,7 @@ "type": "tidelift" } ], - "time": "2025-12-15T11:48:50+00:00" + "time": "2026-01-27T09:11:52+00:00" }, { "name": "psr/cache", @@ -3516,26 +3523,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", @@ -3584,7 +3591,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": [ { @@ -3596,7 +3603,7 @@ "type": "tidelift" } ], - "time": "2025-04-30T23:37:27+00:00" + "time": "2025-12-27T19:49:13+00:00" }, { "name": "whichbrowser/parser", @@ -3776,16 +3783,16 @@ "packages-dev": [ { "name": "captainhook/captainhook", - "version": "5.27.4", + "version": "5.28.2", "source": { "type": "git", "url": "https://github.com/captainhook-git/captainhook.git", - "reference": "f4485d2a5db16a37053ffe7916f0808f619b430d" + "reference": "2adbc8fea26823ecf52578998de5daf57846872f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhook-git/captainhook/zipball/f4485d2a5db16a37053ffe7916f0808f619b430d", - "reference": "f4485d2a5db16a37053ffe7916f0808f619b430d", + "url": "https://api.github.com/repos/captainhook-git/captainhook/zipball/2adbc8fea26823ecf52578998de5daf57846872f", + "reference": "2adbc8fea26823ecf52578998de5daf57846872f", "shasum": "" }, "require": { @@ -3796,7 +3803,7 @@ "php": ">=8.0", "sebastianfeldmann/camino": "^0.9.2", "sebastianfeldmann/cli": "^3.3", - "sebastianfeldmann/git": "^3.15.3", + "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" @@ -3848,7 +3855,7 @@ ], "support": { "issues": "https://github.com/captainhook-git/captainhook/issues", - "source": "https://github.com/captainhook-git/captainhook/tree/5.27.4" + "source": "https://github.com/captainhook-git/captainhook/tree/5.28.2" }, "funding": [ { @@ -3856,7 +3863,7 @@ "type": "github" } ], - "time": "2025-12-12T10:35:01+00:00" + "time": "2026-02-15T14:36:43+00:00" }, { "name": "captainhook/secrets", @@ -4382,16 +4389,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.92.3", + "version": "v3.94.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8" + "reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8", - "reference": "2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/883b20fb38c7866de9844ab6d0a205c423bde2d4", + "reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4", "shasum": "" }, "require": { @@ -4408,7 +4415,7 @@ "react/event-loop": "^1.5", "react/socket": "^1.16", "react/stream": "^1.4", - "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^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", @@ -4422,18 +4429,18 @@ "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.9", - "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", + "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.24 || ^7.3.2 || ^8.0", - "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2 || ^8.0" + "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", @@ -4474,7 +4481,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.92.3" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.0" }, "funding": [ { @@ -4482,7 +4489,7 @@ "type": "github" } ], - "time": "2025-12-18T10:45:02+00:00" + "time": "2026-02-11T16:44:33+00:00" }, { "name": "mikey179/vfsstream", @@ -4822,11 +4829,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.33", + "version": "2.1.39", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", - "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6f73a2af4cbcd99c931d0fb8f08548cc0fa8224", + "reference": "c6f73a2af4cbcd99c931d0fb8f08548cc0fa8224", "shasum": "" }, "require": { @@ -4871,7 +4878,7 @@ "type": "github" } ], - "time": "2025-12-05T10:24:31+00:00" + "time": "2026-02-11T14:48:56+00:00" }, { "name": "phpunit/php-code-coverage", @@ -5196,16 +5203,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.60", + "version": "10.5.63", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f2e26f52f80ef77832e359205f216eeac00e320c" + "reference": "33198268dad71e926626b618f3ec3966661e4d90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f2e26f52f80ef77832e359205f216eeac00e320c", - "reference": "f2e26f52f80ef77832e359205f216eeac00e320c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33198268dad71e926626b618f3ec3966661e4d90", + "reference": "33198268dad71e926626b618f3ec3966661e4d90", "shasum": "" }, "require": { @@ -5226,7 +5233,7 @@ "phpunit/php-timer": "^6.0.0", "sebastian/cli-parser": "^2.0.1", "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.4", + "sebastian/comparator": "^5.0.5", "sebastian/diff": "^5.1.1", "sebastian/environment": "^6.1.0", "sebastian/exporter": "^5.1.4", @@ -5277,7 +5284,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.60" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.63" }, "funding": [ { @@ -5301,7 +5308,7 @@ "type": "tidelift" } ], - "time": "2025-12-06T07:50:42+00:00" + "time": "2026-01-27T05:48:37+00:00" }, { "name": "psr/container", @@ -5430,16 +5437,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": { @@ -5493,7 +5500,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": [ { @@ -5501,7 +5508,7 @@ "type": "open_collective" } ], - "time": "2025-01-01T16:37:48+00:00" + "time": "2025-12-23T15:25:20+00:00" }, { "name": "react/dns", @@ -5884,21 +5891,21 @@ }, { "name": "rector/rector", - "version": "2.2.14", + "version": "2.3.6", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "6d56bb0e94d4df4f57a78610550ac76ab403657d" + "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/6d56bb0e94d4df4f57a78610550ac76ab403657d", - "reference": "6d56bb0e94d4df4f57a78610550ac76ab403657d", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/ca9ebb81d280cd362ea39474dabd42679e32ca6b", + "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.33" + "phpstan/phpstan": "^2.1.38" }, "conflict": { "rector/rector-doctrine": "*", @@ -5932,7 +5939,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.2.14" + "source": "https://github.com/rectorphp/rector/tree/2.3.6" }, "funding": [ { @@ -5940,7 +5947,7 @@ "type": "github" } ], - "time": "2025-12-09T10:57:55+00:00" + "time": "2026-02-06T14:25:06+00:00" }, { "name": "sebastian/cli-parser", @@ -6112,16 +6119,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.4", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e" + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e8e53097718d2b53cfb2aa859b06a41abf58c62e", - "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55dfef806eb7dfeb6e7a6935601fef866f8ca48d", + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d", "shasum": "" }, "require": { @@ -6177,7 +6184,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.4" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.5" }, "funding": [ { @@ -6197,7 +6204,7 @@ "type": "tidelift" } ], - "time": "2025-09-07T05:25:07+00:00" + "time": "2026-01-24T09:25:16+00:00" }, { "name": "sebastian/complexity", @@ -7011,16 +7018,16 @@ }, { "name": "sebastianfeldmann/git", - "version": "3.15.3", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/sebastianfeldmann/git.git", - "reference": "601fd0fbb7d1a784e009a4f8f40975e777ad334a" + "reference": "40a5cc043f0957228767f639e370ec92590e940f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/601fd0fbb7d1a784e009a4f8f40975e777ad334a", - "reference": "601fd0fbb7d1a784e009a4f8f40975e777ad334a", + "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/40a5cc043f0957228767f639e370ec92590e940f", + "reference": "40a5cc043f0957228767f639e370ec92590e940f", "shasum": "" }, "require": { @@ -7061,7 +7068,7 @@ ], "support": { "issues": "https://github.com/sebastianfeldmann/git/issues", - "source": "https://github.com/sebastianfeldmann/git/tree/3.15.3" + "source": "https://github.com/sebastianfeldmann/git/tree/3.16.0" }, "funding": [ { @@ -7069,20 +7076,20 @@ "type": "github" } ], - "time": "2025-11-20T21:33:45+00:00" + "time": "2026-01-26T20:59:18+00:00" }, { "name": "symfony/console", - "version": "v7.4.1", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e" + "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", - "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", + "url": "https://api.github.com/repos/symfony/console/zipball/41e38717ac1dd7a46b6bda7d6a82af2d98a78894", + "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894", "shasum": "" }, "require": { @@ -7147,7 +7154,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.1" + "source": "https://github.com/symfony/console/tree/v7.4.4" }, "funding": [ { @@ -7167,20 +7174,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T15:23:39+00:00" + "time": "2026-01-13T11:36:38+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" + "reference": "dc2c0eba1af673e736bb851d747d266108aea746" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d", - "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746", "shasum": "" }, "require": { @@ -7232,7 +7239,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.4.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.4" }, "funding": [ { @@ -7252,7 +7259,7 @@ "type": "tidelift" } ], - "time": "2025-10-28T09:38:46+00:00" + "time": "2026-01-05T11:45:34+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -7332,16 +7339,16 @@ }, { "name": "symfony/finder", - "version": "v7.4.0", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "340b9ed7320570f319028a2cbec46d40535e94bd" + "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd", - "reference": "340b9ed7320570f319028a2cbec46d40535e94bd", + "url": "https://api.github.com/repos/symfony/finder/zipball/ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", + "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", "shasum": "" }, "require": { @@ -7376,7 +7383,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.0" + "source": "https://github.com/symfony/finder/tree/v7.4.5" }, "funding": [ { @@ -7396,7 +7403,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T05:42:40+00:00" + "time": "2026-01-26T15:07:59+00:00" }, { "name": "symfony/options-resolver", @@ -7798,16 +7805,16 @@ }, { "name": "symfony/process", - "version": "v7.4.0", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" + "reference": "608476f4604102976d687c483ac63a79ba18cc97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", + "reference": "608476f4604102976d687c483ac63a79ba18cc97", "shasum": "" }, "require": { @@ -7839,7 +7846,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.0" + "source": "https://github.com/symfony/process/tree/v7.4.5" }, "funding": [ { @@ -7859,7 +7866,7 @@ "type": "tidelift" } ], - "time": "2025-10-16T11:21:06+00:00" + "time": "2026-01-26T15:07:59+00:00" }, { "name": "symfony/service-contracts", @@ -8016,16 +8023,16 @@ }, { "name": "symfony/string", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" + "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", - "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", + "url": "https://api.github.com/repos/symfony/string/zipball/1c4b10461bf2ec27537b5f36105337262f5f5d6f", + "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f", "shasum": "" }, "require": { @@ -8083,7 +8090,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.0" + "source": "https://github.com/symfony/string/tree/v7.4.4" }, "funding": [ { @@ -8103,7 +8110,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2026-01-12T10:54:30+00:00" }, { "name": "symplify/coding-standard", @@ -8165,24 +8172,24 @@ }, { "name": "symplify/easy-coding-standard", - "version": "13.0.0", + "version": "13.0.4", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "24708c6673871e342245c692e1bb304f119ffc58" + "reference": "5c7e7a07e5d6a98b9dd2e6fc0a9155efb7c166c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/24708c6673871e342245c692e1bb304f119ffc58", - "reference": "24708c6673871e342245c692e1bb304f119ffc58", + "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": { @@ -8210,7 +8217,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/13.0.0" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/13.0.4" }, "funding": [ { @@ -8222,7 +8229,7 @@ "type": "github" } ], - "time": "2025-11-06T14:47:06+00:00" + "time": "2026-01-05T09:10:04+00:00" }, { "name": "theseer/tokenizer", @@ -8288,5 +8295,5 @@ "php": "^8.1" }, "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 d545ab35..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:28.3-dind + name: docker.io/docker:29.2-dind services: - - docker:28.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:28.3-dind + name: docker.io/docker:29.2-dind services: - - docker:28.3-dind + - docker:29.2-dind variables: DOCKER_BUILDKIT: 1 DOCKER_HOST: tcp://docker:2376 @@ -40,49 +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-alpha-beta-release: - stage: build - image: - name: docker.io/docker:28.3-dind - services: - - docker:28.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 + # --> 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/Dockerfile b/docker/production/app/Dockerfile deleted file mode 100644 index d9fe3b21..00000000 --- a/docker/production/app/Dockerfile +++ /dev/null @@ -1,44 +0,0 @@ -FROM docker.io/golang:1.25-bookworm AS CRON_BUILDER - -ARG SUPERCRONIC_VERSION=v0.2.34 - -RUN apt-get update && \ - apt-get install -y git && \ - git clone https://github.com/aptible/supercronic.git && \ - cd supercronic && \ - git checkout $SUPERCRONIC_VERSION && \ - go build && \ - mv supercronic /usr/local/bin - - -FROM docker.io/php:8.2-fpm - -COPY --from=CRON_BUILDER /usr/local/bin/supercronic /usr/local/bin/supercronic - -COPY docker/production/common/prepare_environment.sh /prepare_environment.sh -COPY docker/production/app/entrypoint.sh /entrypoint.sh -COPY docker/production/common/uploads.template.ini /uploads.template.ini -COPY docker/production/common/crontab.txt /crontab.txt -COPY docker/production/app/supervisord.conf /etc/supervisor/conf.d/supervisord.conf -COPY castopod /var/www/castopod - - -RUN apt-get update && \ - apt-get install -y supervisor ffmpeg curl gettext-base libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libxpm-dev libpcre2-8-0 libicu-dev && \ - rm -rf /var/lib/apt/lists/* && \ - pecl install -o -f redis && \ - rm -rf /tmp/pear && \ - docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp --with-xpm && \ - docker-php-ext-install mysqli gd intl exif && \ - docker-php-ext-enable mysqli gd intl exif redis && \ - chmod +x /entrypoint.sh && \ - 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 - -WORKDIR /var/www/castopod -VOLUME /var/www/castopod/public/media -EXPOSE 9000 - -ENTRYPOINT [ "sh", "-c" ] -CMD [ "/entrypoint.sh" ] 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/Dockerfile b/docker/production/castopod/Dockerfile deleted file mode 100644 index 2bc02bba..00000000 --- a/docker/production/castopod/Dockerfile +++ /dev/null @@ -1,57 +0,0 @@ -FROM docker.io/golang:1.25-bookworm AS CRON_BUILDER - -ARG SUPERCRONIC_VERSION=v0.2.34 - -RUN apt-get update && \ - apt-get install -y git && \ - git clone https://github.com/aptible/supercronic.git && \ - cd supercronic && \ - git checkout $SUPERCRONIC_VERSION && \ - go build && \ - mv supercronic /usr/local/bin - - -FROM docker.io/php:8.2-cli - -ARG UNIT_VERSION=1.34.2 - -COPY --from=CRON_BUILDER /usr/local/bin/supercronic /usr/local/bin/supercronic - -COPY docker/production/common/prepare_environment.sh /prepare_environment.sh -COPY docker/production/castopod/entrypoint.sh /entrypoint.sh -COPY castopod /var/www/castopod -COPY docker/production/castopod/config.template.json /config.template.json -COPY docker/production/common/uploads.template.ini /uploads.template.ini -COPY docker/production/common/crontab.txt /crontab.txt -COPY docker/production/castopod/supervisord.conf /etc/supervisor/conf.d/supervisord.conf - -RUN apt-get update && \ - apt-get install -y supervisor ffmpeg curl gettext-base libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libxpm-dev libpcre2-dev libicu-dev git && \ - rm -rf /var/lib/apt/lists/* && \ - git clone https://github.com/nginx/unit.git && \ - cd unit && \ - git checkout $UNIT_VERSION && \ - ./configure --user=www-data --group=www-data && \ - ./configure php && \ - make && \ - make install && \ - cd .. && \ - rm -rf unit && \ - pecl install -o -f redis && \ - rm -rf /tmp/pear && \ - docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp --with-xpm && \ - docker-php-ext-install mysqli gd intl exif && \ - docker-php-ext-enable mysqli gd intl exif redis && \ - ln -s /dev/stdout /var/log/unit.log && \ - mkdir -p /usr/local/var/lib/unit /usr/local/var/run/unit /usr/local/var/log/unit && \ - chmod 544 /entrypoint.sh && \ - 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 - -WORKDIR /var/www/castopod -VOLUME /var/www/castopod/public/media -EXPOSE 8000 - -ENTRYPOINT [ "sh", "-c" ] -CMD [ "/entrypoint.sh" ] 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/astro.config.mjs b/docs/astro.config.mjs index 428d321f..12243d1b 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -7,6 +7,9 @@ const base = process.env.BASE ?? "/docs"; // https://astro.build/config export default defineConfig({ + server: { + host: true, + }, site, base, integrations: [ diff --git a/docs/package.json b/docs/package.json index acd85ff7..5edaeb8c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -11,10 +11,10 @@ "prepare": "astro telemetry disable" }, "dependencies": { - "@astrojs/starlight": "^0.35.2", - "@fontsource/inter": "^5.2.6", - "@fontsource/rubik": "^5.2.6", - "astro": "^5.13.4", - "sharp": "^0.34.3" + "@astrojs/starlight": "^0.37.6", + "@fontsource/inter": "^5.2.8", + "@fontsource/rubik": "^5.2.8", + "astro": "^5.17.1", + "sharp": "^0.34.5" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index b41afa09..fc96242c 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -8,26 +8,26 @@ importers: .: dependencies: "@astrojs/starlight": - specifier: ^0.35.2 - version: 0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) + specifier: ^0.37.6 + version: 0.37.6(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) "@fontsource/inter": - specifier: ^5.2.6 - version: 5.2.6 + specifier: ^5.2.8 + version: 5.2.8 "@fontsource/rubik": - specifier: ^5.2.6 - version: 5.2.6 + specifier: ^5.2.8 + version: 5.2.8 astro: - specifier: ^5.13.4 - version: 5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + specifier: ^5.17.1 + version: 5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) sharp: - specifier: ^0.34.3 - version: 0.34.3 + specifier: ^0.34.5 + version: 0.34.5 packages: - "@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": @@ -36,6 +36,18 @@ packages: integrity: sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==, } + "@astrojs/internal-helpers@0.7.5": + resolution: + { + integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==, + } + + "@astrojs/markdown-remark@6.3.10": + resolution: + { + integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==, + } + "@astrojs/markdown-remark@6.3.6": resolution: { @@ -64,10 +76,10 @@ packages: integrity: sha512-uX5z52GLtQTgOe8r3jeGmFRYrFe52mdpLYJzqjvL1cdy5Kg3MLOZEvaZ/OCH0fSq0t7e50uJQ6oBMZG0ffszBg==, } - "@astrojs/starlight@0.35.2": + "@astrojs/starlight@0.37.6": resolution: { - integrity: sha512-curGghoW4s5pCbW2tINsJPoxEYPan87ptCOv7GZ+S24N3J6AyaOu/OsjZDEMaIpo3ZlObM5DQn+w7iXl3drDhQ==, + integrity: sha512-wQrKwH431q+8FsLBnNQeG+R36TMtEGxTQ2AuiVpcx9APcazvL3n7wVW8mMmYyxX0POjTnxlcWPkdMGR3Yj1L+w==, } peerDependencies: astro: ^5.5.0 @@ -86,17 +98,17 @@ 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 @@ -108,18 +120,19 @@ packages: } 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": resolution: @@ -128,10 +141,10 @@ packages: } engines: { node: ">=14" } - "@emnapi/runtime@1.4.5": + "@emnapi/runtime@1.8.1": resolution: { - integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==, + integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==, } "@esbuild/aix-ppc64@0.25.9": @@ -392,363 +405,241 @@ packages: integrity: sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==, } - "@fontsource/inter@5.2.6": + "@fontsource/inter@5.2.8": resolution: { - integrity: sha512-CZs9S1CrjD0jPwsNy9W6j0BhsmRSQrgwlTNkgQXTsAeDRM42LBRLo3eo9gCzfH4GvV7zpyf78Ozfl773826csw==, + integrity: sha512-P6r5WnJoKiNVV+zvW2xM13gNdFhAEpQ9dQJHt3naLvfg+LkF2ldgSLiF4T41lf1SQCM9QmkqPTn4TH568IRagg==, } - "@fontsource/rubik@5.2.6": + "@fontsource/rubik@5.2.8": resolution: { - integrity: sha512-KNY87CIXAzmKMfL8gnQV0nbePn9g/kG3tF4GJoUEASSz+ECFWYoPir8TSySblYfXTInDL/kHJm6CMrrEW/U/ZA==, + integrity: sha512-PIc8QR7FqWPcYhbdRiGff56vQlKqg/ytES1YqecSq1GkgxiH4TBshrFvDEOZ9JonUF9m1qQ+qXxJj7wD5zgXEw==, } - "@img/sharp-darwin-arm64@0.33.5": + "@img/colour@1.0.0": resolution: { - integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==, + integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==, + } + engines: { node: ">=18" } + + "@img/sharp-darwin-arm64@0.34.5": + resolution: + { + 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-arm64@0.34.3": + "@img/sharp-darwin-x64@0.34.5": resolution: { - 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": - resolution: - { - integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==, + 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-darwin-x64@0.34.3": + "@img/sharp-libvips-darwin-arm64@1.2.4": resolution: { - 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": - resolution: - { - integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==, + integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==, } cpu: [arm64] os: [darwin] - "@img/sharp-libvips-darwin-arm64@1.2.0": + "@img/sharp-libvips-darwin-x64@1.2.4": resolution: { - integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==, - } - cpu: [arm64] - os: [darwin] - - "@img/sharp-libvips-darwin-x64@1.0.4": - resolution: - { - integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==, + integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==, } cpu: [x64] os: [darwin] - "@img/sharp-libvips-darwin-x64@1.2.0": + "@img/sharp-libvips-linux-arm64@1.2.4": resolution: { - integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==, - } - cpu: [x64] - os: [darwin] - - "@img/sharp-libvips-linux-arm64@1.0.4": - resolution: - { - integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==, + integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==, } cpu: [arm64] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-arm64@1.2.0": + "@img/sharp-libvips-linux-arm@1.2.4": resolution: { - integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==, - } - cpu: [arm64] - os: [linux] - - "@img/sharp-libvips-linux-arm@1.0.5": - resolution: - { - integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==, + integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==, } cpu: [arm] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-arm@1.2.0": + "@img/sharp-libvips-linux-ppc64@1.2.4": resolution: { - integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==, - } - cpu: [arm] - os: [linux] - - "@img/sharp-libvips-linux-ppc64@1.2.0": - resolution: - { - integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==, + integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==, } cpu: [ppc64] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-s390x@1.0.4": + "@img/sharp-libvips-linux-riscv64@1.2.4": resolution: { - integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==, + 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-s390x@1.2.0": + "@img/sharp-libvips-linux-x64@1.2.4": resolution: { - integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==, - } - cpu: [s390x] - os: [linux] - - "@img/sharp-libvips-linux-x64@1.0.4": - resolution: - { - integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==, + integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==, } cpu: [x64] os: [linux] + libc: [glibc] - "@img/sharp-libvips-linux-x64@1.2.0": + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": resolution: { - integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==, - } - cpu: [x64] - os: [linux] - - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": - resolution: - { - integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==, + integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==, } cpu: [arm64] os: [linux] + libc: [musl] - "@img/sharp-libvips-linuxmusl-arm64@1.2.0": + "@img/sharp-libvips-linuxmusl-x64@1.2.4": resolution: { - integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==, - } - cpu: [arm64] - os: [linux] - - "@img/sharp-libvips-linuxmusl-x64@1.0.4": - resolution: - { - integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==, + integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==, } cpu: [x64] os: [linux] + libc: [musl] - "@img/sharp-libvips-linuxmusl-x64@1.2.0": + "@img/sharp-linux-arm64@0.34.5": resolution: { - integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==, - } - cpu: [x64] - os: [linux] - - "@img/sharp-linux-arm64@0.33.5": - resolution: - { - integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==, + 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-arm64@0.34.3": + "@img/sharp-linux-arm@0.34.5": resolution: { - 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": - resolution: - { - integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==, + 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-arm@0.34.3": + "@img/sharp-linux-ppc64@0.34.5": resolution: { - 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-ppc64@0.34.3": - resolution: - { - integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==, + 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.33.5": + "@img/sharp-linux-riscv64@0.34.5": resolution: { - integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==, + 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-s390x@0.34.3": + "@img/sharp-linux-x64@0.34.5": 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": - resolution: - { - integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==, + integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] + libc: [glibc] - "@img/sharp-linux-x64@0.34.3": + "@img/sharp-linuxmusl-arm64@0.34.5": resolution: { - 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": - resolution: - { - integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==, + integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [linux] + libc: [musl] - "@img/sharp-linuxmusl-arm64@0.34.3": + "@img/sharp-linuxmusl-x64@0.34.5": resolution: { - 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": - resolution: - { - integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==, + integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] + libc: [musl] - "@img/sharp-linuxmusl-x64@0.34.3": + "@img/sharp-wasm32@0.34.5": resolution: { - 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": - resolution: - { - integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==, + integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [wasm32] - "@img/sharp-wasm32@0.34.3": + "@img/sharp-win32-arm64@0.34.5": resolution: { - integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [wasm32] - - "@img/sharp-win32-arm64@0.34.3": - resolution: - { - integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==, + integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [win32] - "@img/sharp-win32-ia32@0.33.5": + "@img/sharp-win32-ia32@0.34.5": resolution: { - integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==, + 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-ia32@0.34.3": + "@img/sharp-win32-x64@0.34.5": 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": - 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] - - "@img/sharp-win32-x64@0.34.3": - resolution: - { - integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==, + integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] @@ -818,10 +709,10 @@ packages: cpu: [x64] os: [win32] - "@rollup/pluginutils@5.2.0": + "@rollup/pluginutils@5.3.0": resolution: { - integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==, + integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==, } engines: { node: ">=14.0.0" } peerDependencies: @@ -885,6 +776,7 @@ packages: } cpu: [arm] os: [linux] + libc: [glibc] "@rollup/rollup-linux-arm-musleabihf@4.48.1": resolution: @@ -893,6 +785,7 @@ packages: } cpu: [arm] os: [linux] + libc: [musl] "@rollup/rollup-linux-arm64-gnu@4.48.1": resolution: @@ -901,6 +794,7 @@ packages: } cpu: [arm64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-arm64-musl@4.48.1": resolution: @@ -909,6 +803,7 @@ packages: } cpu: [arm64] os: [linux] + libc: [musl] "@rollup/rollup-linux-loongarch64-gnu@4.48.1": resolution: @@ -917,6 +812,7 @@ packages: } cpu: [loong64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-ppc64-gnu@4.48.1": resolution: @@ -925,6 +821,7 @@ packages: } cpu: [ppc64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-riscv64-gnu@4.48.1": resolution: @@ -933,6 +830,7 @@ packages: } cpu: [riscv64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-riscv64-musl@4.48.1": resolution: @@ -941,6 +839,7 @@ packages: } cpu: [riscv64] os: [linux] + libc: [musl] "@rollup/rollup-linux-s390x-gnu@4.48.1": resolution: @@ -949,6 +848,7 @@ packages: } cpu: [s390x] os: [linux] + libc: [glibc] "@rollup/rollup-linux-x64-gnu@4.48.1": resolution: @@ -957,6 +857,7 @@ packages: } cpu: [x64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-x64-musl@4.48.1": resolution: @@ -965,6 +866,7 @@ packages: } cpu: [x64] os: [linux] + libc: [musl] "@rollup/rollup-win32-arm64-msvc@4.48.1": resolution: @@ -996,48 +898,78 @@ packages: integrity: sha512-oJwU+DxGqp6lUZpvtQgVOXNZcVsirN76tihOLBmwILkKuRuwHteApP8oTXmL4tF5vS5FbOY0+8seXmiCoslk4g==, } + "@shikijs/core@3.22.0": + resolution: + { + integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==, + } + "@shikijs/engine-javascript@3.11.0": resolution: { integrity: sha512-6/ov6pxrSvew13k9ztIOnSBOytXeKs5kfIR7vbhdtVRg+KPzvp2HctYGeWkqv7V6YIoLicnig/QF3iajqyElZA==, } + "@shikijs/engine-javascript@3.22.0": + resolution: + { + integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==, + } + "@shikijs/engine-oniguruma@3.11.0": resolution: { integrity: sha512-4DwIjIgETK04VneKbfOE4WNm4Q7WC1wo95wv82PoHKdqX4/9qLRUwrfKlmhf0gAuvT6GHy0uc7t9cailk6Tbhw==, } + "@shikijs/engine-oniguruma@3.22.0": + resolution: + { + integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==, + } + "@shikijs/langs@3.11.0": resolution: { integrity: sha512-Njg/nFL4HDcf/ObxcK2VeyidIq61EeLmocrwTHGGpOQx0BzrPWM1j55XtKQ1LvvDWH15cjQy7rg96aJ1/l63uw==, } + "@shikijs/langs@3.22.0": + resolution: + { + integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==, + } + "@shikijs/themes@3.11.0": resolution: { integrity: sha512-BhhWRzCTEk2CtWt4S4bgsOqPJRkapvxdsifAwqP+6mk5uxboAQchc0etiJ0iIasxnMsb764qGD24DK9albcU9Q==, } + "@shikijs/themes@3.22.0": + resolution: + { + integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==, + } + "@shikijs/types@3.11.0": resolution: { integrity: sha512-RB7IMo2E7NZHyfkqAuaf4CofyY8bPzjWPjJRzn6SEak3b46fIQyG6Vx5fG/obqkfppQ+g8vEsiD7Uc6lqQt32Q==, } + "@shikijs/types@3.22.0": + resolution: + { + integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==, + } + "@shikijs/vscode-textmate@10.0.2": resolution: { 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: { @@ -1056,12 +988,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: { @@ -1224,10 +1150,10 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.13.4: + astro@5.17.1: resolution: { - integrity: sha512-Mgq5GYy3EHtastGXqdnh1UPuN++8NmJSluAspA5hu33O7YRs/em/L03cUfRXtc60l5yx5BfYJsjF2MFMlcWlzw==, + integrity: sha512-oD3tlxTaVWGq/Wfbqk6gxzVRz98xa/rYlpe+gU2jXJMSD01k6sEDL01ZlT8mVSYB/rMgnvIOfiQQ3BbLdN237A==, } engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0" } @@ -1252,12 +1178,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: { @@ -1270,12 +1190,6 @@ packages: integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==, } - blob-to-buffer@1.2.9: - resolution: - { - integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==, - } - boolbase@1.0.0: resolution: { @@ -1289,12 +1203,6 @@ packages: } engines: { node: ">=18" } - brotli@1.3.3: - resolution: - { - integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==, - } - camelcase@8.0.0: resolution: { @@ -1339,17 +1247,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" } @@ -1360,13 +1268,6 @@ packages: } engines: { node: ">=10" } - clone@2.1.2: - resolution: - { - integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==, - } - engines: { node: ">=0.8" } - clsx@2.1.1: resolution: { @@ -1380,38 +1281,19 @@ packages: integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==, } - color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } - - color-name@1.1.4: - resolution: - { - 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" } - comma-separated-tokens@2.0.3: resolution: { integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, } + commander@11.1.0: + resolution: + { + integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, + } + engines: { node: ">=16" } + common-ancestor-path@1.0.1: resolution: { @@ -1424,31 +1306,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-select@5.2.2: + resolution: + { + integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, + } + css-selector-parser@3.1.3: resolution: { integrity: sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==, } + 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: { @@ -1456,6 +1345,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: { @@ -1464,6 +1360,13 @@ packages: engines: { node: ">=4" } hasBin: true + csso@5.0.5: + resolution: + { + 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.1: resolution: { @@ -1476,6 +1379,18 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: + { + integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + decode-named-character-reference@1.2.0: resolution: { @@ -1501,10 +1416,10 @@ packages: integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==, } - detect-libc@2.0.4: + detect-libc@2.1.2: resolution: { - integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==, + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, } engines: { node: ">=8" } @@ -1515,10 +1430,10 @@ packages: } engines: { node: ">=18" } - devalue@5.2.0: + devalue@5.6.2: resolution: { - integrity: sha512-pn/4yAWRz7WrDNpr29JUv2s+8Q4zyf/9I5SuFlhf8wTHfc3HFakOwU2A9da1fokbVym/6IZq5alo18pIByxxQg==, + integrity: sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==, } devlop@1.1.0: @@ -1527,16 +1442,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" } @@ -1553,6 +1462,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: { @@ -1572,6 +1506,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: { @@ -1678,12 +1619,6 @@ packages: integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, } - fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } - fdir@6.5.0: resolution: { @@ -1703,17 +1638,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: @@ -1736,10 +1672,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: @@ -1898,6 +1834,12 @@ packages: integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==, } + import-meta-resolve@4.2.0: + resolution: + { + integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==, + } + inline-style-parser@0.2.4: resolution: { @@ -1922,12 +1864,6 @@ packages: integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==, } - is-arrayish@0.3.2: - resolution: - { - integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, - } - is-decimal@2.0.1: resolution: { @@ -1984,6 +1920,13 @@ packages: } hasBin: true + js-yaml@4.1.1: + resolution: + { + integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, + } + hasBin: true + kleur@3.0.3: resolution: { @@ -2011,11 +1954,12 @@ packages: integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, } - lru-cache@10.4.3: + lru-cache@11.2.5: resolution: { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, + integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==, } + engines: { node: 20 || >=22 } magic-string@0.30.18: resolution: @@ -2023,10 +1967,16 @@ packages: integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==, } - magicast@0.3.5: + magic-string@0.30.21: resolution: { - integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==, + integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, + } + + magicast@0.5.2: + resolution: + { + integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==, } markdown-extensions@2.0.0: @@ -2150,6 +2100,12 @@ packages: integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==, } + mdn-data@2.0.28: + resolution: + { + integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==, + } + mdn-data@2.12.2: resolution: { @@ -2412,22 +2368,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: @@ -2443,10 +2387,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: @@ -2467,6 +2411,12 @@ packages: integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==, } + oniguruma-to-es@4.3.4: + resolution: + { + integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==, + } + p-limit@6.2.0: resolution: { @@ -2474,10 +2424,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" } @@ -2488,10 +2438,10 @@ 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: @@ -2501,12 +2451,6 @@ packages: } hasBin: true - pako@0.2.9: - resolution: - { - integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==, - } - parse-entities@4.0.2: resolution: { @@ -2525,6 +2469,12 @@ packages: integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, } + piccolore@0.1.3: + resolution: + { + integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==, + } + picocolors@1.1.1: resolution: { @@ -2600,12 +2550,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: @@ -2736,12 +2686,6 @@ packages: integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==, } - restructure@3.0.2: - resolution: - { - integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==, - } - retext-latin@4.0.0: resolution: { @@ -2780,25 +2724,18 @@ packages: integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, } - 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.33.5: + sharp@0.34.5: resolution: { - integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - - sharp@0.34.3: - resolution: - { - integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==, + integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==, } engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } @@ -2808,10 +2745,10 @@ packages: integrity: sha512-VgKumh/ib38I1i3QkMn6mAQA6XjjQubqaAYhfge71glAll0/4xnt8L2oSuC45Qcr/G5Kbskj4RliMQddGmy/Og==, } - simple-swizzle@0.2.2: + shiki@3.22.0: resolution: { - integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, + integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==, } sisteransi@1.0.5: @@ -2826,6 +2763,7 @@ packages: integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==, } engines: { node: ">=14.0.0", npm: ">=6.0.0" } + deprecated: "SECURITY: Multiple vulnerabilities fixed in 8.0.1 (XML injection, path traversal, command injection, protocol injection). Upgrade immediately: npm install sitemap@8.0.1" hasBin: true smol-toml@1.4.2: @@ -2835,6 +2773,13 @@ packages: } engines: { node: ">= 18" } + smol-toml@1.6.0: + resolution: + { + integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==, + } + engines: { node: ">= 18" } + source-map-js@1.2.1: resolution: { @@ -2907,31 +2852,34 @@ packages: integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==, } + 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: { @@ -2984,6 +2932,12 @@ packages: integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==, } + ufo@1.6.3: + resolution: + { + integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==, + } + ultrahtml@1.6.0: resolution: { @@ -3002,28 +2956,16 @@ packages: 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.3: resolution: { - integrity: sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg==, + integrity: sha512-b0GtQzKCyuSHGsfj5vyN8st7muZ6VCI4XD4vFlr7Uy1rlWVYxC3npnfk8MyreHxJYrz1ooLDqDzFe9XqQTlAhA==, } unist-util-find-after@5.0.0: @@ -3080,16 +3022,22 @@ packages: integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==, } + unist-util-visit-parents@6.0.2: + resolution: + { + integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==, + } + unist-util-visit@5.0.0: resolution: { integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==, } - 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 @@ -3098,14 +3046,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 @@ -3175,10 +3123,10 @@ packages: integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, } - vite@6.3.5: + vite@6.4.1: resolution: { - integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==, + integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==, } engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } hasBin: true @@ -3235,18 +3183,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: { @@ -3302,13 +3238,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: @@ -3332,10 +3268,38 @@ packages: } snapshots: - "@astrojs/compiler@2.12.2": {} + "@astrojs/compiler@2.13.1": {} "@astrojs/internal-helpers@0.7.2": {} + "@astrojs/internal-helpers@0.7.5": {} + + "@astrojs/markdown-remark@6.3.10": + dependencies: + "@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.1 + 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.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.2 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + "@astrojs/markdown-remark@6.3.6": dependencies: "@astrojs/internal-helpers": 0.7.2 @@ -3362,12 +3326,12 @@ snapshots: transitivePeerDependencies: - supports-color - "@astrojs/mdx@4.3.4(astro@5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))": + "@astrojs/mdx@4.3.4(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))": dependencies: "@astrojs/markdown-remark": 6.3.6 "@mdx-js/mdx": 3.1.0(acorn@8.15.0) acorn: 8.15.0 - astro: 5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + astro: 5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -3391,17 +3355,17 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.25.76 - "@astrojs/starlight@0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))": + "@astrojs/starlight@0.37.6(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))": dependencies: "@astrojs/markdown-remark": 6.3.6 - "@astrojs/mdx": 4.3.4(astro@5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) + "@astrojs/mdx": 4.3.4(astro@5.17.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 "@types/hast": 3.0.4 "@types/js-yaml": 4.0.9 "@types/mdast": 4.0.4 - astro: 5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) - astro-expressive-code: 0.41.3(astro@5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) + astro: 5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + astro-expressive-code: 0.41.3(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -3410,6 +3374,7 @@ snapshots: i18next: 23.16.8 js-yaml: 4.1.0 klona: 2.0.6 + magic-string: 0.30.18 mdast-util-directive: 3.1.0 mdast-util-to-markdown: 2.1.2 mdast-util-to-string: 4.0.0 @@ -3426,8 +3391,8 @@ snapshots: "@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 @@ -3438,30 +3403,26 @@ snapshots: "@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/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": {} - "@emnapi/runtime@1.4.5": + "@emnapi/runtime@1.8.1": dependencies: tslib: 2.8.1 optional: true @@ -3569,169 +3530,104 @@ snapshots: dependencies: "@expressive-code/core": 0.41.3 - "@fontsource/inter@5.2.6": {} + "@fontsource/inter@5.2.8": {} - "@fontsource/rubik@5.2.6": {} + "@fontsource/rubik@5.2.8": {} - "@img/sharp-darwin-arm64@0.33.5": + "@img/colour@1.0.0": {} + + "@img/sharp-darwin-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-arm64": 1.0.4 + "@img/sharp-libvips-darwin-arm64": 1.2.4 optional: true - "@img/sharp-darwin-arm64@0.34.3": + "@img/sharp-darwin-x64@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-arm64": 1.2.0 + "@img/sharp-libvips-darwin-x64": 1.2.4 optional: true - "@img/sharp-darwin-x64@0.33.5": + "@img/sharp-libvips-darwin-arm64@1.2.4": + optional: true + + "@img/sharp-libvips-darwin-x64@1.2.4": + optional: true + + "@img/sharp-libvips-linux-arm64@1.2.4": + optional: true + + "@img/sharp-libvips-linux-arm@1.2.4": + optional: true + + "@img/sharp-libvips-linux-ppc64@1.2.4": + optional: true + + "@img/sharp-libvips-linux-riscv64@1.2.4": + optional: true + + "@img/sharp-libvips-linux-s390x@1.2.4": + optional: true + + "@img/sharp-libvips-linux-x64@1.2.4": + optional: true + + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": + optional: true + + "@img/sharp-libvips-linuxmusl-x64@1.2.4": + optional: true + + "@img/sharp-linux-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-x64": 1.0.4 + "@img/sharp-libvips-linux-arm64": 1.2.4 optional: true - "@img/sharp-darwin-x64@0.34.3": + "@img/sharp-linux-arm@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-x64": 1.2.0 + "@img/sharp-libvips-linux-arm": 1.2.4 optional: true - "@img/sharp-libvips-darwin-arm64@1.0.4": - optional: true - - "@img/sharp-libvips-darwin-arm64@1.2.0": - optional: true - - "@img/sharp-libvips-darwin-x64@1.0.4": - optional: true - - "@img/sharp-libvips-darwin-x64@1.2.0": - optional: true - - "@img/sharp-libvips-linux-arm64@1.0.4": - optional: true - - "@img/sharp-libvips-linux-arm64@1.2.0": - optional: true - - "@img/sharp-libvips-linux-arm@1.0.5": - optional: true - - "@img/sharp-libvips-linux-arm@1.2.0": - optional: true - - "@img/sharp-libvips-linux-ppc64@1.2.0": - optional: true - - "@img/sharp-libvips-linux-s390x@1.0.4": - optional: true - - "@img/sharp-libvips-linux-s390x@1.2.0": - optional: true - - "@img/sharp-libvips-linux-x64@1.0.4": - optional: true - - "@img/sharp-libvips-linux-x64@1.2.0": - optional: true - - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": - optional: true - - "@img/sharp-libvips-linuxmusl-arm64@1.2.0": - optional: true - - "@img/sharp-libvips-linuxmusl-x64@1.0.4": - optional: true - - "@img/sharp-libvips-linuxmusl-x64@1.2.0": - optional: true - - "@img/sharp-linux-arm64@0.33.5": + "@img/sharp-linux-ppc64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm64": 1.0.4 + "@img/sharp-libvips-linux-ppc64": 1.2.4 optional: true - "@img/sharp-linux-arm64@0.34.3": + "@img/sharp-linux-riscv64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm64": 1.2.0 + "@img/sharp-libvips-linux-riscv64": 1.2.4 optional: true - "@img/sharp-linux-arm@0.33.5": + "@img/sharp-linux-s390x@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm": 1.0.5 + "@img/sharp-libvips-linux-s390x": 1.2.4 optional: true - "@img/sharp-linux-arm@0.34.3": + "@img/sharp-linux-x64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm": 1.2.0 + "@img/sharp-libvips-linux-x64": 1.2.4 optional: true - "@img/sharp-linux-ppc64@0.34.3": + "@img/sharp-linuxmusl-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-ppc64": 1.2.0 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.4 optional: true - "@img/sharp-linux-s390x@0.33.5": + "@img/sharp-linuxmusl-x64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-s390x": 1.0.4 + "@img/sharp-libvips-linuxmusl-x64": 1.2.4 optional: true - "@img/sharp-linux-s390x@0.34.3": - optionalDependencies: - "@img/sharp-libvips-linux-s390x": 1.2.0 - optional: true - - "@img/sharp-linux-x64@0.33.5": - optionalDependencies: - "@img/sharp-libvips-linux-x64": 1.0.4 - optional: true - - "@img/sharp-linux-x64@0.34.3": - optionalDependencies: - "@img/sharp-libvips-linux-x64": 1.2.0 - optional: true - - "@img/sharp-linuxmusl-arm64@0.33.5": - optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 - optional: true - - "@img/sharp-linuxmusl-arm64@0.34.3": - optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64": 1.2.0 - optional: true - - "@img/sharp-linuxmusl-x64@0.33.5": - optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64": 1.0.4 - optional: true - - "@img/sharp-linuxmusl-x64@0.34.3": - optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64": 1.2.0 - optional: true - - "@img/sharp-wasm32@0.33.5": + "@img/sharp-wasm32@0.34.5": dependencies: - "@emnapi/runtime": 1.4.5 + "@emnapi/runtime": 1.8.1 optional: true - "@img/sharp-wasm32@0.34.3": - dependencies: - "@emnapi/runtime": 1.4.5 + "@img/sharp-win32-arm64@0.34.5": optional: true - "@img/sharp-win32-arm64@0.34.3": + "@img/sharp-win32-ia32@0.34.5": optional: true - "@img/sharp-win32-ia32@0.33.5": - optional: true - - "@img/sharp-win32-ia32@0.34.3": - optional: true - - "@img/sharp-win32-x64@0.33.5": - optional: true - - "@img/sharp-win32-x64@0.34.3": + "@img/sharp-win32-x64@0.34.5": optional: true "@jridgewell/sourcemap-codec@1.5.5": {} @@ -3785,7 +3681,7 @@ snapshots: "@pagefind/windows-x64@1.3.0": optional: true - "@rollup/pluginutils@5.2.0(rollup@4.48.1)": + "@rollup/pluginutils@5.3.0(rollup@4.48.1)": dependencies: "@types/estree": 1.0.8 estree-walker: 2.0.2 @@ -3860,35 +3756,62 @@ snapshots: "@types/hast": 3.0.4 hast-util-to-html: 9.0.5 + "@shikijs/core@3.22.0": + dependencies: + "@shikijs/types": 3.22.0 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 + hast-util-to-html: 9.0.5 + "@shikijs/engine-javascript@3.11.0": dependencies: "@shikijs/types": 3.11.0 "@shikijs/vscode-textmate": 10.0.2 oniguruma-to-es: 4.3.3 + "@shikijs/engine-javascript@3.22.0": + dependencies: + "@shikijs/types": 3.22.0 + "@shikijs/vscode-textmate": 10.0.2 + oniguruma-to-es: 4.3.4 + "@shikijs/engine-oniguruma@3.11.0": dependencies: "@shikijs/types": 3.11.0 "@shikijs/vscode-textmate": 10.0.2 + "@shikijs/engine-oniguruma@3.22.0": + dependencies: + "@shikijs/types": 3.22.0 + "@shikijs/vscode-textmate": 10.0.2 + "@shikijs/langs@3.11.0": dependencies: "@shikijs/types": 3.11.0 + "@shikijs/langs@3.22.0": + dependencies: + "@shikijs/types": 3.22.0 + "@shikijs/themes@3.11.0": dependencies: "@shikijs/types": 3.11.0 + "@shikijs/themes@3.22.0": + dependencies: + "@shikijs/types": 3.22.0 + "@shikijs/types@3.11.0": dependencies: "@shikijs/vscode-textmate": 10.0.2 "@types/hast": 3.0.4 - "@shikijs/vscode-textmate@10.0.2": {} - - "@swc/helpers@0.5.17": + "@shikijs/types@3.22.0": dependencies: - tslib: 2.8.1 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 + + "@shikijs/vscode-textmate@10.0.2": {} "@types/debug@4.1.12": dependencies: @@ -3900,10 +3823,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 @@ -3930,7 +3849,7 @@ snapshots: "@types/sax@1.2.7": dependencies: - "@types/node": 17.0.45 + "@types/node": 24.3.0 "@types/unist@2.0.11": {} @@ -3969,77 +3888,78 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.3(astro@5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)): + astro-expressive-code@0.41.3(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)): dependencies: - astro: 5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + astro: 5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) rehype-expressive-code: 0.41.3 - astro@5.13.4(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2): + astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2): dependencies: - "@astrojs/compiler": 2.12.2 - "@astrojs/internal-helpers": 0.7.2 - "@astrojs/markdown-remark": 6.3.6 + "@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.48.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.2.0 - 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 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.1.0 - js-yaml: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.18 - magicast: 0.3.5 + import-meta-resolve: 4.2.0 + 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.11.0 - smol-toml: 1.4.2 - tinyexec: 0.3.2 - tinyglobby: 0.2.14 + 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.2) ultrahtml: 1.6.0 - unifont: 0.5.2 + unifont: 0.7.3 unist-util-visit: 5.0.0 - unstorage: 1.17.0 + unstorage: 1.17.4 vfile: 6.0.3 - vite: 6.3.5(@types/node@24.3.0) - vitefu: 1.1.1(vite@6.3.5(@types/node@24.3.0)) + vite: 6.4.1(@types/node@24.3.0) + vitefu: 1.1.1(vite@6.4.1(@types/node@24.3.0)) 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-json-schema: 3.25.1(zod@3.25.76) zod-to-ts: 1.2.0(typescript@5.9.2)(zod@3.25.76) optionalDependencies: - sharp: 0.33.5 + sharp: 0.34.5 transitivePeerDependencies: - "@azure/app-configuration" - "@azure/cosmos" @@ -4058,7 +3978,6 @@ snapshots: - "@vercel/kv" - aws4fetch - db0 - - encoding - idb-keyval - ioredis - jiti @@ -4082,8 +4001,6 @@ snapshots: base-64@1.0.0: {} - base64-js@1.5.1: {} - bcp-47-match@2.0.3: {} bcp-47@2.1.0: @@ -4092,8 +4009,6 @@ 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: @@ -4107,10 +4022,6 @@ snapshots: widest-line: 5.0.0 wrap-ansi: 9.0.0 - brotli@1.3.3: - dependencies: - base64-js: 1.5.1 - camelcase@8.0.0: {} ccount@2.0.1: {} @@ -4125,67 +4036,68 @@ 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: {} - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - 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 - 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-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.1.3: {} + 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: {} + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + debug@4.4.1: dependencies: ms: 2.1.3 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 @@ -4196,32 +4108,50 @@ snapshots: destr@2.0.5: {} - detect-libc@2.0.4: {} + detect-libc@2.1.2: {} deterministic-object-hash@2.0.2: dependencies: base-64: 1.0.0 - devalue@5.2.0: {} + 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@8.0.0: {} + entities@4.5.0: {} + entities@6.0.1: {} es-module-lexer@1.7.0: {} @@ -4317,30 +4247,19 @@ snapshots: extend@3.0.2: {} - fast-deep-equal@3.1.3: {} - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 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 @@ -4349,16 +4268,16 @@ snapshots: 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: @@ -4564,6 +4483,8 @@ snapshots: import-meta-resolve@4.1.0: {} + import-meta-resolve@4.2.0: {} + inline-style-parser@0.2.4: {} iron-webcrypto@1.2.1: {} @@ -4575,8 +4496,6 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-arrayish@0.3.2: {} - is-decimal@2.0.1: {} is-docker@3.0.0: {} @@ -4599,6 +4518,10 @@ snapshots: dependencies: argparse: 2.0.1 + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + kleur@3.0.3: {} kleur@4.1.5: {} @@ -4607,16 +4530,20 @@ snapshots: longest-streak@3.1.0: {} - lru-cache@10.4.3: {} + lru-cache@11.2.5: {} magic-string@0.30.18: dependencies: "@jridgewell/sourcemap-codec": 1.5.5 - magicast@0.3.5: + magic-string@0.30.21: dependencies: - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 + "@jridgewell/sourcemap-codec": 1.5.5 + + magicast@0.5.2: + dependencies: + "@babel/parser": 7.29.0 + "@babel/types": 7.29.0 source-map-js: 1.2.1 markdown-extensions@2.0.0: {} @@ -4806,6 +4733,8 @@ snapshots: dependencies: "@types/mdast": 4.0.4 + mdn-data@2.0.28: {} + mdn-data@2.12.2: {} micromark-core-commonmark@2.0.3: @@ -5096,11 +5025,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: {} @@ -5108,7 +5033,7 @@ 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 @@ -5124,18 +5049,24 @@ snapshots: regex: 6.0.1 regex-recursion: 6.0.2 + oniguruma-to-es@4.3.4: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 + p-limit@6.2.0: dependencies: yocto-queue: 1.2.1 - p-queue@8.1.0: + p-queue@8.1.1: dependencies: eventemitter3: 5.0.1 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: optionalDependencies: @@ -5145,8 +5076,6 @@ snapshots: "@pagefind/linux-x64": 1.3.0 "@pagefind/windows-x64": 1.3.0 - pako@0.2.9: {} - parse-entities@4.0.2: dependencies: "@types/unist": 2.0.11 @@ -5170,6 +5099,8 @@ snapshots: dependencies: entities: 6.0.1 + piccolore@0.1.3: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -5205,7 +5136,7 @@ snapshots: radix3@1.1.2: {} - readdirp@4.1.2: {} + readdirp@5.0.0: {} recma-build-jsx@1.0.0: dependencies: @@ -5345,8 +5276,6 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - restructure@3.0.2: {} - retext-latin@4.0.0: dependencies: "@types/nlcst": 2.0.3 @@ -5400,63 +5329,38 @@ snapshots: sax@1.4.1: {} - semver@7.7.2: {} + semver@7.7.4: {} - sharp@0.33.5: + sharp@0.34.5: dependencies: - color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.2 + "@img/colour": 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.4 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 - optional: true - - sharp@0.34.3: - dependencies: - color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.2 - optionalDependencies: - "@img/sharp-darwin-arm64": 0.34.3 - "@img/sharp-darwin-x64": 0.34.3 - "@img/sharp-libvips-darwin-arm64": 1.2.0 - "@img/sharp-libvips-darwin-x64": 1.2.0 - "@img/sharp-libvips-linux-arm": 1.2.0 - "@img/sharp-libvips-linux-arm64": 1.2.0 - "@img/sharp-libvips-linux-ppc64": 1.2.0 - "@img/sharp-libvips-linux-s390x": 1.2.0 - "@img/sharp-libvips-linux-x64": 1.2.0 - "@img/sharp-libvips-linuxmusl-arm64": 1.2.0 - "@img/sharp-libvips-linuxmusl-x64": 1.2.0 - "@img/sharp-linux-arm": 0.34.3 - "@img/sharp-linux-arm64": 0.34.3 - "@img/sharp-linux-ppc64": 0.34.3 - "@img/sharp-linux-s390x": 0.34.3 - "@img/sharp-linux-x64": 0.34.3 - "@img/sharp-linuxmusl-arm64": 0.34.3 - "@img/sharp-linuxmusl-x64": 0.34.3 - "@img/sharp-wasm32": 0.34.3 - "@img/sharp-win32-arm64": 0.34.3 - "@img/sharp-win32-ia32": 0.34.3 - "@img/sharp-win32-x64": 0.34.3 + "@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: dependencies: @@ -5469,9 +5373,16 @@ snapshots: "@shikijs/vscode-textmate": 10.0.2 "@types/hast": 3.0.4 - simple-swizzle@0.2.2: + shiki@3.22.0: dependencies: - is-arrayish: 0.3.2 + "@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: {} @@ -5484,6 +5395,8 @@ snapshots: smol-toml@1.4.2: {} + smol-toml@1.6.0: {} + source-map-js@1.2.1: {} source-map@0.7.6: {} @@ -5525,17 +5438,25 @@ snapshots: dependencies: inline-style-parser: 0.2.4 + 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.1 + 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: {} @@ -5544,7 +5465,8 @@ snapshots: optionalDependencies: typescript: 5.9.2 - tslib@2.8.1: {} + tslib@2.8.1: + optional: true type-fest@4.41.0: {} @@ -5552,22 +5474,14 @@ snapshots: 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 @@ -5578,10 +5492,10 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unifont@0.5.2: + unifont@0.7.3: 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: @@ -5624,22 +5538,27 @@ snapshots: "@types/unist": 3.0.3 unist-util-is: 6.0.0 + unist-util-visit-parents@6.0.2: + dependencies: + "@types/unist": 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit@5.0.0: dependencies: "@types/unist": 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - 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.5 node-fetch-native: 1.6.7 - ofetch: 1.4.1 - ufo: 1.6.1 + ofetch: 1.5.1 + ufo: 1.6.3 util-deprecate@1.0.2: {} @@ -5658,31 +5577,24 @@ snapshots: "@types/unist": 3.0.3 vfile-message: 4.0.3 - vite@6.3.5(@types/node@24.3.0): + vite@6.4.1(@types/node@24.3.0): dependencies: 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 + tinyglobby: 0.2.15 optionalDependencies: "@types/node": 24.3.0 fsevents: 2.3.3 - vitefu@1.1.1(vite@6.3.5(@types/node@24.3.0)): + vitefu@1.1.1(vite@6.4.1(@types/node@24.3.0)): optionalDependencies: - vite: 6.3.5(@types/node@24.3.0) + vite: 6.4.1(@types/node@24.3.0) 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: @@ -5707,7 +5619,7 @@ 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 diff --git a/docs/src/content/docs/en/getting-started/docker.mdx b/docs/src/content/docs/en/getting-started/docker.mdx index deb2d4b6..7ed5f0ba 100644 --- a/docs/src/content/docs/en/getting-started/docker.mdx +++ b/docs/src/content/docs/en/getting-started/docker.mdx @@ -1,19 +1,17 @@ --- -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 +23,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 +43,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 +76,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 +98,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 +114,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/package.json b/package.json index 3fc41a81..36d8728f 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "dependencies": { "@amcharts/amcharts4": "^4.10.40", "@amcharts/amcharts4-geodata": "^4.1.31", - "@codemirror/commands": "^6.10.1", + "@codemirror/commands": "^6.10.2", "@codemirror/lang-xml": "^6.1.0", - "@codemirror/language": "^6.11.3", - "@codemirror/state": "^6.5.2", - "@codemirror/view": "^6.39.4", - "@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", @@ -45,52 +45,52 @@ "flatpickr": "^4.6.13", "leaflet": "^1.9.4", "leaflet.markercluster": "^1.5.3", - "lit": "^3.3.1", - "marked": "^17.0.1", + "lit": "^3.3.2", + "marked": "^17.0.2", "wavesurfer.js": "^7.12.1", "xml-formatter": "^3.6.7" }, "devDependencies": { - "@commitlint/cli": "^20.2.0", - "@commitlint/config-conventional": "^20.2.0", - "@csstools/css-tokenizer": "^3.0.4", - "@eslint/js": "9.39.2", + "@commitlint/cli": "^20.4.1", + "@commitlint/config-conventional": "^20.4.1", + "@csstools/css-tokenizer": "^4.0.0", + "@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", + "@semantic-release/gitlab": "^13.3.0", "@tailwindcss/forms": "^0.5.11", "@tailwindcss/typography": "^0.5.19", "@types/leaflet": "^1.9.21", - "@typescript-eslint/eslint-plugin": "^8.50.0", - "@typescript-eslint/parser": "^8.50.0", + "@typescript-eslint/eslint-plugin": "^8.55.0", + "@typescript-eslint/parser": "^8.55.0", "all-contributors-cli": "^6.26.1", "commitizen": "^4.3.1", "cross-env": "^10.1.0", "cssnano": "^7.1.2", "cz-conventional-changelog": "^3.3.0", - "eslint": "^9.39.2", + "eslint": "^10.0.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.5.0", + "eslint-plugin-prettier": "^5.5.5", + "globals": "^17.3.0", "husky": "^9.1.7", "is-ci": "^4.1.0", "lint-staged": "^16.2.7", "postcss": "^8.5.6", "postcss-import": "^16.1.1", - "postcss-nesting": "^13.0.2", - "postcss-preset-env": "^10.5.0", + "postcss-nesting": "^14.0.0", + "postcss-preset-env": "^11.1.3", "postcss-reporter": "^7.1.0", - "prettier": "3.7.4", + "prettier": "3.8.1", "prettier-plugin-organize-imports": "^4.3.0", - "semantic-release": "^25.0.2", - "stylelint": "^16.26.1", - "stylelint-config-standard": "^39.0.1", + "semantic-release": "^25.0.3", + "stylelint": "^17.3.0", + "stylelint-config-standard": "^40.0.0", "svgo": "^4.0.0", "tailwindcss": "^3.4.19", "typescript": "~5.9.3", - "typescript-eslint": "^8.50.0", - "vite": "^7.3.0", + "typescript-eslint": "^8.55.0", + "vite": "^7.3.1", "vite-plugin-pwa": "^1.2.0", "workbox-build": "^7.4.0", "workbox-core": "^7.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4b04e28..7ed8ffb3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,23 +14,23 @@ importers: specifier: ^4.1.31 version: 4.1.31 "@codemirror/commands": - specifier: ^6.10.1 - version: 6.10.1 + specifier: ^6.10.2 + version: 6.10.2 "@codemirror/lang-xml": 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.39.4 - version: 6.39.4 + 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 @@ -65,11 +65,11 @@ 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: ^17.0.1 - version: 17.0.1 + specifier: ^17.0.2 + version: 17.0.2 wavesurfer.js: specifier: ^7.12.1 version: 7.12.1 @@ -78,29 +78,29 @@ importers: version: 3.6.7 devDependencies: "@commitlint/cli": - specifier: ^20.2.0 - version: 20.2.0(@types/node@24.3.0)(typescript@5.9.3) + specifier: ^20.4.1 + version: 20.4.1(@types/node@24.3.0)(typescript@5.9.3) "@commitlint/config-conventional": - specifier: ^20.2.0 - version: 20.2.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/js": - specifier: 9.39.2 - version: 9.39.2 + specifier: 10.0.1 + version: 10.0.1(eslint@10.0.0(jiti@2.5.1)) "@semantic-release/changelog": specifier: ^6.0.3 - version: 6.0.3(semantic-release@25.0.2(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@25.0.2(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@25.0.2(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@25.0.2(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.11 version: 0.5.11(tailwindcss@3.4.19) @@ -111,11 +111,11 @@ importers: specifier: ^1.9.21 version: 1.9.21 "@typescript-eslint/eslint-plugin": - specifier: ^8.50.0 - version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + specifier: ^8.55.0 + version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) "@typescript-eslint/parser": - specifier: ^8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + specifier: ^8.55.0 + version: 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) all-contributors-cli: specifier: ^6.26.1 version: 6.26.1 @@ -132,17 +132,17 @@ importers: specifier: ^3.3.0 version: 3.3.0(@types/node@24.3.0)(typescript@5.9.3) eslint: - specifier: ^9.39.2 - version: 9.39.2(jiti@2.5.1) + specifier: ^10.0.0 + version: 10.0.0(jiti@2.5.1) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.39.2(jiti@2.5.1)) + version: 10.1.8(eslint@10.0.0(jiti@2.5.1)) eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.5.1)))(eslint@9.39.2(jiti@2.5.1))(prettier@3.7.4) + specifier: ^5.5.5 + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0(jiti@2.5.1)))(eslint@10.0.0(jiti@2.5.1))(prettier@3.8.1) globals: - specifier: ^16.5.0 - version: 16.5.0 + specifier: ^17.3.0 + version: 17.3.0 husky: specifier: ^9.1.7 version: 9.1.7 @@ -159,29 +159,29 @@ 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.5.0 - version: 10.5.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.7.4 - version: 3.7.4 + specifier: 3.8.1 + version: 3.8.1 prettier-plugin-organize-imports: specifier: ^4.3.0 - version: 4.3.0(prettier@3.7.4)(typescript@5.9.3) + version: 4.3.0(prettier@3.8.1)(typescript@5.9.3) semantic-release: - specifier: ^25.0.2 - version: 25.0.2(typescript@5.9.3) + specifier: ^25.0.3 + version: 25.0.3(typescript@5.9.3) stylelint: - specifier: ^16.26.1 - version: 16.26.1(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.26.1(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 @@ -192,14 +192,14 @@ importers: specifier: ~5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + specifier: ^8.55.0 + version: 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) vite: - specifier: ^7.3.0 - version: 7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) + specifier: ^7.3.1 + version: 7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) vite-plugin-pwa: specifier: ^1.2.0 - version: 1.2.0(vite@7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.4.0)(workbox-window@7.4.0) + version: 1.2.0(vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.4.0)(workbox-window@7.4.0) workbox-build: specifier: ^7.4.0 version: 7.4.0 @@ -1038,16 +1038,16 @@ packages: } engines: { node: ">=6.9.0" } - "@cacheable/memory@2.0.6": + "@cacheable/memory@2.0.7": resolution: { - integrity: sha512-7e8SScMocHxcAb8YhtkbMhGG+EKLRIficb1F5sjvhSYsWTZGxvg4KIDp8kgxnV2PUJ3ddPe6J9QESjKvBWRDkg==, + integrity: sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==, } - "@cacheable/utils@2.3.2": + "@cacheable/utils@2.3.4": resolution: { - integrity: sha512-8kGE2P+HjfY8FglaOiW+y8qxcaQAfAhVML+i66XJR3YX5FtyDqn6Txctr3K2FrbxLKixRRYYBWMbuGciOhYNDg==, + integrity: sha512-knwKUJEYgIfwShABS1BX6JyJJTglAFcEU7EXqzTdiGCXur4voqkiJkdgZIQtWNFhynzDWERcTYv/sETMu3uJWA==, } "@codemirror/autocomplete@6.18.6": @@ -1056,10 +1056,10 @@ packages: integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==, } - "@codemirror/commands@6.10.1": + "@codemirror/commands@6.10.2": resolution: { - integrity: sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q==, + integrity: sha512-vvX1fsih9HledO1c9zdotZYUZnE4xV0m6i3m25s5DIfXofuprk6cRcLUZvSk3CASUbwjQX21tOGbkY2BH8TpnQ==, } "@codemirror/lang-xml@6.1.0": @@ -1068,10 +1068,10 @@ 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.8.5": @@ -1086,16 +1086,16 @@ packages: integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==, } - "@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.39.4": + "@codemirror/view@6.39.14": resolution: { - integrity: sha512-xMF6OfEAUVY5Waega4juo1QGACfNkNF+aJLqpd8oUJz96ms2zbfQ9Gh35/tI3y8akEV31FruKfj7hBnIU/nkqA==, + integrity: sha512-WJcvgHm/6Q7dvGT0YFv/6PSkoc36QlR0VCESS6x9tGsnF1lWLmmYxOgX3HH6v8fo6AvSLgpcs+H0Olre6MKXlg==, } "@colors/colors@1.5.0": @@ -1105,18 +1105,18 @@ packages: } engines: { node: ">=0.1.90" } - "@commitlint/cli@20.2.0": + "@commitlint/cli@20.4.1": resolution: { - integrity: sha512-l37HkrPZ2DZy26rKiTUvdq/LZtlMcxz+PeLv9dzK9NzoFGuJdOQyYU7IEkEQj0pO++uYue89wzOpZ0hcTtoqUA==, + integrity: sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==, } engines: { node: ">=v18" } hasBin: true - "@commitlint/config-conventional@20.2.0": + "@commitlint/config-conventional@20.4.1": resolution: { - integrity: sha512-MsRac+yNIbTB4Q/psstKK4/ciVzACHicSwz+04Sxve+4DW+PiJeTjU0JnS4m/oOnulrXYN+yBPlKaBSGemRfgQ==, + integrity: sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA==, } engines: { node: ">=v18" } @@ -1127,17 +1127,17 @@ packages: } engines: { node: ">=v18" } - "@commitlint/config-validator@20.2.0": + "@commitlint/config-validator@20.4.0": resolution: { - integrity: sha512-SQCBGsL9MFk8utWNSthdxd9iOD1pIVZSHxGBwYIGfd67RTjxqzFOSAYeQVXOu3IxRC3YrTOH37ThnTLjUlyF2w==, + integrity: sha512-zShmKTF+sqyNOfAE0vKcqnpvVpG0YX8F9G/ZIQHI2CoKyK+PSdladXMSns400aZ5/QZs+0fN75B//3Q5CHw++w==, } engines: { node: ">=v18" } - "@commitlint/ensure@20.2.0": + "@commitlint/ensure@20.4.1": resolution: { - integrity: sha512-+8TgIGv89rOWyt3eC6lcR1H7hqChAKkpawytlq9P1i/HYugFRVqgoKJ8dhd89fMnlrQTLjA5E97/4sF09QwdoA==, + integrity: sha512-WLQqaFx1pBooiVvBrA1YfJNFqZF8wS/YGOtr5RzApDbV9tQ52qT5VkTsY65hFTnXhW8PcDfZLaknfJTmPejmlw==, } engines: { node: ">=v18" } @@ -1155,24 +1155,24 @@ packages: } engines: { node: ">=v18" } - "@commitlint/format@20.2.0": + "@commitlint/format@20.4.0": resolution: { - integrity: sha512-PhNoLNhxpfIBlW/i90uZ3yG3hwSSYx7n4d9Yc+2FAorAHS0D9btYRK4ZZXX+Gm3W5tDtu911ow/eWRfcRVgNWg==, + integrity: sha512-i3ki3WR0rgolFVX6r64poBHXM1t8qlFel1G1eCBvVgntE3fCJitmzSvH5JD/KVJN/snz6TfaX2CLdON7+s4WVQ==, } engines: { node: ">=v18" } - "@commitlint/is-ignored@20.2.0": + "@commitlint/is-ignored@20.4.1": resolution: { - integrity: sha512-Lz0OGeZCo/QHUDLx5LmZc0EocwanneYJUM8z0bfWexArk62HKMLfLIodwXuKTO5y0s6ddXaTexrYHs7v96EOmw==, + integrity: sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA==, } engines: { node: ">=v18" } - "@commitlint/lint@20.2.0": + "@commitlint/lint@20.4.1": resolution: { - integrity: sha512-cQEEB+jlmyQbyiji/kmh8pUJSDeUmPiWq23kFV0EtW3eM+uAaMLMuoTMajbrtWYWQpPzOMDjYltQ8jxHeHgITg==, + integrity: sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==, } engines: { node: ">=v18" } @@ -1183,31 +1183,31 @@ packages: } engines: { node: ">=v18" } - "@commitlint/load@20.2.0": + "@commitlint/load@20.4.0": resolution: { - integrity: sha512-iAK2GaBM8sPFTSwtagI67HrLKHIUxQc2BgpgNc/UMNme6LfmtHpIxQoN1TbP+X1iz58jq32HL1GbrFTCzcMi6g==, + 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.2.0": + "@commitlint/parse@20.4.1": resolution: { - integrity: sha512-LXStagGU1ivh07X7sM+hnEr4BvzFYn1iBJ6DRg2QsIN8lBfSzyvkUcVCDwok9Ia4PWiEgei5HQjju6xfJ1YaSQ==, + integrity: sha512-XNtZjeRcFuAfUnhYrCY02+mpxwY4OmnvD3ETbVPs25xJFFz1nRo/25nHj+5eM+zTeRFvWFwD4GXWU2JEtoK1/w==, } engines: { node: ">=v18" } - "@commitlint/read@20.2.0": + "@commitlint/read@20.4.0": resolution: { - integrity: sha512-+SjF9mxm5JCbe+8grOpXCXMMRzAnE0WWijhhtasdrpJoAFJYd5UgRTj/oCq5W3HJTwbvTOsijEJ0SUGImECD7Q==, + integrity: sha512-QfpFn6/I240ySEGv7YWqho4vxqtPpx40FS7kZZDjUJ+eHxu3azfhy7fFb5XzfTqVNp1hNoI3tEmiEPbDB44+cg==, } engines: { node: ">=v18" } @@ -1218,17 +1218,17 @@ packages: } engines: { node: ">=v18" } - "@commitlint/resolve-extends@20.2.0": + "@commitlint/resolve-extends@20.4.0": resolution: { - integrity: sha512-KVoLDi9BEuqeq+G0wRABn4azLRiCC22/YHR2aCquwx6bzCHAIN8hMt3Nuf1VFxq/c8ai6s8qBxE8+ZD4HeFTlQ==, + integrity: sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g==, } engines: { node: ">=v18" } - "@commitlint/rules@20.2.0": + "@commitlint/rules@20.4.1": resolution: { - integrity: sha512-27rHGpeAjnYl/A+qUUiYDa7Yn1WIjof/dFJjYW4gA1Ug+LUGa1P0AexzGZ5NBxTbAlmDgaxSZkLLxtLVqtg8PQ==, + integrity: sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==, } engines: { node: ">=v18" } @@ -1239,10 +1239,10 @@ 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" } @@ -1253,457 +1253,487 @@ packages: } engines: { node: ">=v18" } - "@commitlint/types@20.2.0": + "@commitlint/types@20.4.0": resolution: { - integrity: sha512-KTy0OqRDLR5y/zZMnizyx09z/rPlPC/zKhYgH8o/q6PuAjoQAKlRfY4zzv0M64yybQ//6//4H1n14pxaLZfUnA==, + 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.0.0": resolution: { - integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==, + integrity: sha512-q4d82GTl8BIlh/dTnVsWmxnbWJeb3kiU8eUH71UxlxnS+WIaALmtzTL8gR15PkYOexMQYVk0CO4qIG93C1IvPA==, } - 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-calc@3.1.1": resolution: { - integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==, + 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-parser-algorithms@3.0.5": + "@csstools/css-color-parser@4.0.1": resolution: { - integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==, + integrity: sha512-vYwO15eRBEkeF6xjAno/KQ61HacNhfQuuU/eGwH67DplL0zD5ZixUa563phQvUelA07yDczIXdtmYojCphKJcw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: - "@csstools/css-tokenizer": ^3.0.4 + "@csstools/css-parser-algorithms": ^4.0.0 + "@csstools/css-tokenizer": ^4.0.0 - "@csstools/css-syntax-patches-for-csstree@1.0.21": + "@csstools/css-parser-algorithms@4.0.0": resolution: { - integrity: sha512-plP8N8zKfEZ26figX4Nvajx8DuzfuRpLTqglQ5d0chfnt35Qt3X+m6ASZ+rG0D0kxe/upDVNwSIVJP5n4FuNfw==, + integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==, } - engines: { node: ">=18" } - - "@csstools/css-tokenizer@3.0.4": - resolution: - { - integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==, - } - engines: { node: ">=18" } - - "@csstools/media-query-list-parser@4.0.3": - resolution: - { - integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==, - } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.5 - "@csstools/css-tokenizer": ^3.0.4 + "@csstools/css-tokenizer": ^4.0.0 - "@csstools/postcss-alpha-function@1.0.1": + "@csstools/css-syntax-patches-for-csstree@1.0.26": resolution: { - integrity: sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==, + integrity: sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==, } - engines: { node: ">=18" } + + "@csstools/css-tokenizer@4.0.0": + resolution: + { + integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==, + } + 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": ^4.0.0 + "@csstools/css-tokenizer": ^4.0.0 + + "@csstools/postcss-alpha-function@2.0.2": + resolution: + { + integrity: sha512-EXdJC5fds0h1KqoioUBkcYPZvcNKR64jrGkbqlDNbMU3FP1MzLEr/QJR8bj/bu53TJFIgkc9WvKcpbwVqZ4WPg==, + } + 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-position-area-property@1.0.0": + "@csstools/postcss-oklab-function@5.0.1": resolution: { - integrity: sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==, + integrity: sha512-Ql+X4zu29ITihxHKcCFEU84ww+Nkv44M2s0fT7Nv4iQYlQ4+liF6v9RL0ezeogeiLRNLLC6yh0ay1PHpmaNIgQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-progressive-custom-properties@4.2.1": + "@csstools/postcss-position-area-property@2.0.0": resolution: { - integrity: sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==, + integrity: sha512-TeEfzsJGB23Syv7yCm8AHCD2XTFujdjr9YYu9ebH64vnfCEvY4BG319jXAYSlNlf3Yc9PNJ6WnkDkUF5XVgSKQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-random-function@2.0.1": + "@csstools/postcss-progressive-custom-properties@5.0.0": resolution: { - integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==, + integrity: sha512-NsJoZ89rxmDrUsITf8QIk5w+lQZQ8Xw5K6cLFG+cfiffsLYHb3zcbOOrHLetGl1WIhjWWQ4Cr8MMrg46Q+oACg==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-relative-color-syntax@3.0.12": + "@csstools/postcss-property-rule-prelude-list@2.0.0": resolution: { - integrity: sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==, + integrity: sha512-qcMAkc9AhpzHgmQCD8hoJgGYifcOAxd1exXjjxilMM6euwRE619xDa4UsKBCv/v4g+sS63sd6c29LPM8s2ylSQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-scope-pseudo-class@4.0.1": + "@csstools/postcss-random-function@3.0.0": resolution: { - integrity: sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==, + integrity: sha512-H/Zt5o9NAd8mowq3XRy8uU19wOEe8sbKyKOKxrzOdG0rz2maA4fLcXc9MQucdm3s4zMDfVJtCqvwrLP7lKWybA==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-sign-functions@1.1.4": + "@csstools/postcss-relative-color-syntax@4.0.1": resolution: { - integrity: sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==, + integrity: sha512-zRLO9xMGtCCT0FTpTsaGI6cmdzJKbwWjg92AuczlSDuriEAPEJL+ZJ4jDyw51p23DfoAFgK8soB/LyoY1kFOLQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-stepped-value-functions@4.0.9": + "@csstools/postcss-scope-pseudo-class@5.0.0": resolution: { - integrity: sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==, + integrity: sha512-kBrBFJcAji3MSHS4qQIihPvJfJC5xCabXLbejqDMiQi+86HD4eMBiTayAo46Urg7tlEmZZQFymFiJt+GH6nvXw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-system-ui-font-family@1.0.0": + "@csstools/postcss-sign-functions@2.0.0": resolution: { - integrity: sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==, + integrity: sha512-32Bw7++8ToSLMEOSJUuxJsAJJdsIfgeD1dYPKRCk9/fTciVZ8MjkPXypwiXIo7xIJk0h5CJz6QUkDoc6dcAJ7Q==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-text-decoration-shorthand@4.0.3": + "@csstools/postcss-stepped-value-functions@5.0.0": resolution: { - integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==, + integrity: sha512-NueCSNbaq7QtAj6QwseMqOlM3C8nN2GWaPwd2Uw+IOYAbGvO/84BxUtNeZljeOmqJX61hwSNhLfwmgJXgY0W5A==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-trigonometric-functions@4.0.9": + "@csstools/postcss-syntax-descriptor-syntax-production@2.0.0": resolution: { - integrity: sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==, + integrity: sha512-elYcbdiBXAkPqvojB9kIBRuHY6htUhjSITtFQ+XiXnt6SvZCbNGxQmaaw6uZ7SPHu/+i/XVjzIt09/1k3SIerQ==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-unset-value@4.0.0": + "@csstools/postcss-system-ui-font-family@2.0.0": resolution: { - integrity: sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==, + integrity: sha512-FyGZCgchFImFyiHS2x3rD5trAqatf/x23veBLTIgbaqyFfna6RNBD+Qf8HRSjt6HGMXOLhAjxJ3OoZg0bbn7Qw==, } - engines: { node: ">=18" } + engines: { node: ">=20.19.0" } peerDependencies: postcss: ^8.4 - "@csstools/selector-resolve-nested@3.1.0": + "@csstools/postcss-text-decoration-shorthand@5.0.2": resolution: { - integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==, + integrity: sha512-0VUTt79lfQ2LGQLfyOBeqpinDLzOf3w+tlA1Re/KjSOc86H6tRz6TeXbISrBSJlfM1fYKNmBNw+ON8Ovy6aNeg==, } - 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-trigonometric-functions@5.0.0": resolution: { - integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==, + 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 "@epic-web/invariant@1.0.0": resolution: @@ -1945,15 +1975,6 @@ packages: cpu: [x64] os: [win32] - "@eslint-community/eslint-utils@4.7.0": - resolution: - { - integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - "@eslint-community/eslint-utils@4.9.0": resolution: { @@ -1963,61 +1984,68 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - "@eslint-community/regexpp@4.12.1": + "@eslint-community/eslint-utils@4.9.1": resolution: { - integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==, + 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.2": + resolution: + { + integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, } engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - "@eslint/config-array@0.21.1": + "@eslint/config-array@0.23.1": resolution: { - integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==, + integrity: sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - "@eslint/config-helpers@0.4.2": + "@eslint/config-helpers@0.5.2": resolution: { - integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==, + integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - "@eslint/core@0.17.0": + "@eslint/core@1.1.0": resolution: { - integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==, + integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==, } - 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/js@10.0.1": resolution: { - integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==, + 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/js@9.39.2": + "@eslint/object-schema@3.0.1": resolution: { - integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==, + 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/object-schema@2.1.7": + "@eslint/plugin-kit@0.6.0": resolution: { - integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==, + integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/plugin-kit@0.4.1": - resolution: - { - integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } "@fastify/busboy@2.1.1": resolution: @@ -2026,16 +2054,16 @@ packages: } engines: { node: ">=14" } - "@floating-ui/core@1.7.3": + "@floating-ui/core@1.7.4": 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": @@ -2200,6 +2228,12 @@ packages: integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==, } + "@lezer/common@1.5.1": + resolution: + { + integrity: sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==, + } + "@lezer/highlight@1.2.1": resolution: { @@ -2507,6 +2541,7 @@ packages: } cpu: [arm] os: [linux] + libc: [glibc] "@rollup/rollup-linux-arm-musleabihf@4.47.1": resolution: @@ -2515,6 +2550,7 @@ packages: } cpu: [arm] os: [linux] + libc: [musl] "@rollup/rollup-linux-arm64-gnu@4.47.1": resolution: @@ -2523,6 +2559,7 @@ packages: } cpu: [arm64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-arm64-musl@4.47.1": resolution: @@ -2531,6 +2568,7 @@ packages: } cpu: [arm64] os: [linux] + libc: [musl] "@rollup/rollup-linux-loongarch64-gnu@4.47.1": resolution: @@ -2539,6 +2577,7 @@ packages: } cpu: [loong64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-ppc64-gnu@4.47.1": resolution: @@ -2547,6 +2586,7 @@ packages: } cpu: [ppc64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-riscv64-gnu@4.47.1": resolution: @@ -2555,6 +2595,7 @@ packages: } cpu: [riscv64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-riscv64-musl@4.47.1": resolution: @@ -2563,6 +2604,7 @@ packages: } cpu: [riscv64] os: [linux] + libc: [musl] "@rollup/rollup-linux-s390x-gnu@4.47.1": resolution: @@ -2571,6 +2613,7 @@ packages: } cpu: [s390x] os: [linux] + libc: [glibc] "@rollup/rollup-linux-x64-gnu@4.47.1": resolution: @@ -2579,6 +2622,7 @@ packages: } cpu: [x64] os: [linux] + libc: [glibc] "@rollup/rollup-linux-x64-musl@4.47.1": resolution: @@ -2587,6 +2631,7 @@ packages: } cpu: [x64] os: [linux] + libc: [musl] "@rollup/rollup-win32-arm64-msvc@4.47.1": resolution: @@ -2677,10 +2722,10 @@ packages: 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: @@ -2783,6 +2828,12 @@ packages: integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==, } + "@types/esrecurse@4.3.1": + resolution: + { + integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==, + } + "@types/estree@0.0.39": resolution: { @@ -2849,92 +2900,92 @@ packages: integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, } - "@typescript-eslint/eslint-plugin@8.50.0": + "@typescript-eslint/eslint-plugin@8.55.0": resolution: { - integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==, + integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - "@typescript-eslint/parser": ^8.50.0 + "@typescript-eslint/parser": ^8.55.0 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/parser@8.50.0": + "@typescript-eslint/parser@8.55.0": resolution: { - integrity: sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==, + integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/project-service@8.50.0": + "@typescript-eslint/project-service@8.55.0": resolution: { - integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==, + integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/scope-manager@8.50.0": + "@typescript-eslint/scope-manager@8.55.0": resolution: { - integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==, + integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/tsconfig-utils@8.50.0": + "@typescript-eslint/tsconfig-utils@8.55.0": resolution: { - integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==, + integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/type-utils@8.50.0": + "@typescript-eslint/type-utils@8.55.0": resolution: { - integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==, + integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/types@8.50.0": + "@typescript-eslint/types@8.55.0": resolution: { - integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==, + integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/typescript-estree@8.50.0": + "@typescript-eslint/typescript-estree@8.55.0": resolution: { - integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==, + integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/utils@8.50.0": + "@typescript-eslint/utils@8.55.0": resolution: { - integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==, + integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/visitor-keys@8.50.0": + "@typescript-eslint/visitor-keys@8.55.0": resolution: { - integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==, + integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -2944,13 +2995,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: { @@ -3101,13 +3145,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: { @@ -3189,11 +3226,12 @@ 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" } base64-js@1.3.1: resolution: @@ -3312,10 +3350,10 @@ packages: } engines: { node: ">=18" } - cacheable@2.3.1: + cacheable@2.3.2: resolution: { - integrity: sha512-yr+FSHWn1ZUou5LkULX/S+jhfgfnLbuKQjE40tyEd4fxGZVMbBL5ifno0J0OauykS8UiCSgHi+DV/YD+rjFxFg==, + integrity: sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==, } cachedir@2.3.0: @@ -3646,13 +3684,6 @@ packages: integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==, } - conventional-changelog-angular@7.0.0: - resolution: - { - integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==, - } - engines: { node: ">=16" } - conventional-changelog-angular@8.0.0: resolution: { @@ -3660,12 +3691,19 @@ packages: } engines: { node: ">=18" } - conventional-changelog-conventionalcommits@7.0.2: + conventional-changelog-angular@8.1.0: resolution: { - integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==, + integrity: sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==, } - engines: { node: ">=16" } + engines: { node: ">=18" } + + conventional-changelog-conventionalcommits@9.1.0: + resolution: + { + integrity: sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA==, + } + engines: { node: ">=18" } conventional-changelog-writer@8.2.0: resolution: @@ -3688,14 +3726,6 @@ packages: } engines: { node: ">=18" } - conventional-commits-parser@5.0.0: - resolution: - { - integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==, - } - engines: { node: ">=16" } - hasBin: true - conventional-commits-parser@6.2.0: resolution: { @@ -3704,6 +3734,14 @@ packages: engines: { node: ">=18" } hasBin: true + conventional-commits-parser@6.2.1: + resolution: + { + integrity: sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==, + } + engines: { node: ">=18" } + hasBin: true + convert-hrtime@5.0.0: resolution: { @@ -3799,12 +3837,12 @@ 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 @@ -3824,21 +3862,21 @@ packages: } engines: { node: ">=12 || >=16" } - 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 @@ -3869,10 +3907,10 @@ packages: } engines: { node: ">= 6" } - cssdb@8.5.2: + cssdb@8.7.1: resolution: { - integrity: sha512-Pmoj9RmD8RIoIzA2EQWO4D4RMeDts0tgAH0VXdlNdxjuBGI3a9wMOIcUwaPNmD4r2qtIa06gqkIf7sECl+cBCg==, + integrity: sha512-+F6LKx48RrdGOtE4DT5jz7Uo+VeyKXpK797FAevIkzjV8bMHz6xTO5F7gNDcRCHmPgD5jj2g6QCsY9zmVrh38A==, } cssesc@3.0.0: @@ -4278,13 +4316,6 @@ packages: } engines: { node: ">=0.12" } - env-ci@11.1.1: - resolution: - { - integrity: sha512-mT3ks8F0kwpo7SYNds6nWj0PaRh+qJxIeBVBXAKTN9hphAzZv7s0QAZQbqnB1fAv/r4pJUGE15BV9UrS31FP2w==, - } - engines: { node: ^18.17 || >=20.6.1 } - env-ci@11.2.0: resolution: { @@ -4399,10 +4430,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: @@ -4416,12 +4447,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: @@ -4437,12 +4468,19 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eslint@9.39.2: + eslint-visitor-keys@5.0.0: resolution: { - integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==, + 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: "*" @@ -4450,17 +4488,17 @@ packages: jiti: optional: true - espree@10.4.0: + espree@11.1.0: resolution: { - integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==, + integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - esquery@1.6.0: + esquery@1.7.0: resolution: { - integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==, + integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, } engines: { node: ">=0.10" } @@ -4627,10 +4665,10 @@ packages: } engines: { node: ">=18" } - file-entry-cache@11.1.1: + file-entry-cache@11.1.2: resolution: { - integrity: sha512-TPVFSDE7q91Dlk1xpFLvFllf8r0HyOMOlnWy7Z2HBku5H3KhIeOGInexrIeg2D64DosVB/JXkrrk6N/7Wriq4A==, + integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==, } file-entry-cache@8.0.0: @@ -4693,13 +4731,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: { @@ -4721,10 +4752,10 @@ packages: } engines: { node: ">=16" } - flat-cache@6.1.19: + flat-cache@6.1.20: resolution: { - integrity: sha512-l/K33newPTZMTGAnnzaiqSl6NnH7Namh8jBNjrgjprWxGmZUuxx/sJNIRaijOh3n7q7ESbhNZC+pvVZMFdeU4A==, + integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==, } flatpickr@4.6.13: @@ -5007,17 +5038,10 @@ packages: } engines: { node: ">=6" } - globals@14.0.0: + globals@17.3.0: resolution: { - integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==, - } - engines: { node: ">=18" } - - globals@16.5.0: - resolution: - { - integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==, + integrity: sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==, } engines: { node: ">=18" } @@ -5028,13 +5052,6 @@ packages: } engines: { node: ">= 0.4" } - globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, - } - engines: { node: ">=10" } - globby@14.1.0: resolution: { @@ -5042,6 +5059,13 @@ packages: } engines: { node: ">=18" } + globby@16.1.0: + resolution: + { + integrity: sha512-+A4Hq7m7Ze592k9gZRy4gJ27DrXRNnC1vPjxTt1qQxEY8RxagBkBxivkCwg7FxSTG0iLLEMaUx13oOr0R2/qcQ==, + } + engines: { node: ">=20" } + globjoin@0.1.4: resolution: { @@ -5103,6 +5127,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: { @@ -5164,10 +5195,10 @@ packages: } engines: { node: ">=20" } - hookified@1.14.0: + hookified@1.15.1: resolution: { - integrity: sha512-pi1ynXIMFx/uIIwpWJ/5CEtOHLGtnUB0WhGeeYT+fKcQ+WCQbm3/rrkAXnpfph++PgepNqPdTC2WTj8A6k6zoQ==, + integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==, } hosted-git-info@7.0.2: @@ -5191,12 +5222,12 @@ 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" } http-cache-semantics@4.2.0: resolution: @@ -5314,6 +5345,12 @@ packages: integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==, } + import-meta-resolve@4.2.0: + resolution: + { + integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==, + } + imurmurhash@0.1.4: resolution: { @@ -5583,6 +5620,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: { @@ -5660,13 +5704,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: { @@ -5887,13 +5924,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: { @@ -5907,10 +5937,10 @@ packages: integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, } - keyv@5.5.5: + keyv@5.6.0: resolution: { - integrity: sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==, + integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==, } kind-of@6.0.3: @@ -5994,10 +6024,10 @@ packages: integrity: sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==, } - 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: @@ -6028,13 +6058,6 @@ packages: } engines: { node: ">=10" } - locate-path@7.2.0: - 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: { @@ -6225,10 +6248,10 @@ packages: engines: { node: ">= 18" } hasBin: true - marked@17.0.1: + marked@17.0.2: resolution: { - integrity: sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==, + integrity: sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==, } engines: { node: ">= 20" } hasBin: true @@ -6240,10 +6263,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: @@ -6272,6 +6295,13 @@ packages: } engines: { node: ">=18" } + meow@14.0.0: + resolution: + { + integrity: sha512-JhC3R1f6dbspVtmF3vKjAWz1EVIvwFrGGPLSdU6rK79xBwHWTuHoLnRX/t1/zHS1Ch1Y2UtIrih7DAHuH9JFJA==, + } + engines: { node: ">=20" } + merge-stream@2.0.0: resolution: { @@ -6758,13 +6788,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: { @@ -6786,13 +6809,6 @@ packages: } engines: { node: ">=10" } - p-locate@6.0.0: - 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: { @@ -6927,13 +6943,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: { @@ -7092,12 +7101,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 @@ -7119,30 +7128,30 @@ 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 @@ -7164,39 +7173,39 @@ packages: 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 @@ -7236,30 +7245,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 @@ -7271,21 +7280,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 @@ -7316,12 +7325,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 @@ -7340,12 +7349,12 @@ packages: ts-node: 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 @@ -7421,12 +7430,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 @@ -7529,12 +7538,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 @@ -7546,30 +7555,30 @@ 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.5.0: + postcss-preset-env@11.1.3: resolution: { - integrity: sha512-xgxFQPAPxeWmsgy8cR7GM1PGAL/smA5E9qU7K//D4vucS01es3M0fDujhDJn3kY8Ip7/vVYcecbe1yY+vBo3qQ==, + 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 @@ -7608,12 +7617,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: { @@ -7623,12 +7626,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 @@ -7653,6 +7656,13 @@ packages: } engines: { node: ">=4" } + postcss-selector-parser@7.1.1: + resolution: + { + integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==, + } + engines: { node: ">=4" } + postcss-svgo@7.1.0: resolution: { @@ -7691,10 +7701,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" } @@ -7719,10 +7729,10 @@ packages: engines: { node: ">=10.13.0" } hasBin: true - prettier@3.7.4: + prettier@3.8.1: resolution: { - integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==, + integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==, } engines: { node: ">=14" } hasBin: true @@ -7773,10 +7783,10 @@ packages: } engines: { node: ">=6" } - qified@0.5.3: + qified@0.6.0: resolution: { - integrity: sha512-kXuQdQTB6oN3KhI6V4acnBSZx8D2I4xzZvn9+wFLLFCoBNQY/sFnCW6c43OL7pOQ2HvGV4lnWIXNmgfp7cTWhQ==, + integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==, } engines: { node: ">=20" } @@ -8109,22 +8119,14 @@ packages: integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, } - semantic-release@25.0.2: + semantic-release@25.0.3: resolution: { - integrity: sha512-6qGjWccl5yoyugHt3jTgztJ9Y0JVzyH8/Voc/D8PlLat9pwxQYXz7W1Dpnq5h0/G5GCYGUaDSlYcyk3AMh5A6g==, + integrity: sha512-WRgl5GcypwramYX4HV+eQGzUbD7UUbljVmS+5G1uMwX/wLgYuJAxGeerXJDMO2xshng4+FXqCgyB5QfClV6WjA==, } 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: { @@ -8147,6 +8149,14 @@ packages: engines: { node: ">=10" } hasBin: true + semver@7.7.4: + resolution: + { + integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, + } + engines: { node: ">=10" } + hasBin: true + serialize-javascript@6.0.2: resolution: { @@ -8249,13 +8259,6 @@ packages: } engines: { node: ">=8" } - slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: ">=8" } - slash@5.1.0: resolution: { @@ -8422,6 +8425,13 @@ packages: } engines: { node: ">=20" } + string-width@8.1.1: + resolution: + { + integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==, + } + engines: { node: ">=20" } + string.prototype.matchall@4.0.12: resolution: { @@ -8554,30 +8564,30 @@ packages: 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.26.1: + stylelint@17.3.0: resolution: { - integrity: sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==, + integrity: sha512-1POV91lcEMhj6SLVaOeA0KlS9yattS+qq+cyWqP/nYzWco7K5jznpGH1ExngvPlTM9QF1Kjd2bmuzJu9TH2OcA==, } - engines: { node: ">=18.12.0" } + engines: { node: ">=20.19.0" } hasBin: true sucrase@3.35.0: @@ -8595,6 +8605,13 @@ packages: } engines: { node: ">=18" } + supports-color@10.2.2: + resolution: + { + integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==, + } + engines: { node: ">=18" } + supports-color@5.5.0: resolution: { @@ -8616,6 +8633,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: { @@ -8637,10 +8661,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 } @@ -8702,13 +8726,6 @@ packages: 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: { @@ -8812,10 +8829,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: @@ -8923,10 +8940,10 @@ packages: } engines: { node: ">= 0.4" } - typescript-eslint@8.50.0: + typescript-eslint@8.55.0: resolution: { - integrity: sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==, + integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: @@ -9037,6 +9054,13 @@ packages: } engines: { node: ">=18" } + unicorn-magic@0.4.0: + resolution: + { + integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==, + } + engines: { node: ">=20" } + unique-string@2.0.0: resolution: { @@ -9135,10 +9159,10 @@ packages: "@vite-pwa/assets-generator": optional: true - vite@7.3.0: + vite@7.3.1: resolution: { - integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==, + integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==, } engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true @@ -9413,12 +9437,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 } xml-formatter@3.6.7: resolution: @@ -9538,13 +9562,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: { @@ -9675,7 +9692,7 @@ snapshots: "@babel/core": 7.28.3 "@babel/helper-compilation-targets": 7.27.2 "@babel/helper-plugin-utils": 7.27.1 - debug: 4.4.1 + debug: 4.4.3 lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: @@ -10256,69 +10273,69 @@ snapshots: "@babel/helper-string-parser": 7.27.1 "@babel/helper-validator-identifier": 7.27.1 - "@cacheable/memory@2.0.6": + "@cacheable/memory@2.0.7": dependencies: - "@cacheable/utils": 2.3.2 - "@keyv/bigmap": 1.3.0(keyv@5.5.5) - hookified: 1.14.0 - keyv: 5.5.5 + "@cacheable/utils": 2.3.4 + "@keyv/bigmap": 1.3.0(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 - "@cacheable/utils@2.3.2": + "@cacheable/utils@2.3.4": dependencies: hashery: 1.3.0 - keyv: 5.5.5 + keyv: 5.6.0 "@codemirror/autocomplete@6.18.6": dependencies: - "@codemirror/language": 6.11.3 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.39.4 + "@codemirror/language": 6.12.1 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 "@lezer/common": 1.2.3 - "@codemirror/commands@6.10.1": + "@codemirror/commands@6.10.2": dependencies: - "@codemirror/language": 6.11.3 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.39.4 + "@codemirror/language": 6.12.1 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 "@lezer/common": 1.2.3 "@codemirror/lang-xml@6.1.0": dependencies: "@codemirror/autocomplete": 6.18.6 - "@codemirror/language": 6.11.3 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.39.4 + "@codemirror/language": 6.12.1 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 "@lezer/common": 1.2.3 "@lezer/xml": 1.0.6 - "@codemirror/language@6.11.3": + "@codemirror/language@6.12.1": dependencies: - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.39.4 - "@lezer/common": 1.2.3 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 + "@lezer/common": 1.5.1 "@lezer/highlight": 1.2.1 "@lezer/lr": 1.4.2 style-mod: 4.1.2 "@codemirror/lint@6.8.5": dependencies: - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.39.4 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 crelt: 1.0.6 "@codemirror/search@6.5.11": dependencies: - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.39.4 + "@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.39.4": + "@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 w3c-keyname: 2.2.8 @@ -10326,23 +10343,23 @@ snapshots: "@colors/colors@1.5.0": optional: true - "@commitlint/cli@20.2.0(@types/node@24.3.0)(typescript@5.9.3)": + "@commitlint/cli@20.4.1(@types/node@24.3.0)(typescript@5.9.3)": dependencies: - "@commitlint/format": 20.2.0 - "@commitlint/lint": 20.2.0 - "@commitlint/load": 20.2.0(@types/node@24.3.0)(typescript@5.9.3) - "@commitlint/read": 20.2.0 - "@commitlint/types": 20.2.0 + "@commitlint/format": 20.4.0 + "@commitlint/lint": 20.4.1 + "@commitlint/load": 20.4.0(@types/node@24.3.0)(typescript@5.9.3) + "@commitlint/read": 20.4.0 + "@commitlint/types": 20.4.0 tinyexec: 1.0.1 yargs: 17.7.2 transitivePeerDependencies: - "@types/node" - typescript - "@commitlint/config-conventional@20.2.0": + "@commitlint/config-conventional@20.4.1": dependencies: - "@commitlint/types": 20.2.0 - conventional-changelog-conventionalcommits: 7.0.2 + "@commitlint/types": 20.4.0 + conventional-changelog-conventionalcommits: 9.1.0 "@commitlint/config-validator@19.8.1": dependencies: @@ -10350,14 +10367,14 @@ snapshots: ajv: 8.17.1 optional: true - "@commitlint/config-validator@20.2.0": + "@commitlint/config-validator@20.4.0": dependencies: - "@commitlint/types": 20.2.0 + "@commitlint/types": 20.4.0 ajv: 8.17.1 - "@commitlint/ensure@20.2.0": + "@commitlint/ensure@20.4.1": dependencies: - "@commitlint/types": 20.2.0 + "@commitlint/types": 20.4.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -10369,22 +10386,22 @@ snapshots: "@commitlint/execute-rule@20.0.0": {} - "@commitlint/format@20.2.0": + "@commitlint/format@20.4.0": dependencies: - "@commitlint/types": 20.2.0 - chalk: 5.6.0 + "@commitlint/types": 20.4.0 + picocolors: 1.1.1 - "@commitlint/is-ignored@20.2.0": + "@commitlint/is-ignored@20.4.1": dependencies: - "@commitlint/types": 20.2.0 + "@commitlint/types": 20.4.0 semver: 7.7.2 - "@commitlint/lint@20.2.0": + "@commitlint/lint@20.4.1": dependencies: - "@commitlint/is-ignored": 20.2.0 - "@commitlint/parse": 20.2.0 - "@commitlint/rules": 20.2.0 - "@commitlint/types": 20.2.0 + "@commitlint/is-ignored": 20.4.1 + "@commitlint/parse": 20.4.1 + "@commitlint/rules": 20.4.1 + "@commitlint/types": 20.4.0 "@commitlint/load@19.8.1(@types/node@24.3.0)(typescript@5.9.3)": dependencies: @@ -10403,34 +10420,33 @@ snapshots: - typescript optional: true - "@commitlint/load@20.2.0(@types/node@24.3.0)(typescript@5.9.3)": + "@commitlint/load@20.4.0(@types/node@24.3.0)(typescript@5.9.3)": dependencies: - "@commitlint/config-validator": 20.2.0 + "@commitlint/config-validator": 20.4.0 "@commitlint/execute-rule": 20.0.0 - "@commitlint/resolve-extends": 20.2.0 - "@commitlint/types": 20.2.0 - chalk: 5.6.0 + "@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.3.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 + 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.2.0": + "@commitlint/parse@20.4.1": dependencies: - "@commitlint/types": 20.2.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.2.0": + "@commitlint/read@20.4.0": dependencies: - "@commitlint/top-level": 20.0.0 - "@commitlint/types": 20.2.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 @@ -10445,27 +10461,27 @@ snapshots: resolve-from: 5.0.0 optional: true - "@commitlint/resolve-extends@20.2.0": + "@commitlint/resolve-extends@20.4.0": dependencies: - "@commitlint/config-validator": 20.2.0 - "@commitlint/types": 20.2.0 + "@commitlint/config-validator": 20.4.0 + "@commitlint/types": 20.4.0 global-directory: 4.0.1 import-meta-resolve: 4.1.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - "@commitlint/rules@20.2.0": + "@commitlint/rules@20.4.1": dependencies: - "@commitlint/ensure": 20.2.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.2.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@19.8.1": dependencies: @@ -10473,313 +10489,333 @@ snapshots: chalk: 5.6.0 optional: true - "@commitlint/types@20.2.0": + "@commitlint/types@20.4.0": dependencies: - "@types/conventional-commits-parser": 5.0.1 - chalk: 5.6.0 + 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.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/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-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/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-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-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/css-tokenizer": 3.0.4 + "@csstools/color-helpers": 6.0.1 + "@csstools/css-calc": 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/css-syntax-patches-for-csstree@1.0.21": {} - - "@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)": dependencies: - "@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/postcss-alpha-function@1.0.1(postcss@8.5.6)": + "@csstools/css-syntax-patches-for-csstree@1.0.26": {} + + "@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-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-parser-algorithms": 4.0.0(@csstools/css-tokenizer@4.0.0) + "@csstools/css-tokenizer": 4.0.0 + + "@csstools/postcss-alpha-function@2.0.2(postcss@8.5.6)": + dependencies: + "@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.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 - "@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.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 - "@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-position-area-property@1.0.0(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@4.2.1(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.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 - "@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.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 - "@csstools/postcss-system-ui-font-family@1.0.0(postcss@8.5.6)": + "@csstools/postcss-stepped-value-functions@5.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/css-calc": 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 - "@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.6)": + "@csstools/postcss-syntax-descriptor-syntax-production@2.0.0(postcss@8.5.6)": dependencies: - "@csstools/color-helpers": 5.1.0 + "@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.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 - "@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": {} - "@epic-web/invariant@1.0.0": {} "@esbuild/aix-ppc64@0.27.2": @@ -10860,66 +10896,54 @@ snapshots: "@esbuild/win32-x64@0.27.2": optional: true - "@eslint-community/eslint-utils@4.7.0(eslint@9.39.2(jiti@2.5.1))": + "@eslint-community/eslint-utils@4.9.0(eslint@10.0.0(jiti@2.5.1))": dependencies: - eslint: 9.39.2(jiti@2.5.1) + eslint: 10.0.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 - "@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.5.1))": + "@eslint-community/eslint-utils@4.9.1(eslint@10.0.0(jiti@2.5.1))": dependencies: - eslint: 9.39.2(jiti@2.5.1) + eslint: 10.0.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 - "@eslint-community/regexpp@4.12.1": {} + "@eslint-community/regexpp@4.12.2": {} - "@eslint/config-array@0.21.1": + "@eslint/config-array@0.23.1": dependencies: - "@eslint/object-schema": 2.1.7 - debug: 4.4.1 - minimatch: 3.1.2 + "@eslint/object-schema": 3.0.1 + debug: 4.4.3 + minimatch: 10.1.1 transitivePeerDependencies: - supports-color - "@eslint/config-helpers@0.4.2": + "@eslint/config-helpers@0.5.2": dependencies: - "@eslint/core": 0.17.0 + "@eslint/core": 1.1.0 - "@eslint/core@0.17.0": + "@eslint/core@1.1.0": dependencies: "@types/json-schema": 7.0.15 - "@eslint/eslintrc@3.3.1": + "@eslint/js@10.0.1(eslint@10.0.0(jiti@2.5.1))": + optionalDependencies: + eslint: 10.0.0(jiti@2.5.1) + + "@eslint/object-schema@3.0.1": {} + + "@eslint/plugin-kit@0.6.0": dependencies: - ajv: 6.12.6 - debug: 4.4.1 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - 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.39.2": {} - - "@eslint/object-schema@2.1.7": {} - - "@eslint/plugin-kit@0.4.1": - dependencies: - "@eslint/core": 0.17.0 + "@eslint/core": 1.1.0 levn: 0.4.1 "@fastify/busboy@2.1.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": {} @@ -11005,16 +11029,18 @@ snapshots: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.5 - "@keyv/bigmap@1.3.0(keyv@5.5.5)": + "@keyv/bigmap@1.3.0(keyv@5.6.0)": dependencies: hashery: 1.3.0 - hookified: 1.14.0 - keyv: 5.5.5 + hookified: 1.15.1 + keyv: 5.6.0 "@keyv/serialize@1.1.1": {} "@lezer/common@1.2.3": {} + "@lezer/common@1.5.1": {} + "@lezer/highlight@1.2.1": dependencies: "@lezer/common": 1.2.3 @@ -11241,25 +11267,25 @@ snapshots: "@sec-ant/readable-stream@0.4.1": {} - "@semantic-release/changelog@6.0.3(semantic-release@25.0.2(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.1 lodash: 4.17.21 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) - "@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.2(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-writer: 8.2.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.0 - debug: 4.4.1 + debug: 4.4.3 import-from-esm: 2.0.0 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -11267,7 +11293,7 @@ snapshots: "@semantic-release/error@4.0.0": {} - "@semantic-release/exec@7.1.0(semantic-release@25.0.2(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 @@ -11275,11 +11301,11 @@ snapshots: execa: 9.6.0 lodash-es: 4.17.21 parse-json: 8.3.0 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color - "@semantic-release/git@10.0.1(semantic-release@25.0.2(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 @@ -11289,11 +11315,11 @@ snapshots: lodash: 4.17.21 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color - "@semantic-release/github@12.0.2(semantic-release@25.0.2(typescript@5.9.3))": + "@semantic-release/github@12.0.2(semantic-release@25.0.3(typescript@5.9.3))": dependencies: "@octokit/core": 7.0.3 "@octokit/plugin-paginate-rest": 14.0.0(@octokit/core@7.0.3) @@ -11301,7 +11327,7 @@ snapshots: "@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.1 + debug: 4.4.3 dir-glob: 3.0.1 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -11309,18 +11335,18 @@ snapshots: lodash-es: 4.17.21 mime: 4.0.7 p-filter: 4.1.0 - semantic-release: 25.0.2(typescript@5.9.3) - tinyglobby: 0.2.14 + semantic-release: 25.0.3(typescript@5.9.3) + tinyglobby: 0.2.15 undici: 7.16.0 url-join: 5.0.0 transitivePeerDependencies: - supports-color - "@semantic-release/gitlab@13.2.9(semantic-release@25.0.2(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 - debug: 4.4.1 + debug: 4.4.3 dir-glob: 3.0.1 escape-string-regexp: 5.0.0 formdata-node: 6.0.3 @@ -11330,12 +11356,12 @@ snapshots: hpagent: 1.2.0 lodash-es: 4.17.21 parse-url: 10.0.3 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) url-join: 4.0.1 transitivePeerDependencies: - supports-color - "@semantic-release/npm@13.1.3(semantic-release@25.0.2(typescript@5.9.3))": + "@semantic-release/npm@13.1.3(semantic-release@25.0.3(typescript@5.9.3))": dependencies: "@actions/core": 2.0.1 "@semantic-release/error": 4.0.0 @@ -11350,23 +11376,23 @@ snapshots: rc: 1.2.8 read-pkg: 10.0.0 registry-auth-token: 5.1.0 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) semver: 7.7.2 tempy: 3.1.0 - "@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.2(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-writer: 8.2.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.0 - debug: 4.4.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 read-package-up: 11.0.0 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -11409,6 +11435,9 @@ snapshots: "@types/conventional-commits-parser@5.0.1": dependencies: "@types/node": 24.3.0 + optional: true + + "@types/esrecurse@4.3.1": {} "@types/estree@0.0.39": {} @@ -11436,95 +11465,95 @@ snapshots: "@types/trusted-types@2.0.7": {} - "@typescript-eslint/eslint-plugin@8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)": + "@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": dependencies: - "@eslint-community/regexpp": 4.12.1 - "@typescript-eslint/parser": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/scope-manager": 8.50.0 - "@typescript-eslint/type-utils": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/utils": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.50.0 - eslint: 9.39.2(jiti@2.5.1) + "@eslint-community/regexpp": 4.12.2 + "@typescript-eslint/parser": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/scope-manager": 8.55.0 + "@typescript-eslint/type-utils": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/utils": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.55.0 + eslint: 10.0.0(jiti@2.5.1) 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.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)": + "@typescript-eslint/parser@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": dependencies: - "@typescript-eslint/scope-manager": 8.50.0 - "@typescript-eslint/types": 8.50.0 - "@typescript-eslint/typescript-estree": 8.50.0(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.50.0 - debug: 4.4.1 - eslint: 9.39.2(jiti@2.5.1) + "@typescript-eslint/scope-manager": 8.55.0 + "@typescript-eslint/types": 8.55.0 + "@typescript-eslint/typescript-estree": 8.55.0(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.55.0 + debug: 4.4.3 + eslint: 10.0.0(jiti@2.5.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/project-service@8.50.0(typescript@5.9.3)": + "@typescript-eslint/project-service@8.55.0(typescript@5.9.3)": dependencies: - "@typescript-eslint/tsconfig-utils": 8.50.0(typescript@5.9.3) - "@typescript-eslint/types": 8.50.0 - debug: 4.4.1 + "@typescript-eslint/tsconfig-utils": 8.55.0(typescript@5.9.3) + "@typescript-eslint/types": 8.55.0 + debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.50.0": + "@typescript-eslint/scope-manager@8.55.0": dependencies: - "@typescript-eslint/types": 8.50.0 - "@typescript-eslint/visitor-keys": 8.50.0 + "@typescript-eslint/types": 8.55.0 + "@typescript-eslint/visitor-keys": 8.55.0 - "@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)": + "@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)": dependencies: typescript: 5.9.3 - "@typescript-eslint/type-utils@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)": + "@typescript-eslint/type-utils@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": dependencies: - "@typescript-eslint/types": 8.50.0 - "@typescript-eslint/typescript-estree": 8.50.0(typescript@5.9.3) - "@typescript-eslint/utils": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - debug: 4.4.1 - eslint: 9.39.2(jiti@2.5.1) - ts-api-utils: 2.1.0(typescript@5.9.3) + "@typescript-eslint/types": 8.55.0 + "@typescript-eslint/typescript-estree": 8.55.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + debug: 4.4.3 + eslint: 10.0.0(jiti@2.5.1) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.50.0": {} + "@typescript-eslint/types@8.55.0": {} - "@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)": + "@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)": dependencies: - "@typescript-eslint/project-service": 8.50.0(typescript@5.9.3) - "@typescript-eslint/tsconfig-utils": 8.50.0(typescript@5.9.3) - "@typescript-eslint/types": 8.50.0 - "@typescript-eslint/visitor-keys": 8.50.0 - debug: 4.4.1 + "@typescript-eslint/project-service": 8.55.0(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.55.0(typescript@5.9.3) + "@typescript-eslint/types": 8.55.0 + "@typescript-eslint/visitor-keys": 8.55.0 + debug: 4.4.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.4 tinyglobby: 0.2.15 - 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/utils@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)": + "@typescript-eslint/utils@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": dependencies: - "@eslint-community/eslint-utils": 4.7.0(eslint@9.39.2(jiti@2.5.1)) - "@typescript-eslint/scope-manager": 8.50.0 - "@typescript-eslint/types": 8.50.0 - "@typescript-eslint/typescript-estree": 8.50.0(typescript@5.9.3) - eslint: 9.39.2(jiti@2.5.1) + "@eslint-community/eslint-utils": 4.9.1(eslint@10.0.0(jiti@2.5.1)) + "@typescript-eslint/scope-manager": 8.55.0 + "@typescript-eslint/types": 8.55.0 + "@typescript-eslint/typescript-estree": 8.55.0(typescript@5.9.3) + eslint: 10.0.0(jiti@2.5.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.50.0": + "@typescript-eslint/visitor-keys@8.55.0": dependencies: - "@typescript-eslint/types": 8.50.0 + "@typescript-eslint/types": 8.55.0 eslint-visitor-keys: 4.2.1 "@vime/core@5.4.1": @@ -11535,11 +11564,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 @@ -11631,8 +11655,6 @@ 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 @@ -11690,7 +11712,7 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@2.0.0: {} + balanced-match@3.0.1: {} base64-js@1.3.1: {} @@ -11763,13 +11785,13 @@ snapshots: normalize-url: 8.0.2 responselike: 3.0.0 - cacheable@2.3.1: + cacheable@2.3.2: dependencies: - "@cacheable/memory": 2.0.6 - "@cacheable/utils": 2.3.2 - hookified: 1.14.0 - keyv: 5.5.5 - qified: 0.5.3 + "@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: {} @@ -11909,12 +11931,12 @@ snapshots: codemirror@6.0.2: dependencies: "@codemirror/autocomplete": 6.18.6 - "@codemirror/commands": 6.10.1 - "@codemirror/language": 6.11.3 + "@codemirror/commands": 6.10.2 + "@codemirror/language": 6.12.1 "@codemirror/lint": 6.8.5 "@codemirror/search": 6.5.11 - "@codemirror/state": 6.5.2 - "@codemirror/view": 6.39.4 + "@codemirror/state": 6.5.4 + "@codemirror/view": 6.39.14 color-convert@1.9.3: dependencies: @@ -11976,15 +11998,15 @@ 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 + + conventional-changelog-conventionalcommits@9.1.0: dependencies: compare-func: 2.0.0 @@ -11999,17 +12021,14 @@ snapshots: 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: dependencies: meow: 13.2.0 + conventional-commits-parser@6.2.1: + dependencies: + meow: 13.2.0 + convert-hrtime@5.0.0: {} convert-source-map@2.0.0: {} @@ -12059,10 +12078,10 @@ 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.2.0(postcss@8.5.6): dependencies: @@ -12070,14 +12089,14 @@ snapshots: css-functions-list@3.2.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 @@ -12101,7 +12120,7 @@ snapshots: css-what@6.2.2: {} - cssdb@8.5.2: {} + cssdb@8.7.1: {} cssesc@3.0.0: {} @@ -12347,11 +12366,6 @@ snapshots: entities@4.5.0: {} - env-ci@11.1.1: - dependencies: - execa: 8.0.1 - java-properties: 1.0.2 - env-ci@11.2.0: dependencies: execa: 8.0.1 @@ -12480,21 +12494,23 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.5.1)): + eslint-config-prettier@10.1.8(eslint@10.0.0(jiti@2.5.1)): dependencies: - eslint: 9.39.2(jiti@2.5.1) + eslint: 10.0.0(jiti@2.5.1) - eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.5.1)))(eslint@9.39.2(jiti@2.5.1))(prettier@3.7.4): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0(jiti@2.5.1)))(eslint@10.0.0(jiti@2.5.1))(prettier@3.8.1): dependencies: - eslint: 9.39.2(jiti@2.5.1) - prettier: 3.7.4 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.11 + eslint: 10.0.0(jiti@2.5.1) + prettier: 3.8.1 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.5.1)) + eslint-config-prettier: 10.1.8(eslint@10.0.0(jiti@2.5.1)) - 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 @@ -12502,29 +12518,28 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.2(jiti@2.5.1): + eslint-visitor-keys@5.0.0: {} + + eslint@10.0.0(jiti@2.5.1): dependencies: - "@eslint-community/eslint-utils": 4.9.0(eslint@9.39.2(jiti@2.5.1)) - "@eslint-community/regexpp": 4.12.1 - "@eslint/config-array": 0.21.1 - "@eslint/config-helpers": 0.4.2 - "@eslint/core": 0.17.0 - "@eslint/eslintrc": 3.3.1 - "@eslint/js": 9.39.2 - "@eslint/plugin-kit": 0.4.1 + "@eslint-community/eslint-utils": 4.9.0(eslint@10.0.0(jiti@2.5.1)) + "@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.6 "@humanwhocodes/module-importer": 1.0.1 "@humanwhocodes/retry": 0.4.3 "@types/estree": 1.0.8 ajv: 6.12.6 - chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + 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 @@ -12534,8 +12549,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.1.1 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -12543,13 +12557,13 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.4.0: + espree@11.1.0: dependencies: acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 + eslint-visitor-keys: 5.0.0 - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -12658,9 +12672,9 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-entry-cache@11.1.1: + file-entry-cache@11.1.2: dependencies: - flat-cache: 6.1.19 + flat-cache: 6.1.20 file-entry-cache@8.0.0: dependencies: @@ -12697,12 +12711,6 @@ 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 @@ -12720,11 +12728,11 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 - flat-cache@6.1.19: + flat-cache@6.1.20: dependencies: - cacheable: 2.3.1 + cacheable: 2.3.2 flatted: 3.3.3 - hookified: 1.14.0 + hookified: 1.15.1 flatpickr@4.6.13: {} @@ -12908,24 +12916,13 @@ snapshots: kind-of: 6.0.3 which: 1.3.1 - globals@14.0.0: {} - - globals@16.5.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 @@ -12935,6 +12932,15 @@ 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: {} @@ -12972,6 +12978,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 @@ -12988,7 +12996,7 @@ snapshots: hashery@1.3.0: dependencies: - hookified: 1.14.0 + hookified: 1.15.1 hasown@2.0.2: dependencies: @@ -13002,7 +13010,7 @@ snapshots: hook-std@4.0.0: {} - hookified@1.14.0: {} + hookified@1.15.1: {} hosted-git-info@7.0.2: dependencies: @@ -13014,14 +13022,14 @@ snapshots: hpagent@1.2.0: {} - html-tags@3.3.1: {} + html-tags@5.1.0: {} http-cache-semantics@4.2.0: {} http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -13033,7 +13041,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -13068,13 +13076,15 @@ snapshots: import-from-esm@2.0.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 import-meta-resolve: 4.1.0 transitivePeerDependencies: - supports-color import-meta-resolve@4.1.0: {} + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -13238,6 +13248,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: {} @@ -13274,10 +13286,6 @@ 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 @@ -13377,15 +13385,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.5: + keyv@5.6.0: dependencies: "@keyv/serialize": 1.1.1 @@ -13439,7 +13445,7 @@ snapshots: 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 @@ -13465,10 +13471,6 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - lodash-es@4.17.21: {} lodash.camelcase@4.3.0: {} @@ -13489,7 +13491,8 @@ snapshots: lodash.memoize@4.1.2: {} - lodash.merge@4.6.2: {} + lodash.merge@4.6.2: + optional: true lodash.mergewith@4.6.2: {} @@ -13551,11 +13554,11 @@ snapshots: marked@15.0.12: {} - marked@17.0.1: {} + 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: {} @@ -13565,6 +13568,8 @@ snapshots: meow@13.2.0: {} + meow@14.0.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -13773,10 +13778,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 @@ -13789,10 +13790,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - p-map@7.0.3: {} p-reduce@2.1.0: {} @@ -13853,8 +13850,6 @@ snapshots: path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -13917,10 +13912,10 @@ 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: @@ -13933,24 +13928,24 @@ 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 @@ -13968,35 +13963,35 @@ snapshots: 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.5(postcss@8.5.6): dependencies: @@ -14015,34 +14010,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 @@ -14065,13 +14060,13 @@ snapshots: 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@4.0.2(postcss@8.5.6): @@ -14081,7 +14076,7 @@ snapshots: optionalDependencies: postcss: 8.5.6 - 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 @@ -14135,12 +14130,12 @@ snapshots: 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: @@ -14197,7 +14192,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 @@ -14206,88 +14201,91 @@ 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.5.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-position-area-property": 1.0.0(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-system-ui-font-family": 1.0.0(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) + "@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.23(postcss@8.5.6) browserslist: 4.28.1 - 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.5.2 + 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.5(postcss@8.5.6): dependencies: @@ -14310,16 +14308,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: @@ -14336,6 +14332,11 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-svgo@7.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -14357,19 +14358,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.7.4)(typescript@5.9.3): + prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3): dependencies: - prettier: 3.7.4 + prettier: 3.8.1 typescript: 5.9.3 prettier@2.8.8: optional: true - prettier@3.7.4: {} + prettier@3.8.1: {} pretty-bytes@5.6.0: {} @@ -14387,9 +14388,9 @@ snapshots: punycode@2.3.1: {} - qified@0.5.3: + qified@0.6.0: dependencies: - hookified: 1.14.0 + hookified: 1.15.1 queue-microtask@1.2.3: {} @@ -14623,17 +14624,17 @@ snapshots: sax@1.4.1: {} - semantic-release@25.0.2(typescript@5.9.3): + semantic-release@25.0.3(typescript@5.9.3): dependencies: - "@semantic-release/commit-analyzer": 13.0.1(semantic-release@25.0.2(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": 12.0.2(semantic-release@25.0.2(typescript@5.9.3)) - "@semantic-release/npm": 13.1.3(semantic-release@25.0.2(typescript@5.9.3)) - "@semantic-release/release-notes-generator": 14.1.0(semantic-release@25.0.2(typescript@5.9.3)) + "@semantic-release/github": 12.0.2(semantic-release@25.0.3(typescript@5.9.3)) + "@semantic-release/npm": 13.1.3(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.1 - env-ci: 11.1.1 + debug: 4.4.3 + env-ci: 11.2.0 execa: 9.6.0 figures: 6.1.0 find-versions: 6.0.0 @@ -14651,23 +14652,20 @@ snapshots: read-package-up: 12.0.0 resolve-from: 5.0.0 semver: 7.7.2 - semver-diff: 5.0.0 signale: 1.4.0 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: randombytes: 2.1.0 @@ -14744,8 +14742,6 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 - slash@3.0.0: {} - slash@5.1.0: {} slice-ansi@4.0.0: @@ -14837,6 +14833,11 @@ snapshots: get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 + string-width@8.1.1: + dependencies: + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 @@ -14920,26 +14921,27 @@ snapshots: dependencies: 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.26.1(typescript@5.9.3)): + stylelint-config-recommended@18.0.0(stylelint@17.3.0(typescript@5.9.3)): dependencies: - stylelint: 16.26.1(typescript@5.9.3) + stylelint: 17.3.0(typescript@5.9.3) - stylelint-config-standard@39.0.1(stylelint@16.26.1(typescript@5.9.3)): + stylelint-config-standard@40.0.0(stylelint@17.3.0(typescript@5.9.3)): dependencies: - stylelint: 16.26.1(typescript@5.9.3) - stylelint-config-recommended: 17.0.0(stylelint@16.26.1(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.26.1(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-syntax-patches-for-csstree": 1.0.21 - "@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.26 + "@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 @@ -14947,31 +14949,30 @@ snapshots: debug: 4.4.3 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 11.1.1 + 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 @@ -14991,6 +14992,8 @@ snapshots: function-timeout: 1.0.2 time-span: 5.1.0 + supports-color@10.2.2: {} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -15004,6 +15007,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: {} @@ -15018,7 +15026,7 @@ snapshots: picocolors: 1.1.1 sax: 1.4.1 - synckit@0.11.11: + synckit@0.11.12: dependencies: "@pkgr/core": 0.2.9 @@ -15084,8 +15092,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - text-extensions@2.4.0: {} - thenby@1.3.4: {} thenify-all@1.6.0: @@ -15139,7 +15145,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 @@ -15202,13 +15208,13 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3): + typescript-eslint@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3): dependencies: - "@typescript-eslint/eslint-plugin": 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/parser": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/typescript-estree": 8.50.0(typescript@5.9.3) - "@typescript-eslint/utils": 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - eslint: 9.39.2(jiti@2.5.1) + "@typescript-eslint/eslint-plugin": 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/parser": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/typescript-estree": 8.55.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + eslint: 10.0.0(jiti@2.5.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -15260,6 +15266,8 @@ snapshots: unicorn-magic@0.3.0: {} + unicorn-magic@0.4.0: {} + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -15301,18 +15309,18 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-pwa@1.2.0(vite@7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.4.0)(workbox-window@7.4.0): + vite-plugin-pwa@1.2.0(vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.4.0)(workbox-window@7.4.0): dependencies: debug: 4.4.1 pretty-bytes: 6.1.1 tinyglobby: 0.2.14 - vite: 7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) workbox-build: 7.4.0 workbox-window: 7.4.0 transitivePeerDependencies: - supports-color - vite@7.3.0(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1): + vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -15544,7 +15552,7 @@ 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 @@ -15625,6 +15633,4 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.2.1: {} - yoctocolors@2.1.2: {} diff --git a/scripts/bundle.sh b/scripts/bundle.sh index 8e1d2ece..b1c06473 100644 --- a/scripts/bundle.sh +++ b/scripts/bundle.sh @@ -10,9 +10,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 49e363140abe2bebbcdfc2db26f5109f78cc4717 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 16 Feb 2026 00:19:00 +0000 Subject: [PATCH 182/210] chore(release): 1.15.0 ## [1.15.0](https://code.castopod.org/adaures/castopod/compare/v1.14.1...v1.15.0) (2026-02-16) ### Features * **docker:** replace all-in-one image with FrankenPHP and Caddy based image + discard other images ([14089f0](https://code.castopod.org/adaures/castopod/commit/14089f0542ccdf187bd64bea8ad2787b9e8c7d59)) --- CHANGELOG.md | 8 ++++++++ app/Config/Constants.php | 2 +- composer.json | 2 +- package.json | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28a3cf79..60c96846 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## [1.15.0](https://code.castopod.org/adaures/castopod/compare/v1.14.1...v1.15.0) (2026-02-16) + +### Features + +- **docker:** replace all-in-one image with FrankenPHP and Caddy based image + + discard other images + ([14089f0](https://code.castopod.org/adaures/castopod/commit/14089f0542ccdf187bd64bea8ad2787b9e8c7d59)) + ## 1.14.1 (2026-01-31) - fix(i18n): set english as first item in supported locales in case locale diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 8cd717b8..83aa3d42 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.14.1'); +defined('CP_VERSION') || define('CP_VERSION', '1.15.0'); /* | -------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 617b3625..6c179323 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.14.1", + "version": "1.15.0", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", diff --git a/package.json b/package.json index 36d8728f..8f3d4100 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "castopod", - "version": "1.14.1", + "version": "1.15.0", "description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "private": true, "license": "AGPL-3.0-or-later", From 89ae2b89fd20fa31851a31fe44f514294fbcd688 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Mon, 16 Feb 2026 13:08:10 +0000 Subject: [PATCH 183/210] 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 e5fb676cb640ef2cd7ba8d5c7f53ec72dac9b989 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sun, 15 Feb 2026 19:32:01 +0100 Subject: [PATCH 184/210] 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 185/210] 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 30db307d707ca92cfff064b705de666ff9f67afa Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Tue, 17 Feb 2026 20:07:58 +0000 Subject: [PATCH 186/210] 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 96d98a0d41ccdfada460dceeecdfd011f2918679 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Tue, 17 Feb 2026 20:56:12 +0000 Subject: [PATCH 187/210] 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 ef7c7a74..65645f89 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. ## Podcast Identity diff --git a/docs/src/content/docs/en/getting-started/docker.mdx b/docs/src/content/docs/en/getting-started/docker.mdx index 7ed5f0ba..0a8e0dfa 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: @@ -15,10 +17,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 @@ -29,7 +41,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 f01de13637a89b525e678bf45bc1bb36646427a2 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Tue, 17 Feb 2026 20:07:58 +0000 Subject: [PATCH 188/210] 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 189/210] 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 835bbf99606801fb45d7fc1bd054749b1a201871 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 17 Feb 2026 21:06:44 +0000 Subject: [PATCH 190/210] chore(release): 1.15.1 ## [1.15.1](https://code.castopod.org/adaures/castopod/compare/v1.15.0...v1.15.1) (2026-02-17) ### Bug Fixes * **docker:** create optimized builder with docker-container driver for arm64 builds ([89ae2b8](https://code.castopod.org/adaures/castopod/commit/89ae2b89fd20fa31851a31fe44f514294fbcd688)), closes [#580](https://code.castopod.org/adaures/castopod/issues/580) --- CHANGELOG.md | 9 +++++++++ app/Config/Constants.php | 2 +- composer.json | 2 +- package.json | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60c96846..27513aa9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [1.15.1](https://code.castopod.org/adaures/castopod/compare/v1.15.0...v1.15.1) (2026-02-17) + +### Bug Fixes + +- **docker:** create optimized builder with docker-container driver for arm64 + builds + ([89ae2b8](https://code.castopod.org/adaures/castopod/commit/89ae2b89fd20fa31851a31fe44f514294fbcd688)), + closes [#580](https://code.castopod.org/adaures/castopod/issues/580) + ## [1.15.0](https://code.castopod.org/adaures/castopod/compare/v1.14.1...v1.15.0) (2026-02-16) ### Features diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 83aa3d42..bdf9346f 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.15.0'); +defined('CP_VERSION') || define('CP_VERSION', '1.15.1'); /* | -------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 6c179323..51b2cac3 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.15.0", + "version": "1.15.1", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", diff --git a/package.json b/package.json index 8f3d4100..2ec7772e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "castopod", - "version": "1.15.0", + "version": "1.15.1", "description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "private": true, "license": "AGPL-3.0-or-later", From a5853628273e4dd7897a5e19b66cb03726b567d0 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Tue, 17 Feb 2026 21:09:55 +0000 Subject: [PATCH 191/210] 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).