diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index b4c12b9b..d57bbdd0 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -4,7 +4,7 @@ # ⚠️ NOT optimized for production # should be used only for development purposes #--------------------------------------------------- -FROM php:8.3-fpm +FROM php:8.4-fpm LABEL maintainer="Yassine Doghri " @@ -47,11 +47,4 @@ RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && docker-php-ext-enable redis \ # mysqli for database access && docker-php-ext-install mysqli \ - && docker-php-ext-enable mysqli \ - # configure php - && echo "file_uploads = On\n" \ - "memory_limit = 512M\n" \ - "upload_max_filesize = 500M\n" \ - "post_max_size = 512M\n" \ - "max_execution_time = 300\n" \ - > /usr/local/etc/php/conf.d/uploads.ini + && docker-php-ext-enable mysqli diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 5aa15231..c6da47b1 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -9,6 +9,7 @@ services: - 8080:8080 volumes: - ../..:/workspaces:cached + - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini environment: CI_ENVIRONMENT: development vite_environment: development diff --git a/.devcontainer/uploads.ini b/.devcontainer/uploads.ini new file mode 100644 index 00000000..23b3c1cd --- /dev/null +++ b/.devcontainer/uploads.ini @@ -0,0 +1,5 @@ +file_uploads = On +memory_limit = 512M +upload_max_filesize = 500M +post_max_size = 512M +max_execution_time = 300 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e00055b2..4710c659 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -70,7 +70,7 @@ lint-php: lint-js: stage: quality script: - - pnpm run prettier + - pnpm run format - pnpm run typecheck - pnpm run lint - pnpm run lint:css diff --git a/.rsync-filter b/.rsync-filter index 877e5cb9..1dbdb0c8 100644 --- a/.rsync-filter +++ b/.rsync-filter @@ -1,7 +1,7 @@ # rsync filter rules to copy required files for Castopod's bundle -+ app/Resources/icons/*** -- app/Resources/** ++ resources/icons/*** +- resources/** + app/*** + modules/*** + plugins/*** diff --git a/.stylelintrc.json b/.stylelintrc.json index b9a5630c..8ea025c1 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -10,10 +10,17 @@ "responsive", "variants", "screen", - "layer" + "layer", + "config" ] } ], + "at-rule-no-deprecated": [ + true, + { + "ignoreAtRules": ["apply"] + } + ], "function-no-unknown": [ true, { diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index 5bbc582f..23b183e0 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -58,7 +58,6 @@ class Autoload extends AutoloadConfig 'Themes' => ROOTPATH . 'themes', 'ViewComponents' => APPPATH . 'Libraries/ViewComponents/', 'ViewThemes' => APPPATH . 'Libraries/ViewThemes/', - 'Vite' => APPPATH . 'Libraries/Vite/', ]; /** diff --git a/app/Config/Cache.php b/app/Config/Cache.php index 20bd2f27..e7517039 100644 --- a/app/Config/Cache.php +++ b/app/Config/Cache.php @@ -36,18 +36,6 @@ class Cache extends BaseConfig */ public string $backupHandler = 'dummy'; - /** - * -------------------------------------------------------------------------- - * Cache Directory Path - * -------------------------------------------------------------------------- - * - * The path to where cache files should be stored, if using a file-based - * system. - * - * @deprecated Use the driver-specific variant under $file - */ - public string $storePath = WRITEPATH . 'cache/'; - /** * -------------------------------------------------------------------------- * Key Prefix @@ -88,6 +76,7 @@ class Cache extends BaseConfig * -------------------------------------------------------------------------- * File settings * -------------------------------------------------------------------------- + * * Your file storage preferences can be specified below, if you are using * the File driver. * @@ -102,6 +91,7 @@ class Cache extends BaseConfig * ------------------------------------------------------------------------- * Memcached settings * ------------------------------------------------------------------------- + * * Your Memcached servers can be specified below, if you are using * the Memcached drivers. * diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 1d8bee87..e23c0e0d 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -104,18 +104,3 @@ defined('EXIT_USER_INPUT') || define('EXIT_USER_INPUT', 7); // invalid user inpu defined('EXIT_DATABASE') || define('EXIT_DATABASE', 8); // database error defined('EXIT__AUTO_MIN') || define('EXIT__AUTO_MIN', 9); // lowest automatically-assigned error code defined('EXIT__AUTO_MAX') || define('EXIT__AUTO_MAX', 125); // highest automatically-assigned error code - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_LOW instead. - */ -define('EVENT_PRIORITY_LOW', 200); - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_NORMAL instead. - */ -define('EVENT_PRIORITY_NORMAL', 100); - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_HIGH instead. - */ -define('EVENT_PRIORITY_HIGH', 10); diff --git a/app/Config/Database.php b/app/Config/Database.php index fce9d053..645d5ce3 100644 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -45,6 +45,7 @@ class Database extends Config 'failover' => [], 'port' => 3306, 'numberNative' => false, + 'foundRows' => false, 'dateFormat' => [ 'date' => 'Y-m-d', 'datetime' => 'Y-m-d H:i:s', diff --git a/app/Config/Feature.php b/app/Config/Feature.php index 1e257ac4..76787f2d 100644 --- a/app/Config/Feature.php +++ b/app/Config/Feature.php @@ -12,9 +12,9 @@ use CodeIgniter\Config\BaseConfig; class Feature extends BaseConfig { /** - * Use improved new auto routing instead of the default legacy version. + * Use improved new auto routing instead of the legacy version. */ - public bool $autoRoutesImproved = false; + public bool $autoRoutesImproved = true; /** * Use filter execution order in 4.4 or before. @@ -28,4 +28,12 @@ class Feature extends BaseConfig * If false, `limit(0)` returns no records. (the behavior of 3.1.9 or later in version 3.x.) */ public bool $limitZeroAsAll = true; + + /** + * Use strict location negotiation. + * + * By default, the locale is selected based on a loose comparison of the language code (ISO 639-1) + * Enabling strict comparison will also consider the region code (ISO 3166-1 alpha-2). + */ + public bool $strictLocaleNegotiation = false; } diff --git a/app/Config/Fediverse.php b/app/Config/Fediverse.php index b622d2a3..ddcb5f24 100644 --- a/app/Config/Fediverse.php +++ b/app/Config/Fediverse.php @@ -42,7 +42,7 @@ class Fediverse extends FediverseBaseConfig } ['dirname' => $dirname, 'extension' => $extension, 'filename' => $filename] = pathinfo( - $defaultBanner['path'] + $defaultBanner['path'], ); $defaultBannerPath = $filename; if ($dirname !== '.') { diff --git a/app/Config/Format.php b/app/Config/Format.php index 86b7e2dd..355d341f 100644 --- a/app/Config/Format.php +++ b/app/Config/Format.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace Config; use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Format\FormatterInterface; use CodeIgniter\Format\JSONFormatter; use CodeIgniter\Format\XMLFormatter; @@ -64,16 +63,4 @@ class Format extends BaseConfig 'application/xml' => 0, 'text/xml' => 0, ]; - - //-------------------------------------------------------------------- - - /** - * A Factory method to return the appropriate formatter for the given mime type. - * - * @deprecated This is an alias of `\CodeIgniter\Format\Format::getFormatter`. Use that instead. - */ - public function getFormatter(string $mime): FormatterInterface - { - return service('format')->getFormatter($mime); - } } diff --git a/app/Config/Images.php b/app/Config/Images.php index 7d3ca529..6e872a0b 100644 --- a/app/Config/Images.php +++ b/app/Config/Images.php @@ -130,7 +130,7 @@ class Images extends BaseConfig ], ]; - public string $avatarDefaultPath = 'castopod-avatar.jpg'; + public string $avatarDefaultPath = 'assets/images/castopod-avatar.jpg'; public string $avatarDefaultMimeType = 'image/jpg'; @@ -139,31 +139,31 @@ class Images extends BaseConfig */ public array $podcastBannerDefaultPaths = [ 'default' => [ - 'path' => 'castopod-banner-pine.jpg', + 'path' => 'assets/images/castopod-banner-pine.jpg', 'mimetype' => 'image/jpeg', ], 'pine' => [ - 'path' => 'castopod-banner-pine.jpg', + 'path' => 'assets/images/castopod-banner-pine.jpg', 'mimetype' => 'image/jpeg', ], 'crimson' => [ - 'path' => 'castopod-banner-crimson.jpg', + 'path' => 'assets/images/castopod-banner-crimson.jpg', 'mimetype' => 'image/jpeg', ], 'amber' => [ - 'path' => 'castopod-banner-amber.jpg', + 'path' => 'assets/images/castopod-banner-amber.jpg', 'mimetype' => 'image/jpeg', ], 'lake' => [ - 'path' => 'castopod-banner-lake.jpg', + 'path' => 'assets/images/castopod-banner-lake.jpg', 'mimetype' => 'image/jpeg', ], 'jacaranda' => [ - 'path' => 'castopod-banner-jacaranda.jpg', + 'path' => 'assets/images/castopod-banner-jacaranda.jpg', 'mimetype' => 'image/jpeg', ], 'onyx' => [ - 'path' => 'castopod-banner-onyx.jpg', + 'path' => 'assets/images/castopod-banner-onyx.jpg', 'mimetype' => 'image/jpeg', ], ]; diff --git a/app/Config/Kint.php b/app/Config/Kint.php index 3cc2f70f..813a68a0 100644 --- a/app/Config/Kint.php +++ b/app/Config/Kint.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace Config; use Kint\Parser\ConstructablePluginInterface; -use Kint\Renderer\AbstractRenderer; use Kint\Renderer\Rich\TabPluginInterface; use Kint\Renderer\Rich\ValuePluginInterface; @@ -47,8 +46,6 @@ class Kint public bool $richFolder = false; - public int $richSort = AbstractRenderer::SORT_FULL; - /** * @var array>|null */ diff --git a/app/Config/Mimes.php b/app/Config/Mimes.php index 962d4cc1..982b2152 100644 --- a/app/Config/Mimes.php +++ b/app/Config/Mimes.php @@ -308,7 +308,7 @@ class Mimes * @param string|null $proposedExtension - default extension (in case there is more than one with the same mime type) * @return string|null The extension determined, or null if unable to match. */ - public static function guessExtensionFromType(string $type, string $proposedExtension = null): ?string + public static function guessExtensionFromType(string $type, ?string $proposedExtension = null): ?string { $type = trim(strtolower($type), '. '); diff --git a/app/Config/Routes.php b/app/Config/Routes.php index b4888a04..9e8a6cd6 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -266,7 +266,7 @@ $routes->group('@(:podcastHandle)', static function ($routes): void { 'filter' => 'allow-cors', ]); // Actions - $routes->post('action', 'PostController::actionAction/$1/$2', [ + $routes->post('action', 'PostController::action/$1/$2', [ 'as' => 'post-attempt-action', 'filter' => 'permission:podcast$1.interact-as', ]); @@ -292,13 +292,13 @@ $routes->group('@(:podcastHandle)', static function ($routes): void { ]); $routes->get( 'remote/(:postAction)', - 'PostController::remoteAction/$1/$2/$3', + 'PostController::remoteActionAction/$1/$2/$3', [ 'as' => 'post-remote-action', ], ); }); - $routes->get('follow', 'ActorController::follow/$1', [ + $routes->get('follow', 'ActorController::followView/$1', [ 'as' => 'follow', ]); $routes->get('outbox', 'ActorController::outbox/$1', [ diff --git a/app/Config/Routing.php b/app/Config/Routing.php index b7210e8f..1b78b608 100644 --- a/app/Config/Routing.php +++ b/app/Config/Routing.php @@ -138,5 +138,5 @@ class Routing extends BaseRouting * * Default: false */ - public bool $translateUriToCamelCase = false; + public bool $translateUriToCamelCase = true; } diff --git a/app/Config/Security.php b/app/Config/Security.php index 39d915c3..704c6efb 100644 --- a/app/Config/Security.php +++ b/app/Config/Security.php @@ -83,23 +83,4 @@ class Security extends BaseConfig * @see https://codeigniter4.github.io/userguide/libraries/security.html#redirection-on-failure */ public bool $redirect = (ENVIRONMENT === 'production'); - - /** - * -------------------------------------------------------------------------- - * CSRF SameSite - * -------------------------------------------------------------------------- - * - * Setting for CSRF SameSite cookie token. - * - * Allowed values are: None - Lax - Strict - ''. - * - * Defaults to `Lax` as recommended in this link: - * - * @see https://portswigger.net/web-security/csrf/samesite-cookies - * - * @var string - * - * @deprecated `Config\Cookie` $samesite property is used. - */ - public $samesite = 'Lax'; } diff --git a/app/Config/Services.php b/app/Config/Services.php index 52f8233c..39513ce4 100644 --- a/app/Config/Services.php +++ b/app/Config/Services.php @@ -32,7 +32,7 @@ class Services extends BaseService public static function router( ?RouteCollectionInterface $routes = null, ?Request $request = null, - bool $getShared = true + bool $getShared = true, ): Router { if ($getShared) { return static::getSharedInstance('router', $routes, $request); diff --git a/app/Config/Vite.php b/app/Config/Vite.php new file mode 100644 index 00000000..1f85453e --- /dev/null +++ b/app/Config/Vite.php @@ -0,0 +1,42 @@ +gateway; + $installGateway = config('Install') + ->gateway; + + $this->routesAssets = [ + [ + 'routes' => ['*'], + 'exclude' => [$adminGateway . '*', $installGateway . '*'], + 'assets' => ['styles/site.css', 'js/app.ts', 'js/podcast.ts', 'js/audio-player.ts'], + ], + [ + 'routes' => ['/map'], + 'assets' => ['js/map.ts'], + ], + [ + 'routes' => ['/' . $adminGateway . '*'], + 'assets' => ['styles/admin.css', 'js/admin.ts', 'js/admin-audio-player.ts'], + ], + [ + 'routes' => [$installGateway . '*'], + 'assets' => ['styles/install.css'], + ], + ]; + } +} diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index 2d589a1f..73ce4155 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -38,7 +38,7 @@ abstract class BaseController extends Controller public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { $this->helpers = [...$this->helpers, 'svg', 'components', 'misc', 'seo', 'premium_podcasts']; diff --git a/app/Controllers/EpisodeAudioController.php b/app/Controllers/EpisodeAudioController.php index e0aa40ee..f51d6fa8 100644 --- a/app/Controllers/EpisodeAudioController.php +++ b/app/Controllers/EpisodeAudioController.php @@ -46,7 +46,7 @@ class EpisodeAudioController extends Controller public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { // Do Not Edit This Line parent::initController($request, $response, $logger); @@ -93,7 +93,7 @@ class EpisodeAudioController extends Controller // check if podcast is already unlocked before any token validation if ($this->episode->is_premium && ! ($subscription = service('premium_podcasts')->subscription( - $this->episode->podcast->handle + $this->episode->podcast->handle, )) instanceof Subscription) { // look for token as GET parameter if (($token = $this->request->getGet('token')) === null) { @@ -110,7 +110,7 @@ class EpisodeAudioController extends Controller // check if there's a valid subscription for the provided token if (! ($subscription = (new SubscriptionModel())->validateSubscription( $this->episode->podcast->handle, - $token + $token, )) instanceof Subscription) { return $this->response->setStatusCode(401, 'Invalid token!') ->setJSON([ @@ -154,7 +154,7 @@ class EpisodeAudioController extends Controller $audioDuration, $this->episode->published_at->getTimestamp(), $serviceName, - $subscription instanceof Subscription ? $subscription->id : null + $subscription instanceof Subscription ? $subscription->id : null, ); $audioFileURI = new URI(service('file_manager')->getUrl($this->episode->audio->file_key)); diff --git a/app/Controllers/EpisodeController.php b/app/Controllers/EpisodeController.php index e1194174..459186e4 100644 --- a/app/Controllers/EpisodeController.php +++ b/app/Controllers/EpisodeController.php @@ -243,7 +243,7 @@ class EpisodeController extends BaseController /** @var FileManagerInterface $fileManager */ $fileManager = service('file_manager'); $transcriptJsonString = (string) $fileManager->getFileContents( - $this->episode->transcript->json_key + $this->episode->transcript->json_key, ); $data['captions'] = json_decode($transcriptJsonString, true); @@ -365,7 +365,7 @@ class EpisodeController extends BaseController '', ), ); diff --git a/app/Controllers/EpisodePreviewController.php b/app/Controllers/EpisodePreviewController.php index 2640a538..4e2f7b78 100644 --- a/app/Controllers/EpisodePreviewController.php +++ b/app/Controllers/EpisodePreviewController.php @@ -99,7 +99,7 @@ class EpisodePreviewController extends BaseController /** @var FileManagerInterface $fileManager */ $fileManager = service('file_manager'); $transcriptJsonString = (string) $fileManager->getFileContents( - $this->episode->transcript->json_key + $this->episode->transcript->json_key, ); $data['captions'] = json_decode($transcriptJsonString, true); diff --git a/app/Controllers/FeedController.php b/app/Controllers/FeedController.php index 11b54ddd..371be8a2 100644 --- a/app/Controllers/FeedController.php +++ b/app/Controllers/FeedController.php @@ -45,7 +45,7 @@ class FeedController extends Controller if ($redirectToNewFeed && $podcast->new_feed_url !== null && filter_var( $podcast->new_feed_url, - FILTER_VALIDATE_URL + FILTER_VALIDATE_URL, ) && $podcast->new_feed_url !== current_url()) { return redirect()->to($podcast->new_feed_url, 301); } diff --git a/app/Controllers/HomeController.php b/app/Controllers/HomeController.php index a148ec6c..caba1988 100644 --- a/app/Controllers/HomeController.php +++ b/app/Controllers/HomeController.php @@ -22,7 +22,7 @@ class HomeController extends BaseController { $sortOptions = ['activity', 'created_desc', 'created_asc']; $sortBy = in_array($this->request->getGet('sort'), $sortOptions, true) ? $this->request->getGet( - 'sort' + 'sort', ) : 'activity'; $allPodcasts = (new PodcastModel())->getAllPodcasts($sortBy); diff --git a/app/Controllers/PostController.php b/app/Controllers/PostController.php index ba788293..9a96e7e0 100644 --- a/app/Controllers/PostController.php +++ b/app/Controllers/PostController.php @@ -56,7 +56,9 @@ class PostController extends FediversePostController $this->actor = $this->podcast->actor; if (count($params) <= 1) { - throw PageNotFoundException::forPageNotFound(); + unset($params[0]); + + return $this->{$method}(...$params); } if ( diff --git a/app/Database/Migrations/2021-06-05-190000_add_platforms.php b/app/Database/Migrations/2021-06-05-190000_add_platforms.php index 10f248de..2594ef6c 100644 --- a/app/Database/Migrations/2021-06-05-190000_add_platforms.php +++ b/app/Database/Migrations/2021-06-05-190000_add_platforms.php @@ -44,7 +44,7 @@ class AddPlatforms extends BaseMigration ]); $this->forge->addField('`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP()'); $this->forge->addField( - '`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP()' + '`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP()', ); $this->forge->addPrimaryKey('slug'); $this->forge->createTable('platforms'); diff --git a/app/Database/Migrations/2022-02-23-100000_add_episode_id_to_posts.php b/app/Database/Migrations/2022-02-23-100000_add_episode_id_to_posts.php index d7bfc23e..4b3b1f90 100644 --- a/app/Database/Migrations/2022-02-23-100000_add_episode_id_to_posts.php +++ b/app/Database/Migrations/2022-02-23-100000_add_episode_id_to_posts.php @@ -36,7 +36,7 @@ class AddEpisodeIdToPosts extends BaseMigration 'id', '', 'CASCADE', - $prefix . 'fediverse_posts_episode_id_foreign' + $prefix . 'fediverse_posts_episode_id_foreign', ); $this->forge->processIndexes('fediverse_posts'); } diff --git a/app/Database/Migrations/2022-03-09-113000_add_created_by_to_posts.php b/app/Database/Migrations/2022-03-09-113000_add_created_by_to_posts.php index 7ead61bd..7b924ac0 100644 --- a/app/Database/Migrations/2022-03-09-113000_add_created_by_to_posts.php +++ b/app/Database/Migrations/2022-03-09-113000_add_created_by_to_posts.php @@ -36,7 +36,7 @@ class AddCreatedByToPosts extends BaseMigration 'id', '', 'CASCADE', - $prefix . 'fediverse_posts_created_by_foreign' + $prefix . 'fediverse_posts_created_by_foreign', ); $this->forge->processIndexes('fediverse_posts'); } diff --git a/app/Database/Migrations/2024-04-18-180000_refactor_platforms.php b/app/Database/Migrations/2024-04-18-180000_refactor_platforms.php index c5da952c..6a9935f4 100644 --- a/app/Database/Migrations/2024-04-18-180000_refactor_platforms.php +++ b/app/Database/Migrations/2024-04-18-180000_refactor_platforms.php @@ -114,7 +114,7 @@ class RefactorPlatforms extends Migration ]); $this->forge->addField('`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP()'); $this->forge->addField( - '`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP()' + '`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP()', ); $this->forge->addPrimaryKey('slug'); $this->forge->createTable('platforms'); diff --git a/app/Database/Migrations/2024-12-10-170000_drop_deprecated_podcasts_fields.php b/app/Database/Migrations/2024-12-10-170000_drop_deprecated_podcasts_fields.php index 559f8333..bcd296e7 100644 --- a/app/Database/Migrations/2024-12-10-170000_drop_deprecated_podcasts_fields.php +++ b/app/Database/Migrations/2024-12-10-170000_drop_deprecated_podcasts_fields.php @@ -23,7 +23,7 @@ class DropDeprecatedPodcastsFields extends BaseMigration $this->forge->dropColumn( 'podcasts', - 'episode_description_footer_markdown,episode_description_footer_html,is_owner_email_removed_from_feed,medium,payment_pointer,verify_txt,custom_rss,partner_id,partner_link_url,partner_image_url' + 'episode_description_footer_markdown,episode_description_footer_html,is_owner_email_removed_from_feed,medium,payment_pointer,verify_txt,custom_rss,partner_id,partner_link_url,partner_image_url', ); } diff --git a/app/Entities/Clip/BaseClip.php b/app/Entities/Clip/BaseClip.php index 5279dc4b..d3d7c3ef 100644 --- a/app/Entities/Clip/BaseClip.php +++ b/app/Entities/Clip/BaseClip.php @@ -84,7 +84,7 @@ class BaseClip extends Entity /** * @param array|null $data */ - public function __construct(array $data = null) + public function __construct(?array $data = null) { parent::__construct($data); } diff --git a/app/Entities/Clip/VideoClip.php b/app/Entities/Clip/VideoClip.php index d82e5a6b..48acf664 100644 --- a/app/Entities/Clip/VideoClip.php +++ b/app/Entities/Clip/VideoClip.php @@ -26,7 +26,7 @@ class VideoClip extends BaseClip /** * @param array|null $data */ - public function __construct(array $data = null) + public function __construct(?array $data = null) { parent::__construct($data); diff --git a/app/Entities/Episode.php b/app/Entities/Episode.php index 16e41d85..b4c65fd6 100644 --- a/app/Entities/Episode.php +++ b/app/Entities/Episode.php @@ -193,7 +193,7 @@ class Episode extends Entity ->handle, $this->slug, $this->getAudio() - ->file_extension + ->file_extension, ); $this->audio_opengraph_url = $this->audio_url . '?_from=-+Open+Graph+-'; @@ -202,7 +202,7 @@ class Episode extends Entity return $this; } - public function setCover(UploadedFile | File $file = null): self + public function setCover(UploadedFile | File|null $file = null): self { if (! $file instanceof File || ($file instanceof UploadedFile && ! $file->isValid())) { return $this; @@ -248,7 +248,7 @@ class Episode extends Entity return $this->cover; } - public function setAudio(UploadedFile | File $file = null): self + public function setAudio(UploadedFile | File|null $file = null): self { if (! $file instanceof File || ($file instanceof UploadedFile && ! $file->isValid())) { return $this; @@ -285,7 +285,7 @@ class Episode extends Entity return $this->audio; } - public function setTranscript(UploadedFile | File $file = null): self + public function setTranscript(UploadedFile | File|null $file = null): self { if (! $file instanceof File || ($file instanceof UploadedFile && ! $file->isValid())) { return $this; @@ -322,7 +322,7 @@ class Episode extends Entity return $this->transcript; } - public function setChapters(UploadedFile | File $file = null): self + public function setChapters(UploadedFile | File|null $file = null): self { if (! $file instanceof File || ($file instanceof UploadedFile && ! $file->isValid())) { return $this; @@ -451,7 +451,7 @@ class Episode extends Entity return $this->comments; } - public function getEmbedUrl(string $theme = null): string + public function getEmbedUrl(?string $theme = null): string { return $theme ? url_to('embed-theme', esc($this->getPodcast()->handle), esc($this->attributes['slug']), $theme) diff --git a/app/Entities/Location.php b/app/Entities/Location.php index 2a387a02..f9872192 100644 --- a/app/Entities/Location.php +++ b/app/Entities/Location.php @@ -22,14 +22,8 @@ use CodeIgniter\Entity\Entity; */ class Location extends Entity { - /** - * @var string - */ private const string OSM_URL = 'https://www.openstreetmap.org/'; - /** - * @var string - */ private const string NOMINATIM_URL = 'https://nominatim.openstreetmap.org/'; public function __construct( @@ -108,14 +102,14 @@ class Location extends Entity if (property_exists($places[0], 'lat') && $places[0]->lat !== null && (property_exists( $places[0], - 'lon' + 'lon', ) && $places[0]->lon !== null)) { $this->attributes['geo'] = "geo:{$places[0]->lat},{$places[0]->lon}"; } if (property_exists($places[0], 'osm_type') && $places[0]->osm_type !== null && (property_exists( $places[0], - 'osm_id' + 'osm_id', ) && $places[0]->osm_id !== null)) { $this->attributes['osm'] = strtoupper(substr((string) $places[0]->osm_type, 0, 1)) . $places[0]->osm_id; } diff --git a/app/Entities/Person.php b/app/Entities/Person.php index 8da212d0..225efae4 100644 --- a/app/Entities/Person.php +++ b/app/Entities/Person.php @@ -56,7 +56,7 @@ class Person extends Entity /** * Saves the person avatar in `public/media/persons/` */ - public function setAvatar(UploadedFile | File $file = null): static + public function setAvatar(UploadedFile | File|null $file = null): static { if (! $file instanceof File || ($file instanceof UploadedFile && ! $file->isValid())) { return $this; @@ -110,7 +110,7 @@ class Person extends Entity $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 + array_key_exists('episode_id', $this->attributes) ? (int) $this->attributes['episode_id'] : null, ); } diff --git a/app/Entities/Podcast.php b/app/Entities/Podcast.php index 52ac8656..decb3954 100644 --- a/app/Entities/Podcast.php +++ b/app/Entities/Podcast.php @@ -215,7 +215,7 @@ class Podcast extends Entity return $this->actor; } - public function setCover(UploadedFile | File $file = null): self + public function setCover(UploadedFile | File|null $file = null): self { if (! $file instanceof File || ($file instanceof UploadedFile && ! $file->isValid())) { return $this; @@ -258,7 +258,7 @@ class Podcast extends Entity return $this->cover; } - public function setBanner(UploadedFile | File $file = null): self + public function setBanner(UploadedFile | File|null $file = null): self { if (! $file instanceof File || ($file instanceof UploadedFile && ! $file->isValid())) { return $this; diff --git a/app/Filters/AllowCorsFilter.php b/app/Filters/AllowCorsFilter.php index 472be782..578263fe 100644 --- a/app/Filters/AllowCorsFilter.php +++ b/app/Filters/AllowCorsFilter.php @@ -12,19 +12,23 @@ use Override; class AllowCorsFilter implements FilterInterface { /** - * @param string[]|null $arguments + * @param list|null $arguments + * + * @return RequestInterface|ResponseInterface|string|null */ #[Override] - public function before(RequestInterface $request, $arguments = null): void + public function before(RequestInterface $request, $arguments = null) { - // Do something here + return null; } /** - * @param string[]|null $arguments + * @param list|null $arguments + * + * @return ResponseInterface|null */ #[Override] - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { if (! $response->hasHeader('Cache-Control')) { $response->setHeader('Cache-Control', 'public, max-age=86400'); @@ -34,5 +38,7 @@ class AllowCorsFilter implements FilterInterface ->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'); + + return $response; } } diff --git a/app/Helpers/breadcrumb_helper.php b/app/Helpers/breadcrumb_helper.php index 31592039..261c8a2a 100644 --- a/app/Helpers/breadcrumb_helper.php +++ b/app/Helpers/breadcrumb_helper.php @@ -9,7 +9,7 @@ if (! function_exists('render_breadcrumb')) { * @param string|null $class to be added to the breadcrumb nav * @return string html breadcrumb */ - function render_breadcrumb(string $class = null): string + function render_breadcrumb(?string $class = null): string { return service('breadcrumb')->render($class); } diff --git a/app/Helpers/components_helper.php b/app/Helpers/components_helper.php index 24a196db..ce8cbe64 100644 --- a/app/Helpers/components_helper.php +++ b/app/Helpers/components_helper.php @@ -234,7 +234,7 @@ if (! function_exists('episode_publication_status_banner')) { $bannerText = lang('Episode.publication_status_banner.text', [ 'publication_status' => $episode->publication_status, 'publication_date' => $episode->published_at instanceof Time ? local_datetime( - $episode->published_at + $episode->published_at, ) : null, ]); $previewLinkLabel = lang('Episode.publication_status_banner.preview'); @@ -267,7 +267,7 @@ if (! function_exists('episode_numbering')) { ?int $episodeNumber = null, ?int $seasonNumber = null, string $class = '', - bool $isAbbr = false + bool $isAbbr = false, ): string { if (! $episodeNumber && ! $seasonNumber) { return ''; @@ -381,7 +381,7 @@ if (! function_exists('relative_time')) { function relative_time(Time $time, string $class = ''): string { $formatter = new IntlDateFormatter(service( - 'request' + 'request', )->getLocale(), IntlDateFormatter::MEDIUM, IntlDateFormatter::NONE); $translatedDate = $time->toLocalizedString($formatter->getPattern()); $datetime = $time->format(DateTime::ATOM); @@ -402,7 +402,7 @@ if (! function_exists('local_datetime')) { function local_datetime(Time $time): string { $formatter = new IntlDateFormatter(service( - 'request' + 'request', )->getLocale(), IntlDateFormatter::MEDIUM, IntlDateFormatter::LONG); $translatedDate = $time->toLocalizedString($formatter->getPattern()); $datetime = $time->format(DateTime::ATOM); @@ -431,7 +431,7 @@ if (! function_exists('local_date')) { function local_date(Time $time): string { $formatter = new IntlDateFormatter(service( - 'request' + 'request', )->getLocale(), IntlDateFormatter::MEDIUM, IntlDateFormatter::NONE); $translatedDate = $time->toLocalizedString($formatter->getPattern()); diff --git a/app/Helpers/form_helper.php b/app/Helpers/form_helper.php index dafaadb2..a8f16d61 100644 --- a/app/Helpers/form_helper.php +++ b/app/Helpers/form_helper.php @@ -23,20 +23,20 @@ if (! function_exists('form_textarea')) { // Unsets default rows and cols if defined in extra field as array or string. if ((is_array($extra) && array_key_exists('rows', $extra)) || (is_string($extra) && stripos( (string) preg_replace('~\s+~', '', $extra), - 'rows=' + 'rows=', ) !== false)) { unset($defaults['rows']); } if ((is_array($extra) && array_key_exists('cols', $extra)) || (is_string($extra) && stripos( (string) preg_replace('~\s+~', '', $extra), - 'cols=' + 'cols=', ) !== false)) { unset($defaults['cols']); } return '\n"; } } diff --git a/app/Helpers/misc_helper.php b/app/Helpers/misc_helper.php index a64807cd..9d812214 100644 --- a/app/Helpers/misc_helper.php +++ b/app/Helpers/misc_helper.php @@ -206,7 +206,7 @@ if (! function_exists('get_podcast_banner')) { if (! $podcast->banner instanceof Image) { $defaultBanner = config('Images') ->podcastBannerDefaultPaths[service('settings')->get('App.theme')] ?? config( - Images::class + Images::class, )->podcastBannerDefaultPaths['default']; $sizes = config('Images') @@ -217,7 +217,7 @@ if (! function_exists('get_podcast_banner')) { // return default site icon url return base_url( - change_file_path($defaultBanner['path'], '_' . $size, $sizeConfig['extension'] ?? null) + change_file_path($defaultBanner['path'], '_' . $size, $sizeConfig['extension'] ?? null), ); } @@ -238,7 +238,7 @@ if (! function_exists('get_podcast_banner_mimetype')) { // return default site icon url return array_key_exists('mimetype', $sizeConfig) ? $sizeConfig['mimetype'] : config( - Images::class + Images::class, )->podcastBannerDefaultMimeType; } diff --git a/app/Helpers/page_helper.php b/app/Helpers/page_helper.php index 835162f1..5b24db14 100644 --- a/app/Helpers/page_helper.php +++ b/app/Helpers/page_helper.php @@ -16,7 +16,7 @@ if (! function_exists('render_page_links')) { * * @return string html pages navigation */ - function render_page_links(string $class = null, string $podcastHandle = null): string + function render_page_links(?string $class = null, ?string $podcastHandle = null): string { $pages = (new PageModel())->findAll(); $links = anchor(route_to('home'), lang('Common.home'), [ diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index 4c57d1ab..354434b0 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -29,8 +29,8 @@ if (! function_exists('get_rss_feed')) { function get_rss_feed( Podcast $podcast, string $serviceSlug = '', - Subscription $subscription = null, - string $token = null + ?Subscription $subscription = null, + ?string $token = null, ): string { /** @var Plugins $plugins */ $plugins = service('plugins'); @@ -133,7 +133,7 @@ if (! function_exists('get_rss_feed')) { if (in_array( $socialPlatform->slug, ['mastodon', 'peertube', 'funkwhale', 'misskey', 'mobilizon', 'pixelfed', 'plume', 'writefreely'], - true + true, )) { $socialElement->addAttribute('protocol', 'activitypub'); } else { @@ -155,35 +155,35 @@ if (! function_exists('get_rss_feed')) { 'homeUrl', parse_url((string) $socialPlatform->link_url, PHP_URL_SCHEME) . '://' . parse_url( (string) $socialPlatform->link_url, - PHP_URL_HOST - ) . '/public' + PHP_URL_HOST, + ) . '/public', ); $socialSignUpelement->addAttribute( 'signUpUrl', parse_url((string) $socialPlatform->link_url, PHP_URL_SCHEME) . '://' . parse_url( (string) $socialPlatform->link_url, - PHP_URL_HOST - ) . '/auth/sign_up' + PHP_URL_HOST, + ) . '/auth/sign_up', ); $castopodSocialSignUpelement = $castopodSocialElement->addChild( 'socialSignUp', null, - RssFeed::PODCAST_NAMESPACE + RssFeed::PODCAST_NAMESPACE, ); $castopodSocialSignUpelement->addAttribute('priority', '1'); $castopodSocialSignUpelement->addAttribute( 'homeUrl', parse_url((string) $socialPlatform->link_url, PHP_URL_SCHEME) . '://' . parse_url( (string) $socialPlatform->link_url, - PHP_URL_HOST - ) . '/public' + PHP_URL_HOST, + ) . '/public', ); $castopodSocialSignUpelement->addAttribute( 'signUpUrl', parse_url((string) $socialPlatform->link_url, PHP_URL_SCHEME) . '://' . parse_url( (string) $socialPlatform->link_url, - PHP_URL_HOST - ) . '/auth/sign_up' + PHP_URL_HOST, + ) . '/auth/sign_up', ); } } @@ -348,12 +348,12 @@ if (! function_exists('get_rss_feed')) { $socialInteractElement->addAttribute('protocol', 'activitypub'); $socialInteractElement->addAttribute( 'accountId', - "@{$podcast->actor->username}@{$podcast->actor->domain}" + "@{$podcast->actor->username}@{$podcast->actor->domain}", ); $socialInteractElement->addAttribute( 'pubDate', $episode->getPosts()[0] - ->published_at->format(DateTime::ISO8601) + ->published_at->format(DateTime::ISO8601), ); } @@ -363,7 +363,7 @@ if (! function_exists('get_rss_feed')) { $transcriptElement->addAttribute( 'type', Mimes::guessTypeFromExtension( - pathinfo($episode->transcript->file_url, PATHINFO_EXTENSION) + pathinfo($episode->transcript->file_url, PATHINFO_EXTENSION), ) ?? 'text/html', ); // Castopod only allows for captions (SubRip files) diff --git a/app/Helpers/seo_helper.php b/app/Helpers/seo_helper.php index 2418ae38..f4383f4a 100644 --- a/app/Helpers/seo_helper.php +++ b/app/Helpers/seo_helper.php @@ -45,7 +45,7 @@ if (! function_exists('set_podcast_metatags')) { 'publisher' => $podcast->publisher, 'inLanguage' => $podcast->language_code, 'genre' => $category, - ]) + ]), ); /** @var HtmlHead $head */ @@ -65,7 +65,7 @@ if (! function_exists('set_podcast_metatags')) { 'type' => 'application/activity+json', 'href' => url_to('podcast-activity', esc($podcast->handle)), ])->appendRawContent('' . $schema); } } @@ -89,7 +89,7 @@ if (! function_exists('set_episode_metatags')) { 'name' => $episode->podcast->title, 'url' => $episode->podcast->link, ]), - ]) + ]), ); /** @var HtmlHead $head */ @@ -119,11 +119,11 @@ if (! function_exists('set_episode_metatags')) { 'href' => $episode->link, ]) ->appendRawContent('' . '' . $schema); } } @@ -188,7 +188,7 @@ if (! function_exists('set_episode_comment_metatags')) { 'episode-comment', esc($episodeComment->actor->username), $episodeComment->episode->slug, - $episodeComment->id + $episodeComment->id, ), 'datePublished' => $episodeComment->created_at->format(DATE_ATOM), 'author' => new Thing('Person', [ @@ -218,7 +218,7 @@ if (! function_exists('set_episode_comment_metatags')) { 'episode-comment', $episodeComment->actor->username, $episodeComment->episode->slug, - $episodeComment->id + $episodeComment->id, ), ])->appendRawContent((string) $schema); } @@ -279,8 +279,8 @@ if (! function_exists('set_page_metatags')) { $head ->title( $page->title . service('settings')->get('App.siteTitleSeparator') . service( - 'settings' - )->get('App.siteName') + 'settings', + )->get('App.siteName'), ) ->description(esc(service('settings')->get('App.siteDescription'))) ->image(get_site_icon_url('512')) diff --git a/app/Libraries/Breadcrumb.php b/app/Libraries/Breadcrumb.php index 1aba8f45..980f705b 100644 --- a/app/Libraries/Breadcrumb.php +++ b/app/Libraries/Breadcrumb.php @@ -72,7 +72,7 @@ class Breadcrumb /** * Renders the breadcrumb object as an accessible html breadcrumb nav */ - public function render(string $class = null): string + public function render(?string $class = null): string { $listItems = ''; $keys = array_keys($this->links); diff --git a/app/Libraries/CommentObject.php b/app/Libraries/CommentObject.php index 4d8c75d7..e0db85f0 100644 --- a/app/Libraries/CommentObject.php +++ b/app/Libraries/CommentObject.php @@ -39,7 +39,7 @@ class CommentObject extends ObjectType 'episode-comment-replies', esc($comment->actor->username), $comment->episode->slug, - $comment->id + $comment->id, ); $this->cc = [$comment->actor->followers_url]; diff --git a/app/Libraries/HtmlHead.php b/app/Libraries/HtmlHead.php index 99e64dc1..2efb8ac5 100644 --- a/app/Libraries/HtmlHead.php +++ b/app/Libraries/HtmlHead.php @@ -44,12 +44,12 @@ class HtmlHead implements Stringable 'rel' => 'manifest', // @phpstan-ignore-next-line 'href' => isset($podcast) ? route_to('podcast-webmanifest', esc($podcast->handle)) : route_to( - 'webmanifest' + 'webmanifest', ), ]) ->meta( 'theme-color', - WebmanifestController::THEME_COLORS[service('settings')->get('App.theme')]['theme'] + WebmanifestController::THEME_COLORS[service('settings')->get('App.theme')]['theme'], ) ->tag('link', null, [ 'rel' => 'stylesheet', @@ -62,7 +62,7 @@ class HtmlHead implements Stringable if ('serviceWorker' in navigator) { // Use the window load event to keep the page load performant window.addEventListener('load', () => { - navigator.serviceWorker.register('/sw.js'); + navigator.serviceWorker.register('/assets/sw.js'); }); } diff --git a/app/Libraries/Router.php b/app/Libraries/Router.php index 902c8c43..a7ad1196 100644 --- a/app/Libraries/Router.php +++ b/app/Libraries/Router.php @@ -15,9 +15,10 @@ declare(strict_types=1); namespace App\Libraries; use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\Router\Exceptions\RedirectException; +use CodeIgniter\HTTP\Exceptions\RedirectException; use CodeIgniter\Router\Exceptions\RouterException; use CodeIgniter\Router\Router as CodeIgniterRouter; +use Config\Routing; use Override; class Router extends CodeIgniterRouter @@ -68,7 +69,7 @@ class Router extends CodeIgniterRouter throw new RedirectException( preg_replace('#^' . $routeKey . '$#u', (string) $redirectTo, $uri), - $this->collection->getRedirectCode($routeKey) + $this->collection->getRedirectCode($routeKey), ); } @@ -78,7 +79,7 @@ class Router extends CodeIgniterRouter preg_match( '#^' . str_replace('{locale}', '(?[^/]+)', $matchedKey) . '$#u', $uri, - $matched + $matched, ); if ($this->collection->shouldUseSupportedLocalesOnly() @@ -181,24 +182,50 @@ class Router extends CodeIgniterRouter return true; } - [$controller] = explode('::', (string) $handler); + if (str_contains((string) $handler, '::')) { + [$controller, $methodAndParams] = explode('::', (string) $handler); + } else { + $controller = $handler; + $methodAndParams = ''; + } // Checks `/` in controller name - if (str_contains($controller, '/')) { + if (str_contains((string) $controller, '/')) { throw RouterException::forInvalidControllerName($handler); } if (str_contains((string) $handler, '$') && str_contains($routeKey, '(')) { // Checks dynamic controller - if (str_contains($controller, '$')) { + if (str_contains((string) $controller, '$')) { throw RouterException::forDynamicController($handler); } - // Using back-references - $handler = preg_replace('#^' . $routeKey . '$#u', (string) $handler, $uri); + if (config(Routing::class)->multipleSegmentsOneParam === false) { + // Using back-references + $segments = explode( + '/', + (string) preg_replace('#\A' . $routeKey . '\z#u', (string) $handler, $uri), + ); + } else { + if (str_contains($methodAndParams, '/')) { + [$method, $handlerParams] = explode('/', $methodAndParams, 2); + $params = explode('/', $handlerParams); + $handlerSegments = array_merge([$controller . '::' . $method], $params); + } else { + $handlerSegments = [$handler]; + } + + $segments = []; + + foreach ($handlerSegments as $segment) { + $segments[] = $this->replaceBackReferences($segment, $matches); + } + } + } else { + $segments = explode('/', (string) $handler); } - $this->setRequest(explode('/', (string) $handler)); + $this->setRequest($segments); $this->setMatchedRoute($matchedKey, $handler); diff --git a/app/Libraries/RssFeed.php b/app/Libraries/RssFeed.php index 44b959c5..7c34040b 100644 --- a/app/Libraries/RssFeed.php +++ b/app/Libraries/RssFeed.php @@ -35,7 +35,7 @@ class RssFeed extends SimpleXMLElement $this::ATOM_NAMESPACE, $this::ITUNES_NAMESPACE, $this::PODCAST_NAMESPACE, - $contents + $contents, )); } diff --git a/app/Libraries/ViewComponents/Component.php b/app/Libraries/ViewComponents/Component.php index 8cddcf38..eaf9744a 100644 --- a/app/Libraries/ViewComponents/Component.php +++ b/app/Libraries/ViewComponents/Component.php @@ -53,7 +53,7 @@ abstract class Component implements ComponentInterface 'boolean' => $value === 'true', 'number' => (int) $value, 'array' => json_decode(htmlspecialchars_decode($value), true), - default => $value + default => $value, }; } diff --git a/app/Libraries/ViewThemes/Theme.php b/app/Libraries/ViewThemes/Theme.php index 51d69ffe..b1b9b008 100644 --- a/app/Libraries/ViewThemes/Theme.php +++ b/app/Libraries/ViewThemes/Theme.php @@ -46,7 +46,7 @@ class Theme /** * Returns the path to the specified theme folder. If no theme is provided, will use the current theme. */ - public static function path(string $theme = null): string + public static function path(?string $theme = null): string { if ($theme === null) { $theme = static::current(); diff --git a/app/Libraries/Vite/Config/Services.php b/app/Libraries/Vite/Config/Services.php deleted file mode 100644 index cd5adfde..00000000 --- a/app/Libraries/Vite/Config/Services.php +++ /dev/null @@ -1,30 +0,0 @@ -|null - */ - protected ?array $manifestData = null; - - /** - * @var array|null - */ - protected ?array $manifestCSSData = null; - - public function asset(string $path, string $type): string - { - if (config('Vite')->environment !== 'production') { - return $this->loadDev($path, $type); - } - - return $this->loadProd($path, $type); - } - - private function loadDev(string $path, string $type): string - { - return $this->getHtmlTag(config('Vite') ->baseUrl . config('Vite')->assetsRoot . "/{$path}", $type); - } - - private function loadProd(string $path, string $type): string - { - if ($this->manifestData === null) { - $cacheName = 'vite-manifest'; - if (! ($cachedManifest = cache($cacheName))) { - $manifestPath = config('Vite') - ->assetsRoot . '/' . config('Vite') - ->manifestFile; - try { - if (($manifestContents = file_get_contents($manifestPath)) !== false) { - $cachedManifest = json_decode($manifestContents, true); - cache() - ->save($cacheName, $cachedManifest, DECADE); - } - } catch (ErrorException) { - // ERROR when retrieving the manifest file - die("Could not load manifest: {$manifestPath} file not found!"); - } - } - - $this->manifestData = $cachedManifest; - } - - $html = ''; - if (array_key_exists($path, $this->manifestData)) { - $manifestElement = $this->manifestData[$path]; - - // import css dependencies if any - if (array_key_exists('css', $manifestElement)) { - foreach ($manifestElement['css'] as $cssFile) { - $html .= $this->getHtmlTag('/' . config('Vite')->assetsRoot . '/' . $cssFile, 'css'); - } - } - - // import dependencies first for faster js loading - if (array_key_exists('imports', $manifestElement)) { - foreach ($manifestElement['imports'] as $importPath) { - if (array_key_exists($importPath, $this->manifestData)) { - // import css dependencies if any - if (array_key_exists('css', $this->manifestData[$importPath])) { - foreach ($this->manifestData[$importPath]['css'] as $cssFile) { - $html .= $this->getHtmlTag( - '/' . config('Vite')->assetsRoot . '/' . $cssFile, - 'css' - ); - } - } - - $html .= $this->getHtmlTag( - '/' . config('Vite')->assetsRoot . '/' . $this->manifestData[$importPath]['file'], - 'js' - ); - } - } - } - - $html .= $this->getHtmlTag('/' . config('Vite')->assetsRoot . '/' . $manifestElement['file'], $type); - } - - return $html; - } - - private function getHtmlTag(string $assetUrl, string $type): string - { - return match ($type) { - 'css' => << - HTML - , - 'js' => << - HTML - , - default => '', - }; - } -} diff --git a/app/Models/ClipModel.php b/app/Models/ClipModel.php index 16acbcfc..b65168d8 100644 --- a/app/Models/ClipModel.php +++ b/app/Models/ClipModel.php @@ -67,8 +67,8 @@ class ClipModel extends Model public function __construct( protected string $type = 'audio', - ConnectionInterface &$db = null, - ValidationInterface $validation = null + ?ConnectionInterface &$db = null, + ?ValidationInterface $validation = null, ) { switch ($type) { case 'audio': diff --git a/app/Models/EpisodeCommentModel.php b/app/Models/EpisodeCommentModel.php index f9954dc3..95adb292 100644 --- a/app/Models/EpisodeCommentModel.php +++ b/app/Models/EpisodeCommentModel.php @@ -102,7 +102,7 @@ class EpisodeCommentModel extends UuidModel 'episode-comment', esc($comment->actor->username), $comment->episode->slug, - $comment->id + $comment->id, ); $createActivity = new CreateActivity(); @@ -211,7 +211,7 @@ class EpisodeCommentModel extends UuidModel $postModel = new PostModel(); $episodePostsRepliesBuilder = $postModel->builder(); $episodePostsReplies = $episodePostsRepliesBuilder->select( - 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, favourites_count as likes_count, replies_count, published_at as created_at, created_by, 1 as is_from_post' + 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, favourites_count as likes_count, replies_count, published_at as created_at, created_by, 1 as is_from_post', ) ->whereIn('in_reply_to_id', static function (BaseBuilder $builder) use (&$episodeId): BaseBuilder { return $builder->select('id') @@ -226,12 +226,12 @@ class EpisodeCommentModel extends UuidModel /** @var BaseResult $allEpisodeComments */ $allEpisodeComments = $this->db->query( - $episodeComments . ' UNION ' . $episodePostsReplies . ' ORDER BY created_at ASC' + $episodeComments . ' UNION ' . $episodePostsReplies . ' ORDER BY created_at ASC', ); return $this->convertUuidFieldsToStrings( $allEpisodeComments->getCustomResultObject($this->tempReturnType), - $this->tempReturnType + $this->tempReturnType, ); } diff --git a/app/Models/EpisodeModel.php b/app/Models/EpisodeModel.php index 9ec14a54..a771431c 100644 --- a/app/Models/EpisodeModel.php +++ b/app/Models/EpisodeModel.php @@ -235,8 +235,8 @@ class EpisodeModel extends UuidModel public function getPodcastEpisodes( int $podcastId, string $podcastType, - string $year = null, - string $season = null + ?string $year = null, + ?string $season = null, ): array { $cacheName = implode( '_', @@ -347,7 +347,7 @@ class EpisodeModel extends UuidModel { $result = $this->builder() ->select( - 'COUNT(DISTINCT season_number) as number_of_seasons, COUNT(*) as number_of_episodes, MIN(published_at) as first_published_at' + 'COUNT(DISTINCT season_number) as number_of_seasons, COUNT(*) as number_of_episodes, MIN(published_at) as first_published_at', ) ->where('podcast_id', $podcastId) ->where('`published_at` <= UTC_TIMESTAMP()', null, false) @@ -384,7 +384,7 @@ class EpisodeModel extends UuidModel /** @var BaseResult $query */ $query = $this->db->query( - 'SELECT `episode_id` as `id`, SUM(`comments_count`) as `comments_count` FROM (' . $episodeCommentsCount . ' UNION ALL ' . $episodePostsRepliesCount . ') x GROUP BY `episode_id`' + 'SELECT `episode_id` as `id`, SUM(`comments_count`) as `comments_count` FROM (' . $episodeCommentsCount . ' UNION ALL ' . $episodePostsRepliesCount . ') x GROUP BY `episode_id`', ); $countsPerEpisodeId = $query->getResultArray(); @@ -480,7 +480,7 @@ class EpisodeModel extends UuidModel ') ->select("{$podcastTable}.created_at AS podcast_created_at") ->select( - "{$podcastTable}.title as podcast_title, {$podcastTable}.handle as podcast_handle, {$podcastTable}.description_markdown as podcast_description_markdown" + "{$podcastTable}.title as podcast_title, {$podcastTable}.handle as podcast_handle, {$podcastTable}.description_markdown as podcast_description_markdown", ) ->join($podcastTable, "{$podcastTable} on {$podcastTable}.id = {$episodeTable}.podcast_id") ->where(' @@ -489,7 +489,7 @@ class EpisodeModel extends UuidModel . 'OR' . $podcastModel->getFullTextMatchClauseForPodcasts($podcastTable, $query) . ') - '); + ', ); return $this->builder; } diff --git a/app/Models/PersonModel.php b/app/Models/PersonModel.php index 1c78007d..15509870 100644 --- a/app/Models/PersonModel.php +++ b/app/Models/PersonModel.php @@ -145,7 +145,7 @@ class PersonModel extends Model $this->select('`id`, `full_name`') ->orderBy('`full_name`', 'ASC') ->findAll(), - static function (array $result, $person): array { + static function (array $result, Person $person): array { $result[] = [ 'value' => $person->id, 'label' => $person->full_name, @@ -215,7 +215,7 @@ class PersonModel extends Model if (! ($found = cache($cacheName))) { $this->builder() ->select( - 'persons.*, episodes_persons.podcast_id as podcast_id, episodes_persons.episode_id as episode_id' + 'persons.*, episodes_persons.podcast_id as podcast_id, episodes_persons.episode_id as episode_id', ) ->distinct() ->join('episodes_persons', 'persons.id = episodes_persons.person_id') @@ -257,7 +257,7 @@ class PersonModel extends Model int $episodeId, int $personId, string $groupSlug, - string $roleSlug + string $roleSlug, ): bool { return $this->db->table('episodes_persons') ->insert([ diff --git a/app/Models/PodcastModel.php b/app/Models/PodcastModel.php index 90f62bf0..9b97f753 100644 --- a/app/Models/PodcastModel.php +++ b/app/Models/PodcastModel.php @@ -163,7 +163,7 @@ class PodcastModel extends Model /** * @return Podcast[] */ - public function getAllPodcasts(string $orderBy = null): array + public function getAllPodcasts(?string $orderBy = null): array { $prefix = $this->db->getPrefix(); @@ -175,7 +175,7 @@ class PodcastModel extends Model ->where( '`' . $prefix . 'fediverse_posts`.`published_at` <= UTC_TIMESTAMP()', null, - false + false, )->orWhere('fediverse_posts.published_at', null) ->groupEnd() ->groupBy('podcasts.actor_id') @@ -478,7 +478,7 @@ class PodcastModel extends Model { if (! array_key_exists( 'guid', - $data['data'] + $data['data'], ) || $data['data']['guid'] === null || $data['data']['guid'] === '') { $uuid = service('uuid'); $feedUrl = url_to('podcast-rss-feed', $data['data']['handle']); diff --git a/app/Resources/images/castopod-logo-base.svg b/app/Resources/images/castopod-logo-base.svg deleted file mode 100644 index 482eebfe..00000000 --- a/app/Resources/images/castopod-logo-base.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/Resources/images/castopod-logo.svg b/app/Resources/images/castopod-logo.svg deleted file mode 100644 index 039deb74..00000000 --- a/app/Resources/images/castopod-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/Resources/images/castopod-mascot_confused.svg b/app/Resources/images/castopod-mascot_confused.svg deleted file mode 100644 index ab32c445..00000000 --- a/app/Resources/images/castopod-mascot_confused.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/Resources/js/admin.ts b/app/Resources/js/admin.ts deleted file mode 100644 index abef7b9a..00000000 --- a/app/Resources/js/admin.ts +++ /dev/null @@ -1,43 +0,0 @@ -import "@github/markdown-toolbar-element"; -import "@github/relative-time-element"; -import "./modules/audio-clipper"; -import ClientTimezone from "./modules/ClientTimezone"; -import Clipboard from "./modules/Clipboard"; -import DateTimePicker from "./modules/DateTimePicker"; -import Dropdown from "./modules/Dropdown"; -import HotKeys from "./modules/HotKeys"; -import "./modules/markdown-preview"; -import "./modules/markdown-write-preview"; -import SelectMulti from "./modules/SelectMulti"; -import "./modules/permalink-edit"; -import "./modules/play-soundbite"; -import PublishMessageWarning from "./modules/PublishMessageWarning"; -import Select from "./modules/Select"; -import SidebarToggler from "./modules/SidebarToggler"; -import Slugify from "./modules/Slugify"; -import ThemePicker from "./modules/ThemePicker"; -import Time from "./modules/Time"; -import Tooltip from "./modules/Tooltip"; -import ValidateFileSize from "./modules/ValidateFileSize"; -import "./modules/video-clip-previewer"; -import VideoClipBuilder from "./modules/VideoClipBuilder"; -import "./modules/code-editor"; -import "@patternfly/elements/pf-tabs/pf-tabs.js"; -import FieldArray from "./modules/FieldArray"; - -Dropdown(); -Tooltip(); -Select(); -SelectMulti(); -Slugify(); -SidebarToggler(); -ClientTimezone(); -DateTimePicker(); -Time(); -Clipboard(); -ThemePicker(); -PublishMessageWarning(); -HotKeys(); -ValidateFileSize(); -VideoClipBuilder(); -FieldArray(); diff --git a/app/Resources/js/app.ts b/app/Resources/js/app.ts deleted file mode 100644 index 7b944f47..00000000 --- a/app/Resources/js/app.ts +++ /dev/null @@ -1,5 +0,0 @@ -import Dropdown from "./modules/Dropdown"; -import Tooltip from "./modules/Tooltip"; - -Dropdown(); -Tooltip(); diff --git a/app/Resources/js/charts.ts b/app/Resources/js/charts.ts deleted file mode 100644 index 97b2c4d9..00000000 --- a/app/Resources/js/charts.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DrawCharts from "./modules/Charts"; - -DrawCharts(); diff --git a/app/Resources/js/install.ts b/app/Resources/js/install.ts deleted file mode 100644 index e3bb9d53..00000000 --- a/app/Resources/js/install.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Tooltip from "./modules/Tooltip"; - -Tooltip(); diff --git a/app/Resources/js/map.ts b/app/Resources/js/map.ts deleted file mode 100644 index 195a97d0..00000000 --- a/app/Resources/js/map.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DrawEpisodesMaps from "./modules/EpisodesMap"; - -DrawEpisodesMaps(); diff --git a/app/Resources/js/podcast.ts b/app/Resources/js/podcast.ts deleted file mode 100644 index 1d53a99f..00000000 --- a/app/Resources/js/podcast.ts +++ /dev/null @@ -1,10 +0,0 @@ -import "@github/relative-time-element"; -import SidebarToggler from "./modules/SidebarToggler"; -import Time from "./modules/Time"; -import Toggler from "./modules/Toggler"; -import Tooltip from "./modules/Tooltip"; - -Time(); -Toggler(); -Tooltip(); -SidebarToggler(); diff --git a/app/Resources/styles/index.css b/app/Resources/styles/index.css deleted file mode 100644 index b894e7a3..00000000 --- a/app/Resources/styles/index.css +++ /dev/null @@ -1,15 +0,0 @@ -@import url("./tailwind.css"); -@import url("./custom.css"); -@import url("./fonts.css"); -@import url("./colors.css"); -@import url("./breadcrumb.css"); -@import url("./dropdown.css"); -@import url("./choices.css"); -@import url("./radioBtn.css"); -@import url("./colorRadioBtn.css"); -@import url("./switch.css"); -@import url("./radioToggler.css"); -@import url("./formInputTabs.css"); -@import url("./stickyHeader.css"); -@import url("./readMore.css"); -@import url("./seeMore.css"); diff --git a/app/Validation/FileRules.php b/app/Validation/FileRules.php index 579ec3ca..2a149d46 100644 --- a/app/Validation/FileRules.php +++ b/app/Validation/FileRules.php @@ -11,13 +11,15 @@ declare(strict_types=1); namespace App\Validation; use CodeIgniter\Validation\FileRules as ValidationFileRules; +use Override; class FileRules extends ValidationFileRules { /** * Checks an uploaded file to verify that the dimensions are within a specified allowable dimension. */ - public function min_dims(string $blank = null, string $params = ''): bool + #[Override] + public function min_dims(?string $blank = null, string $params = ''): bool { // Grab the file name off the top of the $params // after we split it. @@ -59,7 +61,7 @@ class FileRules extends ValidationFileRules /** * Checks an uploaded image to verify that the ratio corresponds to the params */ - public function is_image_ratio(string $blank = null, string $params = ''): bool + public function is_image_ratio(?string $blank = null, string $params = ''): bool { // Grab the file name off the top of the $params // after we split it. @@ -99,7 +101,7 @@ class FileRules extends ValidationFileRules /** * Checks that an uploaded json file's content is valid */ - public function is_json(string $blank = null, string $params = ''): bool + public function is_json(?string $blank = null, string $params = ''): bool { // Grab the file name off the top of the $params // after we split it. diff --git a/app/Views/Components/Forms/FormComponent.php b/app/Views/Components/Forms/FormComponent.php index 4d8c31d8..bcc46b26 100644 --- a/app/Views/Components/Forms/FormComponent.php +++ b/app/Views/Components/Forms/FormComponent.php @@ -76,7 +76,7 @@ abstract class FormComponent extends Component return old( $this->name, - in_array($this->value, ['', null], true) ? $this->defaultValue : $this->value + in_array($this->value, ['', null], true) ? $this->defaultValue : $this->value, ) ?? ''; } } diff --git a/app/Views/Components/Forms/MarkdownEditor.php b/app/Views/Components/Forms/MarkdownEditor.php index 027d28ad..0549fd05 100644 --- a/app/Views/Components/Forms/MarkdownEditor.php +++ b/app/Views/Components/Forms/MarkdownEditor.php @@ -31,7 +31,7 @@ class MarkdownEditor extends FormComponent $textarea = form_textarea( $this->attributes, - $this->getValue() + $this->getValue(), ); $markdownIcon = (string) icon('markdown-fill', [ 'class' => 'mr-1 text-lg opacity-40', diff --git a/app/Views/errors/html/debug.css b/app/Views/errors/html/debug.css index a17243d0..a022fcd0 100644 --- a/app/Views/errors/html/debug.css +++ b/app/Views/errors/html/debug.css @@ -11,8 +11,9 @@ body { height: 100%; background: var(--main-bg-color); - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, - sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; color: var(--main-text-color); font-weight: 300; margin: 0; @@ -48,6 +49,7 @@ p.lead { .header { background: var(--light-bg-color); color: var(--dark-text-color); + margin-top: 2.17rem; } .header .container { @@ -77,10 +79,13 @@ p.lead { } .environment { - background: var(--dark-bg-color); - color: var(--light-text-color); + background: var(--brand-primary-color); + color: var(--main-bg-color); text-align: center; - padding: 0.2rem; + padding: calc(4px + 0.2083vw); + width: 100%; + margin-top: -2.14rem; + position: fixed; } .source { diff --git a/app/Views/errors/html/error_400.php b/app/Views/errors/html/error_400.php new file mode 100644 index 00000000..555da042 --- /dev/null +++ b/app/Views/errors/html/error_400.php @@ -0,0 +1,84 @@ + + + + + <?= lang('Errors.badRequest') ?> + + + + +
+

400

+ +

+ + + + + +

+
+ + diff --git a/composer.json b/composer.json index 26acb97e..bb514625 100644 --- a/composer.json +++ b/composer.json @@ -9,10 +9,10 @@ "php": "^8.3", "adaures/ipcat-php": "^v1.0.0", "adaures/podcast-persons-taxonomy": "^v1.0.1", - "aws/aws-sdk-php": "^3.336.6", + "aws/aws-sdk-php": "^3.340.4", "chrisjean/php-ico": "^1.0.4", "cocur/slugify": "^v4.6.0", - "codeigniter4/framework": "v4.5.6", + "codeigniter4/framework": "v4.6.0", "codeigniter4/settings": "v2.2.0", "codeigniter4/shield": "v1.1.0", "codeigniter4/tasks": "dev-develop", @@ -22,24 +22,25 @@ "league/html-to-markdown": "5.1.1", "melbahja/seo": "^v2.1.1", "michalsn/codeigniter4-uuid": "v1.1.0", - "mpratt/embera": "^2.0.41", + "mpratt/embera": "^2.0.42", "opawg/user-agents-v2-php": "dev-main", "phpseclib/phpseclib": "~2.0.48", "vlucas/phpdotenv": "v5.6.1", "whichbrowser/parser": "^v2.1.8", + "yassinedoghri/codeigniter-vite": "^v1.1.0", "yassinedoghri/php-icons": "^v1.2.0", "yassinedoghri/podcast-feed": "dev-main" }, "require-dev": { - "captainhook/captainhook": "^5.24.1", - "codeigniter/phpstan-codeigniter": "v1.5.1", + "captainhook/captainhook": "^5.25.0", + "codeigniter/phpstan-codeigniter": "v1.5.3", "mikey179/vfsstream": "^v1.6.12", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.0.4", - "phpunit/phpunit": "^11.5.2", - "rector/rector": "^2.0.4", + "phpstan/phpstan": "^2.1.6", + "phpunit/phpunit": "^11.5.10", + "rector/rector": "^2.0.9", "symplify/coding-standard": "^12.2.3", - "symplify/easy-coding-standard": "^12.5.4" + "symplify/easy-coding-standard": "^12.5.8" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index cf8f74a7..75fc1571 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6b99aa0bcdbc76f94b529ba8c5ff0ee7", + "content-hash": "2640a52eb4c7576ee306efff9b1dc6e4", "packages": [ { "name": "adaures/ipcat-php", @@ -189,16 +189,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.336.6", + "version": "3.340.4", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "0a99dab427f0a1c082775301141aeac3558691ad" + "reference": "2896cfb3f6b2bd06757b16e99e1cab93c9598af3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/0a99dab427f0a1c082775301141aeac3558691ad", - "reference": "0a99dab427f0a1c082775301141aeac3558691ad", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2896cfb3f6b2bd06757b16e99e1cab93c9598af3", + "reference": "2896cfb3f6b2bd06757b16e99e1cab93c9598af3", "shasum": "" }, "require": { @@ -206,31 +206,30 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "mtdowling/jmespath.php": "^2.6", - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0" + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/promises": "^2.0", + "guzzlehttp/psr7": "^2.4.5", + "mtdowling/jmespath.php": "^2.8.0", + "php": ">=8.1", + "psr/http-message": "^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", - "composer/composer": "^1.10.22", + "composer/composer": "^2.7.8", "dms/phpunit-arraysubset-asserts": "^0.4.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", "ext-pcntl": "*", "ext-sockets": "*", - "nette/neon": "^2.3", - "paragonie/random_compat": ">= 2", "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/simple-cache": "^1.0 || ^2.0 || ^3.0", - "sebastian/comparator": "^1.2.3 || ^4.0", - "yoast/phpunit-polyfills": "^1.0" + "psr/cache": "^2.0 || ^3.0", + "psr/simple-cache": "^2.0 || ^3.0", + "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", + "symfony/filesystem": "^v6.4.0 || ^v7.1.0", + "yoast/phpunit-polyfills": "^2.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", @@ -273,24 +272,24 @@ "sdk" ], "support": { - "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.336.6" + "source": "https://github.com/aws/aws-sdk-php/tree/3.340.4" }, - "time": "2024-12-28T04:16:13+00:00" + "time": "2025-02-28T19:13:38+00:00" }, { "name": "brick/math", - "version": "0.12.1", + "version": "0.12.3", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1" + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1", + "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", "shasum": "" }, "require": { @@ -299,7 +298,7 @@ "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^10.1", - "vimeo/psalm": "5.16.0" + "vimeo/psalm": "6.8.8" }, "type": "library", "autoload": { @@ -327,7 +326,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.1" + "source": "https://github.com/brick/math/tree/0.12.3" }, "funding": [ { @@ -335,7 +334,7 @@ "type": "github" } ], - "time": "2023-11-29T23:19:16+00:00" + "time": "2025-02-28T13:11:00+00:00" }, { "name": "chrisjean/php-ico", @@ -448,34 +447,34 @@ }, { "name": "codeigniter4/framework", - "version": "v4.5.6", + "version": "v4.6.0", "source": { "type": "git", "url": "https://github.com/codeigniter4/framework.git", - "reference": "7822476e6c672387b0ca1d64a74040ed28c42d9f" + "reference": "96a1e603b9a0f022b0febb2e249eab6971a7e0d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/framework/zipball/7822476e6c672387b0ca1d64a74040ed28c42d9f", - "reference": "7822476e6c672387b0ca1d64a74040ed28c42d9f", + "url": "https://api.github.com/repos/codeigniter4/framework/zipball/96a1e603b9a0f022b0febb2e249eab6971a7e0d5", + "reference": "96a1e603b9a0f022b0febb2e249eab6971a7e0d5", "shasum": "" }, "require": { "ext-intl": "*", "ext-mbstring": "*", - "laminas/laminas-escaper": "^2.13", + "laminas/laminas-escaper": "^2.14", "php": "^8.1", "psr/log": "^3.0" }, "require-dev": { "codeigniter/coding-standard": "^1.7", - "fakerphp/faker": "^1.9", + "fakerphp/faker": "^1.24", "friendsofphp/php-cs-fixer": "^3.47.1", - "kint-php/kint": "^5.0.4", - "mikey179/vfsstream": "^1.6", + "kint-php/kint": "^6.0", + "mikey179/vfsstream": "^1.6.12", "nexusphp/cs-config": "^3.6", "phpunit/phpunit": "^10.5.16 || ^11.2", - "predis/predis": "^1.1 || ^2.0" + "predis/predis": "^1.1 || ^2.3" }, "suggest": { "ext-curl": "If you use CURLRequest class", @@ -514,7 +513,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/CodeIgniter4" }, - "time": "2024-12-28T18:27:37+00:00" + "time": "2025-01-19T18:31:34+00:00" }, { "name": "codeigniter4/settings", @@ -639,25 +638,22 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/tasks.git", - "reference": "ec717c428c6f0e8e216e5dfbf18966a26a4f821f" + "reference": "2cb40662a6a312b07d1c64bfb1e9517a2673d939" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/ec717c428c6f0e8e216e5dfbf18966a26a4f821f", - "reference": "ec717c428c6f0e8e216e5dfbf18966a26a4f821f", + "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/2cb40662a6a312b07d1c64bfb1e9517a2673d939", + "reference": "2cb40662a6a312b07d1c64bfb1e9517a2673d939", "shasum": "" }, "require": { "codeigniter4/settings": "^2.0", "ext-json": "*", - "php": "^7.4 || ^8.0" + "php": "^8.1" }, "require-dev": { - "codeigniter/coding-standard": "1.7.*", - "codeigniter4/devkit": "^1.0", - "codeigniter4/framework": "^4.1", - "phpunit/phpunit": "^9.6", - "rector/rector": "1.2.10" + "codeigniter4/devkit": "^1.3", + "codeigniter4/framework": "^4.1" }, "default-branch": true, "type": "library", @@ -715,20 +711,20 @@ "source": "https://github.com/codeigniter4/tasks/tree/develop", "issues": "https://github.com/codeigniter4/tasks/issues" }, - "time": "2024-11-11T12:05:47+00:00" + "time": "2025-02-06T06:54:55+00:00" }, { "name": "composer/ca-bundle", - "version": "1.5.4", + "version": "1.5.5", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "bc0593537a463e55cadf45fd938d23b75095b7e1" + "reference": "08c50d5ec4c6ced7d0271d2862dec8c1033283e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/bc0593537a463e55cadf45fd938d23b75095b7e1", - "reference": "bc0593537a463e55cadf45fd938d23b75095b7e1", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/08c50d5ec4c6ced7d0271d2862dec8c1033283e6", + "reference": "08c50d5ec4c6ced7d0271d2862dec8c1033283e6", "shasum": "" }, "require": { @@ -767,7 +763,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.4" + "source": "https://github.com/composer/ca-bundle/tree/1.5.5" }, "funding": [ { @@ -783,7 +779,7 @@ "type": "tidelift" } ], - "time": "2024-11-27T15:35:25+00:00" + "time": "2025-01-08T16:17:16+00:00" }, { "name": "dflydev/dot-access-data", @@ -1354,16 +1350,16 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.15.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "c612b0488ae486284c39885efca494c180f16351" + "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/c612b0488ae486284c39885efca494c180f16351", - "reference": "c612b0488ae486284c39885efca494c180f16351", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", + "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", "shasum": "" }, "require": { @@ -1375,12 +1371,11 @@ "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.27.11", + "infection/infection": "^0.29.8", "laminas/laminas-coding-standard": "~3.0.1", - "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.6.22", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.2", + "vimeo/psalm": "^6.6.2" }, "type": "library", "autoload": { @@ -1407,7 +1402,7 @@ "type": "community_bridge" } ], - "time": "2024-12-17T19:39:54+00:00" + "time": "2025-02-17T12:40:19+00:00" }, { "name": "league/commonmark", @@ -1886,16 +1881,16 @@ }, { "name": "mpratt/embera", - "version": "2.0.41", + "version": "2.0.42", "source": { "type": "git", "url": "https://github.com/mpratt/Embera.git", - "reference": "069305b9252a428ba4ae6eb58d3dc8c6d9be5cd0" + "reference": "afa728339c6f078c803c9277a5054ca241b3c469" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mpratt/Embera/zipball/069305b9252a428ba4ae6eb58d3dc8c6d9be5cd0", - "reference": "069305b9252a428ba4ae6eb58d3dc8c6d9be5cd0", + "url": "https://api.github.com/repos/mpratt/Embera/zipball/afa728339c6f078c803c9277a5054ca241b3c469", + "reference": "afa728339c6f078c803c9277a5054ca241b3c469", "shasum": "" }, "require": { @@ -1904,7 +1899,8 @@ }, "require-dev": { "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.0||^10.0", + "symfony/yaml": "^2.1" }, "suggest": { "ext-curl": "Fetch data using curl instead of using file_get_contents" @@ -1942,7 +1938,7 @@ ], "support": { "issues": "https://github.com/mpratt/Embera/issues", - "source": "https://github.com/mpratt/Embera/tree/2.0.41" + "source": "https://github.com/mpratt/Embera/tree/2.0.42" }, "funding": [ { @@ -1950,7 +1946,7 @@ "type": "paypal" } ], - "time": "2024-08-17T04:27:29+00:00" + "time": "2025-01-04T06:07:59+00:00" }, { "name": "mtdowling/jmespath.php", @@ -3242,6 +3238,62 @@ }, "time": "2024-04-17T12:47:41+00:00" }, + { + "name": "yassinedoghri/codeigniter-vite", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/yassinedoghri/codeigniter-vite.git", + "reference": "b96cff850b868b992871ce7a92703567afc9db79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yassinedoghri/codeigniter-vite/zipball/b96cff850b868b992871ce7a92703567afc9db79", + "reference": "b96cff850b868b992871ce7a92703567afc9db79", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "codeigniter/phpstan-codeigniter": "v1.5.1", + "codeigniter4/framework": "v4.5.7", + "pestphp/pest": "v3.7.1", + "pestphp/pest-plugin-type-coverage": "v3.2.3", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.1", + "rector/rector": "^2.0.6", + "symplify/coding-standard": "^12.2.3", + "symplify/easy-coding-standard": "^12.5.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "CodeIgniterVite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": ["MIT"], + "authors": [ + { + "name": "Yassine Doghri", + "homepage": "https://yassinedoghri.com/" + } + ], + "description": "A simple ViteJS integration for CodeIgniter4 projects.", + "keywords": [ + "codeigniter", + "codeigniter4", + "iconify", + "icons", + "php-icons" + ], + "support": { + "issues": "https://github.com/yassinedoghri/codeigniter-vite/issues", + "source": "https://github.com/yassinedoghri/codeigniter-vite/tree/v1.1.0" + }, + "time": "2025-01-24T13:46:51+00:00" + }, { "name": "yassinedoghri/php-icons", "version": "v1.2.0", @@ -3301,12 +3353,12 @@ "source": { "type": "git", "url": "https://github.com/yassinedoghri/podcast-feed.git", - "reference": "f34156e62c9eef8bd5561f8a585d99501e235505" + "reference": "d617e204fe85e0b7bd12b9d382cae4064af280c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yassinedoghri/podcast-feed/zipball/f34156e62c9eef8bd5561f8a585d99501e235505", - "reference": "f34156e62c9eef8bd5561f8a585d99501e235505", + "url": "https://api.github.com/repos/yassinedoghri/podcast-feed/zipball/d617e204fe85e0b7bd12b9d382cae4064af280c8", + "reference": "d617e204fe85e0b7bd12b9d382cae4064af280c8", "shasum": "" }, "require": { @@ -3348,16 +3400,16 @@ "packages-dev": [ { "name": "captainhook/captainhook", - "version": "5.24.1", + "version": "5.25.0", "source": { "type": "git", "url": "https://github.com/captainhookphp/captainhook.git", - "reference": "1e56452fd7a7e486e5955ab72dc9ea34bb52a184" + "reference": "4c5bd310bf08f4d96f9bd4f680f894233f9836fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/1e56452fd7a7e486e5955ab72dc9ea34bb52a184", - "reference": "1e56452fd7a7e486e5955ab72dc9ea34bb52a184", + "url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/4c5bd310bf08f4d96f9bd4f680f894233f9836fc", + "reference": "4c5bd310bf08f4d96f9bd4f680f894233f9836fc", "shasum": "" }, "require": { @@ -3368,7 +3420,7 @@ "php": ">=8.0", "sebastianfeldmann/camino": "^0.9.2", "sebastianfeldmann/cli": "^3.3", - "sebastianfeldmann/git": "^3.10", + "sebastianfeldmann/git": "^3.13", "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" @@ -3416,7 +3468,7 @@ ], "support": { "issues": "https://github.com/captainhookphp/captainhook/issues", - "source": "https://github.com/captainhookphp/captainhook/tree/5.24.1" + "source": "https://github.com/captainhookphp/captainhook/tree/5.25.0" }, "funding": [ { @@ -3424,7 +3476,7 @@ "type": "github" } ], - "time": "2024-11-26T18:42:37+00:00" + "time": "2025-02-11T20:42:11+00:00" }, { "name": "captainhook/secrets", @@ -3544,20 +3596,19 @@ }, { "name": "codeigniter/phpstan-codeigniter", - "version": "v1.5.1", + "version": "v1.5.3", "source": { "type": "git", "url": "https://github.com/CodeIgniter/phpstan-codeigniter.git", - "reference": "4bfaba879007c7dfb9c3b687713bd5d45524f067" + "reference": "430e0b44b1a59b34de3cd55678f43472327c0e12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CodeIgniter/phpstan-codeigniter/zipball/4bfaba879007c7dfb9c3b687713bd5d45524f067", - "reference": "4bfaba879007c7dfb9c3b687713bd5d45524f067", + "url": "https://api.github.com/repos/CodeIgniter/phpstan-codeigniter/zipball/430e0b44b1a59b34de3cd55678f43472327c0e12", + "reference": "430e0b44b1a59b34de3cd55678f43472327c0e12", "shasum": "" }, "require": { - "codeigniter4/framework": "^4.5", "php": "^8.1", "phpstan/phpstan": "^2.0" }, @@ -3566,6 +3617,7 @@ }, "require-dev": { "codeigniter/coding-standard": "^1.7", + "codeigniter4/framework": "^4.5", "codeigniter4/shield": "^1.0", "friendsofphp/php-cs-fixer": "^3.49", "nexusphp/cs-config": "^3.21", @@ -3608,7 +3660,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/CodeIgniter/phpstan-codeigniter" }, - "time": "2024-12-02T15:33:25+00:00" + "time": "2025-01-24T19:52:36+00:00" }, { "name": "composer/pcre", @@ -3915,16 +3967,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.65.0", + "version": "v3.70.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "79d4f3e77b250a7d8043d76c6af8f0695e8a469f" + "reference": "2ecd5aae0edc937f0d5aa4a22d1d705c6b2e084e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/79d4f3e77b250a7d8043d76c6af8f0695e8a469f", - "reference": "79d4f3e77b250a7d8043d76c6af8f0695e8a469f", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2ecd5aae0edc937f0d5aa4a22d1d705c6b2e084e", + "reference": "2ecd5aae0edc937f0d5aa4a22d1d705c6b2e084e", "shasum": "" }, "require": { @@ -3941,31 +3993,31 @@ "react/promise": "^2.0 || ^3.0", "react/socket": "^1.0", "react/stream": "^1.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", - "symfony/finder": "^5.4 || ^6.0 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-mbstring": "^1.28", - "symfony/polyfill-php80": "^1.28", - "symfony/polyfill-php81": "^1.28", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + "sebastian/diff": "^4.0 || ^5.1 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.4 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.4 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.4 || ^7.0", + "symfony/finder": "^5.4 || ^6.4 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.4 || ^7.0", + "symfony/polyfill-mbstring": "^1.31", + "symfony/polyfill-php80": "^1.31", + "symfony/polyfill-php81": "^1.31", + "symfony/process": "^5.4 || ^6.4 || ^7.2", + "symfony/stopwatch": "^5.4 || ^6.4 || ^7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.4", - "infection/infection": "^0.29.8", + "facile-it/paraunit": "^1.3.1 || ^2.5", + "infection/infection": "^0.29.10", "justinrainbow/json-schema": "^5.3 || ^6.0", "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.12", "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", - "phpunit/phpunit": "^9.6.21 || ^10.5.38 || ^11.4.3", - "symfony/var-dumper": "^5.4.47 || ^6.4.15 || ^7.1.8", - "symfony/yaml": "^5.4.45 || ^6.4.13 || ^7.1.6" + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", + "phpunit/phpunit": "^9.6.22 || ^10.5.45 || ^11.5.7", + "symfony/var-dumper": "^5.4.48 || ^6.4.18 || ^7.2.0", + "symfony/yaml": "^5.4.45 || ^6.4.18 || ^7.2.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -4000,7 +4052,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.65.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.70.0" }, "funding": [ { @@ -4008,7 +4060,7 @@ "type": "github" } ], - "time": "2024-11-25T00:39:24+00:00" + "time": "2025-02-22T23:30:51+00:00" }, { "name": "mikey179/vfsstream", @@ -4062,16 +4114,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.1", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", "shasum": "" }, "require": { @@ -4100,7 +4152,7 @@ "keywords": ["clone", "copy", "duplicate", "object", "object graph"], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" }, "funding": [ { @@ -4108,20 +4160,20 @@ "type": "tidelift" } ], - "time": "2024-11-08T17:47:46+00:00" + "time": "2025-02-12T12:17:51+00:00" }, { "name": "nikic/php-parser", - "version": "v5.3.1", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -4157,9 +4209,9 @@ "keywords": ["parser", "php"], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2024-10-08T18:51:32+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "phar-io/manifest", @@ -4316,16 +4368,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.0.4", + "version": "2.1.6", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "50d276fc3bf1430ec315f2f109bbde2769821524" + "reference": "6eaec7c6c9e90dcfe46ad1e1ffa5171e2dab641c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/50d276fc3bf1430ec315f2f109bbde2769821524", - "reference": "50d276fc3bf1430ec315f2f109bbde2769821524", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/6eaec7c6c9e90dcfe46ad1e1ffa5171e2dab641c", + "reference": "6eaec7c6c9e90dcfe46ad1e1ffa5171e2dab641c", "shasum": "" }, "require": { @@ -4360,27 +4412,27 @@ "type": "github" } ], - "time": "2024-12-17T17:14:01+00:00" + "time": "2025-02-19T15:46:42+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "11.0.8", + "version": "11.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "418c59fd080954f8c4aa5631d9502ecda2387118" + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/418c59fd080954f8c4aa5631d9502ecda2387118", - "reference": "418c59fd080954f8c4aa5631d9502ecda2387118", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/14d63fbcca18457e49c6f8bebaa91a87e8e188d7", + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.3.1", + "nikic/php-parser": "^5.4.0", "php": ">=8.2", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-text-template": "^4.0.1", @@ -4392,7 +4444,7 @@ "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^11.5.0" + "phpunit/phpunit": "^11.5.2" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -4422,7 +4474,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.8" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.9" }, "funding": [ { @@ -4430,7 +4482,7 @@ "type": "github" } ], - "time": "2024-12-11T12:34:27+00:00" + "time": "2025-02-25T13:26:39+00:00" }, { "name": "phpunit/php-file-iterator", @@ -4654,16 +4706,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.2", + "version": "11.5.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3" + "reference": "d5df2b32d729562ff8db634678d71085ee579006" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/153d0531b9f7e883c5053160cad6dd5ac28140b3", - "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d5df2b32d729562ff8db634678d71085ee579006", + "reference": "d5df2b32d729562ff8db634678d71085ee579006", "shasum": "" }, "require": { @@ -4673,7 +4725,7 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", + "myclabs/deep-copy": "^1.13.0", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", @@ -4684,7 +4736,7 @@ "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", "sebastian/code-unit": "^3.0.2", - "sebastian/comparator": "^6.2.1", + "sebastian/comparator": "^6.3.0", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.0", "sebastian/exporter": "^6.3.0", @@ -4723,7 +4775,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.10" }, "funding": [ { @@ -4739,7 +4791,7 @@ "type": "tidelift" } ], - "time": "2024-12-21T05:51:08+00:00" + "time": "2025-02-25T06:11:48+00:00" }, { "name": "psr/container", @@ -4859,33 +4911,33 @@ }, { "name": "react/child-process", - "version": "v0.6.5", + "version": "v0.6.6", "source": { "type": "git", "url": "https://github.com/reactphp/child-process.git", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", "shasum": "" }, "require": { "evenement/evenement": "^3.0 || ^2.0 || ^1.0", "php": ">=5.3.0", "react/event-loop": "^1.2", - "react/stream": "^1.2" + "react/stream": "^1.4" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/socket": "^1.8", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/socket": "^1.16", "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" }, "type": "library", "autoload": { "psr-4": { - "React\\ChildProcess\\": "src" + "React\\ChildProcess\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4916,19 +4968,15 @@ "keywords": ["event-driven", "process", "reactphp"], "support": { "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + "source": "https://github.com/reactphp/child-process/tree/v0.6.6" }, "funding": [ { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2022-09-16T13:41:56+00:00" + "time": "2025-01-01T16:37:48+00:00" }, { "name": "react/dns", @@ -5282,21 +5330,21 @@ }, { "name": "rector/rector", - "version": "2.0.4", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "df5de7b80deced1ea7f719a0b4d02e4aee87dd21" + "reference": "4393230e478c0006795770fe74c223b5c64ed68c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/df5de7b80deced1ea7f719a0b4d02e4aee87dd21", - "reference": "df5de7b80deced1ea7f719a0b4d02e4aee87dd21", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/4393230e478c0006795770fe74c223b5c64ed68c", + "reference": "4393230e478c0006795770fe74c223b5c64ed68c", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.0.4" + "phpstan/phpstan": "^2.1.3" }, "conflict": { "rector/rector-doctrine": "*", @@ -5318,7 +5366,7 @@ "keywords": ["automation", "dev", "migration", "refactoring"], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.0.4" + "source": "https://github.com/rectorphp/rector/tree/2.0.9" }, "funding": [ { @@ -5326,7 +5374,7 @@ "type": "github" } ], - "time": "2024-12-26T23:06:19+00:00" + "time": "2025-02-10T08:14:01+00:00" }, { "name": "sebastian/cli-parser", @@ -5488,16 +5536,16 @@ }, { "name": "sebastian/comparator", - "version": "6.2.1", + "version": "6.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739" + "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/43d129d6a0f81c78bee378b46688293eb7ea3739", - "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/d4e47a769525c4dd38cea90e5dcd435ddbbc7115", + "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115", "shasum": "" }, "require": { @@ -5510,6 +5558,9 @@ "require-dev": { "phpunit/phpunit": "^11.4" }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, "type": "library", "extra": { "branch-alias": { @@ -5545,7 +5596,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.2.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.0" }, "funding": [ { @@ -5553,7 +5604,7 @@ "type": "github" } ], - "time": "2024-10-31T05:30:08+00:00" + "time": "2025-01-06T10:28:19+00:00" }, { "name": "sebastian/complexity", @@ -6280,16 +6331,16 @@ }, { "name": "sebastianfeldmann/git", - "version": "3.11.1", + "version": "3.13.2", "source": { "type": "git", "url": "https://github.com/sebastianfeldmann/git.git", - "reference": "96b9f384d45106f757df98a74c11b42b393ff18f" + "reference": "95c5fccbbf5e94ad86c459a73f0c2d2d2e776d98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/96b9f384d45106f757df98a74c11b42b393ff18f", - "reference": "96b9f384d45106f757df98a74c11b42b393ff18f", + "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/95c5fccbbf5e94ad86c459a73f0c2d2d2e776d98", + "reference": "95c5fccbbf5e94ad86c459a73f0c2d2d2e776d98", "shasum": "" }, "require": { @@ -6326,7 +6377,7 @@ "keywords": ["git"], "support": { "issues": "https://github.com/sebastianfeldmann/git/issues", - "source": "https://github.com/sebastianfeldmann/git/tree/3.11.1" + "source": "https://github.com/sebastianfeldmann/git/tree/3.13.2" }, "funding": [ { @@ -6334,7 +6385,7 @@ "type": "github" } ], - "time": "2024-11-26T18:37:20+00:00" + "time": "2025-02-11T19:34:51+00:00" }, { "name": "staabm/side-effects-detector", @@ -6680,16 +6731,16 @@ }, { "name": "symfony/finder", - "version": "v7.2.0", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49" + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6de263e5868b9a137602dd1e33e4d48bfae99c49", - "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", "shasum": "" }, "require": { @@ -6720,7 +6771,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.2.0" + "source": "https://github.com/symfony/finder/tree/v7.2.2" }, "funding": [ { @@ -6736,7 +6787,7 @@ "type": "tidelift" } ], - "time": "2024-10-23T06:56:12+00:00" + "time": "2024-12-30T19:00:17+00:00" }, { "name": "symfony/options-resolver", @@ -7013,16 +7064,16 @@ }, { "name": "symfony/process", - "version": "v7.2.0", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" + "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", - "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", + "url": "https://api.github.com/repos/symfony/process/zipball/d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", + "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", "shasum": "" }, "require": { @@ -7050,7 +7101,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.2.0" + "source": "https://github.com/symfony/process/tree/v7.2.4" }, "funding": [ { @@ -7066,7 +7117,7 @@ "type": "tidelift" } ], - "time": "2024-11-06T14:24:19+00:00" + "time": "2025-02-05T08:33:46+00:00" }, { "name": "symfony/service-contracts", @@ -7149,16 +7200,16 @@ }, { "name": "symfony/stopwatch", - "version": "v7.2.0", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "696f418b0d722a4225e1c3d95489d262971ca924" + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/696f418b0d722a4225e1c3d95489d262971ca924", - "reference": "696f418b0d722a4225e1c3d95489d262971ca924", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", "shasum": "" }, "require": { @@ -7187,7 +7238,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.2.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.2.4" }, "funding": [ { @@ -7203,7 +7254,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-02-24T10:49:57+00:00" }, { "name": "symfony/string", @@ -7338,16 +7389,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.5.4", + "version": "12.5.8", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "5673ecbc03eef9d7b2f563819c80e8e1ce0161be" + "reference": "2bf0e468dc9679f3835c835cd3fd4a25ff6e4e14" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/5673ecbc03eef9d7b2f563819c80e8e1ce0161be", - "reference": "5673ecbc03eef9d7b2f563819c80e8e1ce0161be", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/2bf0e468dc9679f3835c835cd3fd4a25ff6e4e14", + "reference": "2bf0e468dc9679f3835c835cd3fd4a25ff6e4e14", "shasum": "" }, "require": { @@ -7372,7 +7423,7 @@ "keywords": ["Code style", "automation", "fixer", "static analysis"], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.4" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.8" }, "funding": [ { @@ -7384,7 +7435,7 @@ "type": "github" } ], - "time": "2024-12-12T15:36:04+00:00" + "time": "2025-01-31T13:59:38+00:00" }, { "name": "symplify/rule-doc-generator-contracts", diff --git a/ecs.php b/ecs.php index 4d41a5ce..8b1a94f5 100644 --- a/ecs.php +++ b/ecs.php @@ -2,12 +2,11 @@ declare(strict_types=1); -use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff; +use PhpCsFixer\Fixer\ControlStructure\TrailingCommaInMultilineFixer; use PhpCsFixer\Fixer\Operator\BinaryOperatorSpacesFixer; use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer; use PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer; use Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer; -use Symplify\CodingStandard\Fixer\Naming\StandardizeHereNowDocKeywordFixer; use Symplify\CodingStandard\Fixer\Spacing\MethodChainingNewlineFixer; use Symplify\EasyCodingStandard\Config\ECSConfig; @@ -28,13 +27,6 @@ return ECSConfig::configure() // skip specific generated files __DIR__ . '/modules/Admin/Language/*/PersonsTaxonomy.php', - StandardizeHereNowDocKeywordFixer::class => [ - __DIR__ . '/app/Views/Components/*', - __DIR__ . '/modules/**/Views/Components/*', - __DIR__ . '/themes/**/Views/Components/*', - __DIR__ . '/app/Helpers/components_helper.php', - ], - LineLengthFixer::class => [__DIR__ . '/app/Views/*', __DIR__ . '/modules/**/Views/*', __DIR__ . '/themes/*'], IndentationTypeFixer::class => [ @@ -54,11 +46,12 @@ return ECSConfig::configure() SingleQuoteFixer::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/**/Language/*'], BinaryOperatorSpacesFixer::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/**/Language/*'], - - AssignmentInConditionSniff::class, ]) ->withConfiguredRule(BinaryOperatorSpacesFixer::class, [ 'operators' => [ '=>' => 'align_single_space_minimal', ], + ]) + ->withConfiguredRule(TrailingCommaInMultilineFixer::class, [ + 'elements' => ['arguments', 'array_destructuring', 'arrays', 'match', 'parameters'], ]); diff --git a/modules/Admin/Config/Routes.php b/modules/Admin/Config/Routes.php index fc290913..375b2943 100644 --- a/modules/Admin/Config/Routes.php +++ b/modules/Admin/Config/Routes.php @@ -483,7 +483,7 @@ $routes->group( [ 'as' => 'comment-attempt-create', 'filter' => 'permission:podcast$1.episodes.manage-comments', - ] + ], ); $routes->post( '(:uuid)/reply', @@ -491,7 +491,7 @@ $routes->group( [ 'as' => 'comment-attempt-reply', 'filter' => 'permission:podcast$1.episodes.manage-comments', - ] + ], ); $routes->post( 'delete', @@ -499,7 +499,7 @@ $routes->group( [ 'as' => 'comment-attempt-delete', 'filter' => 'permission:podcast$1.episodes.manage-comments', - ] + ], ); }); }); diff --git a/modules/Admin/Controllers/BaseController.php b/modules/Admin/Controllers/BaseController.php index 28c3525f..1c18f2d0 100644 --- a/modules/Admin/Controllers/BaseController.php +++ b/modules/Admin/Controllers/BaseController.php @@ -33,7 +33,7 @@ abstract class BaseController extends Controller public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { $this->helpers = [...$this->helpers, 'auth', 'breadcrumb', 'svg', 'components', 'misc']; @@ -51,7 +51,7 @@ abstract class BaseController extends Controller $head ->title($title . ' | Castopod Admin') ->description( - 'Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.' + 'Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.', ); } } diff --git a/modules/Admin/Controllers/DashboardController.php b/modules/Admin/Controllers/DashboardController.php index 21977775..845ed564 100644 --- a/modules/Admin/Controllers/DashboardController.php +++ b/modules/Admin/Controllers/DashboardController.php @@ -29,7 +29,7 @@ class DashboardController extends BaseController ->getResultArray()[0]['last_published_at']; $podcastsData['number_of_podcasts'] = (int) $podcastsCount; $podcastsData['last_published_at'] = $podcastsLastPublishedAt === null ? null : new Time( - $podcastsLastPublishedAt + $podcastsLastPublishedAt, ); $episodesData = []; @@ -42,7 +42,7 @@ class DashboardController extends BaseController ->getResultArray()[0]['last_published_at']; $episodesData['number_of_episodes'] = (int) $episodesCount; $episodesData['last_published_at'] = $episodesLastPublishedAt === null ? null : new Time( - $episodesLastPublishedAt + $episodesLastPublishedAt, ); $totalUploaded = (new MediaModel())->builder() diff --git a/modules/Admin/Controllers/EpisodeController.php b/modules/Admin/Controllers/EpisodeController.php index c684754a..1d8c87dc 100644 --- a/modules/Admin/Controllers/EpisodeController.php +++ b/modules/Admin/Controllers/EpisodeController.php @@ -82,8 +82,8 @@ class EpisodeController extends BaseController ->where('podcast_id', $podcast->id) ->where( "MATCH (title, description_markdown, slug, location_name) AGAINST ('{$episodeModel->db->escapeString( - $query - )}')" + $query, + )}')", ); } } else { @@ -188,7 +188,7 @@ class EpisodeController extends BaseController 'cover' => $this->request->getFile('cover'), 'description_markdown' => $this->request->getPost('description'), 'location' => $this->request->getPost('location_name') === '' ? null : new Location( - $this->request->getPost('location_name') + $this->request->getPost('location_name'), ), 'transcript' => $this->request->getFile('transcript'), 'chapters' => $this->request->getFile('chapters'), @@ -212,7 +212,7 @@ class EpisodeController extends BaseController $newEpisode->setTranscript($this->request->getFile('transcript_file')); } elseif ($transcriptChoice === 'remote-url') { $newEpisode->transcript_remote_url = $this->request->getPost( - 'transcript_remote_url' + 'transcript_remote_url', ) === '' ? null : $this->request->getPost('transcript_remote_url'); } @@ -221,7 +221,7 @@ class EpisodeController extends BaseController $newEpisode->setChapters($this->request->getFile('chapters_file')); } elseif ($chaptersChoice === 'remote-url') { $newEpisode->chapters_remote_url = $this->request->getPost( - 'chapters_remote_url' + 'chapters_remote_url', ) === '' ? null : $this->request->getPost('chapters_remote_url'); } @@ -235,7 +235,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$podcast->id, $newEpisodeId])->with( 'message', - lang('Episode.messages.createSuccess') + lang('Episode.messages.createSuccess'), ); } @@ -284,7 +284,7 @@ class EpisodeController extends BaseController $episode->slug = $validData['slug']; $episode->description_markdown = $this->request->getPost('description'); $episode->location = $this->request->getPost('location_name') === '' ? null : new Location( - $this->request->getPost('location_name') + $this->request->getPost('location_name'), ); $episode->parental_advisory = $this->request->getPost('parental_advisory') !== 'undefined' @@ -349,7 +349,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-edit', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Episode.messages.editSuccess') + lang('Episode.messages.editSuccess'), ); } @@ -407,7 +407,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', - lang('Episode.publish_error') + lang('Episode.publish_error'), ); } @@ -490,7 +490,7 @@ class EpisodeController extends BaseController 'message', lang('Episode.messages.publishSuccess', [ 'publication_status' => $episode->publication_status, - ]) + ]), ); } @@ -520,7 +520,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', - lang('Episode.publish_edit_error') + lang('Episode.publish_edit_error'), ); } @@ -602,7 +602,7 @@ class EpisodeController extends BaseController 'message', lang('Episode.messages.publishSuccess', [ 'publication_status' => $episode->publication_status, - ]) + ]), ); } @@ -636,7 +636,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Episode.messages.publishCancelSuccess') + lang('Episode.messages.publishCancelSuccess'), ); } @@ -649,7 +649,7 @@ class EpisodeController extends BaseController if ($episode->publication_status !== 'published') { return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', - lang('Episode.publish_date_edit_error') + lang('Episode.publish_date_edit_error'), ); } @@ -716,7 +716,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Episode.publish_date_edit_success') + lang('Episode.publish_date_edit_success'), ); } @@ -725,7 +725,7 @@ class EpisodeController extends BaseController if ($episode->publication_status !== 'published') { return redirect()->route('episode-view', [$episode->podcast_id, $episode->id])->with( 'error', - lang('Episode.unpublish_error') + lang('Episode.unpublish_error'), ); } @@ -906,7 +906,7 @@ class EpisodeController extends BaseController return redirect()->route('episode-list', [$episode->podcast_id])->with( 'message', - lang('Episode.messages.deleteSuccess') + lang('Episode.messages.deleteSuccess'), ); } diff --git a/modules/Admin/Controllers/PersonController.php b/modules/Admin/Controllers/PersonController.php index f41b6097..51d4a21c 100644 --- a/modules/Admin/Controllers/PersonController.php +++ b/modules/Admin/Controllers/PersonController.php @@ -149,7 +149,7 @@ class PersonController extends BaseController return redirect()->route('person-edit', [$person->id])->with( 'message', - lang('Person.messages.editSuccess') + lang('Person.messages.editSuccess'), ); } diff --git a/modules/Admin/Controllers/PodcastController.php b/modules/Admin/Controllers/PodcastController.php index 89f0079e..870b66a5 100644 --- a/modules/Admin/Controllers/PodcastController.php +++ b/modules/Admin/Controllers/PodcastController.php @@ -226,7 +226,7 @@ class PodcastController extends BaseController 'type' => $this->request->getPost('type'), 'copyright' => $this->request->getPost('copyright'), 'location' => $this->request->getPost('location_name') === '' ? null : new Location( - $this->request->getPost('location_name') + $this->request->getPost('location_name'), ), 'is_blocked' => $this->request->getPost('block') === 'yes', 'is_completed' => $this->request->getPost('complete') === 'yes', @@ -260,7 +260,7 @@ class PodcastController extends BaseController return redirect()->route('podcast-view', [$newPodcastId])->with( 'message', - lang('Podcast.messages.createSuccess') + lang('Podcast.messages.createSuccess'), ); } @@ -317,10 +317,10 @@ class PodcastController extends BaseController $podcast->type = $this->request->getPost('type'); $podcast->copyright = $this->request->getPost('copyright'); $podcast->location = $this->request->getPost('location_name') === '' ? null : new Location( - $this->request->getPost('location_name') + $this->request->getPost('location_name'), ); $podcast->new_feed_url = $this->request->getPost('new_feed_url') === '' ? null : $this->request->getPost( - 'new_feed_url' + 'new_feed_url', ); $podcast->is_blocked = $this->request->getPost('block') === 'yes'; @@ -356,14 +356,14 @@ class PodcastController extends BaseController ->set( 'Podcast.redirect_to_new_feed', $this->request->getPost('redirect_to_new_feed') === 'yes', - 'podcast:' . $podcast->id + 'podcast:' . $podcast->id, ); $db->transComplete(); return redirect()->route('podcast-edit', [$podcast->id])->with( 'message', - lang('Podcast.messages.editSuccess') + lang('Podcast.messages.editSuccess'), ); } @@ -607,7 +607,7 @@ class PodcastController extends BaseController if ($podcast->publication_status !== 'not_published') { return redirect()->route('podcast-view', [$podcast->id])->with( 'error', - lang('Podcast.messages.publishError') + lang('Podcast.messages.publishError'), ); } @@ -742,7 +742,7 @@ class PodcastController extends BaseController if ($podcast->publication_status !== 'scheduled') { return redirect()->route('podcast-view', [$podcast->id])->with( 'error', - lang('Podcast.messages.publishEditError') + lang('Podcast.messages.publishEditError'), ); } @@ -942,7 +942,7 @@ class PodcastController extends BaseController return redirect()->route('podcast-view', [$podcast->id])->with( 'message', - lang('Podcast.messages.publishCancelSuccess') + lang('Podcast.messages.publishCancelSuccess'), ); } } diff --git a/modules/Admin/Controllers/SoundbiteController.php b/modules/Admin/Controllers/SoundbiteController.php index 5be40f35..faf72bee 100644 --- a/modules/Admin/Controllers/SoundbiteController.php +++ b/modules/Admin/Controllers/SoundbiteController.php @@ -131,7 +131,7 @@ class SoundbiteController extends BaseController return redirect()->route('soundbites-list', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Soundbite.messages.createSuccess') + lang('Soundbite.messages.createSuccess'), ); } @@ -161,7 +161,7 @@ class SoundbiteController extends BaseController return redirect()->route('soundbites-list', [$episode->podcast_id, $episode->id])->with( 'message', - lang('Soundbite.messages.deleteSuccess') + lang('Soundbite.messages.deleteSuccess'), ); } } diff --git a/modules/Admin/Controllers/VideoClipsController.php b/modules/Admin/Controllers/VideoClipsController.php index 99cd1187..573042e6 100644 --- a/modules/Admin/Controllers/VideoClipsController.php +++ b/modules/Admin/Controllers/VideoClipsController.php @@ -125,7 +125,7 @@ class VideoClipsController extends BaseController $this->setHtmlHead(lang('VideoClip.form.title')); - if (in_array(false, $checks, true)) { + if (array_any($checks, fn (bool $value): bool => ! $value)) { $data['checks'] = $checks; return view('episode/video_clips_requirements', $data); } @@ -188,7 +188,7 @@ class VideoClipsController extends BaseController return redirect()->route('video-clips-list', [$episode->podcast_id, $episode->id])->with( 'message', - lang('VideoClip.messages.addToQueueSuccess') + lang('VideoClip.messages.addToQueueSuccess'), ); } diff --git a/modules/Analytics/Controllers/EpisodeAnalyticsController.php b/modules/Analytics/Controllers/EpisodeAnalyticsController.php index 743ccd2a..5da42457 100644 --- a/modules/Analytics/Controllers/EpisodeAnalyticsController.php +++ b/modules/Analytics/Controllers/EpisodeAnalyticsController.php @@ -40,7 +40,7 @@ class EpisodeAnalyticsController extends Controller return redirect()->route( 'episode-audio', - [$episode->podcast->handle, $episode->slug, $episode->audio->file_extension] + [$episode->podcast->handle, $episode->slug, $episode->audio->file_extension], ); } } diff --git a/modules/Analytics/Helpers/analytics_helper.php b/modules/Analytics/Helpers/analytics_helper.php index 3630462f..adf97da4 100644 --- a/modules/Analytics/Helpers/analytics_helper.php +++ b/modules/Analytics/Helpers/analytics_helper.php @@ -259,8 +259,8 @@ if (! function_exists('podcast_hit')) { 'Analytics_Episode_' . sha1( $salt . '_' . date( - 'Y-m-d' - ) . '_' . $clientIp . '_' . $superglobals->server('HTTP_USER_AGENT') . '_' . $episodeId + 'Y-m-d', + ) . '_' . $clientIp . '_' . $superglobals->server('HTTP_USER_AGENT') . '_' . $episodeId, ); // The cache expires at midnight: $secondsToMidnight = strtotime('tomorrow') - time(); @@ -308,8 +308,8 @@ if (! function_exists('podcast_hit')) { 'Analytics_Podcast_' . sha1( $salt . '_' . date( - 'Y-m-d' - ) . '_' . $clientIp . '_' . $superglobals->server('HTTP_USER_AGENT') . '_' . $podcastId + 'Y-m-d', + ) . '_' . $clientIp . '_' . $superglobals->server('HTTP_USER_AGENT') . '_' . $podcastId, ); $newListener = 1; diff --git a/modules/Analytics/Models/AnalyticsPodcastByEpisodeModel.php b/modules/Analytics/Models/AnalyticsPodcastByEpisodeModel.php index 06aef9f4..7115284a 100644 --- a/modules/Analytics/Models/AnalyticsPodcastByEpisodeModel.php +++ b/modules/Analytics/Models/AnalyticsPodcastByEpisodeModel.php @@ -66,7 +66,7 @@ class AnalyticsPodcastByEpisodeModel extends Model /** * @return AnalyticsPodcastsByEpisode[] */ - public function getDataByMonth(int $podcastId, int $episodeId = null): array + public function getDataByMonth(int $podcastId, ?int $episodeId = null): array { if ( ! ($found = cache("{$podcastId}_{$episodeId}_analytics_podcast_by_episode_by_month")) diff --git a/modules/Analytics/Models/AnalyticsPodcastModel.php b/modules/Analytics/Models/AnalyticsPodcastModel.php index e58f574e..1b4775e0 100644 --- a/modules/Analytics/Models/AnalyticsPodcastModel.php +++ b/modules/Analytics/Models/AnalyticsPodcastModel.php @@ -246,7 +246,7 @@ class AnalyticsPodcastModel extends Model { if (! ($found = cache('analytics_total_bandwidth_by_month'))) { $found = $this->select( - 'DATE_FORMAT(updated_at,"%Y-%m") as labels, ROUND(sum(bandwidth) / 1000000, 2) as `values`' + 'DATE_FORMAT(updated_at,"%Y-%m") as labels, ROUND(sum(bandwidth) / 1000000, 2) as `values`', ) ->groupBy('labels') ->orderBy('labels', 'ASC') @@ -268,7 +268,7 @@ class AnalyticsPodcastModel extends Model { if (! ($found = cache('analytics_total_storage_by_month'))) { $found = (new MediaModel())->select( - 'DATE_FORMAT(uploaded_at,"%Y-%m") as labels, ROUND(sum(file_size) / 1000000, 2) as `values`' + 'DATE_FORMAT(uploaded_at,"%Y-%m") as labels, ROUND(sum(file_size) / 1000000, 2) as `values`', ) ->groupBy('labels') ->orderBy('labels', 'ASC') diff --git a/modules/Api/Rest/V1/Config/Routes.php b/modules/Api/Rest/V1/Config/Routes.php index 99429fa7..5f717129 100644 --- a/modules/Api/Rest/V1/Config/Routes.php +++ b/modules/Api/Rest/V1/Config/Routes.php @@ -19,7 +19,7 @@ $routes->group( $routes->get('/', 'PodcastController::list'); $routes->get('(:num)', 'PodcastController::view/$1'); $routes->get('(:any)', 'ExceptionController::notFound'); - } + }, ); $routes->group( @@ -35,5 +35,5 @@ $routes->group( $routes->post('(:num)/publish', 'EpisodeController::attemptPublish/$1'); $routes->get('(:num)', 'EpisodeController::view/$1'); $routes->get('(:any)', 'ExceptionController::notFound'); - } + }, ); diff --git a/modules/Api/Rest/V1/Controllers/EpisodeController.php b/modules/Api/Rest/V1/Controllers/EpisodeController.php index 4688a858..ad9dcff3 100644 --- a/modules/Api/Rest/V1/Controllers/EpisodeController.php +++ b/modules/Api/Rest/V1/Controllers/EpisodeController.php @@ -52,7 +52,7 @@ class EpisodeController extends Controller $data = $builder->findAll( (int) ($this->request->getGet('limit') ?? config('RestApi')->limit), - (int) $this->request->getGet('offset') + (int) $this->request->getGet('offset'), ); array_map(static function ($episode): void { @@ -155,10 +155,10 @@ class EpisodeController extends Controller ? $this->request->getPost('parental_advisory') : null, 'number' => $this->request->getPost('episode_number') ? (int) $this->request->getPost( - 'episode_number' + 'episode_number', ) : null, 'season_number' => $this->request->getPost('season_number') ? (int) $this->request->getPost( - 'season_number' + 'season_number', ) : null, 'type' => $this->request->getPost('type'), 'is_blocked' => $this->request->getPost('block') === 'yes', @@ -172,7 +172,7 @@ class EpisodeController extends Controller $newEpisode->setTranscript($this->request->getFile('transcript_file')); } elseif ($transcriptChoice === 'remote-url') { $newEpisode->transcript_remote_url = $this->request->getPost( - 'transcript_remote_url' + 'transcript_remote_url', ) === '' ? null : $this->request->getPost('transcript_remote_url'); } @@ -181,7 +181,7 @@ class EpisodeController extends Controller $newEpisode->setChapters($this->request->getFile('chapters_file')); } elseif ($chaptersChoice === 'remote-url') { $newEpisode->chapters_remote_url = $this->request->getPost( - 'chapters_remote_url' + 'chapters_remote_url', ) === '' ? null : $this->request->getPost('chapters_remote_url'); } @@ -257,7 +257,7 @@ class EpisodeController extends Controller $episode->published_at = Time::createFromFormat( 'Y-m-d H:i', $scheduledPublicationDate, - $clientTimezone + $clientTimezone, )->setTimezone(app_timezone()); } else { $db->transRollback(); diff --git a/modules/Api/Rest/V1/Filters/ApiFilter.php b/modules/Api/Rest/V1/Filters/ApiFilter.php index 4b1932d3..8bb25935 100644 --- a/modules/Api/Rest/V1/Filters/ApiFilter.php +++ b/modules/Api/Rest/V1/Filters/ApiFilter.php @@ -17,7 +17,8 @@ class ApiFilter implements FilterInterface { /** * @param Request $request - * @return RequestInterface|ResponseInterface|string|void + * + * @return RequestInterface|ResponseInterface|string|null */ #[Override] public function before(RequestInterface $request, $arguments = null) @@ -62,11 +63,18 @@ class ApiFilter implements FilterInterface return $response; } } + + return null; } + /** + * @param string[]|null $arguments + * + * @return ResponseInterface|null + */ #[Override] - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { - // Do something here + return null; } } diff --git a/modules/Auth/Commands/RolesDoc.php b/modules/Auth/Commands/RolesDoc.php index 5f95bfa9..84d7b941 100644 --- a/modules/Auth/Commands/RolesDoc.php +++ b/modules/Auth/Commands/RolesDoc.php @@ -88,7 +88,7 @@ class RolesDoc extends BaseCommand $authGroups->instanceGroups, static function ($table, $key, array $value) use ($instanceMatrix): void { $table->addRow($value['title'], $value['description'], implode(', ', $instanceMatrix[$key])); - } + }, ); } @@ -101,7 +101,7 @@ class RolesDoc extends BaseCommand $authGroups->instancePermissions, static function ($table, $key, $value): void { $table->addRow($key, $value); - } + }, ); } @@ -115,7 +115,7 @@ class RolesDoc extends BaseCommand $authGroups->podcastGroups, static function ($table, $key, array $value) use ($podcastMatrix): void { $table->addRow($value['title'], $value['description'], implode(', ', $podcastMatrix[$key])); - } + }, ); } @@ -128,7 +128,7 @@ class RolesDoc extends BaseCommand $authGroups->podcastPermissions, static function ($table, $key, $value): void { $table->addRow($key, $value); - } + }, ); } @@ -141,7 +141,7 @@ class RolesDoc extends BaseCommand string $pattern, array $tableHeading, array $data, - Closure $callback + Closure $callback, ): string { // check if it has the start and end comments to insert roles table // looking for and @@ -169,7 +169,7 @@ class RolesDoc extends BaseCommand $newFileContents = preg_replace( $pattern, '${1}' . PHP_EOL . PHP_EOL . $markdownTable . PHP_EOL . PHP_EOL . '${2}', - $fileContents + $fileContents, ); if ($newFileContents === null) { @@ -184,7 +184,7 @@ class RolesDoc extends BaseCommand preg_match( '~docs\/src\/content\/docs\/(?:([a-z]{2}(?:-[A-Za-z]{2,})?)\/)getting-started\/auth\.mdx~', $fileKey, - $match + $match, ); if ($match === []) { diff --git a/modules/Auth/Config/Routes.php b/modules/Auth/Config/Routes.php index aa56747e..535646f6 100644 --- a/modules/Auth/Config/Routes.php +++ b/modules/Auth/Config/Routes.php @@ -132,5 +132,5 @@ $routes->group( ); }); }); - } + }, ); diff --git a/modules/Auth/Controllers/ActionController.php b/modules/Auth/Controllers/ActionController.php index 087bfa16..649005ee 100644 --- a/modules/Auth/Controllers/ActionController.php +++ b/modules/Auth/Controllers/ActionController.php @@ -20,7 +20,7 @@ class ActionController extends ShieldActionController public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { parent::initController($request, $response, $logger); diff --git a/modules/Auth/Controllers/ContributorController.php b/modules/Auth/Controllers/ContributorController.php index 6c75aaeb..400c0ad3 100644 --- a/modules/Auth/Controllers/ContributorController.php +++ b/modules/Auth/Controllers/ContributorController.php @@ -42,7 +42,7 @@ class ContributorController extends BaseController if (($this->contributor = (new UserModel())->getPodcastContributor( (int) $params[1], - (int) $params[0] + (int) $params[0], )) instanceof User) { return $this->{$method}(); } @@ -88,7 +88,7 @@ class ContributorController extends BaseController $users = (new UserModel())->findAll(); $contributorOptions = array_reduce( $users, - static function (array $result, $user): array { + static function (array $result, User $user): array { $result[] = [ 'value' => $user->id, 'label' => $user->username, @@ -202,7 +202,7 @@ class ContributorController extends BaseController return redirect()->route('contributor-list', [$this->podcast->id])->with( 'message', - lang('Contributor.messages.editSuccess') + lang('Contributor.messages.editSuccess'), ); } diff --git a/modules/Auth/Controllers/LoginController.php b/modules/Auth/Controllers/LoginController.php index 91e375c6..d4d7386e 100644 --- a/modules/Auth/Controllers/LoginController.php +++ b/modules/Auth/Controllers/LoginController.php @@ -17,7 +17,7 @@ class LoginController extends ShieldLoginController public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { parent::initController($request, $response, $logger); diff --git a/modules/Auth/Controllers/MagicLinkController.php b/modules/Auth/Controllers/MagicLinkController.php index d37f85ee..5be3ff3b 100644 --- a/modules/Auth/Controllers/MagicLinkController.php +++ b/modules/Auth/Controllers/MagicLinkController.php @@ -24,7 +24,7 @@ class MagicLinkController extends ShieldMagicLinkController public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { parent::initController($request, $response, $logger); diff --git a/modules/Auth/Controllers/RegisterController.php b/modules/Auth/Controllers/RegisterController.php index d015392f..4a093f95 100644 --- a/modules/Auth/Controllers/RegisterController.php +++ b/modules/Auth/Controllers/RegisterController.php @@ -20,7 +20,7 @@ class RegisterController extends ShieldRegisterController public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { parent::initController($request, $response, $logger); diff --git a/modules/Auth/Filters/PermissionFilter.php b/modules/Auth/Filters/PermissionFilter.php index b12ee6bb..e958d910 100644 --- a/modules/Auth/Filters/PermissionFilter.php +++ b/modules/Auth/Filters/PermissionFilter.php @@ -20,13 +20,13 @@ class PermissionFilter implements FilterInterface /** * @param string[]|null $arguments * - * @return RequestInterface|ResponseInterface|string|void + * @return RequestInterface|ResponseInterface|string|null */ #[Override] public function before(RequestInterface $request, $arguments = null) { if ($arguments === null || $arguments === []) { - return; + return null; } if (! auth()->loggedIn()) { @@ -34,7 +34,7 @@ class PermissionFilter implements FilterInterface } if ($this->isAuthorized($arguments)) { - return; + return null; } throw new RuntimeException(lang('Auth.notEnoughPrivilege'), 403); @@ -42,10 +42,13 @@ class PermissionFilter implements FilterInterface /** * @param string[]|null $arguments + * + * @return ResponseInterface|null */ #[Override] - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { + return null; } /** @@ -67,7 +70,7 @@ class PermissionFilter implements FilterInterface if (! preg_match('/\$(\d+)\./', $permission, $match)) { throw new RuntimeException(sprintf( 'Could not get podcast identifier from permission %s', - $permission + $permission, ), 1); } diff --git a/modules/Auth/Helpers/auth_helper.php b/modules/Auth/Helpers/auth_helper.php index b4765c87..7e32e57c 100644 --- a/modules/Auth/Helpers/auth_helper.php +++ b/modules/Auth/Helpers/auth_helper.php @@ -104,7 +104,7 @@ if (! function_exists('get_instance_group')) { { $instanceGroups = array_filter( $user->getGroups() ?? [], - static fn ($group): bool => ! str_starts_with((string) $group, 'podcast#') + static fn ($group): bool => ! str_starts_with((string) $group, 'podcast#'), ); if ($instanceGroups === []) { @@ -141,7 +141,7 @@ if (! function_exists('get_podcast_group')) { { $podcastGroups = array_filter( $user->getGroups() ?? [], - static fn ($group): bool => str_starts_with((string) $group, "podcast#{$podcastId}-") + static fn ($group): bool => str_starts_with((string) $group, "podcast#{$podcastId}-"), ); if ($podcastGroups === []) { @@ -184,7 +184,7 @@ if (! function_exists('get_podcast_groups')) { { $podcastGroups = array_filter( $user->getGroups() ?? [], - static fn ($group): bool => str_starts_with((string) $group, 'podcast#') + static fn ($group): bool => str_starts_with((string) $group, 'podcast#'), ); $userPodcastIds = []; @@ -281,7 +281,7 @@ if (! function_exists('get_actor_ids_with_unread_notifications')) { $unreadNotifications = (new NotificationModel())->whereIn( 'target_actor_id', - array_column($userPodcasts, 'actor_id') + array_column($userPodcasts, 'actor_id'), ) ->where('read_at', null) ->findAll(); diff --git a/modules/Fediverse/Commands/Broadcast.php b/modules/Fediverse/Commands/Broadcast.php index 4f2b3e5f..3e096946 100644 --- a/modules/Fediverse/Commands/Broadcast.php +++ b/modules/Fediverse/Commands/Broadcast.php @@ -42,7 +42,7 @@ class Broadcast extends BaseCommand send_activity_to_actor( $scheduledActivity->actor, $scheduledActivity->targetActor, - json_encode($scheduledActivity->payload, JSON_THROW_ON_ERROR) + json_encode($scheduledActivity->payload, JSON_THROW_ON_ERROR), ); } } else { diff --git a/modules/Fediverse/Filters/FediverseFilter.php b/modules/Fediverse/Filters/FediverseFilter.php index 1e64839b..0c8f406e 100644 --- a/modules/Fediverse/Filters/FediverseFilter.php +++ b/modules/Fediverse/Filters/FediverseFilter.php @@ -16,19 +16,15 @@ use Override; class FediverseFilter implements FilterInterface { /** - * Do whatever processing this filter needs to do. By default it should not return anything during normal execution. - * However, when an abnormal state is found, it should return an instance of CodeIgniter\HTTP\Response. If it does, - * script execution will end and that Response will be sent back to the client, allowing for error pages, redirects, - * etc. + * @param string[]|null $params * - * @param string[]|null $params - * @return RequestInterface|ResponseInterface|string|void + * @return RequestInterface|ResponseInterface|string|null */ #[Override] public function before(RequestInterface $request, $params = null) { if ($params === null) { - return; + return null; } if (in_array('verify-activitystream', $params, true)) { @@ -72,20 +68,18 @@ class FediverseFilter implements FilterInterface return service('response')->setStatusCode(401); } } - } - //-------------------------------------------------------------------- + return null; + } /** - * Allows After filters to inspect and modify the response object as needed. This method does not allow any way to - * stop execution of other after filters, short of throwing an Exception or Error. + * @param string[]|null $arguments * - * @param string[]|null $arguments + * @return ResponseInterface|null */ #[Override] - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { + return null; } - - //-------------------------------------------------------------------- } diff --git a/modules/Fediverse/HttpSignature.php b/modules/Fediverse/HttpSignature.php index 3b9eccdc..145f0848 100644 --- a/modules/Fediverse/HttpSignature.php +++ b/modules/Fediverse/HttpSignature.php @@ -24,9 +24,6 @@ use phpseclib\Crypt\RSA; */ class HttpSignature { - /** - * @var string - */ private const string SIGNATURE_PATTERN = '/ (?=.*(keyId="(?Phttps?:\/\/[\w\-\.]+[\w]+(:[\d]+)?[\w\-\.#\/@]+)")) (?=.*(signature="(?P[\w+\/]+={0,2})")) @@ -36,7 +33,7 @@ class HttpSignature protected IncomingRequest $request; - public function __construct(IncomingRequest $request = null) + public function __construct(?IncomingRequest $request = null) { if (! $request instanceof IncomingRequest) { $request = service('request'); @@ -164,7 +161,7 @@ class HttpSignature string $publicKeyPem, string $data, string $signature, - string $algorithm = 'rsa-sha256' + string $algorithm = 'rsa-sha256', ): bool { if ($algorithm === 'rsa-sha512' || $algorithm === 'rsa-sha256') { $hash = substr($algorithm, strpos($algorithm, '-') + 1); diff --git a/modules/Fediverse/Models/ActivityModel.php b/modules/Fediverse/Models/ActivityModel.php index 548ee4a4..c06881ff 100644 --- a/modules/Fediverse/Models/ActivityModel.php +++ b/modules/Fediverse/Models/ActivityModel.php @@ -100,8 +100,8 @@ class ActivityModel extends UuidModel ?int $targetActorId, ?string $postId, string $payload, - DateTimeInterface $scheduledAt = null, - ?string $taskStatus = null + ?DateTimeInterface $scheduledAt = null, + ?string $taskStatus = null, ): BaseResult | int | string | false { return $this->insert( [ @@ -110,7 +110,7 @@ class ActivityModel extends UuidModel 'post_id' => $postId, 'type' => $type === 'Undo' ? $type . '_' . (json_decode( $payload, - true + true, ))['object']['type'] : $type, 'payload' => $payload, 'scheduled_at' => $scheduledAt, diff --git a/modules/Fediverse/Models/ActorModel.php b/modules/Fediverse/Models/ActorModel.php index 28079a62..065815dc 100644 --- a/modules/Fediverse/Models/ActorModel.php +++ b/modules/Fediverse/Models/ActorModel.php @@ -231,24 +231,24 @@ class ActorModel extends Model ->join( $tablePrefix . 'fediverse_posts', $tablePrefix . 'fediverse_actors.id = ' . $tablePrefix . 'fediverse_posts.actor_id', - 'left outer' + 'left outer', ) ->join( $tablePrefix . 'fediverse_favourites', $tablePrefix . 'fediverse_actors.id = ' . $tablePrefix . 'fediverse_favourites.actor_id', - 'left outer' + 'left outer', ) ->where($tablePrefix . 'fediverse_actors.domain', get_current_domain()) ->groupStart() ->where( "`{$tablePrefix}fediverse_posts`.`created_at` >= UTC_TIMESTAMP() - INTERVAL {$lastNumberOfMonths} month", null, - false + false, ) ->orWhere( "`{$tablePrefix}fediverse_favourites`.`created_at` >= UTC_TIMESTAMP() - INTERVAL {$lastNumberOfMonths} month", null, - false + false, ) ->groupEnd() ->get() diff --git a/modules/Fediverse/Models/PostModel.php b/modules/Fediverse/Models/PostModel.php index cec9dcf8..a1b4a54d 100644 --- a/modules/Fediverse/Models/PostModel.php +++ b/modules/Fediverse/Models/PostModel.php @@ -234,7 +234,7 @@ class PostModel extends UuidModel public function addPost( Post $post, bool $createPreviewCard = true, - bool $registerActivity = true + bool $registerActivity = true, ): bool|int|object|string { helper('fediverse'); @@ -327,6 +327,7 @@ class PostModel extends UuidModel // update published date in payload $newPayload = $scheduledActivity->payload; $newPayload->object->published = $updatedPost->published_at->format(DATE_W3C); + model('ActivityModel', false) ->update($scheduledActivity->id, [ 'payload' => json_encode($newPayload, JSON_THROW_ON_ERROR), @@ -431,7 +432,7 @@ class PostModel extends UuidModel public function addReply( Post $reply, bool $createPreviewCard = true, - bool $registerActivity = true + bool $registerActivity = true, ): string | false { if (! $reply->in_reply_to_id) { throw new Exception('Passed post is not a reply!'); diff --git a/modules/Fediverse/Objects/OrderedCollectionObject.php b/modules/Fediverse/Objects/OrderedCollectionObject.php index 11438361..5877de52 100644 --- a/modules/Fediverse/Objects/OrderedCollectionObject.php +++ b/modules/Fediverse/Objects/OrderedCollectionObject.php @@ -32,7 +32,7 @@ class OrderedCollectionObject extends ObjectType */ public function __construct( protected ?array $orderedItems = null, - ?Pager $pager = null + ?Pager $pager = null, ) { $this->id = current_url(); diff --git a/modules/Fediverse/WebFinger.php b/modules/Fediverse/WebFinger.php index f8d0b8c8..e07f5115 100644 --- a/modules/Fediverse/WebFinger.php +++ b/modules/Fediverse/WebFinger.php @@ -15,9 +15,6 @@ use Modules\Fediverse\Entities\Actor; class WebFinger { - /** - * @var string - */ private const string RESOURCE_PATTERN = '/^acct:(?P([\w_]+))@(?P([\w\-\.]+[\w]+)(:[\d]+)?)$/x'; protected string $username; @@ -39,7 +36,7 @@ class WebFinger protected array $links = []; public function __construct( - protected string $subject + protected string $subject, ) { // Split resource into its parts (username, domain) $parts = $this->splitResource($subject); diff --git a/modules/Install/Commands/CreateSuperadmin.php b/modules/Install/Commands/CreateSuperadmin.php index 7cf6a6ec..0dfdad71 100644 --- a/modules/Install/Commands/CreateSuperadmin.php +++ b/modules/Install/Commands/CreateSuperadmin.php @@ -74,7 +74,7 @@ class CreateSuperadmin extends BaseCommand $passwordConfirm = $this->prompt( 'Password confirmation', null, - $this->validationRules['password']['rules'] + $this->validationRules['password']['rules'], ); if ($password !== $passwordConfirm) { diff --git a/modules/Install/Config/Routes.php b/modules/Install/Config/Routes.php index b8620f85..481d01fd 100644 --- a/modules/Install/Config/Routes.php +++ b/modules/Install/Config/Routes.php @@ -35,5 +35,5 @@ $routes->group( 'as' => 'create-superadmin', ], ); - } + }, ); diff --git a/modules/Install/Controllers/InstallController.php b/modules/Install/Controllers/InstallController.php index 15bd9c6d..95425bf3 100644 --- a/modules/Install/Controllers/InstallController.php +++ b/modules/Install/Controllers/InstallController.php @@ -38,7 +38,7 @@ class InstallController extends Controller public function initController( RequestInterface $request, ResponseInterface $response, - LoggerInterface $logger + LoggerInterface $logger, ): void { // Do Not Edit This Line parent::initController($request, $response, $logger); @@ -347,7 +347,7 @@ class InstallController extends Controller return $line; }, - $envData + $envData, ); if (! $replaced) { diff --git a/modules/Media/Entities/Image.php b/modules/Media/Entities/Image.php index 2d88bd3a..02319af1 100644 --- a/modules/Media/Entities/Image.php +++ b/modules/Media/Entities/Image.php @@ -87,7 +87,7 @@ class Image extends BaseMedia if ($this->file_mimetype === 'image/jpeg' && $metadata = @exif_read_data( $file->getRealPath(), null, - true + true, )) { $metadata['sizes'] = $this->attributes['sizes']; $this->attributes['file_size'] = $metadata['FILE']['FileSize']; diff --git a/modules/Media/FileManagers/FS.php b/modules/Media/FileManagers/FS.php index e58001df..8fbb918e 100644 --- a/modules/Media/FileManagers/FS.php +++ b/modules/Media/FileManagers/FS.php @@ -12,9 +12,8 @@ use Override; class FS implements FileManagerInterface { public function __construct( - protected MediaConfig $config + protected MediaConfig $config, ) { - $this->config = $config; } /** diff --git a/modules/Media/FileManagers/S3.php b/modules/Media/FileManagers/S3.php index ef96de59..f31a25c3 100644 --- a/modules/Media/FileManagers/S3.php +++ b/modules/Media/FileManagers/S3.php @@ -16,7 +16,7 @@ class S3 implements FileManagerInterface public S3Client $s3; public function __construct( - protected MediaConfig $config + protected MediaConfig $config, ) { $this->s3 = new S3Client([ 'version' => 'latest', diff --git a/modules/Media/Helpers/url_helper.php b/modules/Media/Helpers/url_helper.php index aba33540..e9cbcdc2 100644 --- a/modules/Media/Helpers/url_helper.php +++ b/modules/Media/Helpers/url_helper.php @@ -24,7 +24,7 @@ if (! function_exists('media_url')) { $uri->getAuthority(), $uri->getPath(), $uri->getQuery(), - $uri->getFragment() + $uri->getFragment(), ); } } diff --git a/modules/Media/Models/MediaModel.php b/modules/Media/Models/MediaModel.php index 78d1ce97..d6b948a6 100644 --- a/modules/Media/Models/MediaModel.php +++ b/modules/Media/Models/MediaModel.php @@ -81,8 +81,8 @@ class MediaModel extends Model */ public function __construct( protected string $fileType = 'document', - ConnectionInterface &$db = null, - ValidationInterface $validation = null + ?ConnectionInterface &$db = null, + ?ValidationInterface $validation = null, ) { $this->returnType = match ($fileType) { 'audio' => Audio::class, @@ -90,7 +90,7 @@ class MediaModel extends Model 'image' => Image::class, 'transcript' => Transcript::class, 'chapters' => Chapters::class, - default => Document::class + default => Document::class, }; parent::__construct($db, $validation); diff --git a/modules/MediaClipper/VideoClipper.php b/modules/MediaClipper/VideoClipper.php index 96653088..039a2b33 100644 --- a/modules/MediaClipper/VideoClipper.php +++ b/modules/MediaClipper/VideoClipper.php @@ -96,7 +96,7 @@ class VideoClipper if (! $tempFile) { throw new Exception( - 'Could not create temporary files, check for permissions on your ' . WRITEPATH . 'temp folder.' + 'Could not create temporary files, check for permissions on your ' . WRITEPATH . 'temp folder.', ); } @@ -233,11 +233,11 @@ class VideoClipper '[m][a]alphamerge[waves_t3]', "[waves_t3]scale={$this->dimensions['soundwaves']['rescaleWidth']}:{$this->dimensions['soundwaves']['rescaleHeight']},lutrgb=r='if(gt(val,100),{$this->colors['soundwaves'][0]},val)':g='if(gt(val,100),{$this->colors['soundwaves'][1]},val)':b='if(gt(val,100),{$this->colors['soundwaves'][2]},val)'[waves_final]", "[1:v][waves_final]overlay=x={$this->dimensions['soundwaves']['x']}:y={$this->dimensions['soundwaves']['y']}:shortest=1,drawtext=fontfile=" . $this->getFont( - 'timestamp' + 'timestamp', ) . ":text='%{pts\:gmtime\:{$this->start}\:%H\\\\\\\\\\:%M\\\\\\\\\\:%S\}':x={$this->dimensions['timestamp']['x']}:y={$this->dimensions['timestamp']['y']}:fontsize={$this->dimensions['timestamp']['fontsize']}:fontcolor=0x{$this->colors['timestampText']}:box=1:boxcolor=0x{$this->colors['timestampBg']}:boxborderw={$this->dimensions['timestamp']['padding']}[v3]", "color=c=0x{$this->colors['progressbar']}:s={$this->dimensions['width']}x{$this->dimensions['progressbar']['height']}[progressbar]", "[v3][progressbar]overlay=-w+(w/{$this->duration})*t:0:shortest=1:format=rgb,subtitles={$this->subtitlesClipOutput}:fontsdir=" . config( - 'MediaClipper' + 'MediaClipper', )->fontsFolder . ":force_style='Fontname=" . self::FONTS['subtitles'] . ",Alignment=5,Fontsize={$this->dimensions['subtitles']['fontsize']},PrimaryColour=&H{$this->colors['subtitles']}&,BorderStyle=1,Outline=0,Shadow=0,MarginL={$this->dimensions['subtitles']['marginL']},MarginR={$this->dimensions['subtitles']['marginR']},MarginV={$this->dimensions['subtitles']['marginV']}'[outv]", "[6:v]scale={$this->dimensions['watermark']['width']}:{$this->dimensions['watermark']['height']}[watermark]", "color=0x{$this->colors['watermarkBg']}:{$this->dimensions['watermark']['width']}x{$this->dimensions['watermark']['height']}[over]", @@ -313,7 +313,7 @@ class VideoClipper $scaledEpisodeCover = $this->scaleImage( $episodeCover, $this->dimensions['cover']['width'], - $this->dimensions['cover']['height'] + $this->dimensions['cover']['height'], ); if (! $scaledEpisodeCover) { @@ -332,7 +332,7 @@ class VideoClipper $this->dimensions['cover']['x'], $this->dimensions['cover']['y'], $this->dimensions['cover']['width'], - $this->dimensions['cover']['height'] + $this->dimensions['cover']['height'], ); if (! $isOverlaid) { @@ -357,13 +357,13 @@ class VideoClipper $this->dimensions['episodeTitle']['fontsize'], 0, $this->getFont('episodeTitle'), - $this->episode->title + $this->episode->title, ); $episodeNumberingBox = $this->calculateTextBox( $this->dimensions['episodeNumbering']['fontsize'], 0, $this->getFont('episodeNumbering'), - $this->episodeNumbering + $this->episodeNumbering, ); if (! $episodeTitleBox || ! $episodeNumberingBox) { return false; @@ -419,7 +419,7 @@ class VideoClipper $scaledQuotes = $this->scaleImage( $cleanedQuotes, $this->dimensions['quotes']['width'], - $this->dimensions['quotes']['height'] + $this->dimensions['quotes']['height'], ); if (! $scaledQuotes) { @@ -433,7 +433,7 @@ class VideoClipper $this->dimensions['quotes']['x'], $this->dimensions['quotes']['y'], $this->dimensions['quotes']['width'], - $this->dimensions['quotes']['height'] + $this->dimensions['quotes']['height'], ); // Save Image @@ -606,7 +606,7 @@ class VideoClipper int $x, int $y, int $width, - int $height + int $height, ): bool { return imagecopy($background, $foreground, $x, $y, 0, 0, $width, $height); } @@ -646,7 +646,7 @@ class VideoClipper $y + $fontsize + ($leading * $i), $textColor, $fontPath, - $line + $line, ); } diff --git a/modules/Platforms/Config/Routes.php b/modules/Platforms/Config/Routes.php index fb64efc7..06284656 100644 --- a/modules/Platforms/Config/Routes.php +++ b/modules/Platforms/Config/Routes.php @@ -60,5 +60,5 @@ $routes->group( ], ); }); - } + }, ); diff --git a/modules/Plugins/Commands/CreatePlugin.php b/modules/Plugins/Commands/CreatePlugin.php index 8a6e28ce..57141a5d 100644 --- a/modules/Plugins/Commands/CreatePlugin.php +++ b/modules/Plugins/Commands/CreatePlugin.php @@ -71,7 +71,7 @@ class CreatePlugin extends BaseCommand $pluginName = CLI::prompt( 'Plugin name (/)', 'acme/hello-world', - Manifest::$validation_rules['name'] + Manifest::$validation_rules['name'], ); CLI::newLine(); $description = CLI::prompt('Description', '', Manifest::$validation_rules['description']); @@ -111,19 +111,19 @@ class CreatePlugin extends BaseCommand $manifestContents = str_replace( '"description": ""', '"description": "' . $description . '"', - $manifestContents + $manifestContents, ); $manifestContents = str_replace('"license": ""', '"license": "' . $license . '"', $manifestContents); $manifestContents = str_replace( '"hooks": []', '"hooks": ["' . implode('", "', $hooks) . '"]', - $manifestContents + $manifestContents, ); $pluginClassName = str_replace( ' ', '', - ucwords(str_replace(['-', '_', '.'], ' ', $vendor . ' ' . $name)) . 'Plugin' + ucwords(str_replace(['-', '_', '.'], ' ', $vendor . ' ' . $name)) . 'Plugin', ); $pluginClassContents = str_replace('class Plugin', 'class ' . $pluginClassName, $pluginClassTemplate); @@ -153,7 +153,7 @@ class CreatePlugin extends BaseCommand CLI::newLine(1); CLI::write( sprintf('Plugin %s created in %s', CLI::color($pluginName, 'white'), CLI::color($pluginDirectory, 'white')), - 'green' + 'green', ); } } diff --git a/modules/Plugins/Config/Routes.php b/modules/Plugins/Config/Routes.php index 3f7880ce..61ea5d5c 100644 --- a/modules/Plugins/Config/Routes.php +++ b/modules/Plugins/Config/Routes.php @@ -65,5 +65,5 @@ $routes->group( ]); }); }); - } + }, ); diff --git a/modules/Plugins/Controllers/PluginController.php b/modules/Plugins/Controllers/PluginController.php index 78a0b252..95c8e5be 100644 --- a/modules/Plugins/Controllers/PluginController.php +++ b/modules/Plugins/Controllers/PluginController.php @@ -84,8 +84,8 @@ class PluginController extends BaseController public function settingsView( string $vendor, string $package, - string $podcastId = null, - string $episodeId = null + ?string $podcastId = null, + ?string $episodeId = null, ): string { $plugin = $this->plugins->getPlugin($vendor, $package); @@ -152,8 +152,8 @@ class PluginController extends BaseController public function settingsAction( string $vendor, string $package, - string $podcastId = null, - string $episodeId = null + ?string $podcastId = null, + ?string $episodeId = null, ): RedirectResponse { $plugin = $this->plugins->getPlugin($vendor, $package); @@ -350,7 +350,7 @@ class PluginController extends BaseController 'datetime' => Time::createFromFormat( 'Y-m-d H:i', $value, - $this->request->getPost('client_timezone') + $this->request->getPost('client_timezone'), )->setTimezone(app_timezone()), 'markdown' => new Markdown($value), 'rss' => new RSS($value), diff --git a/modules/Plugins/Core/BasePlugin.php b/modules/Plugins/Core/BasePlugin.php index 27734dbb..bd3f67a5 100644 --- a/modules/Plugins/Core/BasePlugin.php +++ b/modules/Plugins/Core/BasePlugin.php @@ -45,7 +45,7 @@ abstract class BasePlugin implements PluginInterface public function __construct( protected string $vendor, protected string $package, - protected string $directory + protected string $directory, ) { $this->key = sprintf('%s/%s', $vendor, $package); @@ -59,7 +59,7 @@ abstract class BasePlugin implements PluginInterface if ($this->manifest->minCastopodVersion !== null && version_compare( CP_VERSION, $this->manifest->minCastopodVersion, - '<' + '<', )) { $this->status = PluginStatus::INCOMPATIBLE; } else { @@ -342,7 +342,7 @@ abstract class BasePlugin implements PluginInterface return 'data:image/svg+xml;utf8,' . str_replace( ['%20', '%22', '%27', '%3D'], [' ', "'", "'", '='], - $encodedIcon + $encodedIcon, ); } @@ -369,13 +369,13 @@ abstract class BasePlugin implements PluginInterface DocumentParsedEvent::class, static function (DocumentParsedEvent $event): void { (new ExternalLinkProcessor())->onDocumentParsed($event); - } + }, ); $environment->addEventListener( DocumentParsedEvent::class, static function (DocumentParsedEvent $event): void { (new ExternalImageProcessor())->onDocumentParsed($event); - } + }, ); $converter = new MarkdownConverter($environment); diff --git a/modules/Plugins/Core/Markdown.php b/modules/Plugins/Core/Markdown.php index 318a8562..2e6b1af7 100644 --- a/modules/Plugins/Core/Markdown.php +++ b/modules/Plugins/Core/Markdown.php @@ -16,7 +16,7 @@ use Stringable; class Markdown implements Stringable { public function __construct( - protected string $markdown + protected string $markdown, ) { } diff --git a/modules/Plugins/Core/Plugins.php b/modules/Plugins/Core/Plugins.php index 29b9eb0f..eb0a9771 100644 --- a/modules/Plugins/Core/Plugins.php +++ b/modules/Plugins/Core/Plugins.php @@ -76,7 +76,7 @@ class Plugins protected static int $activeCount = 0; public function __construct( - protected PluginsConfig $config + protected PluginsConfig $config, ) { helper('plugins'); @@ -235,7 +235,7 @@ class Plugins /** * @param ?array{'podcast'|'episode',int} $additionalContext */ - public function setOption(BasePlugin $plugin, string $name, mixed $value, array $additionalContext = null): void + public function setOption(BasePlugin $plugin, string $name, mixed $value, ?array $additionalContext = null): void { set_plugin_setting($plugin->getKey(), $name, $value, $additionalContext); } @@ -294,7 +294,7 @@ class Plugins $className = str_replace( ' ', '', - ucwords(str_replace(['-', '_', '.'], ' ', $vendor . ' ' . $package)) . 'Plugin' + ucwords(str_replace(['-', '_', '.'], ' ', $vendor . ' ' . $package)) . 'Plugin', ); $pluginFile = $pluginDirectory . DIRECTORY_SEPARATOR . 'Plugin.php'; diff --git a/modules/Plugins/Core/RSS.php b/modules/Plugins/Core/RSS.php index e7332afa..36a96fe7 100644 --- a/modules/Plugins/Core/RSS.php +++ b/modules/Plugins/Core/RSS.php @@ -12,7 +12,7 @@ use Stringable; class RSS implements Stringable { public function __construct( - protected string $rss + protected string $rss, ) { } diff --git a/modules/Plugins/Helpers/plugins_helper.php b/modules/Plugins/Helpers/plugins_helper.php index 7fa36c39..3a2c926d 100644 --- a/modules/Plugins/Helpers/plugins_helper.php +++ b/modules/Plugins/Helpers/plugins_helper.php @@ -15,7 +15,7 @@ if (! function_exists('get_plugin_setting')) { /** * @param ?array{'podcast'|'episode',int} $additionalContext */ - function get_plugin_setting(string $pluginKey, string $option, array $additionalContext = null): mixed + function get_plugin_setting(string $pluginKey, string $option, ?array $additionalContext = null): mixed { $key = sprintf('Plugins.%s', $option); $context = sprintf('plugin:%s', $pluginKey); @@ -36,7 +36,7 @@ if (! function_exists('set_plugin_setting')) { string $pluginKey, string $option, mixed $value = null, - array $additionalContext = null + ?array $additionalContext = null, ): void { $key = sprintf('Plugins.%s', $option); $context = sprintf('plugin:%s', $pluginKey); diff --git a/modules/Plugins/Manifest/ManifestObject.php b/modules/Plugins/Manifest/ManifestObject.php index a5f46113..4070d24f 100644 --- a/modules/Plugins/Manifest/ManifestObject.php +++ b/modules/Plugins/Manifest/ManifestObject.php @@ -116,7 +116,7 @@ abstract class ManifestObject foreach ($value as $valueKey => $valueElement) { if (is_subclass_of($cast[0], self::class)) { $manifestClass = $cast[0] === Field::class ? $this->getFieldClass( - $valueElement + $valueElement, ) : $cast[0]; $value[$valueKey] = new $manifestClass($this->pluginKey); $value[$valueKey]->loadData($valueElement); @@ -160,7 +160,7 @@ abstract class ManifestObject return rtrim(Field::class, "\Field") . '\\Fields\\' . str_replace( ' ', '', - ucwords(str_replace('-', ' ', $fieldType)) + ucwords(str_replace('-', ' ', $fieldType)), ); } } diff --git a/modules/Plugins/Manifest/manifest.schema.json b/modules/Plugins/Manifest/manifest.schema.json index fe474390..71c71980 100644 --- a/modules/Plugins/Manifest/manifest.schema.json +++ b/modules/Plugins/Manifest/manifest.schema.json @@ -204,7 +204,6 @@ "optional": { "type": "boolean" }, - "validationRules": { "anyOf": [ { diff --git a/modules/PodcastImport/Commands/PodcastImport.php b/modules/PodcastImport/Commands/PodcastImport.php index 3479cc06..2bd3f9e9 100644 --- a/modules/PodcastImport/Commands/PodcastImport.php +++ b/modules/PodcastImport/Commands/PodcastImport.php @@ -51,7 +51,7 @@ class PodcastImport extends BaseCommand $importQueue = get_import_tasks(); $currentImport = current( - array_filter($importQueue, static fn ($task): bool => $task->status === TaskStatus::Running) + array_filter($importQueue, static fn ($task): bool => $task->status === TaskStatus::Running), ); if ($currentImport instanceof PodcastImportTask) { @@ -104,7 +104,7 @@ class PodcastImport extends BaseCommand CLI::write('All good! Feed was parsed successfully!'); CLI::write( - 'Starting import for @' . $this->importTask->handle . ' using feed: ' . $this->importTask->feed_url + 'Starting import for @' . $this->importTask->handle . ' using feed: ' . $this->importTask->feed_url, ); // --- START IMPORT TASK --- @@ -155,7 +155,7 @@ class PodcastImport extends BaseCommand // set podcast publication date to the first ever published episode $this->podcast->published_at = $this->getOldestEpisodePublicationDate( - $this->podcast->id + $this->podcast->id, ) ?? $this->podcast->created_at; $podcastModel = new PodcastModel(); @@ -171,7 +171,7 @@ class PodcastImport extends BaseCommand $this->error($exception->getMessage()); log_message( 'critical', - 'Error when importing ' . $this->importTask?->feed_url . PHP_EOL . $exception->getMessage() . PHP_EOL . $exception->getTraceAsString() + 'Error when importing ' . $this->importTask?->feed_url . PHP_EOL . $exception->getMessage() . PHP_EOL . $exception->getTraceAsString(), ); } } @@ -213,13 +213,13 @@ class PodcastImport extends BaseCommand if (($ownerName = $this->podcastFeed->channel->itunes_owner->itunes_name->getValue()) === null) { throw new Exception( - 'Missing podcast owner name. Please include an tag inside the tag.' + 'Missing podcast owner name. Please include an tag inside the tag.', ); } if (($ownerEmail = $this->podcastFeed->channel->itunes_owner->itunes_email->getValue()) === null) { throw new Exception( - 'Missing podcast owner email. Please include an tag inside the tag.' + 'Missing podcast owner email. Please include an tag inside the tag.', ); } @@ -351,7 +351,7 @@ class PodcastImport extends BaseCommand $this->podcast->id, $newPersonId, $personGroupSlug, - $personRoleSlug + $personRoleSlug, )) { throw new Exception(print_r($podcastPersonModel->errors(), true)); } @@ -474,12 +474,12 @@ class PodcastImport extends BaseCommand 'podcast_id' => $this->podcast->id, 'title' => $item->title->getValue(), 'slug' => slugify((string) $item->title->getValue(), 120) . '-' . strtolower( - random_string('alnum', 5) + random_string('alnum', 5), ), 'guid' => $item->guid->getValue(), 'audio' => download_file( $item->enclosure->getAttribute('url'), - $item->enclosure->getAttribute('type') + $item->enclosure->getAttribute('type'), ), 'description_markdown' => $htmlConverter->convert($showNotes), 'description_html' => $showNotes, @@ -572,7 +572,7 @@ class PodcastImport extends BaseCommand $episodeId, $newPersonId, $personGroupSlug, - $personRoleSlug + $personRoleSlug, )) { throw new Exception(print_r($episodePersonModel->errors(), true)); } diff --git a/modules/PodcastImport/Config/Routes.php b/modules/PodcastImport/Config/Routes.php index ed936369..ede5be52 100644 --- a/modules/PodcastImport/Config/Routes.php +++ b/modules/PodcastImport/Config/Routes.php @@ -46,5 +46,5 @@ $routes->group( 'filter' => 'permission:podcast$1.manage-import', ]); }); - } + }, ); diff --git a/modules/PodcastImport/Helpers/podcast_import_helper.php b/modules/PodcastImport/Helpers/podcast_import_helper.php index 29a8bda0..6d086bcf 100644 --- a/modules/PodcastImport/Helpers/podcast_import_helper.php +++ b/modules/PodcastImport/Helpers/podcast_import_helper.php @@ -24,7 +24,7 @@ if (! function_exists('get_import_tasks')) { if ($podcastHandle !== null) { $podcastImportsQueue = array_filter( $podcastImportsQueue, - static fn ($importTask): bool => $importTask->handle === $podcastHandle + static fn ($importTask): bool => $importTask->handle === $podcastHandle, ); } diff --git a/modules/PremiumPodcasts/Config/Routes.php b/modules/PremiumPodcasts/Config/Routes.php index e9501417..80d19586 100644 --- a/modules/PremiumPodcasts/Config/Routes.php +++ b/modules/PremiumPodcasts/Config/Routes.php @@ -66,7 +66,7 @@ $routes->group( [ 'as' => 'subscription-regenerate-token', 'filter' => 'permission:podcast$1.manage-subscriptions', - ] + ], ); $routes->get( 'suspend', @@ -108,7 +108,7 @@ $routes->group( ); }); }); - } + }, ); $routes->group( @@ -126,5 +126,5 @@ $routes->group( $routes->get('lock', 'LockController::lockAction/$1', [ 'as' => 'premium-podcast-lock', ]); - } + }, ); diff --git a/modules/PremiumPodcasts/Config/Services.php b/modules/PremiumPodcasts/Config/Services.php index fb9ec7c0..9ca49df7 100644 --- a/modules/PremiumPodcasts/Config/Services.php +++ b/modules/PremiumPodcasts/Config/Services.php @@ -12,7 +12,7 @@ class Services extends BaseService { public static function premium_podcasts( ?SubscriptionModel $subscriptionModel = null, - bool $getShared = true + bool $getShared = true, ): PremiumPodcasts { if ($getShared) { return self::getSharedInstance('premium_podcasts', $subscriptionModel); diff --git a/modules/PremiumPodcasts/Controllers/SubscriptionController.php b/modules/PremiumPodcasts/Controllers/SubscriptionController.php index 1088a331..4a5d38a5 100644 --- a/modules/PremiumPodcasts/Controllers/SubscriptionController.php +++ b/modules/PremiumPodcasts/Controllers/SubscriptionController.php @@ -43,7 +43,7 @@ class SubscriptionController extends BaseController } if (! ($this->subscription = (new SubscriptionModel())->getSubscriptionById( - (int) $params[1] + (int) $params[1], )) instanceof Subscription) { throw PageNotFoundException::forPageNotFound(); } @@ -86,7 +86,7 @@ class SubscriptionController extends BaseController return redirect()->route('subscription-list', [$this->podcast->id])->with( 'message', - lang('Subscription.messages.linkRemoveSuccess') + lang('Subscription.messages.linkRemoveSuccess'), ); } @@ -99,7 +99,7 @@ class SubscriptionController extends BaseController return redirect()->route('subscription-list', [$this->podcast->id])->with( 'message', - lang('Subscription.messages.linkSaveSuccess') + lang('Subscription.messages.linkSaveSuccess'), ); } @@ -183,7 +183,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.addError'), $email->printDebugger([])] + [lang('Subscription.messages.addError'), $email->printDebugger([])], ); } @@ -193,7 +193,7 @@ class SubscriptionController extends BaseController 'message', lang('Subscription.messages.addSuccess', [ 'subscriber' => $newSubscription->email, - ]) + ]), ); } @@ -230,7 +230,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.regenerateTokenError'), $email->printDebugger([])] + [lang('Subscription.messages.regenerateTokenError'), $email->printDebugger([])], ); } @@ -240,7 +240,7 @@ class SubscriptionController extends BaseController 'message', lang('Subscription.messages.regenerateTokenSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } @@ -299,7 +299,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.editError'), $email->printDebugger([])] + [lang('Subscription.messages.editError'), $email->printDebugger([])], ); } @@ -309,7 +309,7 @@ class SubscriptionController extends BaseController 'message', lang('Subscription.messages.editSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } @@ -355,7 +355,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.suspendError'), $email->printDebugger([])] + [lang('Subscription.messages.suspendError'), $email->printDebugger([])], ); } @@ -365,7 +365,7 @@ class SubscriptionController extends BaseController 'messages', lang('Subscription.messages.suspendSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } @@ -395,7 +395,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.resumeError'), $email->printDebugger([])] + [lang('Subscription.messages.resumeError'), $email->printDebugger([])], ); } @@ -405,7 +405,7 @@ class SubscriptionController extends BaseController 'message', lang('Subscription.messages.resumeSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } @@ -445,7 +445,7 @@ class SubscriptionController extends BaseController $db->transRollback(); return redirect()->route('subscription-list', [$this->podcast->id])->with( 'errors', - [lang('Subscription.messages.deleteError'), $email->printDebugger([])] + [lang('Subscription.messages.deleteError'), $email->printDebugger([])], ); } @@ -455,7 +455,7 @@ class SubscriptionController extends BaseController 'messages', lang('Subscription.messages.deleteSuccess', [ 'subscriber' => $this->subscription->email, - ]) + ]), ); } } diff --git a/modules/PremiumPodcasts/Entities/Subscription.php b/modules/PremiumPodcasts/Entities/Subscription.php index 99ead690..0de27443 100644 --- a/modules/PremiumPodcasts/Entities/Subscription.php +++ b/modules/PremiumPodcasts/Entities/Subscription.php @@ -115,7 +115,7 @@ class Subscription extends Entity { return (new AnalyticsPodcastBySubscriptionModel())->getNumberOfDownloadsLast3Months( $this->podcast_id, - $this->id + $this->id, ); } } diff --git a/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php b/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php index cb8d3f56..cc2495c2 100644 --- a/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php +++ b/modules/PremiumPodcasts/Filters/PodcastUnlockFilter.php @@ -20,7 +20,7 @@ class PodcastUnlockFilter implements FilterInterface * * @param string[]|null $arguments * - * @return RequestInterface|ResponseInterface|string|void + * @return RequestInterface|ResponseInterface|string|null */ #[Override] public function before(RequestInterface $request, $arguments = null) @@ -34,55 +34,61 @@ class PodcastUnlockFilter implements FilterInterface $routerParams = $router->params(); if ($routerParams === []) { - return; + return null; } // no need to go through the unlock form if user is connected if (auth()->loggedIn()) { - return; + return null; } // Make sure this isn't already a premium podcast route if (url_is((string) route_to('premium-podcast-unlock', $routerParams[0]))) { - return; + return null; } // expect 2 parameters (podcast handle and episode slug) if (count($routerParams) < 2) { - return; + return null; } $episode = (new EpisodeModel())->getEpisodeBySlug($routerParams[0], $routerParams[1]); if (! $episode instanceof Episode) { - return; + return null; } // Make sure that public episodes are still accessible if (! $episode->is_premium) { - return; + return null; } // Episode should be embeddable even if it is premium if (url_is((string) route_to('embed', $episode->podcast->handle, $episode->slug))) { - return; + return null; } - // if podcast is locked then send to the unlock form /** @var PremiumPodcasts $premiumPodcasts */ $premiumPodcasts = service('premium_podcasts'); - if (! $premiumPodcasts->check($routerParams[0])) { - session()->set('redirect_url', current_url()); - - return redirect()->route('premium-podcast-unlock', [$routerParams[0]]); + if ($premiumPodcasts->check($routerParams[0])) { + return null; } + + // podcast is locked, send to the unlock form + session() + ->set('redirect_url', current_url()); + + return redirect()->route('premium-podcast-unlock', [$routerParams[0]]); } /** - * @param string[]|null $arguments + * @param list|null $arguments + * + * @return ResponseInterface|null */ #[Override] - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { + return null; } } diff --git a/modules/PremiumPodcasts/PremiumPodcasts.php b/modules/PremiumPodcasts/PremiumPodcasts.php index e1469d97..036b6f05 100644 --- a/modules/PremiumPodcasts/PremiumPodcasts.php +++ b/modules/PremiumPodcasts/PremiumPodcasts.php @@ -63,7 +63,7 @@ class PremiumPodcasts { if (array_key_exists( $podcastHandle, - $this->subscriptions + $this->subscriptions, ) && ($this->subscriptions[$podcastHandle] instanceof Subscription)) { return true; } @@ -86,7 +86,7 @@ class PremiumPodcasts // Store the current subscription object $this->subscriptions[$podcastHandle] = $this->subscriptionModel->getSubscriptionById( - $this->subscriptions[$podcastHandle]->id + $this->subscriptions[$podcastHandle]->id, ); if (! $this->subscriptions[$podcastHandle] instanceof Subscription) { diff --git a/modules/WebSub/Commands/Publish.php b/modules/WebSub/Commands/Publish.php index 9ecd6bfd..4bdee5a4 100644 --- a/modules/WebSub/Commands/Publish.php +++ b/modules/WebSub/Commands/Publish.php @@ -72,7 +72,7 @@ class Publish extends BaseCommand } catch (Exception $exception) { log_message( 'warning', - "COULD NOT PUBLISH @{$podcast->handle} ON {$hub}" . PHP_EOL . $exception->getMessage() + "COULD NOT PUBLISH @{$podcast->handle} ON {$hub}" . PHP_EOL . $exception->getMessage(), ); } } diff --git a/package.json b/package.json index 091973a3..ef776210 100644 --- a/package.json +++ b/package.json @@ -14,14 +14,14 @@ "build": "tsc && vite build", "serve": "vite preview", "build:static": "pnpm run build:icons && pnpm run build:svg", - "build:icons": "svgo -f app/Resources/icons -o app/Resources/icons -r --config=./.svgo.icons.cjs", - "build:svg": "svgo -f app/Resources/images -o public/assets/images -r --config=./.svgo.cjs", + "build:icons": "svgo -f resources/icons -o resources/icons -r --config=./.svgo.icons.cjs", + "build:svg": "svgo -f resources/static/images -o resources/static/images -r --config=./.svgo.cjs", "lint": "eslint", "lint:fix": "eslint --fix", - "lint:css": "stylelint -f verbose \"app/Resources/**/*.css\"", - "lint:css:fix": "stylelint -f verbose --fix \"app/Resources/**/*.css\"", + "lint:css": "stylelint -f verbose \"resources/**/*.css\"", + "lint:css:fix": "stylelint -f verbose --fix \"resources/**/*.css\"", "prettier": "prettier --check .", - "prettier:fix": "prettier --write .", + "format": "prettier --write .", "typecheck": "tsc", "all-contributors:add": "all-contributors add", "all-contributors:generate": "all-contributors generate", @@ -32,73 +32,77 @@ "dependencies": { "@amcharts/amcharts4": "^4.10.39", "@amcharts/amcharts4-geodata": "^4.1.30", - "@codemirror/commands": "^6.7.1", + "@codemirror/commands": "^6.8.0", "@codemirror/lang-html": "^6.4.9", "@codemirror/lang-xml": "^6.1.0", "@codemirror/language": "^6.10.8", - "@codemirror/state": "^6.5.0", - "@codemirror/view": "^6.36.1", - "@floating-ui/dom": "^1.6.12", + "@codemirror/state": "^6.5.2", + "@codemirror/view": "^6.36.2", + "@floating-ui/dom": "^1.6.13", "@github/clipboard-copy-element": "^1.3.0", "@github/hotkey": "^3.1.1", "@github/markdown-toolbar-element": "^2.2.3", - "@github/relative-time-element": "^4.4.4", + "@github/relative-time-element": "^4.4.5", "@patternfly/elements": "^4.0.2", "@vime/core": "^5.4.1", - "choices.js": "^11.0.3", + "choices.js": "^11.0.6", "codemirror": "^6.0.1", "flatpickr": "^4.6.13", - "htmlfy": "^0.5.0", + "htmlfy": "^0.6.1", "leaflet": "^1.9.4", "leaflet.markercluster": "^1.5.3", "lit": "^3.2.1", - "marked": "^15.0.4", - "wavesurfer.js": "^7.8.14", - "xml-formatter": "^3.6.3" + "marked": "^15.0.7", + "wavesurfer.js": "^7.9.1", + "xml-formatter": "^3.6.4" }, "devDependencies": { - "@commitlint/cli": "^19.6.1", - "@commitlint/config-conventional": "^19.6.0", + "@commitlint/cli": "^19.7.1", + "@commitlint/config-conventional": "^19.7.1", "@csstools/css-tokenizer": "^3.0.3", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.17.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "^9.21.0", "@semantic-release/changelog": "^6.0.3", - "@semantic-release/exec": "^6.0.3", + "@semantic-release/exec": "^7.0.3", "@semantic-release/git": "^10.0.1", - "@semantic-release/gitlab": "^13.2.3", - "@tailwindcss/forms": "^0.5.9", - "@tailwindcss/typography": "^0.5.15", - "@types/eslint__js": "^8.42.3", - "@types/leaflet": "^1.9.15", + "@semantic-release/gitlab": "^13.2.4", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.16", + "@types/leaflet": "^1.9.16", "all-contributors-cli": "^6.26.1", "commitizen": "^4.3.1", "conventional-changelog-conventionalcommits": "^8.0.0", "cross-env": "^7.0.3", "cssnano": "^7.0.6", "cz-conventional-changelog": "^3.3.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint": "^9.17.0", - "globals": "^15.14.0", + "eslint": "^9.21.0", + "eslint-config-prettier": "^10.0.2", + "eslint-plugin-prettier": "^5.2.3", + "glob": "^11.0.1", + "globals": "^16.0.0", "husky": "^9.1.7", "is-ci": "^4.1.0", - "lint-staged": "^15.3.0", + "lint-staged": "^15.4.3", + "postcss": "^8.5.3", "postcss-import": "^16.1.0", "postcss-nesting": "^13.0.1", - "postcss-preset-env": "^10.1.3", + "postcss-preset-env": "^10.1.5", "postcss-reporter": "^7.1.0", - "postcss": "^8.4.49", + "prettier": "3.5.2", "prettier-plugin-organize-imports": "^4.1.0", - "prettier": "3.4.2", - "semantic-release": "^24.2.0", - "stylelint-config-standard": "^36.0.1", - "stylelint": "^16.12.0", + "semantic-release": "^24.2.3", + "sharp": "^0.33.5", + "stylelint": "^16.15.0", + "stylelint-config-standard": "^37.0.0", "svgo": "^3.3.2", "tailwindcss": "^3.4.17", - "typescript-eslint": "^8.18.2", - "typescript": "~5.7.2", + "typescript": "~5.7.3", + "typescript-eslint": "^8.25.0", + "vite": "^6.2.0", + "vite-plugin-codeigniter": "^1.0.1", + "vite-plugin-inspect": "^11.0.0", "vite-plugin-pwa": "^0.21.1", - "vite": "^6.0.6", + "vite-plugin-static-copy": "^2.3.0", "workbox-build": "^7.3.0", "workbox-core": "^7.3.0", "workbox-routing": "^7.3.0", diff --git a/php-icons.php b/php-icons.php index 64c626a3..f3f59198 100644 --- a/php-icons.php +++ b/php-icons.php @@ -5,11 +5,11 @@ declare(strict_types=1); use PHPIcons\Config\PHPIconsConfig; return PHPIconsConfig::configure() - ->withPaths([__DIR__ . '/app', __DIR__ . '/themes']) + ->withPaths([__DIR__ . '/app', __DIR__ . '/themes', __DIR__ . '/resources']) ->withLocalIconSets([ - 'funding' => __DIR__ . '/app/Resources/icons/funding', - 'podcasting' => __DIR__ . '/app/Resources/icons/podcasting', - 'social' => __DIR__ . '/app/Resources/icons/social', + 'funding' => __DIR__ . '/resources/icons/funding', + 'podcasting' => __DIR__ . '/resources/icons/podcasting', + 'social' => __DIR__ . '/resources/icons/social', ]) ->withDefaultIconPerSet([ 'funding' => 'funding:default', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94a674fd..e06cc32a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,8 +14,8 @@ importers: specifier: ^4.1.30 version: 4.1.30 "@codemirror/commands": - specifier: ^6.7.1 - version: 6.7.1 + specifier: ^6.8.0 + version: 6.8.0 "@codemirror/lang-html": specifier: ^6.4.9 version: 6.4.9 @@ -26,14 +26,14 @@ importers: specifier: ^6.10.8 version: 6.10.8 "@codemirror/state": - specifier: ^6.5.0 - version: 6.5.0 + specifier: ^6.5.2 + version: 6.5.2 "@codemirror/view": - specifier: ^6.36.1 - version: 6.36.1 + specifier: ^6.36.2 + version: 6.36.2 "@floating-ui/dom": - specifier: ^1.6.12 - version: 1.6.12 + specifier: ^1.6.13 + version: 1.6.13 "@github/clipboard-copy-element": specifier: ^1.3.0 version: 1.3.0 @@ -44,8 +44,8 @@ importers: specifier: ^2.2.3 version: 2.2.3 "@github/relative-time-element": - specifier: ^4.4.4 - version: 4.4.4 + specifier: ^4.4.5 + version: 4.4.5 "@patternfly/elements": specifier: ^4.0.2 version: 4.0.2 @@ -53,8 +53,8 @@ importers: specifier: ^5.4.1 version: 5.4.1 choices.js: - specifier: ^11.0.3 - version: 11.0.3 + specifier: ^11.0.6 + version: 11.0.6 codemirror: specifier: ^6.0.1 version: 6.0.1(@lezer/common@1.2.3) @@ -62,8 +62,8 @@ importers: specifier: ^4.6.13 version: 4.6.13 htmlfy: - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.6.1 + version: 0.6.1 leaflet: specifier: ^1.9.4 version: 1.9.4 @@ -74,60 +74,57 @@ importers: specifier: ^3.2.1 version: 3.2.1 marked: - specifier: ^15.0.4 - version: 15.0.4 + specifier: ^15.0.7 + version: 15.0.7 wavesurfer.js: - specifier: ^7.8.14 - version: 7.8.14 + specifier: ^7.9.1 + version: 7.9.1 xml-formatter: - specifier: ^3.6.3 - version: 3.6.3 + specifier: ^3.6.4 + version: 3.6.4 devDependencies: "@commitlint/cli": - specifier: ^19.6.1 - version: 19.6.1(@types/node@22.9.0)(typescript@5.7.2) + specifier: ^19.7.1 + version: 19.7.1(@types/node@22.9.0)(typescript@5.7.3) "@commitlint/config-conventional": - specifier: ^19.6.0 - version: 19.6.0 + specifier: ^19.7.1 + version: 19.7.1 "@csstools/css-tokenizer": specifier: ^3.0.3 version: 3.0.3 "@eslint/eslintrc": - specifier: ^3.2.0 - version: 3.2.0 + specifier: ^3.3.0 + version: 3.3.0 "@eslint/js": - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.21.0 + version: 9.21.0 "@semantic-release/changelog": specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.2.0(typescript@5.7.2)) + version: 6.0.3(semantic-release@24.2.3(typescript@5.7.3)) "@semantic-release/exec": - specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.2.0(typescript@5.7.2)) + specifier: ^7.0.3 + version: 7.0.3(semantic-release@24.2.3(typescript@5.7.3)) "@semantic-release/git": specifier: ^10.0.1 - version: 10.0.1(semantic-release@24.2.0(typescript@5.7.2)) + version: 10.0.1(semantic-release@24.2.3(typescript@5.7.3)) "@semantic-release/gitlab": - specifier: ^13.2.3 - version: 13.2.3(semantic-release@24.2.0(typescript@5.7.2)) + specifier: ^13.2.4 + version: 13.2.4(semantic-release@24.2.3(typescript@5.7.3)) "@tailwindcss/forms": - specifier: ^0.5.9 - version: 0.5.9(tailwindcss@3.4.17) + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@3.4.17) "@tailwindcss/typography": - specifier: ^0.5.15 - version: 0.5.15(tailwindcss@3.4.17) - "@types/eslint__js": - specifier: ^8.42.3 - version: 8.42.3 + specifier: ^0.5.16 + version: 0.5.16(tailwindcss@3.4.17) "@types/leaflet": - specifier: ^1.9.15 - version: 1.9.15 + specifier: ^1.9.16 + version: 1.9.16 all-contributors-cli: specifier: ^6.26.1 version: 6.26.1 commitizen: specifier: ^4.3.1 - version: 4.3.1(@types/node@22.9.0)(typescript@5.7.2) + version: 4.3.1(@types/node@22.9.0)(typescript@5.7.3) conventional-changelog-conventionalcommits: specifier: ^8.0.0 version: 8.0.0 @@ -136,22 +133,25 @@ importers: version: 7.0.3 cssnano: specifier: ^7.0.6 - version: 7.0.6(postcss@8.4.49) + version: 7.0.6(postcss@8.5.3) cz-conventional-changelog: specifier: ^3.3.0 - version: 3.3.0(@types/node@22.9.0)(typescript@5.7.2) + version: 3.3.0(@types/node@22.9.0)(typescript@5.7.3) eslint: - specifier: ^9.17.0 - version: 9.17.0(jiti@2.4.1) + specifier: ^9.21.0 + version: 9.21.0(jiti@2.4.1) eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@9.17.0(jiti@2.4.1)) + specifier: ^10.0.2 + version: 10.0.2(eslint@9.21.0(jiti@2.4.1)) eslint-plugin-prettier: - specifier: ^5.2.1 - version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.17.0(jiti@2.4.1)))(eslint@9.17.0(jiti@2.4.1))(prettier@3.4.2) + specifier: ^5.2.3 + version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.1)))(eslint@9.21.0(jiti@2.4.1))(prettier@3.5.2) + glob: + specifier: ^11.0.1 + version: 11.0.1 globals: - specifier: ^15.14.0 - version: 15.14.0 + specifier: ^16.0.0 + version: 16.0.0 husky: specifier: ^9.1.7 version: 9.1.7 @@ -159,38 +159,41 @@ importers: specifier: ^4.1.0 version: 4.1.0 lint-staged: - specifier: ^15.3.0 - version: 15.3.0 + specifier: ^15.4.3 + version: 15.4.3 postcss: - specifier: ^8.4.49 - version: 8.4.49 + specifier: ^8.5.3 + version: 8.5.3 postcss-import: specifier: ^16.1.0 - version: 16.1.0(postcss@8.4.49) + version: 16.1.0(postcss@8.5.3) postcss-nesting: specifier: ^13.0.1 - version: 13.0.1(postcss@8.4.49) + version: 13.0.1(postcss@8.5.3) postcss-preset-env: - specifier: ^10.1.3 - version: 10.1.3(postcss@8.4.49) + specifier: ^10.1.5 + version: 10.1.5(postcss@8.5.3) postcss-reporter: specifier: ^7.1.0 - version: 7.1.0(postcss@8.4.49) + version: 7.1.0(postcss@8.5.3) prettier: - specifier: 3.4.2 - version: 3.4.2 + specifier: 3.5.2 + version: 3.5.2 prettier-plugin-organize-imports: specifier: ^4.1.0 - version: 4.1.0(prettier@3.4.2)(typescript@5.7.2) + version: 4.1.0(prettier@3.5.2)(typescript@5.7.3) semantic-release: - specifier: ^24.2.0 - version: 24.2.0(typescript@5.7.2) + specifier: ^24.2.3 + version: 24.2.3(typescript@5.7.3) + sharp: + specifier: ^0.33.5 + version: 0.33.5 stylelint: - specifier: ^16.12.0 - version: 16.12.0(typescript@5.7.2) + specifier: ^16.15.0 + version: 16.15.0(typescript@5.7.3) stylelint-config-standard: - specifier: ^36.0.1 - version: 36.0.1(stylelint@16.12.0(typescript@5.7.2)) + specifier: ^37.0.0 + version: 37.0.0(stylelint@16.15.0(typescript@5.7.3)) svgo: specifier: ^3.3.2 version: 3.3.2 @@ -198,17 +201,26 @@ importers: specifier: ^3.4.17 version: 3.4.17 typescript: - specifier: ~5.7.2 - version: 5.7.2 + specifier: ~5.7.3 + version: 5.7.3 typescript-eslint: - specifier: ^8.18.2 - version: 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) + specifier: ^8.25.0 + version: 8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3) vite: - specifier: ^6.0.6 - version: 6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1) + specifier: ^6.2.0 + version: 6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + vite-plugin-codeigniter: + specifier: ^1.0.1 + version: 1.0.1(vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + vite-plugin-inspect: + specifier: ^11.0.0 + version: 11.0.0(vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) vite-plugin-pwa: specifier: ^0.21.1 - version: 0.21.1(vite@6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1))(workbox-build@7.3.0)(workbox-window@7.3.0) + version: 0.21.1(vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0) + vite-plugin-static-copy: + specifier: ^2.3.0 + version: 2.3.0(vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) workbox-build: specifier: ^7.3.0 version: 7.3.0 @@ -1032,10 +1044,10 @@ packages: "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - "@codemirror/commands@6.7.1": + "@codemirror/commands@6.8.0": resolution: { - integrity: sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==, + integrity: sha512-q8VPEFaEP4ikSlt6ZxjB3zW72+7osfAYW9i8Zu943uqbKuz6utc1+F170hyLUCUltXORjQXRyYQNfkckzA/bPQ==, } "@codemirror/lang-css@6.3.1": @@ -1080,16 +1092,16 @@ packages: integrity: sha512-6+iLsXvITWKHYlkgHPCs/qiX4dNzn8N78YfhOFvPtPYCkuXqZq10rAfsUMhOq7O/1VjJqdXRflyExlfVcu/9VQ==, } - "@codemirror/state@6.5.0": + "@codemirror/state@6.5.2": resolution: { - integrity: sha512-MwBHVK60IiIHDcoMet78lxt6iw5gJOGSbNbOIVBHWVXIH4/Nq1+GQgLLGgI1KlnN86WDXsPudVaqYHKBIx7Eyw==, + integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==, } - "@codemirror/view@6.36.1": + "@codemirror/view@6.36.2": resolution: { - integrity: sha512-miD1nyT4m4uopZaDdO2uXU/LLHliKNYL9kB1C1wJHrunHLm/rpkb5QVSokqgw9hFqEZakrdlb/VGWX8aYZTslQ==, + integrity: sha512-DZ6ONbs8qdJK0fdN7AB82CgI6tYXf4HWk1wSVa0+9bhVznCuuvhQtX8bFBoy3dv8rZSQqUd8GvhVAcielcidrA==, } "@colors/colors@1.5.0": @@ -1099,18 +1111,18 @@ packages: } engines: { node: ">=0.1.90" } - "@commitlint/cli@19.6.1": + "@commitlint/cli@19.7.1": resolution: { - integrity: sha512-8hcyA6ZoHwWXC76BoC8qVOSr8xHy00LZhZpauiD0iO0VYbVhMnED0da85lTfIULxl7Lj4c6vZgF0Wu/ed1+jlQ==, + integrity: sha512-iObGjR1tE/PfDtDTEfd+tnRkB3/HJzpQqRTyofS2MPPkDn1mp3DBC8SoPDayokfAy+xKhF8+bwRCJO25Nea0YQ==, } engines: { node: ">=v18" } hasBin: true - "@commitlint/config-conventional@19.6.0": + "@commitlint/config-conventional@19.7.1": resolution: { - integrity: sha512-DJT40iMnTYtBtUfw9ApbsLZFke1zKh6llITVJ+x9mtpHD08gsNXaIRqHTmwTZL3dNX5+WoyK7pCN/5zswvkBCQ==, + integrity: sha512-fsEIF8zgiI/FIWSnykdQNj/0JE4av08MudLTyYHm4FlLWemKoQvPNUYU2M/3tktWcCEyq7aOkDDgtjrmgWFbvg==, } engines: { node: ">=v18" } @@ -1142,17 +1154,17 @@ packages: } engines: { node: ">=v18" } - "@commitlint/is-ignored@19.6.0": + "@commitlint/is-ignored@19.7.1": resolution: { - integrity: sha512-Ov6iBgxJQFR9koOupDPHvcHU9keFupDgtB3lObdEZDroiG4jj1rzky60fbQozFKVYRTUdrBGICHG0YVmRuAJmw==, + integrity: sha512-3IaOc6HVg2hAoGleRK3r9vL9zZ3XY0rf1RsUf6jdQLuaD46ZHnXBiOPTyQ004C4IvYjSWqJwlh0/u2P73aIE3g==, } engines: { node: ">=v18" } - "@commitlint/lint@19.6.0": + "@commitlint/lint@19.7.1": resolution: { - integrity: sha512-LRo7zDkXtcIrpco9RnfhOKeg8PAnE3oDDoalnrVU/EVaKHYBWYL1DlRR7+3AWn0JiBqD8yKOfetVxJGdEtZ0tg==, + integrity: sha512-LhcPfVjcOcOZA7LEuBBeO00o3MeZa+tWrX9Xyl1r9PMd5FWsEoZI9IgnGqTKZ0lZt5pO3ZlstgnRyY1CJJc9Xg==, } engines: { node: ">=v18" } @@ -1236,27 +1248,27 @@ packages: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - "@csstools/color-helpers@5.0.1": + "@csstools/color-helpers@5.0.2": resolution: { - integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==, + integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==, } engines: { node: ">=18" } - "@csstools/css-calc@2.1.1": + "@csstools/css-calc@2.1.2": resolution: { - integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==, + integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==, } engines: { node: ">=18" } peerDependencies: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - "@csstools/css-color-parser@3.0.7": + "@csstools/css-color-parser@3.0.8": resolution: { - integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==, + integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==, } engines: { node: ">=18" } peerDependencies: @@ -1298,19 +1310,19 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-function@4.0.7": + "@csstools/postcss-color-function@4.0.8": resolution: { - integrity: sha512-aDHYmhNIHR6iLw4ElWhf+tRqqaXwKnMl0YsQ/X105Zc4dQwe6yJpMrTN6BwOoESrkDjOYMOfORviSSLeDTJkdQ==, + integrity: sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-color-mix-function@3.0.7": + "@csstools/postcss-color-mix-function@3.0.8": resolution: { - integrity: sha512-e68Nev4CxZYCLcrfWhHH4u/N1YocOfTmw67/kVX5Rb7rnguqqLyxPjhHWjSBX8o4bmyuukmNf3wrUSU3//kT7g==, + integrity: sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==, } engines: { node: ">=18" } peerDependencies: @@ -1325,10 +1337,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-exponential-functions@2.0.6": + "@csstools/postcss-exponential-functions@2.0.7": resolution: { - integrity: sha512-IgJA5DQsQLu/upA3HcdvC6xEMR051ufebBTIXZ5E9/9iiaA7juXWz1ceYj814lnDYP/7eWjZnw0grRJlX4eI6g==, + integrity: sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==, } engines: { node: ">=18" } peerDependencies: @@ -1343,28 +1355,28 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-gamut-mapping@2.0.7": + "@csstools/postcss-gamut-mapping@2.0.8": resolution: { - integrity: sha512-gzFEZPoOkY0HqGdyeBXR3JP218Owr683u7KOZazTK7tQZBE8s2yhg06W1tshOqk7R7SWvw9gkw2TQogKpIW8Xw==, + integrity: sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-gradients-interpolation-method@5.0.7": + "@csstools/postcss-gradients-interpolation-method@5.0.8": resolution: { - integrity: sha512-WgEyBeg6glUeTdS2XT7qeTFBthTJuXlS9GFro/DVomj7W7WMTamAwpoP4oQCq/0Ki2gvfRYFi/uZtmRE14/DFA==, + integrity: sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-hwb-function@4.0.7": + "@csstools/postcss-hwb-function@4.0.8": resolution: { - integrity: sha512-LKYqjO+wGwDCfNIEllessCBWfR4MS/sS1WXO+j00KKyOjm7jDW2L6jzUmqASEiv/kkJO39GcoIOvTTfB3yeBUA==, + integrity: sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==, } engines: { node: ">=18" } peerDependencies: @@ -1379,10 +1391,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-initial@2.0.0": + "@csstools/postcss-initial@2.0.1": resolution: { - integrity: sha512-dv2lNUKR+JV+OOhZm9paWzYBXOCi+rJPqJ2cJuhh9xd8USVrd0cBEPczla81HNOyThMQWeCcdln3gZkQV2kYxA==, + integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==, } engines: { node: ">=18" } peerDependencies: @@ -1451,10 +1463,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-media-minmax@2.0.6": + "@csstools/postcss-media-minmax@2.0.7": resolution: { - integrity: sha512-J1+4Fr2W3pLZsfxkFazK+9kr96LhEYqoeBszLmFjb6AjYs+g9oDAw3J5oQignLKk3rC9XHW+ebPTZ9FaW5u5pg==, + integrity: sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==, } engines: { node: ">=18" } peerDependencies: @@ -1487,10 +1499,10 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-oklab-function@4.0.7": + "@csstools/postcss-oklab-function@4.0.8": resolution: { - integrity: sha512-I6WFQIbEKG2IO3vhaMGZDkucbCaUSXMxvHNzDdnfsTCF5tc0UlV3Oe2AhamatQoKFjBi75dSEMrgWq3+RegsOQ==, + integrity: sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==, } engines: { node: ">=18" } peerDependencies: @@ -1505,19 +1517,19 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-random-function@1.0.2": + "@csstools/postcss-random-function@1.0.3": resolution: { - integrity: sha512-vBCT6JvgdEkvRc91NFoNrLjgGtkLWt47GKT6E2UDn3nd8ZkMBiziQ1Md1OiKoSsgzxsSnGKG3RVdhlbdZEkHjA==, + integrity: sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-relative-color-syntax@3.0.7": + "@csstools/postcss-relative-color-syntax@3.0.8": resolution: { - integrity: sha512-apbT31vsJVd18MabfPOnE977xgct5B1I+Jpf+Munw3n6kKb1MMuUmGGH+PT9Hm/fFs6fe61Q/EWnkrb4bNoNQw==, + integrity: sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==, } engines: { node: ">=18" } peerDependencies: @@ -1532,37 +1544,37 @@ packages: peerDependencies: postcss: ^8.4 - "@csstools/postcss-sign-functions@1.1.1": + "@csstools/postcss-sign-functions@1.1.2": resolution: { - integrity: sha512-MslYkZCeMQDxetNkfmmQYgKCy4c+w9pPDfgOBCJOo/RI1RveEUdZQYtOfrC6cIZB7sD7/PHr2VGOcMXlZawrnA==, + integrity: sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-stepped-value-functions@4.0.6": + "@csstools/postcss-stepped-value-functions@4.0.7": resolution: { - integrity: sha512-/dwlO9w8vfKgiADxpxUbZOWlL5zKoRIsCymYoh1IPuBsXODKanKnfuZRr32DEqT0//3Av1VjfNZU9yhxtEfIeA==, + integrity: sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-text-decoration-shorthand@4.0.1": + "@csstools/postcss-text-decoration-shorthand@4.0.2": resolution: { - integrity: sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==, + integrity: sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==, } engines: { node: ">=18" } peerDependencies: postcss: ^8.4 - "@csstools/postcss-trigonometric-functions@4.0.6": + "@csstools/postcss-trigonometric-functions@4.0.7": resolution: { - integrity: sha512-c4Y1D2Why/PeccaSouXnTt6WcNHJkoJRidV2VW9s5gJ97cNxnLgQ4Qj8qOqkIR9VmTQKJyNcbF4hy79ZQnWD7A==, + integrity: sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==, } engines: { node: ">=18" } peerDependencies: @@ -1610,226 +1622,232 @@ packages: integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==, } - "@esbuild/aix-ppc64@0.24.2": + "@emnapi/runtime@1.3.1": resolution: { - integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==, + integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==, + } + + "@esbuild/aix-ppc64@0.25.0": + resolution: + { + integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==, } engines: { node: ">=18" } cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.24.2": + "@esbuild/android-arm64@0.25.0": resolution: { - integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==, + integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==, } engines: { node: ">=18" } cpu: [arm64] os: [android] - "@esbuild/android-arm@0.24.2": + "@esbuild/android-arm@0.25.0": resolution: { - integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==, + integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==, } engines: { node: ">=18" } cpu: [arm] os: [android] - "@esbuild/android-x64@0.24.2": + "@esbuild/android-x64@0.25.0": resolution: { - integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==, + integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==, } engines: { node: ">=18" } cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.24.2": + "@esbuild/darwin-arm64@0.25.0": resolution: { - integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==, + integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==, } engines: { node: ">=18" } cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.24.2": + "@esbuild/darwin-x64@0.25.0": resolution: { - integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==, + integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==, } engines: { node: ">=18" } cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.24.2": + "@esbuild/freebsd-arm64@0.25.0": resolution: { - integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==, + integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==, } engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.24.2": + "@esbuild/freebsd-x64@0.25.0": resolution: { - integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==, + integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==, } engines: { node: ">=18" } cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.24.2": + "@esbuild/linux-arm64@0.25.0": resolution: { - integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==, + integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==, } engines: { node: ">=18" } cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.24.2": + "@esbuild/linux-arm@0.25.0": resolution: { - integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==, + integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==, } engines: { node: ">=18" } cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.24.2": + "@esbuild/linux-ia32@0.25.0": resolution: { - integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==, + integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==, } engines: { node: ">=18" } cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.24.2": + "@esbuild/linux-loong64@0.25.0": resolution: { - integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==, + integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==, } engines: { node: ">=18" } cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.24.2": + "@esbuild/linux-mips64el@0.25.0": resolution: { - integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==, + integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==, } engines: { node: ">=18" } cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.24.2": + "@esbuild/linux-ppc64@0.25.0": resolution: { - integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==, + integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==, } engines: { node: ">=18" } cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.24.2": + "@esbuild/linux-riscv64@0.25.0": resolution: { - integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==, + integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==, } engines: { node: ">=18" } cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.24.2": + "@esbuild/linux-s390x@0.25.0": resolution: { - integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==, + integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==, } engines: { node: ">=18" } cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.24.2": + "@esbuild/linux-x64@0.25.0": resolution: { - integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==, + integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==, } engines: { node: ">=18" } cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.24.2": + "@esbuild/netbsd-arm64@0.25.0": resolution: { - integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==, + integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==, } engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.24.2": + "@esbuild/netbsd-x64@0.25.0": resolution: { - integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==, + integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==, } engines: { node: ">=18" } cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.24.2": + "@esbuild/openbsd-arm64@0.25.0": resolution: { - integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==, + integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==, } engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.24.2": + "@esbuild/openbsd-x64@0.25.0": resolution: { - integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==, + integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==, } engines: { node: ">=18" } cpu: [x64] os: [openbsd] - "@esbuild/sunos-x64@0.24.2": + "@esbuild/sunos-x64@0.25.0": resolution: { - integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==, + integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==, } engines: { node: ">=18" } cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.24.2": + "@esbuild/win32-arm64@0.25.0": resolution: { - integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==, + integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==, } engines: { node: ">=18" } cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.24.2": + "@esbuild/win32-ia32@0.25.0": resolution: { - integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==, + integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==, } engines: { node: ">=18" } cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.24.2": + "@esbuild/win32-x64@0.25.0": resolution: { - integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==, + integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==, } engines: { node: ">=18" } cpu: [x64] @@ -1851,45 +1869,45 @@ packages: } engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - "@eslint/config-array@0.19.1": + "@eslint/config-array@0.19.2": resolution: { - integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==, + integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/core@0.9.1": + "@eslint/core@0.12.0": resolution: { - integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==, + integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/eslintrc@3.2.0": + "@eslint/eslintrc@3.3.0": resolution: { - integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==, + integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/js@9.17.0": + "@eslint/js@9.21.0": resolution: { - integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==, + integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/object-schema@2.1.5": + "@eslint/object-schema@2.1.6": resolution: { - integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==, + integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/plugin-kit@0.2.4": + "@eslint/plugin-kit@0.2.7": resolution: { - integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==, + integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -1899,16 +1917,16 @@ packages: integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==, } - "@floating-ui/dom@1.6.12": + "@floating-ui/dom@1.6.13": resolution: { - integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==, + integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==, } - "@floating-ui/utils@0.2.8": + "@floating-ui/utils@0.2.9": resolution: { - integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==, + integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==, } "@foliojs-fork/fontkit@1.9.2": @@ -1953,10 +1971,10 @@ packages: integrity: sha512-AlquKGee+IWiAMYVB0xyHFZRMnu4n3X4HTvJHu79GiVJ1ojTukCWyxMlF5NMsecoLcBKsuBhx3QPv2vkE/zQ0A==, } - "@github/relative-time-element@4.4.4": + "@github/relative-time-element@4.4.5": resolution: { - integrity: sha512-Oi8uOL8O+ZWLD7dHRWCkm2cudcTYtB3VyOYf9BtzCgDGm+OKomyOREtItNMtWl1dxvec62BTKErq36uy+RYxQg==, + integrity: sha512-9ejPtayBDIJfEU8x1fg/w2o5mahHkkp1SC6uObDtoKs4Gn+2a1vNK8XIiNDD8rMeEfpvDjydgSZZ+uk+7N0VsQ==, } "@humanfs/core@0.19.1": @@ -1987,13 +2005,175 @@ packages: } engines: { node: ">=18.18" } - "@humanwhocodes/retry@0.4.1": + "@humanwhocodes/retry@0.4.2": resolution: { - integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==, + integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==, } engines: { node: ">=18.18" } + "@img/sharp-darwin-arm64@0.33.5": + resolution: + { + integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [darwin] + + "@img/sharp-darwin-x64@0.33.5": + resolution: + { + integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-darwin-arm64@1.0.4": + resolution: + { + integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==, + } + cpu: [arm64] + os: [darwin] + + "@img/sharp-libvips-darwin-x64@1.0.4": + resolution: + { + integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==, + } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-linux-arm64@1.0.4": + resolution: + { + integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==, + } + cpu: [arm64] + os: [linux] + + "@img/sharp-libvips-linux-arm@1.0.5": + resolution: + { + integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==, + } + cpu: [arm] + os: [linux] + + "@img/sharp-libvips-linux-s390x@1.0.4": + resolution: + { + integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==, + } + cpu: [s390x] + os: [linux] + + "@img/sharp-libvips-linux-x64@1.0.4": + resolution: + { + integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==, + } + cpu: [x64] + os: [linux] + + "@img/sharp-libvips-linuxmusl-arm64@1.0.4": + resolution: + { + integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==, + } + cpu: [arm64] + os: [linux] + + "@img/sharp-libvips-linuxmusl-x64@1.0.4": + resolution: + { + integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==, + } + cpu: [x64] + os: [linux] + + "@img/sharp-linux-arm64@0.33.5": + resolution: + { + integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [linux] + + "@img/sharp-linux-arm@0.33.5": + resolution: + { + integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm] + os: [linux] + + "@img/sharp-linux-s390x@0.33.5": + resolution: + { + integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [s390x] + os: [linux] + + "@img/sharp-linux-x64@0.33.5": + resolution: + { + integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [linux] + + "@img/sharp-linuxmusl-arm64@0.33.5": + resolution: + { + integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [linux] + + "@img/sharp-linuxmusl-x64@0.33.5": + resolution: + { + integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [linux] + + "@img/sharp-wasm32@0.33.5": + resolution: + { + integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [wasm32] + + "@img/sharp-win32-ia32@0.33.5": + resolution: + { + integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [ia32] + os: [win32] + + "@img/sharp-win32-x64@0.33.5": + resolution: + { + integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [win32] + "@isaacs/cliui@8.0.2": resolution: { @@ -2040,6 +2220,12 @@ packages: integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, } + "@keyv/serialize@1.0.2": + resolution: + { + integrity: sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==, + } + "@lezer/common@1.2.3": resolution: { @@ -2261,6 +2447,12 @@ packages: } engines: { node: ">=12" } + "@polka/url@1.0.0-next.28": + resolution: + { + integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==, + } + "@rollup/plugin-babel@5.3.1": resolution: { @@ -2328,146 +2520,154 @@ packages: rollup: optional: true - "@rollup/rollup-android-arm-eabi@4.24.4": + "@rollup/rollup-android-arm-eabi@4.34.8": resolution: { - integrity: sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==, + integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==, } cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.24.4": + "@rollup/rollup-android-arm64@4.34.8": resolution: { - integrity: sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==, + integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==, } cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.24.4": + "@rollup/rollup-darwin-arm64@4.34.8": resolution: { - integrity: sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==, + integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==, } cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.24.4": + "@rollup/rollup-darwin-x64@4.34.8": resolution: { - integrity: sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==, + integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==, } cpu: [x64] os: [darwin] - "@rollup/rollup-freebsd-arm64@4.24.4": + "@rollup/rollup-freebsd-arm64@4.34.8": resolution: { - integrity: sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==, + integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==, } cpu: [arm64] os: [freebsd] - "@rollup/rollup-freebsd-x64@4.24.4": + "@rollup/rollup-freebsd-x64@4.34.8": resolution: { - integrity: sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==, + integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==, } cpu: [x64] os: [freebsd] - "@rollup/rollup-linux-arm-gnueabihf@4.24.4": + "@rollup/rollup-linux-arm-gnueabihf@4.34.8": resolution: { - integrity: sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==, + integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==, } cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm-musleabihf@4.24.4": + "@rollup/rollup-linux-arm-musleabihf@4.34.8": resolution: { - integrity: sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==, + integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==, } cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm64-gnu@4.24.4": + "@rollup/rollup-linux-arm64-gnu@4.34.8": resolution: { - integrity: sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==, + integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==, } cpu: [arm64] os: [linux] - "@rollup/rollup-linux-arm64-musl@4.24.4": + "@rollup/rollup-linux-arm64-musl@4.34.8": resolution: { - integrity: sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==, + integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==, } cpu: [arm64] os: [linux] - "@rollup/rollup-linux-powerpc64le-gnu@4.24.4": + "@rollup/rollup-linux-loongarch64-gnu@4.34.8": resolution: { - integrity: sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==, + integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==, + } + cpu: [loong64] + os: [linux] + + "@rollup/rollup-linux-powerpc64le-gnu@4.34.8": + resolution: + { + integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==, } cpu: [ppc64] os: [linux] - "@rollup/rollup-linux-riscv64-gnu@4.24.4": + "@rollup/rollup-linux-riscv64-gnu@4.34.8": resolution: { - integrity: sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==, + integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==, } cpu: [riscv64] os: [linux] - "@rollup/rollup-linux-s390x-gnu@4.24.4": + "@rollup/rollup-linux-s390x-gnu@4.34.8": resolution: { - integrity: sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==, + integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==, } cpu: [s390x] os: [linux] - "@rollup/rollup-linux-x64-gnu@4.24.4": + "@rollup/rollup-linux-x64-gnu@4.34.8": resolution: { - integrity: sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==, + integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==, } cpu: [x64] os: [linux] - "@rollup/rollup-linux-x64-musl@4.24.4": + "@rollup/rollup-linux-x64-musl@4.34.8": resolution: { - integrity: sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==, + integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==, } cpu: [x64] os: [linux] - "@rollup/rollup-win32-arm64-msvc@4.24.4": + "@rollup/rollup-win32-arm64-msvc@4.34.8": resolution: { - integrity: sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==, + integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==, } cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.24.4": + "@rollup/rollup-win32-ia32-msvc@4.34.8": resolution: { - integrity: sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==, + integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==, } cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.24.4": + "@rollup/rollup-win32-x64-msvc@4.34.8": resolution: { - integrity: sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==, + integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==, } cpu: [x64] os: [win32] @@ -2510,14 +2710,14 @@ packages: } engines: { node: ">=18" } - "@semantic-release/exec@6.0.3": + "@semantic-release/exec@7.0.3": resolution: { - integrity: sha512-bxAq8vLOw76aV89vxxICecEa8jfaWwYITw6X74zzlO0mc/Bgieqx9kBRz9z96pHectiTAtsCwsQcUyLYWnp3VQ==, + integrity: sha512-uNWwPNtWi3WTcTm3fWfFQEuj8otOvwoS5m9yo2jSVHuvqdZNsOWmuL0/FqcVyZnCI32fxyYV0G7PPb/TzCH6jw==, } - engines: { node: ">=14.17" } + engines: { node: ">=20.8.1" } peerDependencies: - semantic-release: ">=18.0.0" + semantic-release: ">=24.1.0" "@semantic-release/git@10.0.1": resolution: @@ -2537,10 +2737,10 @@ packages: peerDependencies: semantic-release: ">=24.1.0" - "@semantic-release/gitlab@13.2.3": + "@semantic-release/gitlab@13.2.4": resolution: { - integrity: sha512-AzH/s7r8CLDN8dnbkrXnC+Gy9NYG/qRIIKMalaqNFAorgR+goGcqMb/6vIY9aVvwaoT1bo8xr1A+eeuuL4dGEQ==, + integrity: sha512-oj9LphVriiNyrB3oV/6tMxXrtYMaoq3VKUe7gxxkZIp4KmRhFbeSsxDrEGDnTke8uTm2PKAqgsGjD9oocv7bKw==, } engines: { node: ">=20.8.1" } peerDependencies: @@ -2613,21 +2813,21 @@ packages: } engines: { node: ">=14.16" } - "@tailwindcss/forms@0.5.9": + "@tailwindcss/forms@0.5.10": resolution: { - integrity: sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==, + integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==, } peerDependencies: - tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20" + tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" - "@tailwindcss/typography@0.5.15": + "@tailwindcss/typography@0.5.16": resolution: { - integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==, + integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==, } peerDependencies: - tailwindcss: ">=3.0.0 || insiders || >=4.0.0-alpha.20" + tailwindcss: ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" "@trysound/sax@0.2.0": resolution: @@ -2648,12 +2848,6 @@ packages: integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==, } - "@types/eslint__js@8.42.3": - resolution: - { - integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==, - } - "@types/estree@0.0.39": resolution: { @@ -2690,10 +2884,10 @@ packages: integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, } - "@types/leaflet@1.9.15": + "@types/leaflet@1.9.16": resolution: { - integrity: sha512-7UuggAuAs+mva66gtf2OTB1nEhzU/9JED93TIaOEgvFMvG/dIGQaukHE7izHo1Zd+Ko1L4ETUw7TBc8yUxevpg==, + integrity: sha512-wzZoyySUxkgMZ0ihJ7IaUIblG8Rdc8AbbZKLneyn+QjYsj5q1QU7TEKYqwTr10BGSzY5LI7tJk9Ifo+mEjdFRw==, } "@types/node@22.9.0": @@ -2732,10 +2926,10 @@ packages: integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, } - "@typescript-eslint/eslint-plugin@8.18.2": + "@typescript-eslint/eslint-plugin@8.25.0": resolution: { - integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==, + integrity: sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: @@ -2743,63 +2937,63 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - "@typescript-eslint/parser@8.18.2": + "@typescript-eslint/parser@8.25.0": resolution: { - integrity: sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==, + integrity: sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - "@typescript-eslint/scope-manager@8.18.2": + "@typescript-eslint/scope-manager@8.25.0": resolution: { - integrity: sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==, + integrity: sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/type-utils@8.18.2": + "@typescript-eslint/type-utils@8.25.0": resolution: { - integrity: sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==, + integrity: sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - "@typescript-eslint/types@8.18.2": + "@typescript-eslint/types@8.25.0": resolution: { - integrity: sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==, + integrity: sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/typescript-estree@8.18.2": + "@typescript-eslint/typescript-estree@8.25.0": resolution: { - integrity: sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==, + integrity: sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <5.8.0" - "@typescript-eslint/utils@8.18.2": + "@typescript-eslint/utils@8.25.0": resolution: { - integrity: sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==, + integrity: sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - "@typescript-eslint/visitor-keys@8.18.2": + "@typescript-eslint/visitor-keys@8.25.0": resolution: { - integrity: sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==, + integrity: sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -2922,6 +3116,13 @@ packages: } engines: { node: ">=12" } + ansis@3.16.0: + resolution: + { + integrity: sha512-sU7d/tfZiYrsIAXbdL/CNZld5bCkruzwT5KmqmadCJYxuLxHAOBjidxD5+iLmN/6xEfjcQq1l7OpsiCBlc4LzA==, + } + engines: { node: ">=14" } + any-promise@1.3.0: resolution: { @@ -3078,6 +3279,12 @@ packages: } engines: { node: ">=8" } + birpc@2.2.0: + resolution: + { + integrity: sha512-1/22obknhoj56PcE+pZPp6AbWDdY55M81/ofpPW3Ltlp9Eh4zoFFLswvZmNpRTb790CY5tsNfgbYeNOqIARJfQ==, + } + bl@4.1.0: resolution: { @@ -3129,6 +3336,14 @@ packages: engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true + browserslist@4.24.4: + resolution: + { + integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + buffer-from@1.1.2: resolution: { @@ -3141,6 +3356,19 @@ packages: integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, } + buffer@6.0.3: + resolution: + { + integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, + } + + bundle-name@4.1.0: + resolution: + { + integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==, + } + engines: { node: ">=18" } + cacheable-lookup@7.0.0: resolution: { @@ -3155,6 +3383,12 @@ packages: } engines: { node: ">=18" } + cacheable@1.8.8: + resolution: + { + integrity: sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw==, + } + cachedir@2.3.0: resolution: { @@ -3202,6 +3436,12 @@ packages: integrity: sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==, } + caniuse-lite@1.0.30001700: + resolution: + { + integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==, + } + chalk@2.4.2: resolution: { @@ -3243,10 +3483,10 @@ packages: integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, } - choices.js@11.0.3: + choices.js@11.0.6: resolution: { - integrity: sha512-sn1oLUEcvjj7vSSIT0QyexmLIeD6PFGSWrUUXKShL2LUtVFXU3OAIY/smNIQg0OKav3yk1rFa+F56hZ/uYC4cg==, + integrity: sha512-BQrdTQtO2CL5sUnJL2b5qelgYd6GjwkZDdl93IDPy+idNAe0knJHX+WBWnFXH8cTVOJ6JWI4bxpBM29vz44pUQ==, } chokidar@3.6.0: @@ -3384,6 +3624,19 @@ packages: integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } + color-string@1.9.1: + resolution: + { + integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, + } + + color@4.2.3: + resolution: + { + integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, + } + engines: { node: ">=12.5.0" } + colord@2.9.3: resolution: { @@ -3396,10 +3649,10 @@ packages: integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, } - commander@12.1.0: + commander@13.1.0: resolution: { - integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, + integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==, } engines: { node: ">=18" } @@ -3697,10 +3950,10 @@ packages: } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } - css-tree@3.0.1: + css-tree@3.1.0: resolution: { - integrity: sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==, + integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==, } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } @@ -3952,6 +4205,20 @@ packages: } engines: { node: ">=0.10.0" } + default-browser-id@5.0.0: + resolution: + { + integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==, + } + engines: { node: ">=18" } + + default-browser@5.2.1: + resolution: + { + integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==, + } + engines: { node: ">=18" } + defaults@1.0.4: resolution: { @@ -3972,6 +4239,13 @@ packages: } engines: { node: ">= 0.4" } + define-lazy-prop@3.0.0: + resolution: + { + integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, + } + engines: { node: ">=12" } + define-properties@1.2.1: resolution: { @@ -3993,6 +4267,13 @@ packages: } engines: { node: ">=8" } + detect-libc@2.0.3: + resolution: + { + integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==, + } + engines: { node: ">=8" } + dfa@1.2.0: resolution: { @@ -4070,6 +4351,12 @@ packages: engines: { node: ">=0.10.0" } hasBin: true + electron-to-chromium@1.5.104: + resolution: + { + integrity: sha512-Us9M2L4cO/zMBqVkJtnj353nQhMju9slHm62NprKTmdF3HH8wYOtNvDFq/JB2+ZRoGLzdvYDiATlMHs98XBM1g==, + } + electron-to-chromium@1.5.52: resolution: { @@ -4134,6 +4421,12 @@ packages: integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, } + error-stack-parser-es@1.0.5: + resolution: + { + integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==, + } + es-abstract@1.23.3: resolution: { @@ -4176,10 +4469,10 @@ packages: } engines: { node: ">= 0.4" } - esbuild@0.24.2: + esbuild@0.25.0: resolution: { - integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==, + integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==, } engines: { node: ">=18" } hasBin: true @@ -4212,19 +4505,19 @@ packages: } engines: { node: ">=12" } - eslint-config-prettier@9.1.0: + eslint-config-prettier@10.0.2: resolution: { - integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==, + integrity: sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==, } hasBin: true peerDependencies: eslint: ">=7.0.0" - eslint-plugin-prettier@5.2.1: + eslint-plugin-prettier@5.2.3: resolution: { - integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==, + integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==, } engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: @@ -4259,10 +4552,10 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eslint@9.17.0: + eslint@9.21.0: resolution: { - integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==, + integrity: sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } hasBin: true @@ -4379,6 +4672,13 @@ packages: } engines: { node: ">=8.6.0" } + fast-glob@3.3.3: + resolution: + { + integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, + } + engines: { node: ">=8.6.0" } + fast-json-stable-stringify@2.1.0: resolution: { @@ -4442,6 +4742,12 @@ packages: } engines: { node: ">=18" } + file-entry-cache@10.0.6: + resolution: + { + integrity: sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==, + } + file-entry-cache@8.0.0: resolution: { @@ -4449,13 +4755,6 @@ packages: } engines: { node: ">=16.0.0" } - file-entry-cache@9.1.0: - resolution: - { - integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==, - } - engines: { node: ">=18" } - filelist@1.0.4: resolution: { @@ -4537,12 +4836,11 @@ packages: } engines: { node: ">=16" } - flat-cache@5.0.0: + flat-cache@6.1.6: resolution: { - integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==, + integrity: sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ==, } - engines: { node: ">=18" } flatpickr@4.6.13: resolution: @@ -4550,10 +4848,10 @@ packages: integrity: sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==, } - flatted@3.3.1: + flatted@3.3.2: resolution: { - integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==, + integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==, } for-each@0.3.3: @@ -4766,6 +5064,14 @@ packages: } hasBin: true + glob@11.0.1: + resolution: + { + integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==, + } + engines: { node: 20 || >=22 } + hasBin: true + glob@7.2.3: resolution: { @@ -4822,10 +5128,10 @@ packages: } engines: { node: ">=18" } - globals@15.14.0: + globals@16.0.0: resolution: { - integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==, + integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==, } engines: { node: ">=18" } @@ -4969,6 +5275,12 @@ packages: } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hookified@1.7.0: + resolution: + { + integrity: sha512-XQdMjqC1AyeOzfs+17cnIk7Wdfu1hh2JtcyNfBf5u9jHrT3iZUlGHxLTntFBuk5lwkqJ6l3+daeQdHK5yByHVA==, + } + hosted-git-info@7.0.2: resolution: { @@ -4997,10 +5309,10 @@ packages: } engines: { node: ">=8" } - htmlfy@0.5.0: + htmlfy@0.6.1: resolution: { - integrity: sha512-/g4imybF9k7eJT+VEsjtpx1i3BHYxFxv6/RS0Lf8veh1+pw0HzAEndGTdjvrlVRqUSu7YurJZkfnLXpVZ2yrEw==, + integrity: sha512-aXlXhSv/40ZRWSW8auSRgPkF5owlJE2c2EkOKTe3n+I1fa/MKWfiNWP9ukexW4Pnj94k7x8TK5sa44l2ySWQ6w==, } http-cache-semantics@4.1.1: @@ -5092,10 +5404,10 @@ packages: } engines: { node: ">= 4" } - ignore@6.0.2: + ignore@7.0.3: resolution: { - integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==, + integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==, } engines: { node: ">= 4" } @@ -5113,6 +5425,13 @@ packages: } engines: { node: ">=16.20" } + import-from-esm@2.0.0: + resolution: + { + integrity: sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==, + } + engines: { node: ">=18.20" } + import-meta-resolve@4.1.0: resolution: { @@ -5228,6 +5547,12 @@ packages: integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, } + is-arrayish@0.3.2: + resolution: + { + integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, + } + is-bigint@1.0.4: resolution: { @@ -5283,6 +5608,14 @@ packages: } engines: { node: ">= 0.4" } + is-docker@3.0.0: + resolution: + { + integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hasBin: true + is-extglob@2.1.1: resolution: { @@ -5318,6 +5651,14 @@ packages: } engines: { node: ">=0.10.0" } + is-inside-container@1.0.0: + resolution: + { + integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, + } + engines: { node: ">=14.16" } + hasBin: true + is-interactive@1.0.0: resolution: { @@ -5483,6 +5824,13 @@ packages: } engines: { node: ">=0.10.0" } + is-wsl@3.1.0: + resolution: + { + integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==, + } + engines: { node: ">=16" } + isarray@1.0.0: resolution: { @@ -5514,6 +5862,13 @@ packages: integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, } + jackspeak@4.0.2: + resolution: + { + integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==, + } + engines: { node: 20 || >=22 } + jake@10.9.2: resolution: { @@ -5653,6 +6008,12 @@ packages: integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, } + keyv@5.2.3: + resolution: + { + integrity: sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==, + } + kind-of@6.0.3: resolution: { @@ -5714,10 +6075,10 @@ packages: integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } - lint-staged@15.3.0: + lint-staged@15.4.3: resolution: { - integrity: sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==, + integrity: sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==, } engines: { node: ">=18.12.0" } hasBin: true @@ -5942,6 +6303,13 @@ packages: integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, } + lru-cache@11.0.2: + resolution: + { + integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==, + } + engines: { node: 20 || >=22 } + lru-cache@5.1.1: resolution: { @@ -5971,10 +6339,10 @@ packages: engines: { node: ">= 18" } hasBin: true - marked@15.0.4: + marked@15.0.7: resolution: { - integrity: sha512-TCHvDqmb3ZJ4PWG7VEGVgtefA5/euFmsIhxtD0XsBxI39gUSKL81mIRFdt0AiNQozUahd4ke98ZdirExd/vSEw==, + integrity: sha512-dgLIeKGLx5FwziAnsk4ONoGwHwGPJzselimvlVskE9XLN4Orv9u2VA3GWw/lYUqjfA0rUT/6fqKwfZJapP9BEg==, } engines: { node: ">= 18" } hasBin: true @@ -5997,10 +6365,10 @@ packages: integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, } - mdn-data@2.12.1: + mdn-data@2.12.2: resolution: { - integrity: sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==, + integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==, } meow@12.1.1: @@ -6093,6 +6461,13 @@ packages: } hasBin: true + minimatch@10.0.1: + resolution: + { + integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==, + } + engines: { node: 20 || >=22 } + minimatch@3.1.2: resolution: { @@ -6138,6 +6513,13 @@ packages: integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==, } + mrmime@2.0.0: + resolution: + { + integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==, + } + engines: { node: ">=10" } + ms@2.1.3: resolution: { @@ -6156,10 +6538,10 @@ packages: integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, } - nanoid@3.3.7: + nanoid@3.3.8: resolution: { - integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, + integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==, } engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true @@ -6207,6 +6589,12 @@ packages: integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==, } + node-releases@2.0.19: + resolution: + { + integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, + } + normalize-package-data@6.0.2: resolution: { @@ -6381,6 +6769,12 @@ packages: } engines: { node: ">= 0.4" } + ohash@2.0.4: + resolution: + { + integrity: sha512-ac+SFwzhdHb0hp48/dbR7Jta39qfbuj7t3hApd9uyHS8bisHTfVzSEvjOVgV0L3zG7VR2/7JjkSGimP75D+hOQ==, + } + once@1.4.0: resolution: { @@ -6408,6 +6802,13 @@ packages: } engines: { node: ">=18" } + open@10.1.0: + resolution: + { + integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==, + } + engines: { node: ">=18" } + optionator@0.9.4: resolution: { @@ -6520,6 +6921,13 @@ packages: } engines: { node: ">=18" } + p-map@7.0.3: + resolution: + { + integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==, + } + engines: { node: ">=18" } + p-reduce@2.1.0: resolution: { @@ -6688,6 +7096,13 @@ packages: } engines: { node: ">=16 || 14 >=14.18" } + path-scurry@2.0.0: + resolution: + { + integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==, + } + engines: { node: 20 || >=22 } + path-type@4.0.0: resolution: { @@ -6702,6 +7117,12 @@ packages: } engines: { node: ">=12" } + pathe@2.0.3: + resolution: + { + integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, + } + pdfmake@0.2.15: resolution: { @@ -6717,6 +7138,12 @@ packages: engines: { node: ">=0.10" } hasBin: true + perfect-debounce@1.0.0: + resolution: + { + integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==, + } + performance-now@2.1.0: resolution: { @@ -6832,10 +7259,10 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.7: + postcss-color-functional-notation@7.0.8: resolution: { - integrity: sha512-EZvAHsvyASX63vXnyXOIynkxhaHRSsdb7z6yiXKIovGXAolW4cMZ3qoh7k3VdTsLBS6VGdksGfIo3r6+waLoOw==, + integrity: sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==, } engines: { node: ">=18" } peerDependencies: @@ -7029,10 +7456,10 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-lab-function@7.0.7: + postcss-lab-function@7.0.8: resolution: { - integrity: sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig==, + integrity: sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==, } engines: { node: ">=18" } peerDependencies: @@ -7053,10 +7480,10 @@ packages: ts-node: optional: true - postcss-logical@8.0.0: + postcss-logical@8.1.0: resolution: { - integrity: sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg==, + integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==, } engines: { node: ">=18" } peerDependencies: @@ -7259,10 +7686,10 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.1.3: + postcss-preset-env@10.1.5: resolution: { - integrity: sha512-9qzVhcMFU/MnwYHyYpJz4JhGku/4+xEiPTmhn0hj3IxnUYlEF9vbh7OC1KoLAnenS6Fgg43TKNp9xcuMeAi4Zw==, + integrity: sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==, } engines: { node: ">=18" } peerDependencies: @@ -7357,6 +7784,13 @@ packages: } engines: { node: ">=4" } + postcss-selector-parser@7.1.0: + resolution: + { + integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==, + } + engines: { node: ">=4" } + postcss-svgo@7.0.1: resolution: { @@ -7381,10 +7815,10 @@ packages: integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, } - postcss@8.4.49: + postcss@8.5.3: resolution: { - integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==, + integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==, } engines: { node: ^10 || ^12 || >=14 } @@ -7423,10 +7857,10 @@ packages: engines: { node: ">=10.13.0" } hasBin: true - prettier@3.4.2: + prettier@3.5.2: resolution: { - integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==, + integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==, } engines: { node: ">=14" } hasBin: true @@ -7717,14 +8151,21 @@ packages: engines: { node: ">=10.0.0" } hasBin: true - rollup@4.24.4: + rollup@4.34.8: resolution: { - integrity: sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==, + integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==, } engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true + run-applescript@7.0.0: + resolution: + { + integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==, + } + engines: { node: ">=18" } + run-async@2.4.1: resolution: { @@ -7789,10 +8230,10 @@ packages: integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, } - semantic-release@24.2.0: + semantic-release@24.2.3: resolution: { - integrity: sha512-fQfn6e/aYToRtVJYKqneFM1Rg3KP2gh3wSWtpYsLlz6uaPKlISrTzvYAFn+mYWo07F0X1Cz5ucU89AVE8X1mbg==, + integrity: sha512-KRhQG9cUazPavJiJEFIJ3XAMjgfd0fcK3B+T26qOl8L0UG5aZUjeRfREO0KM5InGtYwxqiiytkJrbcYoLDEv0A==, } engines: { node: ">=20.8.1" } hasBin: true @@ -7852,6 +8293,13 @@ packages: } engines: { node: ">= 0.4" } + sharp@0.33.5: + resolution: + { + integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + shebang-command@2.0.0: resolution: { @@ -7893,6 +8341,19 @@ packages: } engines: { node: ">=6" } + simple-swizzle@0.2.2: + resolution: + { + integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, + } + + sirv@3.0.1: + resolution: + { + integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==, + } + engines: { node: ">=18" } + skin-tone@2.0.0: resolution: { @@ -8196,28 +8657,28 @@ packages: peerDependencies: postcss: ^8.4.31 - stylelint-config-recommended@14.0.1: + stylelint-config-recommended@15.0.0: resolution: { - integrity: sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==, + integrity: sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==, } engines: { node: ">=18.12.0" } peerDependencies: - stylelint: ^16.1.0 + stylelint: ^16.13.0 - stylelint-config-standard@36.0.1: + stylelint-config-standard@37.0.0: resolution: { - integrity: sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==, + integrity: sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==, } engines: { node: ">=18.12.0" } peerDependencies: - stylelint: ^16.1.0 + stylelint: ^16.13.0 - stylelint@16.12.0: + stylelint@16.15.0: resolution: { - integrity: sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==, + integrity: sha512-OK6Rs7EPdcdmjqiDycadZY4fw3f5/TC1X6/tGjnF3OosbwCeNs7nG+79MCAtjEg7ckwqTJTsku08e0Rmaz5nUw==, } engines: { node: ">=18.12.0" } hasBin: true @@ -8258,6 +8719,13 @@ packages: } engines: { node: ">=14.18" } + supports-hyperlinks@3.2.0: + resolution: + { + integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==, + } + engines: { node: ">=14.18" } + supports-preserve-symlinks-flag@1.0.0: resolution: { @@ -8421,6 +8889,13 @@ packages: } engines: { node: ">=8.0" } + totalist@3.0.1: + resolution: + { + integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, + } + engines: { node: ">=6" } + tr46@0.0.3: resolution: { @@ -8440,14 +8915,14 @@ packages: } engines: { node: ">= 0.4" } - ts-api-utils@1.4.0: + ts-api-utils@2.0.1: resolution: { - integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==, + integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==, } - engines: { node: ">=16" } + engines: { node: ">=18.12" } peerDependencies: - typescript: ">=4.2.0" + typescript: ">=4.8.4" ts-interface-checker@0.1.13: resolution: @@ -8537,20 +9012,20 @@ packages: } engines: { node: ">= 0.4" } - typescript-eslint@8.18.2: + typescript-eslint@8.25.0: resolution: { - integrity: sha512-KuXezG6jHkvC3MvizeXgupZzaG5wjhU3yE8E7e6viOvAvD9xAWYp8/vy0WULTGe9DYDWcQu7aW03YIV3mSitrQ==, + integrity: sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - typescript@5.7.2: + typescript@5.7.3: resolution: { - integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==, + integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==, } engines: { node: ">=14.17" } hasBin: true @@ -8663,6 +9138,13 @@ packages: } engines: { node: ">= 10.0.0" } + unplugin-utils@0.2.4: + resolution: + { + integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==, + } + engines: { node: ">=18.12.0" } + upath@1.2.0: resolution: { @@ -8710,6 +9192,43 @@ packages: integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, } + vite-dev-rpc@1.0.7: + resolution: + { + integrity: sha512-FxSTEofDbUi2XXujCA+hdzCDkXFG1PXktMjSk1efq9Qb5lOYaaM9zNSvKvPPF7645Bak79kSp1PTooMW2wktcA==, + } + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 + + vite-hot-client@2.0.4: + resolution: + { + integrity: sha512-W9LOGAyGMrbGArYJN4LBCdOC5+Zwh7dHvOHC0KmGKkJhsOzaKbpo/jEjpPKVHIW0/jBWj8RZG0NUxfgA8BxgAg==, + } + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + + vite-plugin-codeigniter@1.0.1: + resolution: + { + integrity: sha512-VXrzMeMKiqluyMKVALjaw0IK8TaIWwAdOIt6H2vU0QSnG7HI8NnHYcKSh3Zbb5/arwK5Op4JitbEVU6KzllPgQ==, + } + peerDependencies: + vite: ^6.0.0 + + vite-plugin-inspect@11.0.0: + resolution: + { + integrity: sha512-Q0RDNcMs1mbI2yGRwOzSapnnA6NFO0j88+Vb8pJX0iYMw34WczwKJi3JgheItDhbWRq/CLUR0cs+ajZpcUaIFQ==, + } + engines: { node: ">=14" } + peerDependencies: + "@nuxt/kit": "*" + vite: ^6.0.0 + peerDependenciesMeta: + "@nuxt/kit": + optional: true + vite-plugin-pwa@0.21.1: resolution: { @@ -8725,10 +9244,19 @@ packages: "@vite-pwa/assets-generator": optional: true - vite@6.0.6: + vite-plugin-static-copy@2.3.0: resolution: { - integrity: sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==, + integrity: sha512-LLKwhhHetGaCnWz4mas4qqjjguDka6/6b4+SeIohRroj8aCE7QTfiZECfPecslFQkWZ3HdQuq5kOPmWZjNYlKA==, + } + engines: { node: ^18.0.0 || >=20.0.0 } + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + + vite@6.2.0: + resolution: + { + integrity: sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==, } engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } hasBin: true @@ -8774,10 +9302,10 @@ packages: integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, } - wavesurfer.js@7.8.14: + wavesurfer.js@7.9.1: resolution: { - integrity: sha512-VwljnCf97GxpA/I6gKWVriBvGYEcwAsOCaLb3vauPE4Jm6rIl1C9zVZ2S0a9CCLjVzeG0UukHZxXSblQV8dReA==, + integrity: sha512-+pG8X9c9BrfAW8KR54OPzZcAj/57sOL08He/tc6/7Mt6NCX3IfDFwexQxXVTILggGZUOUk7tFKfny32yGrysKA==, } wcwidth@1.0.1: @@ -8995,10 +9523,10 @@ packages: } engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - xml-formatter@3.6.3: + xml-formatter@3.6.4: resolution: { - integrity: sha512-++x1TlRO1FRlQ82AZ4WnoCSufaI/PT/sycn4K8nRl4gnrNC1uYY2VV/67aALZ2m0Q4Q/BLj/L69K360Itw9NNg==, + integrity: sha512-vkvTNw4u9mp72lMmJHw771NE9EJLX0kfwIcP+ZEo9eJ6HmotX23vmykyROyIQ9Y3a+ckdUdhxIE2ZO66rYuPrg==, } engines: { node: ">= 16" } @@ -9041,10 +9569,10 @@ packages: integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, } - yaml@2.6.1: + yaml@2.7.0: resolution: { - integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==, + integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==, } engines: { node: ">= 14" } hasBin: true @@ -9112,6 +9640,12 @@ packages: } engines: { node: ">=18" } + zod@3.24.2: + resolution: + { + integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==, + } + snapshots: "@alloc/quick-lru@5.2.0": {} @@ -9167,7 +9701,7 @@ snapshots: "@babel/traverse": 7.25.9 "@babel/types": 7.26.0 convert-source-map: 2.0.0 - debug: 4.3.7 + debug: 4.4.0 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -9226,7 +9760,7 @@ snapshots: "@babel/core": 7.26.0 "@babel/helper-compilation-targets": 7.25.9 "@babel/helper-plugin-utils": 7.25.9 - debug: 4.3.7 + debug: 4.4.0 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -9793,7 +10327,7 @@ snapshots: "@babel/parser": 7.26.2 "@babel/template": 7.25.9 "@babel/types": 7.26.0 - debug: 4.3.7 + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -9803,25 +10337,25 @@ snapshots: "@babel/helper-string-parser": 7.25.9 "@babel/helper-validator-identifier": 7.25.9 - "@codemirror/autocomplete@6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3)": + "@codemirror/autocomplete@6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.2)(@codemirror/view@6.36.2)(@lezer/common@1.2.3)": dependencies: "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.2 "@lezer/common": 1.2.3 - "@codemirror/commands@6.7.1": + "@codemirror/commands@6.8.0": dependencies: "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.2 "@lezer/common": 1.2.3 - "@codemirror/lang-css@6.3.1(@codemirror/view@6.36.1)": + "@codemirror/lang-css@6.3.1(@codemirror/view@6.36.2)": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.2)(@codemirror/view@6.36.2)(@lezer/common@1.2.3) "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 + "@codemirror/state": 6.5.2 "@lezer/common": 1.2.3 "@lezer/css": 1.1.9 transitivePeerDependencies: @@ -9829,39 +10363,39 @@ snapshots: "@codemirror/lang-html@6.4.9": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) - "@codemirror/lang-css": 6.3.1(@codemirror/view@6.36.1) + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.2)(@codemirror/view@6.36.2)(@lezer/common@1.2.3) + "@codemirror/lang-css": 6.3.1(@codemirror/view@6.36.2) "@codemirror/lang-javascript": 6.2.2 "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.2 "@lezer/common": 1.2.3 "@lezer/css": 1.1.9 "@lezer/html": 1.3.10 "@codemirror/lang-javascript@6.2.2": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.2)(@codemirror/view@6.36.2)(@lezer/common@1.2.3) "@codemirror/language": 6.10.8 "@codemirror/lint": 6.8.2 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.2 "@lezer/common": 1.2.3 "@lezer/javascript": 1.4.21 "@codemirror/lang-xml@6.1.0": dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.2)(@codemirror/view@6.36.2)(@lezer/common@1.2.3) "@codemirror/language": 6.10.8 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.2 "@lezer/common": 1.2.3 "@lezer/xml": 1.0.5 "@codemirror/language@6.10.8": dependencies: - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.2 "@lezer/common": 1.2.3 "@lezer/highlight": 1.2.1 "@lezer/lr": 1.4.2 @@ -9869,34 +10403,34 @@ snapshots: "@codemirror/lint@6.8.2": dependencies: - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.2 crelt: 1.0.6 "@codemirror/search@6.5.7": dependencies: - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.2 crelt: 1.0.6 - "@codemirror/state@6.5.0": + "@codemirror/state@6.5.2": dependencies: "@marijn/find-cluster-break": 1.0.2 - "@codemirror/view@6.36.1": + "@codemirror/view@6.36.2": dependencies: - "@codemirror/state": 6.5.0 + "@codemirror/state": 6.5.2 style-mod: 4.1.2 w3c-keyname: 2.2.8 "@colors/colors@1.5.0": optional: true - "@commitlint/cli@19.6.1(@types/node@22.9.0)(typescript@5.7.2)": + "@commitlint/cli@19.7.1(@types/node@22.9.0)(typescript@5.7.3)": dependencies: "@commitlint/format": 19.5.0 - "@commitlint/lint": 19.6.0 - "@commitlint/load": 19.6.1(@types/node@22.9.0)(typescript@5.7.2) + "@commitlint/lint": 19.7.1 + "@commitlint/load": 19.6.1(@types/node@22.9.0)(typescript@5.7.3) "@commitlint/read": 19.5.0 "@commitlint/types": 19.5.0 tinyexec: 0.3.1 @@ -9905,7 +10439,7 @@ snapshots: - "@types/node" - typescript - "@commitlint/config-conventional@19.6.0": + "@commitlint/config-conventional@19.7.1": dependencies: "@commitlint/types": 19.5.0 conventional-changelog-conventionalcommits: 7.0.2 @@ -9929,29 +10463,29 @@ snapshots: "@commitlint/format@19.5.0": dependencies: "@commitlint/types": 19.5.0 - chalk: 5.3.0 + chalk: 5.4.1 - "@commitlint/is-ignored@19.6.0": + "@commitlint/is-ignored@19.7.1": dependencies: "@commitlint/types": 19.5.0 semver: 7.6.3 - "@commitlint/lint@19.6.0": + "@commitlint/lint@19.7.1": dependencies: - "@commitlint/is-ignored": 19.6.0 + "@commitlint/is-ignored": 19.7.1 "@commitlint/parse": 19.5.0 "@commitlint/rules": 19.6.0 "@commitlint/types": 19.5.0 - "@commitlint/load@19.5.0(@types/node@22.9.0)(typescript@5.7.2)": + "@commitlint/load@19.5.0(@types/node@22.9.0)(typescript@5.7.3)": dependencies: "@commitlint/config-validator": 19.5.0 "@commitlint/execute-rule": 19.5.0 "@commitlint/resolve-extends": 19.5.0 "@commitlint/types": 19.5.0 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.7.2) - cosmiconfig-typescript-loader: 5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) + cosmiconfig-typescript-loader: 5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -9960,15 +10494,15 @@ snapshots: - typescript optional: true - "@commitlint/load@19.6.1(@types/node@22.9.0)(typescript@5.7.2)": + "@commitlint/load@19.6.1(@types/node@22.9.0)(typescript@5.7.3)": dependencies: "@commitlint/config-validator": 19.5.0 "@commitlint/execute-rule": 19.5.0 "@commitlint/resolve-extends": 19.5.0 "@commitlint/types": 19.5.0 - chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.7.2) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2) + chalk: 5.4.1 + cosmiconfig: 9.0.0(typescript@5.7.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -10017,24 +10551,24 @@ snapshots: "@commitlint/types@19.5.0": dependencies: "@types/conventional-commits-parser": 5.0.0 - chalk: 5.3.0 + chalk: 5.4.1 "@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/color-helpers@5.0.1": {} + "@csstools/color-helpers@5.0.2": {} - "@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": + "@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)": dependencies: - "@csstools/color-helpers": 5.0.1 - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/color-helpers": 5.0.2 + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 @@ -10049,215 +10583,215 @@ snapshots: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-cascade-layers@5.0.1(postcss@8.4.49)": + "@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.3)": dependencies: "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - "@csstools/postcss-color-function@4.0.7(postcss@8.4.49)": + "@csstools/postcss-color-function@4.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-color-mix-function@3.0.7(postcss@8.4.49)": + "@csstools/postcss-color-mix-function@3.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-content-alt-text@2.0.4(postcss@8.4.49)": + "@csstools/postcss-content-alt-text@2.0.4(postcss@8.5.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-exponential-functions@2.0.6(postcss@8.4.49)": + "@csstools/postcss-exponential-functions@2.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-font-format-keywords@4.0.0(postcss@8.4.49)": + "@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.3)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-gamut-mapping@2.0.7(postcss@8.4.49)": + "@csstools/postcss-gamut-mapping@2.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-gradients-interpolation-method@5.0.7(postcss@8.4.49)": + "@csstools/postcss-gradients-interpolation-method@5.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-hwb-function@4.0.7(postcss@8.4.49)": + "@csstools/postcss-hwb-function@4.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-ic-unit@4.0.0(postcss@8.4.49)": + "@csstools/postcss-ic-unit@4.0.0(postcss@8.5.3)": dependencies: - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-initial@2.0.0(postcss@8.4.49)": + "@csstools/postcss-initial@2.0.1(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.4.49)": + "@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.3)": dependencies: "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - "@csstools/postcss-light-dark-function@2.0.7(postcss@8.4.49)": + "@csstools/postcss-light-dark-function@2.0.7(postcss@8.5.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-logical-overflow@2.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-logical-resize@3.0.0(postcss@8.4.49)": + "@csstools/postcss-logical-resize@3.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.4.49)": + "@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.3)": dependencies: "@csstools/css-tokenizer": 3.0.3 - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-media-minmax@2.0.6(postcss@8.4.49)": + "@csstools/postcss-media-minmax@2.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.4.49)": + "@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.3)": dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-nested-calc@4.0.0(postcss@8.4.49)": + "@csstools/postcss-nested-calc@4.0.0(postcss@8.5.3)": dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-normalize-display-values@4.0.0(postcss@8.4.49)": + "@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-oklab-function@4.0.7(postcss@8.4.49)": + "@csstools/postcss-oklab-function@4.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.4.49)": + "@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-random-function@1.0.2(postcss@8.4.49)": + "@csstools/postcss-random-function@1.0.3(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-relative-color-syntax@3.0.7(postcss@8.4.49)": + "@csstools/postcss-relative-color-syntax@3.0.8(postcss@8.5.3)": dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - "@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.4.49)": + "@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - "@csstools/postcss-sign-functions@1.1.1(postcss@8.4.49)": + "@csstools/postcss-sign-functions@1.1.2(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-stepped-value-functions@4.0.6(postcss@8.4.49)": + "@csstools/postcss-stepped-value-functions@4.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-text-decoration-shorthand@4.0.1(postcss@8.4.49)": + "@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.3)": dependencies: - "@csstools/color-helpers": 5.0.1 - postcss: 8.4.49 + "@csstools/color-helpers": 5.0.2 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - "@csstools/postcss-trigonometric-functions@4.0.6(postcss@8.4.49)": + "@csstools/postcss-trigonometric-functions@4.0.7(postcss@8.5.3)": dependencies: - "@csstools/css-calc": 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-calc": 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 - "@csstools/postcss-unset-value@4.0.0(postcss@8.4.49)": + "@csstools/postcss-unset-value@4.0.0(postcss@8.5.3)": dependencies: - postcss: 8.4.49 + postcss: 8.5.3 "@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.0.0)": dependencies: @@ -10267,110 +10801,119 @@ snapshots: dependencies: postcss-selector-parser: 7.0.0 - "@csstools/utilities@2.0.0(postcss@8.4.49)": + "@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)": dependencies: - postcss: 8.4.49 + postcss-selector-parser: 7.1.0 + + "@csstools/utilities@2.0.0(postcss@8.5.3)": + dependencies: + postcss: 8.5.3 "@dual-bundle/import-meta-resolve@4.1.0": {} - "@esbuild/aix-ppc64@0.24.2": - optional: true - - "@esbuild/android-arm64@0.24.2": - optional: true - - "@esbuild/android-arm@0.24.2": - optional: true - - "@esbuild/android-x64@0.24.2": - optional: true - - "@esbuild/darwin-arm64@0.24.2": - optional: true - - "@esbuild/darwin-x64@0.24.2": - optional: true - - "@esbuild/freebsd-arm64@0.24.2": - optional: true - - "@esbuild/freebsd-x64@0.24.2": - optional: true - - "@esbuild/linux-arm64@0.24.2": - optional: true - - "@esbuild/linux-arm@0.24.2": - optional: true - - "@esbuild/linux-ia32@0.24.2": - optional: true - - "@esbuild/linux-loong64@0.24.2": - optional: true - - "@esbuild/linux-mips64el@0.24.2": - optional: true - - "@esbuild/linux-ppc64@0.24.2": - optional: true - - "@esbuild/linux-riscv64@0.24.2": - optional: true - - "@esbuild/linux-s390x@0.24.2": - optional: true - - "@esbuild/linux-x64@0.24.2": - optional: true - - "@esbuild/netbsd-arm64@0.24.2": - optional: true - - "@esbuild/netbsd-x64@0.24.2": - optional: true - - "@esbuild/openbsd-arm64@0.24.2": - optional: true - - "@esbuild/openbsd-x64@0.24.2": - optional: true - - "@esbuild/sunos-x64@0.24.2": - optional: true - - "@esbuild/win32-arm64@0.24.2": - optional: true - - "@esbuild/win32-ia32@0.24.2": - optional: true - - "@esbuild/win32-x64@0.24.2": - optional: true - - "@eslint-community/eslint-utils@4.4.1(eslint@9.17.0(jiti@2.4.1))": + "@emnapi/runtime@1.3.1": dependencies: - eslint: 9.17.0(jiti@2.4.1) + tslib: 2.8.1 + optional: true + + "@esbuild/aix-ppc64@0.25.0": + optional: true + + "@esbuild/android-arm64@0.25.0": + optional: true + + "@esbuild/android-arm@0.25.0": + optional: true + + "@esbuild/android-x64@0.25.0": + optional: true + + "@esbuild/darwin-arm64@0.25.0": + optional: true + + "@esbuild/darwin-x64@0.25.0": + optional: true + + "@esbuild/freebsd-arm64@0.25.0": + optional: true + + "@esbuild/freebsd-x64@0.25.0": + optional: true + + "@esbuild/linux-arm64@0.25.0": + optional: true + + "@esbuild/linux-arm@0.25.0": + optional: true + + "@esbuild/linux-ia32@0.25.0": + optional: true + + "@esbuild/linux-loong64@0.25.0": + optional: true + + "@esbuild/linux-mips64el@0.25.0": + optional: true + + "@esbuild/linux-ppc64@0.25.0": + optional: true + + "@esbuild/linux-riscv64@0.25.0": + optional: true + + "@esbuild/linux-s390x@0.25.0": + optional: true + + "@esbuild/linux-x64@0.25.0": + optional: true + + "@esbuild/netbsd-arm64@0.25.0": + optional: true + + "@esbuild/netbsd-x64@0.25.0": + optional: true + + "@esbuild/openbsd-arm64@0.25.0": + optional: true + + "@esbuild/openbsd-x64@0.25.0": + optional: true + + "@esbuild/sunos-x64@0.25.0": + optional: true + + "@esbuild/win32-arm64@0.25.0": + optional: true + + "@esbuild/win32-ia32@0.25.0": + optional: true + + "@esbuild/win32-x64@0.25.0": + optional: true + + "@eslint-community/eslint-utils@4.4.1(eslint@9.21.0(jiti@2.4.1))": + dependencies: + eslint: 9.21.0(jiti@2.4.1) eslint-visitor-keys: 3.4.3 "@eslint-community/regexpp@4.12.1": {} - "@eslint/config-array@0.19.1": + "@eslint/config-array@0.19.2": dependencies: - "@eslint/object-schema": 2.1.5 - debug: 4.3.7 + "@eslint/object-schema": 2.1.6 + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - "@eslint/core@0.9.1": + "@eslint/core@0.12.0": dependencies: "@types/json-schema": 7.0.15 - "@eslint/eslintrc@3.2.0": + "@eslint/eslintrc@3.3.0": dependencies: ajv: 6.12.6 - debug: 4.3.7 + debug: 4.4.0 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -10381,24 +10924,25 @@ snapshots: transitivePeerDependencies: - supports-color - "@eslint/js@9.17.0": {} + "@eslint/js@9.21.0": {} - "@eslint/object-schema@2.1.5": {} + "@eslint/object-schema@2.1.6": {} - "@eslint/plugin-kit@0.2.4": + "@eslint/plugin-kit@0.2.7": dependencies: + "@eslint/core": 0.12.0 levn: 0.4.1 "@floating-ui/core@1.6.8": dependencies: - "@floating-ui/utils": 0.2.8 + "@floating-ui/utils": 0.2.9 - "@floating-ui/dom@1.6.12": + "@floating-ui/dom@1.6.13": dependencies: "@floating-ui/core": 1.6.8 - "@floating-ui/utils": 0.2.8 + "@floating-ui/utils": 0.2.9 - "@floating-ui/utils@0.2.8": {} + "@floating-ui/utils@0.2.9": {} "@foliojs-fork/fontkit@1.9.2": dependencies: @@ -10432,7 +10976,7 @@ snapshots: "@github/markdown-toolbar-element@2.2.3": {} - "@github/relative-time-element@4.4.4": {} + "@github/relative-time-element@4.4.5": {} "@humanfs/core@0.19.1": {} @@ -10445,7 +10989,82 @@ snapshots: "@humanwhocodes/retry@0.3.1": {} - "@humanwhocodes/retry@0.4.1": {} + "@humanwhocodes/retry@0.4.2": {} + + "@img/sharp-darwin-arm64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-darwin-arm64": 1.0.4 + optional: true + + "@img/sharp-darwin-x64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-darwin-x64": 1.0.4 + optional: true + + "@img/sharp-libvips-darwin-arm64@1.0.4": + optional: true + + "@img/sharp-libvips-darwin-x64@1.0.4": + optional: true + + "@img/sharp-libvips-linux-arm64@1.0.4": + optional: true + + "@img/sharp-libvips-linux-arm@1.0.5": + optional: true + + "@img/sharp-libvips-linux-s390x@1.0.4": + optional: true + + "@img/sharp-libvips-linux-x64@1.0.4": + optional: true + + "@img/sharp-libvips-linuxmusl-arm64@1.0.4": + optional: true + + "@img/sharp-libvips-linuxmusl-x64@1.0.4": + optional: true + + "@img/sharp-linux-arm64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linux-arm64": 1.0.4 + optional: true + + "@img/sharp-linux-arm@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linux-arm": 1.0.5 + optional: true + + "@img/sharp-linux-s390x@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linux-s390x": 1.0.4 + optional: true + + "@img/sharp-linux-x64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linux-x64": 1.0.4 + optional: true + + "@img/sharp-linuxmusl-arm64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + optional: true + + "@img/sharp-linuxmusl-x64@0.33.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + optional: true + + "@img/sharp-wasm32@0.33.5": + dependencies: + "@emnapi/runtime": 1.3.1 + optional: true + + "@img/sharp-win32-ia32@0.33.5": + optional: true + + "@img/sharp-win32-x64@0.33.5": + optional: true "@isaacs/cliui@8.0.2": dependencies: @@ -10478,6 +11097,10 @@ snapshots: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.0 + "@keyv/serialize@1.0.2": + dependencies: + buffer: 6.0.3 + "@lezer/common@1.2.3": {} "@lezer/css@1.1.9": @@ -10606,7 +11229,7 @@ snapshots: "@patternfly/pfe-core@4.0.4": dependencies: - "@floating-ui/dom": 1.6.12 + "@floating-ui/dom": 1.6.13 "@lit/context": 1.1.3 lit: 3.2.1 @@ -10627,6 +11250,8 @@ snapshots: "@pnpm/network.ca-file": 1.0.2 config-chain: 1.1.13 + "@polka/url@1.0.0-next.28": {} + "@rollup/plugin-babel@5.3.1(@babel/core@7.26.0)(rollup@2.79.2)": dependencies: "@babel/core": 7.26.0 @@ -10675,81 +11300,84 @@ snapshots: optionalDependencies: rollup: 2.79.2 - "@rollup/rollup-android-arm-eabi@4.24.4": + "@rollup/rollup-android-arm-eabi@4.34.8": optional: true - "@rollup/rollup-android-arm64@4.24.4": + "@rollup/rollup-android-arm64@4.34.8": optional: true - "@rollup/rollup-darwin-arm64@4.24.4": + "@rollup/rollup-darwin-arm64@4.34.8": optional: true - "@rollup/rollup-darwin-x64@4.24.4": + "@rollup/rollup-darwin-x64@4.34.8": optional: true - "@rollup/rollup-freebsd-arm64@4.24.4": + "@rollup/rollup-freebsd-arm64@4.34.8": optional: true - "@rollup/rollup-freebsd-x64@4.24.4": + "@rollup/rollup-freebsd-x64@4.34.8": optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.24.4": + "@rollup/rollup-linux-arm-gnueabihf@4.34.8": optional: true - "@rollup/rollup-linux-arm-musleabihf@4.24.4": + "@rollup/rollup-linux-arm-musleabihf@4.34.8": optional: true - "@rollup/rollup-linux-arm64-gnu@4.24.4": + "@rollup/rollup-linux-arm64-gnu@4.34.8": optional: true - "@rollup/rollup-linux-arm64-musl@4.24.4": + "@rollup/rollup-linux-arm64-musl@4.34.8": optional: true - "@rollup/rollup-linux-powerpc64le-gnu@4.24.4": + "@rollup/rollup-linux-loongarch64-gnu@4.34.8": optional: true - "@rollup/rollup-linux-riscv64-gnu@4.24.4": + "@rollup/rollup-linux-powerpc64le-gnu@4.34.8": optional: true - "@rollup/rollup-linux-s390x-gnu@4.24.4": + "@rollup/rollup-linux-riscv64-gnu@4.34.8": optional: true - "@rollup/rollup-linux-x64-gnu@4.24.4": + "@rollup/rollup-linux-s390x-gnu@4.34.8": optional: true - "@rollup/rollup-linux-x64-musl@4.24.4": + "@rollup/rollup-linux-x64-gnu@4.34.8": optional: true - "@rollup/rollup-win32-arm64-msvc@4.24.4": + "@rollup/rollup-linux-x64-musl@4.34.8": optional: true - "@rollup/rollup-win32-ia32-msvc@4.24.4": + "@rollup/rollup-win32-arm64-msvc@4.34.8": optional: true - "@rollup/rollup-win32-x64-msvc@4.24.4": + "@rollup/rollup-win32-ia32-msvc@4.34.8": + optional: true + + "@rollup/rollup-win32-x64-msvc@4.34.8": optional: true "@sec-ant/readable-stream@0.4.1": {} - "@semantic-release/changelog@6.0.3(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/changelog@6.0.3(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 fs-extra: 11.2.0 lodash: 4.17.21 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) - "@semantic-release/commit-analyzer@13.0.0(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/commit-analyzer@13.0.0(semantic-release@24.2.3(typescript@5.7.3))": dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.3.7 + debug: 4.4.0 import-from-esm: 1.3.4 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color @@ -10757,19 +11385,19 @@ snapshots: "@semantic-release/error@4.0.0": {} - "@semantic-release/exec@6.0.3(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/exec@7.0.3(semantic-release@24.2.3(typescript@5.7.3))": dependencies: - "@semantic-release/error": 3.0.0 + "@semantic-release/error": 4.0.0 aggregate-error: 3.1.0 - debug: 4.3.7 - execa: 5.1.1 - lodash: 4.17.21 - parse-json: 5.2.0 - semantic-release: 24.2.0(typescript@5.7.2) + debug: 4.4.0 + execa: 9.5.1 + lodash-es: 4.17.21 + parse-json: 8.1.0 + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color - "@semantic-release/git@10.0.1(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/git@10.0.1(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@semantic-release/error": 3.0.0 aggregate-error: 3.1.0 @@ -10779,11 +11407,11 @@ snapshots: lodash: 4.17.21 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color - "@semantic-release/github@11.0.0(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/github@11.0.0(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@octokit/core": 6.1.2 "@octokit/plugin-paginate-rest": 11.3.5(@octokit/core@6.1.2) @@ -10791,7 +11419,7 @@ snapshots: "@octokit/plugin-throttling": 9.3.2(@octokit/core@6.1.2) "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 - debug: 4.3.7 + debug: 4.4.0 dir-glob: 3.0.1 globby: 14.0.2 http-proxy-agent: 7.0.2 @@ -10800,16 +11428,16 @@ snapshots: lodash-es: 4.17.21 mime: 4.0.4 p-filter: 4.1.0 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) url-join: 5.0.0 transitivePeerDependencies: - supports-color - "@semantic-release/gitlab@13.2.3(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/gitlab@13.2.4(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 - debug: 4.3.7 + debug: 4.4.0 dir-glob: 3.0.1 escape-string-regexp: 5.0.0 formdata-node: 6.0.3 @@ -10819,12 +11447,12 @@ snapshots: hpagent: 1.2.0 lodash-es: 4.17.21 parse-url: 9.2.0 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) url-join: 4.0.1 transitivePeerDependencies: - supports-color - "@semantic-release/npm@12.0.1(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/npm@12.0.1(semantic-release@24.2.3(typescript@5.7.3))": dependencies: "@semantic-release/error": 4.0.0 aggregate-error: 5.0.0 @@ -10837,23 +11465,23 @@ snapshots: rc: 1.2.8 read-pkg: 9.0.1 registry-auth-token: 5.0.2 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) semver: 7.6.3 tempy: 3.1.0 - "@semantic-release/release-notes-generator@14.0.1(semantic-release@24.2.0(typescript@5.7.2))": + "@semantic-release/release-notes-generator@14.0.1(semantic-release@24.2.3(typescript@5.7.3))": dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.3.7 + debug: 4.4.0 get-stream: 7.0.1 import-from-esm: 1.3.4 into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 24.2.0(typescript@5.7.2) + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color @@ -10878,12 +11506,12 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - "@tailwindcss/forms@0.5.9(tailwindcss@3.4.17)": + "@tailwindcss/forms@0.5.10(tailwindcss@3.4.17)": dependencies: mini-svg-data-uri: 1.4.4 tailwindcss: 3.4.17 - "@tailwindcss/typography@0.5.15(tailwindcss@3.4.17)": + "@tailwindcss/typography@0.5.16(tailwindcss@3.4.17)": dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 @@ -10901,10 +11529,7 @@ snapshots: dependencies: "@types/estree": 1.0.6 "@types/json-schema": 7.0.15 - - "@types/eslint__js@8.42.3": - dependencies: - "@types/eslint": 9.6.1 + optional: true "@types/estree@0.0.39": {} @@ -10918,7 +11543,7 @@ snapshots: "@types/json-schema@7.0.15": {} - "@types/leaflet@1.9.15": + "@types/leaflet@1.9.16": dependencies: "@types/geojson": 7946.0.14 @@ -10936,81 +11561,81 @@ snapshots: "@types/trusted-types@2.0.7": {} - "@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2)": + "@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3)": dependencies: "@eslint-community/regexpp": 4.12.1 - "@typescript-eslint/parser": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/scope-manager": 8.18.2 - "@typescript-eslint/type-utils": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/utils": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/visitor-keys": 8.18.2 - eslint: 9.17.0(jiti@2.4.1) + "@typescript-eslint/parser": 8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/scope-manager": 8.25.0 + "@typescript-eslint/type-utils": 8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/utils": 8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/visitor-keys": 8.25.0 + eslint: 9.21.0(jiti@2.4.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2)": + "@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3)": dependencies: - "@typescript-eslint/scope-manager": 8.18.2 - "@typescript-eslint/types": 8.18.2 - "@typescript-eslint/typescript-estree": 8.18.2(typescript@5.7.2) - "@typescript-eslint/visitor-keys": 8.18.2 + "@typescript-eslint/scope-manager": 8.25.0 + "@typescript-eslint/types": 8.25.0 + "@typescript-eslint/typescript-estree": 8.25.0(typescript@5.7.3) + "@typescript-eslint/visitor-keys": 8.25.0 debug: 4.4.0 - eslint: 9.17.0(jiti@2.4.1) - typescript: 5.7.2 + eslint: 9.21.0(jiti@2.4.1) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.18.2": + "@typescript-eslint/scope-manager@8.25.0": dependencies: - "@typescript-eslint/types": 8.18.2 - "@typescript-eslint/visitor-keys": 8.18.2 + "@typescript-eslint/types": 8.25.0 + "@typescript-eslint/visitor-keys": 8.25.0 - "@typescript-eslint/type-utils@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2)": + "@typescript-eslint/type-utils@8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3)": dependencies: - "@typescript-eslint/typescript-estree": 8.18.2(typescript@5.7.2) - "@typescript-eslint/utils": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) + "@typescript-eslint/typescript-estree": 8.25.0(typescript@5.7.3) + "@typescript-eslint/utils": 8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.17.0(jiti@2.4.1) - ts-api-utils: 1.4.0(typescript@5.7.2) - typescript: 5.7.2 + eslint: 9.21.0(jiti@2.4.1) + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.18.2": {} + "@typescript-eslint/types@8.25.0": {} - "@typescript-eslint/typescript-estree@8.18.2(typescript@5.7.2)": + "@typescript-eslint/typescript-estree@8.25.0(typescript@5.7.3)": dependencies: - "@typescript-eslint/types": 8.18.2 - "@typescript-eslint/visitor-keys": 8.18.2 + "@typescript-eslint/types": 8.25.0 + "@typescript-eslint/visitor-keys": 8.25.0 debug: 4.4.0 - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.4.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2)": + "@typescript-eslint/utils@8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3)": dependencies: - "@eslint-community/eslint-utils": 4.4.1(eslint@9.17.0(jiti@2.4.1)) - "@typescript-eslint/scope-manager": 8.18.2 - "@typescript-eslint/types": 8.18.2 - "@typescript-eslint/typescript-estree": 8.18.2(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.1) - typescript: 5.7.2 + "@eslint-community/eslint-utils": 4.4.1(eslint@9.21.0(jiti@2.4.1)) + "@typescript-eslint/scope-manager": 8.25.0 + "@typescript-eslint/types": 8.25.0 + "@typescript-eslint/typescript-estree": 8.25.0(typescript@5.7.3) + eslint: 9.21.0(jiti@2.4.1) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.18.2": + "@typescript-eslint/visitor-keys@8.25.0": dependencies: - "@typescript-eslint/types": 8.18.2 + "@typescript-eslint/types": 8.25.0 eslint-visitor-keys: 4.2.0 "@vime/core@5.4.1": @@ -11034,7 +11659,7 @@ snapshots: agent-base@7.1.1: dependencies: - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -11101,6 +11726,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@3.16.0: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -11140,14 +11767,14 @@ snapshots: at-least-node@1.0.0: {} - autoprefixer@10.4.20(postcss@8.4.49): + autoprefixer@10.4.20(postcss@8.5.3): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.4 caniuse-lite: 1.0.30001677 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -11190,6 +11817,8 @@ snapshots: binary-extensions@2.3.0: {} + birpc@2.2.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -11224,6 +11853,13 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001700 + electron-to-chromium: 1.5.104 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.4) + buffer-from@1.1.2: {} buffer@5.7.1: @@ -11231,6 +11867,15 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + cacheable-lookup@7.0.0: {} cacheable-request@12.0.1: @@ -11243,6 +11888,11 @@ snapshots: normalize-url: 8.0.1 responselike: 3.0.0 + cacheable@1.8.8: + dependencies: + hookified: 1.7.0 + keyv: 5.2.3 + cachedir@2.3.0: {} call-bind@1.0.7: @@ -11268,6 +11918,8 @@ snapshots: caniuse-lite@1.0.30001677: {} + caniuse-lite@1.0.30001700: {} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -11279,7 +11931,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + chalk@5.3.0: + optional: true chalk@5.4.1: {} @@ -11287,7 +11940,7 @@ snapshots: chardet@0.7.0: {} - choices.js@11.0.3: + choices.js@11.0.6: dependencies: fuse.js: 7.0.0 @@ -11365,13 +12018,13 @@ snapshots: codemirror@6.0.1(@lezer/common@1.2.3): dependencies: - "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) - "@codemirror/commands": 6.7.1 + "@codemirror/autocomplete": 6.18.2(@codemirror/language@6.10.8)(@codemirror/state@6.5.2)(@codemirror/view@6.36.2)(@lezer/common@1.2.3) + "@codemirror/commands": 6.8.0 "@codemirror/language": 6.10.8 "@codemirror/lint": 6.8.2 "@codemirror/search": 6.5.7 - "@codemirror/state": 6.5.0 - "@codemirror/view": 6.36.1 + "@codemirror/state": 6.5.2 + "@codemirror/view": 6.36.2 transitivePeerDependencies: - "@lezer/common" @@ -11387,11 +12040,21 @@ snapshots: color-name@1.1.4: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + colord@2.9.3: {} colorette@2.0.20: {} - commander@12.1.0: {} + commander@13.1.0: {} commander@2.20.3: {} @@ -11399,10 +12062,10 @@ snapshots: commander@7.2.0: {} - commitizen@4.3.1(@types/node@22.9.0)(typescript@5.7.2): + commitizen@4.3.1(@types/node@22.9.0)(typescript@5.7.3): dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@22.9.0)(typescript@5.7.2) + cz-conventional-changelog: 3.3.0(@types/node@22.9.0)(typescript@5.7.3) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -11484,29 +12147,29 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2): + cosmiconfig-typescript-loader@5.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): dependencies: "@types/node": 22.9.0 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) jiti: 1.21.6 - typescript: 5.7.2 + typescript: 5.7.3 optional: true - cosmiconfig-typescript-loader@6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.9.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): dependencies: "@types/node": 22.9.0 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) jiti: 2.4.1 - typescript: 5.7.2 + typescript: 5.7.3 - cosmiconfig@9.0.0(typescript@5.7.2): + cosmiconfig@9.0.0(typescript@5.7.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 crelt@1.0.6: {} @@ -11534,27 +12197,27 @@ snapshots: dependencies: type-fest: 1.4.0 - css-blank-pseudo@7.0.1(postcss@8.4.49): + css-blank-pseudo@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - css-declaration-sorter@7.2.0(postcss@8.4.49): + css-declaration-sorter@7.2.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 css-functions-list@3.2.3: {} - css-has-pseudo@7.0.2(postcss@8.4.49): + css-has-pseudo@7.0.2(postcss@8.5.3): dependencies: "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - css-prefers-color-scheme@10.0.0(postcss@8.4.49): + css-prefers-color-scheme@10.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 css-select@5.1.0: dependencies: @@ -11574,9 +12237,9 @@ snapshots: mdn-data: 2.0.30 source-map-js: 1.2.1 - css-tree@3.0.1: + css-tree@3.1.0: dependencies: - mdn-data: 2.12.1 + mdn-data: 2.12.2 source-map-js: 1.2.1 css-what@6.1.0: {} @@ -11585,64 +12248,64 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.6(postcss@8.4.49): + cssnano-preset-default@7.0.6(postcss@8.5.3): dependencies: browserslist: 4.24.2 - css-declaration-sorter: 7.2.0(postcss@8.4.49) - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 - postcss-calc: 10.0.2(postcss@8.4.49) - postcss-colormin: 7.0.2(postcss@8.4.49) - postcss-convert-values: 7.0.4(postcss@8.4.49) - postcss-discard-comments: 7.0.3(postcss@8.4.49) - postcss-discard-duplicates: 7.0.1(postcss@8.4.49) - postcss-discard-empty: 7.0.0(postcss@8.4.49) - postcss-discard-overridden: 7.0.0(postcss@8.4.49) - postcss-merge-longhand: 7.0.4(postcss@8.4.49) - postcss-merge-rules: 7.0.4(postcss@8.4.49) - postcss-minify-font-values: 7.0.0(postcss@8.4.49) - postcss-minify-gradients: 7.0.0(postcss@8.4.49) - postcss-minify-params: 7.0.2(postcss@8.4.49) - postcss-minify-selectors: 7.0.4(postcss@8.4.49) - postcss-normalize-charset: 7.0.0(postcss@8.4.49) - postcss-normalize-display-values: 7.0.0(postcss@8.4.49) - postcss-normalize-positions: 7.0.0(postcss@8.4.49) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.49) - postcss-normalize-string: 7.0.0(postcss@8.4.49) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.49) - postcss-normalize-unicode: 7.0.2(postcss@8.4.49) - postcss-normalize-url: 7.0.0(postcss@8.4.49) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.49) - postcss-ordered-values: 7.0.1(postcss@8.4.49) - postcss-reduce-initial: 7.0.2(postcss@8.4.49) - postcss-reduce-transforms: 7.0.0(postcss@8.4.49) - postcss-svgo: 7.0.1(postcss@8.4.49) - postcss-unique-selectors: 7.0.3(postcss@8.4.49) + css-declaration-sorter: 7.2.0(postcss@8.5.3) + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-calc: 10.0.2(postcss@8.5.3) + postcss-colormin: 7.0.2(postcss@8.5.3) + postcss-convert-values: 7.0.4(postcss@8.5.3) + postcss-discard-comments: 7.0.3(postcss@8.5.3) + postcss-discard-duplicates: 7.0.1(postcss@8.5.3) + postcss-discard-empty: 7.0.0(postcss@8.5.3) + postcss-discard-overridden: 7.0.0(postcss@8.5.3) + postcss-merge-longhand: 7.0.4(postcss@8.5.3) + postcss-merge-rules: 7.0.4(postcss@8.5.3) + postcss-minify-font-values: 7.0.0(postcss@8.5.3) + postcss-minify-gradients: 7.0.0(postcss@8.5.3) + postcss-minify-params: 7.0.2(postcss@8.5.3) + postcss-minify-selectors: 7.0.4(postcss@8.5.3) + postcss-normalize-charset: 7.0.0(postcss@8.5.3) + postcss-normalize-display-values: 7.0.0(postcss@8.5.3) + postcss-normalize-positions: 7.0.0(postcss@8.5.3) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.3) + postcss-normalize-string: 7.0.0(postcss@8.5.3) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.3) + postcss-normalize-unicode: 7.0.2(postcss@8.5.3) + postcss-normalize-url: 7.0.0(postcss@8.5.3) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.3) + postcss-ordered-values: 7.0.1(postcss@8.5.3) + postcss-reduce-initial: 7.0.2(postcss@8.5.3) + postcss-reduce-transforms: 7.0.0(postcss@8.5.3) + postcss-svgo: 7.0.1(postcss@8.5.3) + postcss-unique-selectors: 7.0.3(postcss@8.5.3) - cssnano-utils@5.0.0(postcss@8.4.49): + cssnano-utils@5.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - cssnano@7.0.6(postcss@8.4.49): + cssnano@7.0.6(postcss@8.5.3): dependencies: - cssnano-preset-default: 7.0.6(postcss@8.4.49) + cssnano-preset-default: 7.0.6(postcss@8.5.3) lilconfig: 3.1.2 - postcss: 8.4.49 + postcss: 8.5.3 csso@5.0.5: dependencies: css-tree: 2.2.1 - cz-conventional-changelog@3.3.0(@types/node@22.9.0)(typescript@5.7.2): + cz-conventional-changelog@3.3.0(@types/node@22.9.0)(typescript@5.7.3): dependencies: chalk: 2.4.2 - commitizen: 4.3.1(@types/node@22.9.0)(typescript@5.7.2) + commitizen: 4.3.1(@types/node@22.9.0)(typescript@5.7.3) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - "@commitlint/load": 19.5.0(@types/node@22.9.0)(typescript@5.7.2) + "@commitlint/load": 19.5.0(@types/node@22.9.0)(typescript@5.7.3) transitivePeerDependencies: - "@types/node" - typescript @@ -11743,6 +12406,13 @@ snapshots: deepmerge@4.3.1: {} + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + defaults@1.0.4: dependencies: clone: 1.0.4 @@ -11755,6 +12425,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.0.1 + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -11765,6 +12437,8 @@ snapshots: detect-indent@6.1.0: {} + detect-libc@2.0.3: {} + dfa@1.2.0: {} didyoumean@1.2.2: {} @@ -11807,6 +12481,8 @@ snapshots: dependencies: jake: 10.9.2 + electron-to-chromium@1.5.104: {} + electron-to-chromium@1.5.52: {} emoji-regex@10.4.0: {} @@ -11832,6 +12508,8 @@ snapshots: dependencies: is-arrayish: 0.2.1 + error-stack-parser-es@1.0.5: {} + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -11903,33 +12581,33 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - esbuild@0.24.2: + esbuild@0.25.0: optionalDependencies: - "@esbuild/aix-ppc64": 0.24.2 - "@esbuild/android-arm": 0.24.2 - "@esbuild/android-arm64": 0.24.2 - "@esbuild/android-x64": 0.24.2 - "@esbuild/darwin-arm64": 0.24.2 - "@esbuild/darwin-x64": 0.24.2 - "@esbuild/freebsd-arm64": 0.24.2 - "@esbuild/freebsd-x64": 0.24.2 - "@esbuild/linux-arm": 0.24.2 - "@esbuild/linux-arm64": 0.24.2 - "@esbuild/linux-ia32": 0.24.2 - "@esbuild/linux-loong64": 0.24.2 - "@esbuild/linux-mips64el": 0.24.2 - "@esbuild/linux-ppc64": 0.24.2 - "@esbuild/linux-riscv64": 0.24.2 - "@esbuild/linux-s390x": 0.24.2 - "@esbuild/linux-x64": 0.24.2 - "@esbuild/netbsd-arm64": 0.24.2 - "@esbuild/netbsd-x64": 0.24.2 - "@esbuild/openbsd-arm64": 0.24.2 - "@esbuild/openbsd-x64": 0.24.2 - "@esbuild/sunos-x64": 0.24.2 - "@esbuild/win32-arm64": 0.24.2 - "@esbuild/win32-ia32": 0.24.2 - "@esbuild/win32-x64": 0.24.2 + "@esbuild/aix-ppc64": 0.25.0 + "@esbuild/android-arm": 0.25.0 + "@esbuild/android-arm64": 0.25.0 + "@esbuild/android-x64": 0.25.0 + "@esbuild/darwin-arm64": 0.25.0 + "@esbuild/darwin-x64": 0.25.0 + "@esbuild/freebsd-arm64": 0.25.0 + "@esbuild/freebsd-x64": 0.25.0 + "@esbuild/linux-arm": 0.25.0 + "@esbuild/linux-arm64": 0.25.0 + "@esbuild/linux-ia32": 0.25.0 + "@esbuild/linux-loong64": 0.25.0 + "@esbuild/linux-mips64el": 0.25.0 + "@esbuild/linux-ppc64": 0.25.0 + "@esbuild/linux-riscv64": 0.25.0 + "@esbuild/linux-s390x": 0.25.0 + "@esbuild/linux-x64": 0.25.0 + "@esbuild/netbsd-arm64": 0.25.0 + "@esbuild/netbsd-x64": 0.25.0 + "@esbuild/openbsd-arm64": 0.25.0 + "@esbuild/openbsd-x64": 0.25.0 + "@esbuild/sunos-x64": 0.25.0 + "@esbuild/win32-arm64": 0.25.0 + "@esbuild/win32-ia32": 0.25.0 + "@esbuild/win32-x64": 0.25.0 escalade@3.2.0: {} @@ -11939,19 +12617,19 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@9.1.0(eslint@9.17.0(jiti@2.4.1)): + eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.1)): dependencies: - eslint: 9.17.0(jiti@2.4.1) + eslint: 9.21.0(jiti@2.4.1) - eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.17.0(jiti@2.4.1)))(eslint@9.17.0(jiti@2.4.1))(prettier@3.4.2): + eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.1)))(eslint@9.21.0(jiti@2.4.1))(prettier@3.5.2): dependencies: - eslint: 9.17.0(jiti@2.4.1) - prettier: 3.4.2 + eslint: 9.21.0(jiti@2.4.1) + prettier: 3.5.2 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 optionalDependencies: "@types/eslint": 9.6.1 - eslint-config-prettier: 9.1.0(eslint@9.17.0(jiti@2.4.1)) + eslint-config-prettier: 10.0.2(eslint@9.21.0(jiti@2.4.1)) eslint-scope@8.2.0: dependencies: @@ -11962,24 +12640,24 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.17.0(jiti@2.4.1): + eslint@9.21.0(jiti@2.4.1): dependencies: - "@eslint-community/eslint-utils": 4.4.1(eslint@9.17.0(jiti@2.4.1)) + "@eslint-community/eslint-utils": 4.4.1(eslint@9.21.0(jiti@2.4.1)) "@eslint-community/regexpp": 4.12.1 - "@eslint/config-array": 0.19.1 - "@eslint/core": 0.9.1 - "@eslint/eslintrc": 3.2.0 - "@eslint/js": 9.17.0 - "@eslint/plugin-kit": 0.2.4 + "@eslint/config-array": 0.19.2 + "@eslint/core": 0.12.0 + "@eslint/eslintrc": 3.3.0 + "@eslint/js": 9.21.0 + "@eslint/plugin-kit": 0.2.7 "@humanfs/node": 0.16.6 "@humanwhocodes/module-importer": 1.0.1 - "@humanwhocodes/retry": 0.4.1 + "@humanwhocodes/retry": 0.4.2 "@types/estree": 1.0.6 "@types/json-schema": 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7 + debug: 4.4.0 escape-string-regexp: 4.0.0 eslint-scope: 8.2.0 eslint-visitor-keys: 4.2.0 @@ -12054,7 +12732,7 @@ snapshots: execa@9.5.1: dependencies: "@sindresorhus/merge-streams": 4.0.0 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 figures: 6.1.0 get-stream: 9.0.1 human-signals: 8.0.0 @@ -12088,6 +12766,14 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-glob@3.3.3: + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -12116,14 +12802,14 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 + file-entry-cache@10.0.6: + dependencies: + flat-cache: 6.1.6 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - file-entry-cache@9.1.0: - dependencies: - flat-cache: 5.0.0 - filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -12175,17 +12861,18 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.1 + flatted: 3.3.2 keyv: 4.5.4 - flat-cache@5.0.0: + flat-cache@6.1.6: dependencies: - flatted: 3.3.1 - keyv: 4.5.4 + cacheable: 1.8.8 + flatted: 3.3.2 + hookified: 1.7.0 flatpickr@4.6.13: {} - flatted@3.3.1: {} + flatted@3.3.2: {} for-each@0.3.3: dependencies: @@ -12307,6 +12994,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.0.1: + dependencies: + foreground-child: 3.3.0 + jackspeak: 4.0.2 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -12348,7 +13044,7 @@ snapshots: globals@14.0.0: {} - globals@15.14.0: {} + globals@16.0.0: {} globalthis@1.0.4: dependencies: @@ -12359,7 +13055,7 @@ snapshots: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 @@ -12438,6 +13134,8 @@ snapshots: hook-std@3.0.0: {} + hookified@1.7.0: {} + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -12450,14 +13148,14 @@ snapshots: html-tags@3.3.1: {} - htmlfy@0.5.0: {} + htmlfy@0.6.1: {} http-cache-semantics@4.1.1: {} http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -12469,7 +13167,7 @@ snapshots: https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -12495,7 +13193,7 @@ snapshots: ignore@5.3.2: {} - ignore@6.0.2: {} + ignore@7.0.3: {} import-fresh@3.3.0: dependencies: @@ -12504,7 +13202,14 @@ snapshots: import-from-esm@1.3.4: dependencies: - debug: 4.3.7 + debug: 4.4.0 + import-meta-resolve: 4.1.0 + transitivePeerDependencies: + - supports-color + + import-from-esm@2.0.0: + dependencies: + debug: 4.4.0 import-meta-resolve: 4.1.0 transitivePeerDependencies: - supports-color @@ -12589,6 +13294,8 @@ snapshots: is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 @@ -12620,6 +13327,8 @@ snapshots: dependencies: has-tostringtag: 1.0.2 + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -12634,6 +13343,10 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-interactive@1.0.0: {} is-module@1.0.0: {} @@ -12699,6 +13412,10 @@ snapshots: is-windows@1.0.2: {} + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + isarray@1.0.0: {} isarray@2.0.5: {} @@ -12719,6 +13436,10 @@ snapshots: optionalDependencies: "@pkgjs/parseargs": 0.11.0 + jackspeak@4.0.2: + dependencies: + "@isaacs/cliui": 8.0.2 + jake@10.9.2: dependencies: async: 3.2.6 @@ -12778,6 +13499,10 @@ snapshots: dependencies: json-buffer: 3.0.1 + keyv@5.2.3: + dependencies: + "@keyv/serialize": 1.0.2 + kind-of@6.0.3: {} known-css-properties@0.35.0: {} @@ -12801,10 +13526,10 @@ snapshots: lines-and-columns@1.2.4: {} - lint-staged@15.3.0: + lint-staged@15.4.3: dependencies: chalk: 5.4.1 - commander: 12.1.0 + commander: 13.1.0 debug: 4.4.0 execa: 8.0.1 lilconfig: 3.1.3 @@ -12812,7 +13537,7 @@ snapshots: micromatch: 4.0.8 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.6.1 + yaml: 2.7.0 transitivePeerDependencies: - supports-color @@ -12926,6 +13651,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.0.2: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -12938,7 +13665,7 @@ snapshots: dependencies: ansi-escapes: 7.0.0 ansi-regex: 6.1.0 - chalk: 5.3.0 + chalk: 5.4.1 cli-highlight: 2.1.11 cli-table3: 0.6.5 marked: 12.0.2 @@ -12947,7 +13674,7 @@ snapshots: marked@12.0.2: {} - marked@15.0.4: {} + marked@15.0.7: {} mathml-tag-names@2.1.3: {} @@ -12955,7 +13682,7 @@ snapshots: mdn-data@2.0.30: {} - mdn-data@2.12.1: {} + mdn-data@2.12.2: {} meow@12.1.1: {} @@ -12986,6 +13713,10 @@ snapshots: mini-svg-data-uri@1.4.4: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -13006,6 +13737,8 @@ snapshots: mitt@3.0.1: {} + mrmime@2.0.0: {} + ms@2.1.3: {} mute-stream@0.0.8: {} @@ -13016,7 +13749,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.7: {} + nanoid@3.3.8: {} natural-compare@1.4.0: {} @@ -13037,6 +13770,8 @@ snapshots: node-releases@2.0.18: {} + node-releases@2.0.19: {} + normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 @@ -13088,6 +13823,8 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 + ohash@2.0.4: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -13104,6 +13841,13 @@ snapshots: dependencies: mimic-function: 5.0.1 + open@10.1.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -13171,6 +13915,8 @@ snapshots: p-map@7.0.2: {} + p-map@7.0.3: {} + p-reduce@2.1.0: {} p-reduce@3.0.0: {} @@ -13245,10 +13991,17 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + path-type@4.0.0: {} path-type@5.0.0: {} + pathe@2.0.3: {} + pdfmake@0.2.15: dependencies: "@foliojs-fork/linebreak": 1.1.2 @@ -13258,6 +14011,8 @@ snapshots: pegjs@0.10.0: {} + perfect-debounce@1.0.0: {} + performance-now@2.1.0: {} picocolors@1.1.1: {} @@ -13289,397 +14044,397 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-attribute-case-insensitive@7.0.1(postcss@8.4.49): + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-calc@10.0.2(postcss@8.4.49): + postcss-calc@10.0.2(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-clamp@4.1.0(postcss@8.4.49): + postcss-clamp@4.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.7(postcss@8.4.49): + postcss-color-functional-notation@7.0.8(postcss@8.5.3): dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - postcss-color-hex-alpha@10.0.0(postcss@8.4.49): + postcss-color-hex-alpha@10.0.0(postcss@8.5.3): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@10.0.0(postcss@8.4.49): + postcss-color-rebeccapurple@10.0.0(postcss@8.5.3): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.4.49): + postcss-colormin@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.2 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.4.49): + postcss-convert-values@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.2 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.5(postcss@8.4.49): + postcss-custom-media@11.0.5(postcss@8.5.3): dependencies: "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.4.49 + postcss: 8.5.3 - postcss-custom-properties@14.0.4(postcss@8.4.49): + postcss-custom-properties@14.0.4(postcss@8.5.3): dependencies: "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.4(postcss@8.4.49): + postcss-custom-selectors@8.0.4(postcss@8.5.3): dependencies: "@csstools/cascade-layer-name-parser": 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-dir-pseudo-class@9.0.1(postcss@8.4.49): + postcss-dir-pseudo-class@9.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-discard-comments@7.0.3(postcss@8.4.49): + postcss-discard-comments@7.0.3(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.4.49): + postcss-discard-duplicates@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-discard-empty@7.0.0(postcss@8.4.49): + postcss-discard-empty@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-discard-overridden@7.0.0(postcss@8.4.49): + postcss-discard-overridden@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-double-position-gradients@6.0.0(postcss@8.4.49): + postcss-double-position-gradients@6.0.0(postcss@8.5.3): dependencies: - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-focus-visible@10.0.1(postcss@8.4.49): + postcss-focus-visible@10.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-focus-within@9.0.1(postcss@8.4.49): + postcss-focus-within@9.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-font-variant@5.0.0(postcss@8.4.49): + postcss-font-variant@5.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-gap-properties@6.0.0(postcss@8.4.49): + postcss-gap-properties@6.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-image-set-function@7.0.0(postcss@8.4.49): + postcss-image-set-function@7.0.0(postcss@8.5.3): dependencies: - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-import@15.1.0(postcss@8.4.49): + postcss-import@15.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-import@16.1.0(postcss@8.4.49): + postcss-import@16.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.49): + postcss-js@4.0.1(postcss@8.5.3): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.49 + postcss: 8.5.3 - postcss-lab-function@7.0.7(postcss@8.4.49): + postcss-lab-function@7.0.8(postcss@8.5.3): dependencies: - "@csstools/css-color-parser": 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + "@csstools/css-color-parser": 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/utilities": 2.0.0(postcss@8.4.49) - postcss: 8.4.49 + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/utilities": 2.0.0(postcss@8.5.3) + postcss: 8.5.3 - postcss-load-config@4.0.2(postcss@8.4.49): + postcss-load-config@4.0.2(postcss@8.5.3): dependencies: lilconfig: 3.1.3 - yaml: 2.6.1 + yaml: 2.7.0 optionalDependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-logical@8.0.0(postcss@8.4.49): + postcss-logical@8.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-merge-longhand@7.0.4(postcss@8.4.49): + postcss-merge-longhand@7.0.4(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.4.49) + stylehacks: 7.0.4(postcss@8.5.3) - postcss-merge-rules@7.0.4(postcss@8.4.49): + postcss-merge-rules@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.2 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.4.49): + postcss-minify-font-values@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.49): + postcss-minify-gradients@7.0.0(postcss@8.5.3): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.4.49): + postcss-minify-params@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.2 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.4.49): + postcss-minify-selectors@7.0.4(postcss@8.5.3): dependencies: cssesc: 3.0.0 - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-nested@6.2.0(postcss@8.4.49): + postcss-nested@6.2.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-nesting@13.0.1(postcss@8.4.49): + postcss-nesting@13.0.1(postcss@8.5.3): dependencies: "@csstools/selector-resolve-nested": 3.0.0(postcss-selector-parser@7.0.0) "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-normalize-charset@7.0.0(postcss@8.4.49): + postcss-normalize-charset@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-normalize-display-values@7.0.0(postcss@8.4.49): + postcss-normalize-display-values@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.49): + postcss-normalize-positions@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.49): + postcss-normalize-repeat-style@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.49): + postcss-normalize-string@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.49): + postcss-normalize-timing-functions@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.4.49): + postcss-normalize-unicode@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.2 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.49): + postcss-normalize-url@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.49): + postcss-normalize-whitespace@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-opacity-percentage@3.0.0(postcss@8.4.49): + postcss-opacity-percentage@3.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-ordered-values@7.0.1(postcss@8.4.49): + postcss-ordered-values@7.0.1(postcss@8.5.3): dependencies: - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-overflow-shorthand@6.0.0(postcss@8.4.49): + postcss-overflow-shorthand@6.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.4.49): + postcss-page-break@3.0.4(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-place@10.0.0(postcss@8.4.49): + postcss-place@10.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-preset-env@10.1.3(postcss@8.4.49): + postcss-preset-env@10.1.5(postcss@8.5.3): dependencies: - "@csstools/postcss-cascade-layers": 5.0.1(postcss@8.4.49) - "@csstools/postcss-color-function": 4.0.7(postcss@8.4.49) - "@csstools/postcss-color-mix-function": 3.0.7(postcss@8.4.49) - "@csstools/postcss-content-alt-text": 2.0.4(postcss@8.4.49) - "@csstools/postcss-exponential-functions": 2.0.6(postcss@8.4.49) - "@csstools/postcss-font-format-keywords": 4.0.0(postcss@8.4.49) - "@csstools/postcss-gamut-mapping": 2.0.7(postcss@8.4.49) - "@csstools/postcss-gradients-interpolation-method": 5.0.7(postcss@8.4.49) - "@csstools/postcss-hwb-function": 4.0.7(postcss@8.4.49) - "@csstools/postcss-ic-unit": 4.0.0(postcss@8.4.49) - "@csstools/postcss-initial": 2.0.0(postcss@8.4.49) - "@csstools/postcss-is-pseudo-class": 5.0.1(postcss@8.4.49) - "@csstools/postcss-light-dark-function": 2.0.7(postcss@8.4.49) - "@csstools/postcss-logical-float-and-clear": 3.0.0(postcss@8.4.49) - "@csstools/postcss-logical-overflow": 2.0.0(postcss@8.4.49) - "@csstools/postcss-logical-overscroll-behavior": 2.0.0(postcss@8.4.49) - "@csstools/postcss-logical-resize": 3.0.0(postcss@8.4.49) - "@csstools/postcss-logical-viewport-units": 3.0.3(postcss@8.4.49) - "@csstools/postcss-media-minmax": 2.0.6(postcss@8.4.49) - "@csstools/postcss-media-queries-aspect-ratio-number-values": 3.0.4(postcss@8.4.49) - "@csstools/postcss-nested-calc": 4.0.0(postcss@8.4.49) - "@csstools/postcss-normalize-display-values": 4.0.0(postcss@8.4.49) - "@csstools/postcss-oklab-function": 4.0.7(postcss@8.4.49) - "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.4.49) - "@csstools/postcss-random-function": 1.0.2(postcss@8.4.49) - "@csstools/postcss-relative-color-syntax": 3.0.7(postcss@8.4.49) - "@csstools/postcss-scope-pseudo-class": 4.0.1(postcss@8.4.49) - "@csstools/postcss-sign-functions": 1.1.1(postcss@8.4.49) - "@csstools/postcss-stepped-value-functions": 4.0.6(postcss@8.4.49) - "@csstools/postcss-text-decoration-shorthand": 4.0.1(postcss@8.4.49) - "@csstools/postcss-trigonometric-functions": 4.0.6(postcss@8.4.49) - "@csstools/postcss-unset-value": 4.0.0(postcss@8.4.49) - autoprefixer: 10.4.20(postcss@8.4.49) - browserslist: 4.24.2 - css-blank-pseudo: 7.0.1(postcss@8.4.49) - css-has-pseudo: 7.0.2(postcss@8.4.49) - css-prefers-color-scheme: 10.0.0(postcss@8.4.49) + "@csstools/postcss-cascade-layers": 5.0.1(postcss@8.5.3) + "@csstools/postcss-color-function": 4.0.8(postcss@8.5.3) + "@csstools/postcss-color-mix-function": 3.0.8(postcss@8.5.3) + "@csstools/postcss-content-alt-text": 2.0.4(postcss@8.5.3) + "@csstools/postcss-exponential-functions": 2.0.7(postcss@8.5.3) + "@csstools/postcss-font-format-keywords": 4.0.0(postcss@8.5.3) + "@csstools/postcss-gamut-mapping": 2.0.8(postcss@8.5.3) + "@csstools/postcss-gradients-interpolation-method": 5.0.8(postcss@8.5.3) + "@csstools/postcss-hwb-function": 4.0.8(postcss@8.5.3) + "@csstools/postcss-ic-unit": 4.0.0(postcss@8.5.3) + "@csstools/postcss-initial": 2.0.1(postcss@8.5.3) + "@csstools/postcss-is-pseudo-class": 5.0.1(postcss@8.5.3) + "@csstools/postcss-light-dark-function": 2.0.7(postcss@8.5.3) + "@csstools/postcss-logical-float-and-clear": 3.0.0(postcss@8.5.3) + "@csstools/postcss-logical-overflow": 2.0.0(postcss@8.5.3) + "@csstools/postcss-logical-overscroll-behavior": 2.0.0(postcss@8.5.3) + "@csstools/postcss-logical-resize": 3.0.0(postcss@8.5.3) + "@csstools/postcss-logical-viewport-units": 3.0.3(postcss@8.5.3) + "@csstools/postcss-media-minmax": 2.0.7(postcss@8.5.3) + "@csstools/postcss-media-queries-aspect-ratio-number-values": 3.0.4(postcss@8.5.3) + "@csstools/postcss-nested-calc": 4.0.0(postcss@8.5.3) + "@csstools/postcss-normalize-display-values": 4.0.0(postcss@8.5.3) + "@csstools/postcss-oklab-function": 4.0.8(postcss@8.5.3) + "@csstools/postcss-progressive-custom-properties": 4.0.0(postcss@8.5.3) + "@csstools/postcss-random-function": 1.0.3(postcss@8.5.3) + "@csstools/postcss-relative-color-syntax": 3.0.8(postcss@8.5.3) + "@csstools/postcss-scope-pseudo-class": 4.0.1(postcss@8.5.3) + "@csstools/postcss-sign-functions": 1.1.2(postcss@8.5.3) + "@csstools/postcss-stepped-value-functions": 4.0.7(postcss@8.5.3) + "@csstools/postcss-text-decoration-shorthand": 4.0.2(postcss@8.5.3) + "@csstools/postcss-trigonometric-functions": 4.0.7(postcss@8.5.3) + "@csstools/postcss-unset-value": 4.0.0(postcss@8.5.3) + autoprefixer: 10.4.20(postcss@8.5.3) + browserslist: 4.24.4 + css-blank-pseudo: 7.0.1(postcss@8.5.3) + css-has-pseudo: 7.0.2(postcss@8.5.3) + css-prefers-color-scheme: 10.0.0(postcss@8.5.3) cssdb: 8.2.3 - postcss: 8.4.49 - postcss-attribute-case-insensitive: 7.0.1(postcss@8.4.49) - postcss-clamp: 4.1.0(postcss@8.4.49) - postcss-color-functional-notation: 7.0.7(postcss@8.4.49) - postcss-color-hex-alpha: 10.0.0(postcss@8.4.49) - postcss-color-rebeccapurple: 10.0.0(postcss@8.4.49) - postcss-custom-media: 11.0.5(postcss@8.4.49) - postcss-custom-properties: 14.0.4(postcss@8.4.49) - postcss-custom-selectors: 8.0.4(postcss@8.4.49) - postcss-dir-pseudo-class: 9.0.1(postcss@8.4.49) - postcss-double-position-gradients: 6.0.0(postcss@8.4.49) - postcss-focus-visible: 10.0.1(postcss@8.4.49) - postcss-focus-within: 9.0.1(postcss@8.4.49) - postcss-font-variant: 5.0.0(postcss@8.4.49) - postcss-gap-properties: 6.0.0(postcss@8.4.49) - postcss-image-set-function: 7.0.0(postcss@8.4.49) - postcss-lab-function: 7.0.7(postcss@8.4.49) - postcss-logical: 8.0.0(postcss@8.4.49) - postcss-nesting: 13.0.1(postcss@8.4.49) - postcss-opacity-percentage: 3.0.0(postcss@8.4.49) - postcss-overflow-shorthand: 6.0.0(postcss@8.4.49) - postcss-page-break: 3.0.4(postcss@8.4.49) - postcss-place: 10.0.0(postcss@8.4.49) - postcss-pseudo-class-any-link: 10.0.1(postcss@8.4.49) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.49) - postcss-selector-not: 8.0.1(postcss@8.4.49) + postcss: 8.5.3 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.3) + postcss-clamp: 4.1.0(postcss@8.5.3) + postcss-color-functional-notation: 7.0.8(postcss@8.5.3) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.3) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.3) + postcss-custom-media: 11.0.5(postcss@8.5.3) + postcss-custom-properties: 14.0.4(postcss@8.5.3) + postcss-custom-selectors: 8.0.4(postcss@8.5.3) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.3) + postcss-double-position-gradients: 6.0.0(postcss@8.5.3) + postcss-focus-visible: 10.0.1(postcss@8.5.3) + postcss-focus-within: 9.0.1(postcss@8.5.3) + postcss-font-variant: 5.0.0(postcss@8.5.3) + postcss-gap-properties: 6.0.0(postcss@8.5.3) + postcss-image-set-function: 7.0.0(postcss@8.5.3) + postcss-lab-function: 7.0.8(postcss@8.5.3) + postcss-logical: 8.1.0(postcss@8.5.3) + postcss-nesting: 13.0.1(postcss@8.5.3) + postcss-opacity-percentage: 3.0.0(postcss@8.5.3) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.3) + postcss-page-break: 3.0.4(postcss@8.5.3) + postcss-place: 10.0.0(postcss@8.5.3) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.3) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.3) + postcss-selector-not: 8.0.1(postcss@8.5.3) - postcss-pseudo-class-any-link@10.0.1(postcss@8.4.49): + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 - postcss-reduce-initial@7.0.2(postcss@8.4.49): + postcss-reduce-initial@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.2 caniuse-api: 3.0.0 - postcss: 8.4.49 + postcss: 8.5.3 - postcss-reduce-transforms@7.0.0(postcss@8.4.49): + postcss-reduce-transforms@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-replace-overflow-wrap@4.0.0(postcss@8.4.49): + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-reporter@7.1.0(postcss@8.4.49): + postcss-reporter@7.1.0(postcss@8.5.3): dependencies: picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.3 thenby: 1.3.4 postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.0.1(postcss@8.4.49): + postcss-safe-parser@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-selector-not@8.0.1(postcss@8.4.49): + postcss-selector-not@8.0.1(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 7.0.0 postcss-selector-parser@6.0.10: @@ -13697,22 +14452,27 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.4.49): + postcss-selector-parser@7.1.0: dependencies: - postcss: 8.4.49 + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.4.49): + postcss-unique-selectors@7.0.3(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss@8.4.49: + postcss@8.5.3: dependencies: - nanoid: 3.3.7 + nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -13722,15 +14482,15 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-organize-imports@4.1.0(prettier@3.4.2)(typescript@5.7.2): + prettier-plugin-organize-imports@4.1.0(prettier@3.5.2)(typescript@5.7.3): dependencies: - prettier: 3.4.2 - typescript: 5.7.2 + prettier: 3.5.2 + typescript: 5.7.3 prettier@2.8.8: optional: true - prettier@3.4.2: {} + prettier@3.5.2: {} pretty-bytes@5.6.0: {} @@ -13892,30 +14652,33 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.24.4: + rollup@4.34.8: dependencies: "@types/estree": 1.0.6 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.24.4 - "@rollup/rollup-android-arm64": 4.24.4 - "@rollup/rollup-darwin-arm64": 4.24.4 - "@rollup/rollup-darwin-x64": 4.24.4 - "@rollup/rollup-freebsd-arm64": 4.24.4 - "@rollup/rollup-freebsd-x64": 4.24.4 - "@rollup/rollup-linux-arm-gnueabihf": 4.24.4 - "@rollup/rollup-linux-arm-musleabihf": 4.24.4 - "@rollup/rollup-linux-arm64-gnu": 4.24.4 - "@rollup/rollup-linux-arm64-musl": 4.24.4 - "@rollup/rollup-linux-powerpc64le-gnu": 4.24.4 - "@rollup/rollup-linux-riscv64-gnu": 4.24.4 - "@rollup/rollup-linux-s390x-gnu": 4.24.4 - "@rollup/rollup-linux-x64-gnu": 4.24.4 - "@rollup/rollup-linux-x64-musl": 4.24.4 - "@rollup/rollup-win32-arm64-msvc": 4.24.4 - "@rollup/rollup-win32-ia32-msvc": 4.24.4 - "@rollup/rollup-win32-x64-msvc": 4.24.4 + "@rollup/rollup-android-arm-eabi": 4.34.8 + "@rollup/rollup-android-arm64": 4.34.8 + "@rollup/rollup-darwin-arm64": 4.34.8 + "@rollup/rollup-darwin-x64": 4.34.8 + "@rollup/rollup-freebsd-arm64": 4.34.8 + "@rollup/rollup-freebsd-x64": 4.34.8 + "@rollup/rollup-linux-arm-gnueabihf": 4.34.8 + "@rollup/rollup-linux-arm-musleabihf": 4.34.8 + "@rollup/rollup-linux-arm64-gnu": 4.34.8 + "@rollup/rollup-linux-arm64-musl": 4.34.8 + "@rollup/rollup-linux-loongarch64-gnu": 4.34.8 + "@rollup/rollup-linux-powerpc64le-gnu": 4.34.8 + "@rollup/rollup-linux-riscv64-gnu": 4.34.8 + "@rollup/rollup-linux-s390x-gnu": 4.34.8 + "@rollup/rollup-linux-x64-gnu": 4.34.8 + "@rollup/rollup-linux-x64-musl": 4.34.8 + "@rollup/rollup-win32-arm64-msvc": 4.34.8 + "@rollup/rollup-win32-ia32-msvc": 4.34.8 + "@rollup/rollup-win32-x64-msvc": 4.34.8 fsevents: 2.3.3 + run-applescript@7.0.0: {} + run-async@2.4.1: {} run-parallel@1.2.0: @@ -13951,16 +14714,16 @@ snapshots: sax@1.4.1: {} - semantic-release@24.2.0(typescript@5.7.2): + semantic-release@24.2.3(typescript@5.7.3): dependencies: - "@semantic-release/commit-analyzer": 13.0.0(semantic-release@24.2.0(typescript@5.7.2)) + "@semantic-release/commit-analyzer": 13.0.0(semantic-release@24.2.3(typescript@5.7.3)) "@semantic-release/error": 4.0.0 - "@semantic-release/github": 11.0.0(semantic-release@24.2.0(typescript@5.7.2)) - "@semantic-release/npm": 12.0.1(semantic-release@24.2.0(typescript@5.7.2)) - "@semantic-release/release-notes-generator": 14.0.1(semantic-release@24.2.0(typescript@5.7.2)) + "@semantic-release/github": 11.0.0(semantic-release@24.2.3(typescript@5.7.3)) + "@semantic-release/npm": 12.0.1(semantic-release@24.2.3(typescript@5.7.3)) + "@semantic-release/release-notes-generator": 14.0.1(semantic-release@24.2.3(typescript@5.7.3)) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.7.2) - debug: 4.3.7 + cosmiconfig: 9.0.0(typescript@5.7.3) + debug: 4.4.0 env-ci: 11.1.0 execa: 9.5.1 figures: 6.1.0 @@ -13969,7 +14732,7 @@ snapshots: git-log-parser: 1.2.1 hook-std: 3.0.0 hosted-git-info: 8.0.0 - import-from-esm: 1.3.4 + import-from-esm: 2.0.0 lodash-es: 4.17.21 marked: 12.0.2 marked-terminal: 7.2.1(marked@12.0.2) @@ -14018,6 +14781,32 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + "@img/sharp-darwin-arm64": 0.33.5 + "@img/sharp-darwin-x64": 0.33.5 + "@img/sharp-libvips-darwin-arm64": 1.0.4 + "@img/sharp-libvips-darwin-x64": 1.0.4 + "@img/sharp-libvips-linux-arm": 1.0.5 + "@img/sharp-libvips-linux-arm64": 1.0.4 + "@img/sharp-libvips-linux-s390x": 1.0.4 + "@img/sharp-libvips-linux-x64": 1.0.4 + "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + "@img/sharp-linux-arm": 0.33.5 + "@img/sharp-linux-arm64": 0.33.5 + "@img/sharp-linux-s390x": 0.33.5 + "@img/sharp-linux-x64": 0.33.5 + "@img/sharp-linuxmusl-arm64": 0.33.5 + "@img/sharp-linuxmusl-x64": 0.33.5 + "@img/sharp-wasm32": 0.33.5 + "@img/sharp-win32-ia32": 0.33.5 + "@img/sharp-win32-x64": 0.33.5 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -14041,6 +14830,16 @@ snapshots: figures: 2.0.0 pkg-conf: 2.1.0 + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + sirv@3.0.1: + dependencies: + "@polka/url": 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + skin-tone@2.0.0: dependencies: unicode-emoji-modifier-base: 1.0.0 @@ -14207,42 +15006,42 @@ snapshots: style-mod@4.1.2: {} - stylehacks@7.0.4(postcss@8.4.49): + stylehacks@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.2 - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - stylelint-config-recommended@14.0.1(stylelint@16.12.0(typescript@5.7.2)): + stylelint-config-recommended@15.0.0(stylelint@16.15.0(typescript@5.7.3)): dependencies: - stylelint: 16.12.0(typescript@5.7.2) + stylelint: 16.15.0(typescript@5.7.3) - stylelint-config-standard@36.0.1(stylelint@16.12.0(typescript@5.7.2)): + stylelint-config-standard@37.0.0(stylelint@16.15.0(typescript@5.7.3)): dependencies: - stylelint: 16.12.0(typescript@5.7.2) - stylelint-config-recommended: 14.0.1(stylelint@16.12.0(typescript@5.7.2)) + stylelint: 16.15.0(typescript@5.7.3) + stylelint-config-recommended: 15.0.0(stylelint@16.15.0(typescript@5.7.3)) - stylelint@16.12.0(typescript@5.7.2): + stylelint@16.15.0(typescript@5.7.3): dependencies: "@csstools/css-parser-algorithms": 3.0.4(@csstools/css-tokenizer@3.0.3) "@csstools/css-tokenizer": 3.0.3 "@csstools/media-query-list-parser": 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.0.0) + "@csstools/selector-specificity": 5.0.0(postcss-selector-parser@7.1.0) "@dual-bundle/import-meta-resolve": 4.1.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) css-functions-list: 3.2.3 - css-tree: 3.0.1 - debug: 4.3.7 - fast-glob: 3.3.2 + css-tree: 3.1.0 + debug: 4.4.0 + fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 9.1.0 + file-entry-cache: 10.0.6 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 6.0.2 + ignore: 7.0.3 imurmurhash: 0.1.4 is-plain-object: 5.0.0 known-css-properties: 0.35.0 @@ -14251,14 +15050,14 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.3 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 7.0.1(postcss@8.4.49) - postcss-selector-parser: 7.0.0 + postcss-safe-parser: 7.0.1(postcss@8.5.3) + postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 - supports-hyperlinks: 3.1.0 + supports-hyperlinks: 3.2.0 svg-tags: 1.0.0 table: 6.9.0 write-file-atomic: 5.0.1 @@ -14294,6 +15093,11 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} svg-tags@1.0.0: {} @@ -14328,7 +15132,7 @@ snapshots: chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.2 + fast-glob: 3.3.3 glob-parent: 6.0.2 is-glob: 4.0.3 jiti: 1.21.6 @@ -14337,11 +15141,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.49 - postcss-import: 15.1.0(postcss@8.4.49) - postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49) - postcss-nested: 6.2.0(postcss@8.4.49) + postcss: 8.5.3 + postcss-import: 15.1.0(postcss@8.5.3) + postcss-js: 4.0.1(postcss@8.5.3) + postcss-load-config: 4.0.2(postcss@8.5.3) + postcss-nested: 6.2.0(postcss@8.5.3) postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 @@ -14415,6 +15219,8 @@ snapshots: dependencies: is-number: 7.0.0 + totalist@3.0.1: {} + tr46@0.0.3: {} tr46@1.0.1: @@ -14423,9 +15229,9 @@ snapshots: traverse@0.6.8: {} - ts-api-utils@1.4.0(typescript@5.7.2): + ts-api-utils@2.0.1(typescript@5.7.3): dependencies: - typescript: 5.7.2 + typescript: 5.7.3 ts-interface-checker@0.1.13: {} @@ -14479,17 +15285,17 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript-eslint@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2): + typescript-eslint@8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3): dependencies: - "@typescript-eslint/eslint-plugin": 8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/parser": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - "@typescript-eslint/utils": 8.18.2(eslint@9.17.0(jiti@2.4.1))(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.1) - typescript: 5.7.2 + "@typescript-eslint/eslint-plugin": 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/parser": 8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3) + "@typescript-eslint/utils": 8.25.0(eslint@9.21.0(jiti@2.4.1))(typescript@5.7.3) + eslint: 9.21.0(jiti@2.4.1) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - typescript@5.7.2: {} + typescript@5.7.3: {} uglify-js@3.19.3: optional: true @@ -14542,6 +15348,11 @@ snapshots: universalify@2.0.1: {} + unplugin-utils@0.2.4: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.2 + upath@1.2.0: {} update-browserslist-db@1.1.1(browserslist@4.24.2): @@ -14550,6 +15361,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.1(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -14565,32 +15382,75 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-pwa@0.21.1(vite@6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1))(workbox-build@7.3.0)(workbox-window@7.3.0): + vite-dev-rpc@1.0.7(vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + dependencies: + birpc: 2.2.0 + vite: 6.2.0(@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.0(@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.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + dependencies: + vite: 6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + + vite-plugin-codeigniter@1.0.1(vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + dependencies: + glob: 11.0.1 + picocolors: 1.1.1 + sharp: 0.33.5 + vite: 6.2.0(@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.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + zod: 3.24.2 + + vite-plugin-inspect@11.0.0(vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): + dependencies: + ansis: 3.16.0 + debug: 4.4.0 + error-stack-parser-es: 1.0.5 + ohash: 2.0.4 + open: 10.1.0 + perfect-debounce: 1.0.0 + sirv: 3.0.1 + unplugin-utils: 0.2.4 + vite: 6.2.0(@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.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)) + transitivePeerDependencies: + - supports-color + + vite-plugin-pwa@0.21.1(vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0): dependencies: debug: 4.3.7 pretty-bytes: 6.1.1 tinyglobby: 0.2.10 - vite: 6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1) + vite: 6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) workbox-build: 7.3.0 workbox-window: 7.3.0 transitivePeerDependencies: - supports-color - vite@6.0.6(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.6.1): + vite-plugin-static-copy@2.3.0(vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0)): dependencies: - esbuild: 0.24.2 - postcss: 8.4.49 - rollup: 4.24.4 + chokidar: 3.6.0 + fast-glob: 3.3.3 + fs-extra: 11.2.0 + p-map: 7.0.3 + picocolors: 1.1.1 + vite: 6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0) + + vite@6.2.0(@types/node@22.9.0)(jiti@2.4.1)(terser@5.36.0)(yaml@2.7.0): + dependencies: + esbuild: 0.25.0 + postcss: 8.5.3 + rollup: 4.34.8 optionalDependencies: "@types/node": 22.9.0 fsevents: 2.3.3 jiti: 2.4.1 terser: 5.36.0 - yaml: 2.6.1 + yaml: 2.7.0 w3c-keyname@2.2.8: {} - wavesurfer.js@7.8.14: {} + wavesurfer.js@7.9.1: {} wcwidth@1.0.1: dependencies: @@ -14785,7 +15645,7 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - xml-formatter@3.6.3: + xml-formatter@3.6.4: dependencies: xml-parser-xo: 4.1.2 @@ -14803,7 +15663,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.6.1: {} + yaml@2.7.0: {} yargs-parser@18.1.3: dependencies: @@ -14853,3 +15713,5 @@ snapshots: yocto-queue@1.1.1: {} yoctocolors@2.1.1: {} + + zod@3.24.2: {} diff --git a/public/castopod-avatar_medium.webp b/public/castopod-avatar_medium.webp deleted file mode 100644 index 910a2b35..00000000 Binary files a/public/castopod-avatar_medium.webp and /dev/null differ diff --git a/public/castopod-avatar_thumbnail.webp b/public/castopod-avatar_thumbnail.webp deleted file mode 100644 index b0625dc0..00000000 Binary files a/public/castopod-avatar_thumbnail.webp and /dev/null differ diff --git a/public/castopod-avatar_tiny.webp b/public/castopod-avatar_tiny.webp deleted file mode 100644 index 21cc75d8..00000000 Binary files a/public/castopod-avatar_tiny.webp and /dev/null differ diff --git a/public/castopod-banner-amber_federation.jpg b/public/castopod-banner-amber_federation.jpg deleted file mode 100644 index 425305f3..00000000 Binary files a/public/castopod-banner-amber_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-amber_medium.webp b/public/castopod-banner-amber_medium.webp deleted file mode 100644 index 234ec532..00000000 Binary files a/public/castopod-banner-amber_medium.webp and /dev/null differ diff --git a/public/castopod-banner-amber_small.webp b/public/castopod-banner-amber_small.webp deleted file mode 100644 index 8c9ec454..00000000 Binary files a/public/castopod-banner-amber_small.webp and /dev/null differ diff --git a/public/castopod-banner-crimson_federation.jpg b/public/castopod-banner-crimson_federation.jpg deleted file mode 100644 index a016c399..00000000 Binary files a/public/castopod-banner-crimson_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-crimson_medium.webp b/public/castopod-banner-crimson_medium.webp deleted file mode 100644 index 48589283..00000000 Binary files a/public/castopod-banner-crimson_medium.webp and /dev/null differ diff --git a/public/castopod-banner-crimson_small.webp b/public/castopod-banner-crimson_small.webp deleted file mode 100644 index 1291f73b..00000000 Binary files a/public/castopod-banner-crimson_small.webp and /dev/null differ diff --git a/public/castopod-banner-jacaranda_federation.jpg b/public/castopod-banner-jacaranda_federation.jpg deleted file mode 100644 index 33eada3c..00000000 Binary files a/public/castopod-banner-jacaranda_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-jacaranda_medium.webp b/public/castopod-banner-jacaranda_medium.webp deleted file mode 100644 index ffca50ee..00000000 Binary files a/public/castopod-banner-jacaranda_medium.webp and /dev/null differ diff --git a/public/castopod-banner-jacaranda_small.webp b/public/castopod-banner-jacaranda_small.webp deleted file mode 100644 index b1154d22..00000000 Binary files a/public/castopod-banner-jacaranda_small.webp and /dev/null differ diff --git a/public/castopod-banner-lake_federation.jpg b/public/castopod-banner-lake_federation.jpg deleted file mode 100644 index f7527948..00000000 Binary files a/public/castopod-banner-lake_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-lake_medium.webp b/public/castopod-banner-lake_medium.webp deleted file mode 100644 index 4dcd70df..00000000 Binary files a/public/castopod-banner-lake_medium.webp and /dev/null differ diff --git a/public/castopod-banner-lake_small.webp b/public/castopod-banner-lake_small.webp deleted file mode 100644 index b3e5c539..00000000 Binary files a/public/castopod-banner-lake_small.webp and /dev/null differ diff --git a/public/castopod-banner-onyx_federation.jpg b/public/castopod-banner-onyx_federation.jpg deleted file mode 100644 index 73e4423a..00000000 Binary files a/public/castopod-banner-onyx_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-onyx_medium.webp b/public/castopod-banner-onyx_medium.webp deleted file mode 100644 index 189f77f5..00000000 Binary files a/public/castopod-banner-onyx_medium.webp and /dev/null differ diff --git a/public/castopod-banner-onyx_small.webp b/public/castopod-banner-onyx_small.webp deleted file mode 100644 index 81bd7fff..00000000 Binary files a/public/castopod-banner-onyx_small.webp and /dev/null differ diff --git a/public/castopod-banner-pine_federation.jpg b/public/castopod-banner-pine_federation.jpg deleted file mode 100644 index 9e9df5cb..00000000 Binary files a/public/castopod-banner-pine_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-pine_medium.webp b/public/castopod-banner-pine_medium.webp deleted file mode 100644 index 6371a5e5..00000000 Binary files a/public/castopod-banner-pine_medium.webp and /dev/null differ diff --git a/public/castopod-banner-pine_small.webp b/public/castopod-banner-pine_small.webp deleted file mode 100644 index ac43b616..00000000 Binary files a/public/castopod-banner-pine_small.webp and /dev/null differ diff --git a/public/index.php b/public/index.php index e4a895b5..8a1d49b5 100644 --- a/public/index.php +++ b/public/index.php @@ -16,7 +16,7 @@ if (version_compare(PHP_VERSION, $minPhpVersion, '<')) { $message = sprintf( 'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s', $minPhpVersion, - PHP_VERSION + PHP_VERSION, ); header('HTTP/1.1 503 Service Unavailable.', true, 503); diff --git a/rector.php b/rector.php index 9e968f48..8e981c17 100644 --- a/rector.php +++ b/rector.php @@ -17,8 +17,8 @@ use Rector\ValueObject\PhpVersion; return RectorConfig::configure() ->withPaths([__DIR__ . '/app', __DIR__ . '/modules', __DIR__ . '/tests', __DIR__ . '/public']) ->withBootstrapFiles([__DIR__ . '/vendor/codeigniter4/framework/system/Test/bootstrap.php']) - ->withPhpVersion(PhpVersion::PHP_83) - ->withPhpSets(php83: true) + ->withPhpVersion(PhpVersion::PHP_84) + ->withPhpSets(php84: true) ->withPreparedSets( typeDeclarations: true, codeQuality: true, diff --git a/app/Resources/icons/funding/_index.php b/resources/icons/funding/_index.php similarity index 100% rename from app/Resources/icons/funding/_index.php rename to resources/icons/funding/_index.php diff --git a/app/Resources/icons/funding/buymeacoffee.svg b/resources/icons/funding/buymeacoffee.svg similarity index 100% rename from app/Resources/icons/funding/buymeacoffee.svg rename to resources/icons/funding/buymeacoffee.svg diff --git a/app/Resources/icons/funding/default.svg b/resources/icons/funding/default.svg similarity index 100% rename from app/Resources/icons/funding/default.svg rename to resources/icons/funding/default.svg diff --git a/app/Resources/icons/funding/donorbox.svg b/resources/icons/funding/donorbox.svg similarity index 100% rename from app/Resources/icons/funding/donorbox.svg rename to resources/icons/funding/donorbox.svg diff --git a/app/Resources/icons/funding/gofundme.svg b/resources/icons/funding/gofundme.svg similarity index 100% rename from app/Resources/icons/funding/gofundme.svg rename to resources/icons/funding/gofundme.svg diff --git a/app/Resources/icons/funding/helloasso.svg b/resources/icons/funding/helloasso.svg similarity index 100% rename from app/Resources/icons/funding/helloasso.svg rename to resources/icons/funding/helloasso.svg diff --git a/app/Resources/icons/funding/indiegogo.svg b/resources/icons/funding/indiegogo.svg similarity index 100% rename from app/Resources/icons/funding/indiegogo.svg rename to resources/icons/funding/indiegogo.svg diff --git a/app/Resources/icons/funding/kickstarter.svg b/resources/icons/funding/kickstarter.svg similarity index 100% rename from app/Resources/icons/funding/kickstarter.svg rename to resources/icons/funding/kickstarter.svg diff --git a/app/Resources/icons/funding/kisskissbankbank.svg b/resources/icons/funding/kisskissbankbank.svg similarity index 100% rename from app/Resources/icons/funding/kisskissbankbank.svg rename to resources/icons/funding/kisskissbankbank.svg diff --git a/app/Resources/icons/funding/kofi.svg b/resources/icons/funding/kofi.svg similarity index 100% rename from app/Resources/icons/funding/kofi.svg rename to resources/icons/funding/kofi.svg diff --git a/app/Resources/icons/funding/liberapay.svg b/resources/icons/funding/liberapay.svg similarity index 100% rename from app/Resources/icons/funding/liberapay.svg rename to resources/icons/funding/liberapay.svg diff --git a/app/Resources/icons/funding/patreon.svg b/resources/icons/funding/patreon.svg similarity index 100% rename from app/Resources/icons/funding/patreon.svg rename to resources/icons/funding/patreon.svg diff --git a/app/Resources/icons/funding/paypal.svg b/resources/icons/funding/paypal.svg similarity index 100% rename from app/Resources/icons/funding/paypal.svg rename to resources/icons/funding/paypal.svg diff --git a/app/Resources/icons/funding/tipeee.svg b/resources/icons/funding/tipeee.svg similarity index 100% rename from app/Resources/icons/funding/tipeee.svg rename to resources/icons/funding/tipeee.svg diff --git a/app/Resources/icons/funding/ulule.svg b/resources/icons/funding/ulule.svg similarity index 100% rename from app/Resources/icons/funding/ulule.svg rename to resources/icons/funding/ulule.svg diff --git a/app/Resources/icons/podcasting/_index.php b/resources/icons/podcasting/_index.php similarity index 100% rename from app/Resources/icons/podcasting/_index.php rename to resources/icons/podcasting/_index.php diff --git a/app/Resources/icons/podcasting/amazon.svg b/resources/icons/podcasting/amazon.svg similarity index 100% rename from app/Resources/icons/podcasting/amazon.svg rename to resources/icons/podcasting/amazon.svg diff --git a/app/Resources/icons/podcasting/antennapod.svg b/resources/icons/podcasting/antennapod.svg similarity index 100% rename from app/Resources/icons/podcasting/antennapod.svg rename to resources/icons/podcasting/antennapod.svg diff --git a/app/Resources/icons/podcasting/anytime.svg b/resources/icons/podcasting/anytime.svg similarity index 100% rename from app/Resources/icons/podcasting/anytime.svg rename to resources/icons/podcasting/anytime.svg diff --git a/app/Resources/icons/podcasting/apple.svg b/resources/icons/podcasting/apple.svg similarity index 100% rename from app/Resources/icons/podcasting/apple.svg rename to resources/icons/podcasting/apple.svg diff --git a/app/Resources/icons/podcasting/blubrry.svg b/resources/icons/podcasting/blubrry.svg similarity index 100% rename from app/Resources/icons/podcasting/blubrry.svg rename to resources/icons/podcasting/blubrry.svg diff --git a/app/Resources/icons/podcasting/breaker.svg b/resources/icons/podcasting/breaker.svg similarity index 100% rename from app/Resources/icons/podcasting/breaker.svg rename to resources/icons/podcasting/breaker.svg diff --git a/app/Resources/icons/podcasting/breez.svg b/resources/icons/podcasting/breez.svg similarity index 100% rename from app/Resources/icons/podcasting/breez.svg rename to resources/icons/podcasting/breez.svg diff --git a/app/Resources/icons/podcasting/castamatic.svg b/resources/icons/podcasting/castamatic.svg similarity index 100% rename from app/Resources/icons/podcasting/castamatic.svg rename to resources/icons/podcasting/castamatic.svg diff --git a/app/Resources/icons/podcasting/castbox.svg b/resources/icons/podcasting/castbox.svg similarity index 100% rename from app/Resources/icons/podcasting/castbox.svg rename to resources/icons/podcasting/castbox.svg diff --git a/app/Resources/icons/podcasting/castopod.svg b/resources/icons/podcasting/castopod.svg similarity index 100% rename from app/Resources/icons/podcasting/castopod.svg rename to resources/icons/podcasting/castopod.svg diff --git a/app/Resources/icons/podcasting/castro.svg b/resources/icons/podcasting/castro.svg similarity index 100% rename from app/Resources/icons/podcasting/castro.svg rename to resources/icons/podcasting/castro.svg diff --git a/app/Resources/icons/podcasting/deezer.svg b/resources/icons/podcasting/deezer.svg similarity index 100% rename from app/Resources/icons/podcasting/deezer.svg rename to resources/icons/podcasting/deezer.svg diff --git a/app/Resources/icons/podcasting/default.svg b/resources/icons/podcasting/default.svg similarity index 100% rename from app/Resources/icons/podcasting/default.svg rename to resources/icons/podcasting/default.svg diff --git a/app/Resources/icons/podcasting/episodes-fm.svg b/resources/icons/podcasting/episodes-fm.svg similarity index 100% rename from app/Resources/icons/podcasting/episodes-fm.svg rename to resources/icons/podcasting/episodes-fm.svg diff --git a/app/Resources/icons/podcasting/fountain.svg b/resources/icons/podcasting/fountain.svg similarity index 100% rename from app/Resources/icons/podcasting/fountain.svg rename to resources/icons/podcasting/fountain.svg diff --git a/app/Resources/icons/podcasting/fyyd.svg b/resources/icons/podcasting/fyyd.svg similarity index 100% rename from app/Resources/icons/podcasting/fyyd.svg rename to resources/icons/podcasting/fyyd.svg diff --git a/app/Resources/icons/podcasting/google.svg b/resources/icons/podcasting/google.svg similarity index 100% rename from app/Resources/icons/podcasting/google.svg rename to resources/icons/podcasting/google.svg diff --git a/app/Resources/icons/podcasting/gpodder.svg b/resources/icons/podcasting/gpodder.svg similarity index 100% rename from app/Resources/icons/podcasting/gpodder.svg rename to resources/icons/podcasting/gpodder.svg diff --git a/app/Resources/icons/podcasting/ivoox.svg b/resources/icons/podcasting/ivoox.svg similarity index 100% rename from app/Resources/icons/podcasting/ivoox.svg rename to resources/icons/podcasting/ivoox.svg diff --git a/app/Resources/icons/podcasting/listennotes.svg b/resources/icons/podcasting/listennotes.svg similarity index 100% rename from app/Resources/icons/podcasting/listennotes.svg rename to resources/icons/podcasting/listennotes.svg diff --git a/app/Resources/icons/podcasting/overcast.svg b/resources/icons/podcasting/overcast.svg similarity index 100% rename from app/Resources/icons/podcasting/overcast.svg rename to resources/icons/podcasting/overcast.svg diff --git a/app/Resources/icons/podcasting/playerfm.svg b/resources/icons/podcasting/playerfm.svg similarity index 100% rename from app/Resources/icons/podcasting/playerfm.svg rename to resources/icons/podcasting/playerfm.svg diff --git a/app/Resources/icons/podcasting/plink.svg b/resources/icons/podcasting/plink.svg similarity index 100% rename from app/Resources/icons/podcasting/plink.svg rename to resources/icons/podcasting/plink.svg diff --git a/app/Resources/icons/podcasting/pocketcasts.svg b/resources/icons/podcasting/pocketcasts.svg similarity index 100% rename from app/Resources/icons/podcasting/pocketcasts.svg rename to resources/icons/podcasting/pocketcasts.svg diff --git a/app/Resources/icons/podcasting/podbean.svg b/resources/icons/podcasting/podbean.svg similarity index 100% rename from app/Resources/icons/podcasting/podbean.svg rename to resources/icons/podcasting/podbean.svg diff --git a/app/Resources/icons/podcasting/podcastaddict.svg b/resources/icons/podcasting/podcastaddict.svg similarity index 100% rename from app/Resources/icons/podcasting/podcastaddict.svg rename to resources/icons/podcasting/podcastaddict.svg diff --git a/app/Resources/icons/podcasting/podcastguru.svg b/resources/icons/podcasting/podcastguru.svg similarity index 100% rename from app/Resources/icons/podcasting/podcastguru.svg rename to resources/icons/podcasting/podcastguru.svg diff --git a/app/Resources/icons/podcasting/podcastindex.svg b/resources/icons/podcasting/podcastindex.svg similarity index 100% rename from app/Resources/icons/podcasting/podcastindex.svg rename to resources/icons/podcasting/podcastindex.svg diff --git a/app/Resources/icons/podcasting/podchaser.svg b/resources/icons/podcasting/podchaser.svg similarity index 100% rename from app/Resources/icons/podcasting/podchaser.svg rename to resources/icons/podcasting/podchaser.svg diff --git a/app/Resources/icons/podcasting/podcloud.svg b/resources/icons/podcasting/podcloud.svg similarity index 100% rename from app/Resources/icons/podcasting/podcloud.svg rename to resources/icons/podcasting/podcloud.svg diff --git a/app/Resources/icons/podcasting/podfriend.svg b/resources/icons/podcasting/podfriend.svg similarity index 100% rename from app/Resources/icons/podcasting/podfriend.svg rename to resources/icons/podcasting/podfriend.svg diff --git a/app/Resources/icons/podcasting/podinstall.svg b/resources/icons/podcasting/podinstall.svg similarity index 100% rename from app/Resources/icons/podcasting/podinstall.svg rename to resources/icons/podcasting/podinstall.svg diff --git a/app/Resources/icons/podcasting/podlink.svg b/resources/icons/podcasting/podlink.svg similarity index 100% rename from app/Resources/icons/podcasting/podlink.svg rename to resources/icons/podcasting/podlink.svg diff --git a/app/Resources/icons/podcasting/podlp.svg b/resources/icons/podcasting/podlp.svg similarity index 100% rename from app/Resources/icons/podcasting/podlp.svg rename to resources/icons/podcasting/podlp.svg diff --git a/app/Resources/icons/podcasting/podnews.svg b/resources/icons/podcasting/podnews.svg similarity index 100% rename from app/Resources/icons/podcasting/podnews.svg rename to resources/icons/podcasting/podnews.svg diff --git a/app/Resources/icons/podcasting/podtail.svg b/resources/icons/podcasting/podtail.svg similarity index 100% rename from app/Resources/icons/podcasting/podtail.svg rename to resources/icons/podcasting/podtail.svg diff --git a/app/Resources/icons/podcasting/podverse.svg b/resources/icons/podcasting/podverse.svg similarity index 100% rename from app/Resources/icons/podcasting/podverse.svg rename to resources/icons/podcasting/podverse.svg diff --git a/app/Resources/icons/podcasting/radiopublic.svg b/resources/icons/podcasting/radiopublic.svg similarity index 100% rename from app/Resources/icons/podcasting/radiopublic.svg rename to resources/icons/podcasting/radiopublic.svg diff --git a/app/Resources/icons/podcasting/sphinxchat.svg b/resources/icons/podcasting/sphinxchat.svg similarity index 100% rename from app/Resources/icons/podcasting/sphinxchat.svg rename to resources/icons/podcasting/sphinxchat.svg diff --git a/app/Resources/icons/podcasting/spotify.svg b/resources/icons/podcasting/spotify.svg similarity index 100% rename from app/Resources/icons/podcasting/spotify.svg rename to resources/icons/podcasting/spotify.svg diff --git a/app/Resources/icons/podcasting/spreaker.svg b/resources/icons/podcasting/spreaker.svg similarity index 100% rename from app/Resources/icons/podcasting/spreaker.svg rename to resources/icons/podcasting/spreaker.svg diff --git a/app/Resources/icons/podcasting/stitcher.svg b/resources/icons/podcasting/stitcher.svg similarity index 100% rename from app/Resources/icons/podcasting/stitcher.svg rename to resources/icons/podcasting/stitcher.svg diff --git a/app/Resources/icons/podcasting/truefans.svg b/resources/icons/podcasting/truefans.svg similarity index 100% rename from app/Resources/icons/podcasting/truefans.svg rename to resources/icons/podcasting/truefans.svg diff --git a/app/Resources/icons/podcasting/tsacdop.svg b/resources/icons/podcasting/tsacdop.svg similarity index 100% rename from app/Resources/icons/podcasting/tsacdop.svg rename to resources/icons/podcasting/tsacdop.svg diff --git a/app/Resources/icons/podcasting/tunein.svg b/resources/icons/podcasting/tunein.svg similarity index 100% rename from app/Resources/icons/podcasting/tunein.svg rename to resources/icons/podcasting/tunein.svg diff --git a/app/Resources/icons/podcasting/youtube-music.svg b/resources/icons/podcasting/youtube-music.svg similarity index 100% rename from app/Resources/icons/podcasting/youtube-music.svg rename to resources/icons/podcasting/youtube-music.svg diff --git a/app/Resources/icons/social/_index.php b/resources/icons/social/_index.php similarity index 100% rename from app/Resources/icons/social/_index.php rename to resources/icons/social/_index.php diff --git a/app/Resources/icons/social/bluesky.svg b/resources/icons/social/bluesky.svg similarity index 100% rename from app/Resources/icons/social/bluesky.svg rename to resources/icons/social/bluesky.svg diff --git a/app/Resources/icons/social/castopod.svg b/resources/icons/social/castopod.svg similarity index 100% rename from app/Resources/icons/social/castopod.svg rename to resources/icons/social/castopod.svg diff --git a/app/Resources/icons/social/default.svg b/resources/icons/social/default.svg similarity index 100% rename from app/Resources/icons/social/default.svg rename to resources/icons/social/default.svg diff --git a/app/Resources/icons/social/discord.svg b/resources/icons/social/discord.svg similarity index 100% rename from app/Resources/icons/social/discord.svg rename to resources/icons/social/discord.svg diff --git a/app/Resources/icons/social/facebook.svg b/resources/icons/social/facebook.svg similarity index 100% rename from app/Resources/icons/social/facebook.svg rename to resources/icons/social/facebook.svg diff --git a/app/Resources/icons/social/funkwhale.svg b/resources/icons/social/funkwhale.svg similarity index 100% rename from app/Resources/icons/social/funkwhale.svg rename to resources/icons/social/funkwhale.svg diff --git a/app/Resources/icons/social/instagram.svg b/resources/icons/social/instagram.svg similarity index 100% rename from app/Resources/icons/social/instagram.svg rename to resources/icons/social/instagram.svg diff --git a/app/Resources/icons/social/linkedin.svg b/resources/icons/social/linkedin.svg similarity index 100% rename from app/Resources/icons/social/linkedin.svg rename to resources/icons/social/linkedin.svg diff --git a/app/Resources/icons/social/mastodon.svg b/resources/icons/social/mastodon.svg similarity index 100% rename from app/Resources/icons/social/mastodon.svg rename to resources/icons/social/mastodon.svg diff --git a/app/Resources/icons/social/matrix.svg b/resources/icons/social/matrix.svg similarity index 100% rename from app/Resources/icons/social/matrix.svg rename to resources/icons/social/matrix.svg diff --git a/app/Resources/icons/social/misskey.svg b/resources/icons/social/misskey.svg similarity index 100% rename from app/Resources/icons/social/misskey.svg rename to resources/icons/social/misskey.svg diff --git a/app/Resources/icons/social/mobilizon.svg b/resources/icons/social/mobilizon.svg similarity index 100% rename from app/Resources/icons/social/mobilizon.svg rename to resources/icons/social/mobilizon.svg diff --git a/app/Resources/icons/social/peertube.svg b/resources/icons/social/peertube.svg similarity index 100% rename from app/Resources/icons/social/peertube.svg rename to resources/icons/social/peertube.svg diff --git a/app/Resources/icons/social/pixelfed.svg b/resources/icons/social/pixelfed.svg similarity index 100% rename from app/Resources/icons/social/pixelfed.svg rename to resources/icons/social/pixelfed.svg diff --git a/app/Resources/icons/social/pleroma.svg b/resources/icons/social/pleroma.svg similarity index 100% rename from app/Resources/icons/social/pleroma.svg rename to resources/icons/social/pleroma.svg diff --git a/app/Resources/icons/social/plume.svg b/resources/icons/social/plume.svg similarity index 100% rename from app/Resources/icons/social/plume.svg rename to resources/icons/social/plume.svg diff --git a/app/Resources/icons/social/reddit.svg b/resources/icons/social/reddit.svg similarity index 100% rename from app/Resources/icons/social/reddit.svg rename to resources/icons/social/reddit.svg diff --git a/app/Resources/icons/social/slack.svg b/resources/icons/social/slack.svg similarity index 100% rename from app/Resources/icons/social/slack.svg rename to resources/icons/social/slack.svg diff --git a/app/Resources/icons/social/telegram.svg b/resources/icons/social/telegram.svg similarity index 100% rename from app/Resources/icons/social/telegram.svg rename to resources/icons/social/telegram.svg diff --git a/app/Resources/icons/social/threads.svg b/resources/icons/social/threads.svg similarity index 100% rename from app/Resources/icons/social/threads.svg rename to resources/icons/social/threads.svg diff --git a/app/Resources/icons/social/tiktok.svg b/resources/icons/social/tiktok.svg similarity index 100% rename from app/Resources/icons/social/tiktok.svg rename to resources/icons/social/tiktok.svg diff --git a/app/Resources/icons/social/twitch.svg b/resources/icons/social/twitch.svg similarity index 100% rename from app/Resources/icons/social/twitch.svg rename to resources/icons/social/twitch.svg diff --git a/app/Resources/icons/social/twitter.svg b/resources/icons/social/twitter.svg similarity index 100% rename from app/Resources/icons/social/twitter.svg rename to resources/icons/social/twitter.svg diff --git a/app/Resources/icons/social/writefreely.svg b/resources/icons/social/writefreely.svg similarity index 100% rename from app/Resources/icons/social/writefreely.svg rename to resources/icons/social/writefreely.svg diff --git a/app/Resources/icons/social/x.svg b/resources/icons/social/x.svg similarity index 100% rename from app/Resources/icons/social/x.svg rename to resources/icons/social/x.svg diff --git a/app/Resources/icons/social/youtube.svg b/resources/icons/social/youtube.svg similarity index 100% rename from app/Resources/icons/social/youtube.svg rename to resources/icons/social/youtube.svg diff --git a/app/Resources/js/modules/Charts.ts b/resources/js/_modules/Charts.ts similarity index 100% rename from app/Resources/js/modules/Charts.ts rename to resources/js/_modules/Charts.ts diff --git a/app/Resources/js/modules/ClientTimezone.ts b/resources/js/_modules/ClientTimezone.ts similarity index 100% rename from app/Resources/js/modules/ClientTimezone.ts rename to resources/js/_modules/ClientTimezone.ts diff --git a/app/Resources/js/modules/Clipboard.ts b/resources/js/_modules/Clipboard.ts similarity index 100% rename from app/Resources/js/modules/Clipboard.ts rename to resources/js/_modules/Clipboard.ts diff --git a/app/Resources/js/modules/DateTimePicker.ts b/resources/js/_modules/DateTimePicker.ts similarity index 100% rename from app/Resources/js/modules/DateTimePicker.ts rename to resources/js/_modules/DateTimePicker.ts diff --git a/app/Resources/js/modules/Dropdown.ts b/resources/js/_modules/Dropdown.ts similarity index 100% rename from app/Resources/js/modules/Dropdown.ts rename to resources/js/_modules/Dropdown.ts diff --git a/app/Resources/js/modules/EpisodesMap.ts b/resources/js/_modules/EpisodesMap.ts similarity index 91% rename from app/Resources/js/modules/EpisodesMap.ts rename to resources/js/_modules/EpisodesMap.ts index 390564f9..bc0b2ed5 100644 --- a/app/Resources/js/modules/EpisodesMap.ts +++ b/resources/js/_modules/EpisodesMap.ts @@ -11,14 +11,11 @@ import { MarkerClusterGroup } from "leaflet.markercluster"; import "leaflet.markercluster/dist/MarkerCluster.css"; import "leaflet.markercluster/dist/MarkerCluster.Default.css"; import "leaflet/dist/leaflet.css"; -import markerIconRetina from "../../images/marker/marker-icon-2x.png"; -import markerIcon from "../../images/marker/marker-icon.png"; -import markerShadow from "../../images/marker/marker-shadow.png"; Marker.prototype.options.icon = icon({ - iconRetinaUrl: markerIconRetina, - iconUrl: markerIcon, - shadowUrl: markerShadow, + iconRetinaUrl: "/assets/images/marker/marker-icon-2x.png", + iconUrl: "/assets/images/marker/marker-icon.png", + shadowUrl: "/assets/images/marker/marker-shadow.png", iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], diff --git a/app/Resources/js/modules/FieldArray.ts b/resources/js/_modules/FieldArray.ts similarity index 100% rename from app/Resources/js/modules/FieldArray.ts rename to resources/js/_modules/FieldArray.ts diff --git a/app/Resources/js/modules/HotKeys.ts b/resources/js/_modules/HotKeys.ts similarity index 100% rename from app/Resources/js/modules/HotKeys.ts rename to resources/js/_modules/HotKeys.ts diff --git a/app/Resources/js/modules/Modal.ts b/resources/js/_modules/Modal.ts similarity index 100% rename from app/Resources/js/modules/Modal.ts rename to resources/js/_modules/Modal.ts diff --git a/app/Resources/js/modules/PublishMessageWarning.ts b/resources/js/_modules/PublishMessageWarning.ts similarity index 100% rename from app/Resources/js/modules/PublishMessageWarning.ts rename to resources/js/_modules/PublishMessageWarning.ts diff --git a/app/Resources/js/modules/Select.ts b/resources/js/_modules/Select.ts similarity index 100% rename from app/Resources/js/modules/Select.ts rename to resources/js/_modules/Select.ts diff --git a/app/Resources/js/modules/SelectMulti.ts b/resources/js/_modules/SelectMulti.ts similarity index 100% rename from app/Resources/js/modules/SelectMulti.ts rename to resources/js/_modules/SelectMulti.ts diff --git a/app/Resources/js/modules/SidebarToggler.ts b/resources/js/_modules/SidebarToggler.ts similarity index 100% rename from app/Resources/js/modules/SidebarToggler.ts rename to resources/js/_modules/SidebarToggler.ts diff --git a/app/Resources/js/modules/Slugify.ts b/resources/js/_modules/Slugify.ts similarity index 100% rename from app/Resources/js/modules/Slugify.ts rename to resources/js/_modules/Slugify.ts diff --git a/app/Resources/js/modules/ThemePicker.ts b/resources/js/_modules/ThemePicker.ts similarity index 100% rename from app/Resources/js/modules/ThemePicker.ts rename to resources/js/_modules/ThemePicker.ts diff --git a/app/Resources/js/modules/Time.ts b/resources/js/_modules/Time.ts similarity index 100% rename from app/Resources/js/modules/Time.ts rename to resources/js/_modules/Time.ts diff --git a/app/Resources/js/modules/Toggler.ts b/resources/js/_modules/Toggler.ts similarity index 100% rename from app/Resources/js/modules/Toggler.ts rename to resources/js/_modules/Toggler.ts diff --git a/app/Resources/js/modules/Tooltip.ts b/resources/js/_modules/Tooltip.ts similarity index 100% rename from app/Resources/js/modules/Tooltip.ts rename to resources/js/_modules/Tooltip.ts diff --git a/app/Resources/js/modules/ValidateFileSize.ts b/resources/js/_modules/ValidateFileSize.ts similarity index 100% rename from app/Resources/js/modules/ValidateFileSize.ts rename to resources/js/_modules/ValidateFileSize.ts diff --git a/app/Resources/js/modules/VideoClipBuilder.ts b/resources/js/_modules/VideoClipBuilder.ts similarity index 100% rename from app/Resources/js/modules/VideoClipBuilder.ts rename to resources/js/_modules/VideoClipBuilder.ts diff --git a/app/Resources/js/modules/audio-clipper.ts b/resources/js/_modules/audio-clipper.ts similarity index 99% rename from app/Resources/js/modules/audio-clipper.ts rename to resources/js/_modules/audio-clipper.ts index 0244575d..a5521273 100644 --- a/app/Resources/js/modules/audio-clipper.ts +++ b/resources/js/_modules/audio-clipper.ts @@ -744,7 +744,8 @@ export class AudioClipper extends LitElement { var(--tw-ring-offset-shadow), var(--tw-ring-shadow), 0 0 rgba(0, 0, 0, 0); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), + box-shadow: + var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0)); --tw-ring-offset-width: 2px; --tw-ring-opacity: 1; diff --git a/app/Resources/js/modules/code-editor.ts b/resources/js/_modules/code-editor.ts similarity index 100% rename from app/Resources/js/modules/code-editor.ts rename to resources/js/_modules/code-editor.ts diff --git a/app/Resources/js/modules/markdown-preview.ts b/resources/js/_modules/markdown-preview.ts similarity index 100% rename from app/Resources/js/modules/markdown-preview.ts rename to resources/js/_modules/markdown-preview.ts diff --git a/app/Resources/js/modules/markdown-write-preview.ts b/resources/js/_modules/markdown-write-preview.ts similarity index 100% rename from app/Resources/js/modules/markdown-write-preview.ts rename to resources/js/_modules/markdown-write-preview.ts diff --git a/app/Resources/js/modules/permalink-edit.ts b/resources/js/_modules/permalink-edit.ts similarity index 100% rename from app/Resources/js/modules/permalink-edit.ts rename to resources/js/_modules/permalink-edit.ts diff --git a/app/Resources/js/modules/play-episode-button.ts b/resources/js/_modules/play-episode-button.ts similarity index 100% rename from app/Resources/js/modules/play-episode-button.ts rename to resources/js/_modules/play-episode-button.ts diff --git a/app/Resources/js/modules/play-soundbite.ts b/resources/js/_modules/play-soundbite.ts similarity index 100% rename from app/Resources/js/modules/play-soundbite.ts rename to resources/js/_modules/play-soundbite.ts diff --git a/app/Resources/js/modules/video-clip-previewer.ts b/resources/js/_modules/video-clip-previewer.ts similarity index 100% rename from app/Resources/js/modules/video-clip-previewer.ts rename to resources/js/_modules/video-clip-previewer.ts diff --git a/app/Resources/js/admin-audio-player.ts b/resources/js/admin-audio-player.ts similarity index 98% rename from app/Resources/js/admin-audio-player.ts rename to resources/js/admin-audio-player.ts index 994803a7..1cd26d58 100644 --- a/app/Resources/js/admin-audio-player.ts +++ b/resources/js/admin-audio-player.ts @@ -34,7 +34,7 @@ import { } from "@vime/core"; import "@vime/core/themes/default.css"; import "@vime/core/themes/light.css"; -import "./modules/play-episode-button"; +import "./_modules/play-episode-button"; // Vime elements for audio player customElements.define("vm-player", VmPlayer); diff --git a/resources/js/admin.ts b/resources/js/admin.ts new file mode 100644 index 00000000..bc87479d --- /dev/null +++ b/resources/js/admin.ts @@ -0,0 +1,43 @@ +import "@github/markdown-toolbar-element"; +import "@github/relative-time-element"; +import "./_modules/audio-clipper"; +import ClientTimezone from "./_modules/ClientTimezone"; +import Clipboard from "./_modules/Clipboard"; +import DateTimePicker from "./_modules/DateTimePicker"; +import Dropdown from "./_modules/Dropdown"; +import HotKeys from "./_modules/HotKeys"; +import "./_modules/markdown-preview"; +import "./_modules/markdown-write-preview"; +import SelectMulti from "./_modules/SelectMulti"; +import "./_modules/permalink-edit"; +import "./_modules/play-soundbite"; +import PublishMessageWarning from "./_modules/PublishMessageWarning"; +import Select from "./_modules/Select"; +import SidebarToggler from "./_modules/SidebarToggler"; +import Slugify from "./_modules/Slugify"; +import ThemePicker from "./_modules/ThemePicker"; +import Time from "./_modules/Time"; +import Tooltip from "./_modules/Tooltip"; +import ValidateFileSize from "./_modules/ValidateFileSize"; +import "./_modules/video-clip-previewer"; +import VideoClipBuilder from "./_modules/VideoClipBuilder"; +import "./_modules/code-editor"; +import "@patternfly/elements/pf-tabs/pf-tabs.js"; +import FieldArray from "./_modules/FieldArray"; + +Dropdown(); +Tooltip(); +Select(); +SelectMulti(); +Slugify(); +SidebarToggler(); +ClientTimezone(); +DateTimePicker(); +Time(); +Clipboard(); +ThemePicker(); +PublishMessageWarning(); +HotKeys(); +ValidateFileSize(); +VideoClipBuilder(); +FieldArray(); diff --git a/resources/js/app.ts b/resources/js/app.ts new file mode 100644 index 00000000..65bf64d4 --- /dev/null +++ b/resources/js/app.ts @@ -0,0 +1,5 @@ +import Dropdown from "./_modules/Dropdown"; +import Tooltip from "./_modules/Tooltip"; + +Dropdown(); +Tooltip(); diff --git a/app/Resources/js/audio-player.ts b/resources/js/audio-player.ts similarity index 98% rename from app/Resources/js/audio-player.ts rename to resources/js/audio-player.ts index 01e27470..76380c08 100644 --- a/app/Resources/js/audio-player.ts +++ b/resources/js/audio-player.ts @@ -35,7 +35,7 @@ import { import "@vime/core/themes/default.css"; import "@vime/core/themes/light.css"; import { html, render } from "lit"; -import "./modules/play-episode-button"; +import "./_modules/play-episode-button"; const player = html`
\ No newline at end of file diff --git a/resources/static/images/castopod-logo.svg b/resources/static/images/castopod-logo.svg new file mode 100644 index 00000000..55f4b22b --- /dev/null +++ b/resources/static/images/castopod-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/images/castopod-mascot_confused.svg b/resources/static/images/castopod-mascot_confused.svg new file mode 100644 index 00000000..89d51627 --- /dev/null +++ b/resources/static/images/castopod-mascot_confused.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/Resources/images/marker/marker-icon-2x.png b/resources/static/images/marker/marker-icon-2x.png similarity index 100% rename from app/Resources/images/marker/marker-icon-2x.png rename to resources/static/images/marker/marker-icon-2x.png diff --git a/app/Resources/images/marker/marker-icon.png b/resources/static/images/marker/marker-icon.png similarity index 100% rename from app/Resources/images/marker/marker-icon.png rename to resources/static/images/marker/marker-icon.png diff --git a/app/Resources/images/marker/marker-shadow.png b/resources/static/images/marker/marker-shadow.png similarity index 100% rename from app/Resources/images/marker/marker-shadow.png rename to resources/static/images/marker/marker-shadow.png diff --git a/app/Resources/styles/breadcrumb.css b/resources/styles/_modules/breadcrumb.css similarity index 100% rename from app/Resources/styles/breadcrumb.css rename to resources/styles/_modules/breadcrumb.css diff --git a/app/Resources/styles/choices.css b/resources/styles/_modules/choices.css similarity index 100% rename from app/Resources/styles/choices.css rename to resources/styles/_modules/choices.css diff --git a/app/Resources/styles/colorRadioBtn.css b/resources/styles/_modules/colorRadioBtn.css similarity index 100% rename from app/Resources/styles/colorRadioBtn.css rename to resources/styles/_modules/colorRadioBtn.css diff --git a/app/Resources/styles/colors.css b/resources/styles/_modules/colors.css similarity index 100% rename from app/Resources/styles/colors.css rename to resources/styles/_modules/colors.css diff --git a/app/Resources/styles/custom.css b/resources/styles/_modules/custom.css similarity index 97% rename from app/Resources/styles/custom.css rename to resources/styles/_modules/custom.css index 14888b22..55f09725 100644 --- a/app/Resources/styles/custom.css +++ b/resources/styles/_modules/custom.css @@ -63,6 +63,7 @@ } .backdrop-gradient-accent { + /* stylelint-disable-next-line declaration-property-value-no-unknown */ background-image: linear-gradient( 180deg, theme(colors.background.base / 0.4) 0%, diff --git a/app/Resources/styles/dropdown.css b/resources/styles/_modules/dropdown.css similarity index 100% rename from app/Resources/styles/dropdown.css rename to resources/styles/_modules/dropdown.css diff --git a/app/Resources/styles/fonts.css b/resources/styles/_modules/fonts.css similarity index 67% rename from app/Resources/styles/fonts.css rename to resources/styles/_modules/fonts.css index 68695229..f2d9aa00 100644 --- a/app/Resources/styles/fonts.css +++ b/resources/styles/_modules/fonts.css @@ -5,7 +5,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url("/fonts/kumbh-sans-regular.woff2") format("woff2"); + src: url("/assets/fonts/kumbh-sans-regular.woff2") format("woff2"); } /* kumbh-sans-700 */ @@ -14,7 +14,7 @@ font-style: normal; font-weight: 700; font-display: swap; - src: url("/fonts/kumbh-sans-700.woff2") format("woff2"); + src: url("/assets/fonts/kumbh-sans-700.woff2") format("woff2"); } /* inter-regular */ @@ -23,7 +23,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url("/fonts/inter-regular.woff2") format("woff2"); + src: url("/assets/fonts/inter-regular.woff2") format("woff2"); } /* inter-600 */ @@ -32,7 +32,7 @@ font-style: normal; font-weight: 600; font-display: swap; - src: url("/fonts/inter-600.woff2") format("woff2"); + src: url("/assets/fonts/inter-600.woff2") format("woff2"); } /* noto-sans-mono-regular */ @@ -41,6 +41,6 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url("/fonts/noto-sans-mono-regular.woff2") format("woff2"); + src: url("/assets/fonts/noto-sans-mono-regular.woff2") format("woff2"); } } diff --git a/app/Resources/styles/formInputTabs.css b/resources/styles/_modules/formInputTabs.css similarity index 100% rename from app/Resources/styles/formInputTabs.css rename to resources/styles/_modules/formInputTabs.css diff --git a/app/Resources/styles/inputRange.css b/resources/styles/_modules/inputRange.css similarity index 100% rename from app/Resources/styles/inputRange.css rename to resources/styles/_modules/inputRange.css diff --git a/app/Resources/styles/radioBtn.css b/resources/styles/_modules/radioBtn.css similarity index 100% rename from app/Resources/styles/radioBtn.css rename to resources/styles/_modules/radioBtn.css diff --git a/app/Resources/styles/radioToggler.css b/resources/styles/_modules/radioToggler.css similarity index 100% rename from app/Resources/styles/radioToggler.css rename to resources/styles/_modules/radioToggler.css diff --git a/app/Resources/styles/readMore.css b/resources/styles/_modules/readMore.css similarity index 100% rename from app/Resources/styles/readMore.css rename to resources/styles/_modules/readMore.css diff --git a/app/Resources/styles/seeMore.css b/resources/styles/_modules/seeMore.css similarity index 100% rename from app/Resources/styles/seeMore.css rename to resources/styles/_modules/seeMore.css diff --git a/app/Resources/styles/stickyHeader.css b/resources/styles/_modules/stickyHeader.css similarity index 100% rename from app/Resources/styles/stickyHeader.css rename to resources/styles/_modules/stickyHeader.css diff --git a/app/Resources/styles/switch.css b/resources/styles/_modules/switch.css similarity index 100% rename from app/Resources/styles/switch.css rename to resources/styles/_modules/switch.css diff --git a/app/Resources/styles/tailwind.css b/resources/styles/_modules/tailwind.css similarity index 100% rename from app/Resources/styles/tailwind.css rename to resources/styles/_modules/tailwind.css diff --git a/resources/styles/admin.css b/resources/styles/admin.css new file mode 100644 index 00000000..bb90fa4b --- /dev/null +++ b/resources/styles/admin.css @@ -0,0 +1,17 @@ +@import url("./_modules/tailwind.css"); +@import url("./_modules/custom.css"); +@import url("./_modules/fonts.css"); +@import url("./_modules/colors.css"); +@import url("./_modules/breadcrumb.css"); +@import url("./_modules/dropdown.css"); +@import url("./_modules/choices.css"); +@import url("./_modules/radioBtn.css"); +@import url("./_modules/colorRadioBtn.css"); +@import url("./_modules/switch.css"); +@import url("./_modules/radioToggler.css"); +@import url("./_modules/formInputTabs.css"); +@import url("./_modules/stickyHeader.css"); +@import url("./_modules/readMore.css"); +@import url("./_modules/seeMore.css"); + +@config '../../tailwind.admin.config.js'; diff --git a/resources/styles/install.css b/resources/styles/install.css new file mode 100644 index 00000000..e14d0dc0 --- /dev/null +++ b/resources/styles/install.css @@ -0,0 +1,17 @@ +@import url("./_modules/tailwind.css"); +@import url("./_modules/custom.css"); +@import url("./_modules/fonts.css"); +@import url("./_modules/colors.css"); +@import url("./_modules/breadcrumb.css"); +@import url("./_modules/dropdown.css"); +@import url("./_modules/choices.css"); +@import url("./_modules/radioBtn.css"); +@import url("./_modules/colorRadioBtn.css"); +@import url("./_modules/switch.css"); +@import url("./_modules/radioToggler.css"); +@import url("./_modules/formInputTabs.css"); +@import url("./_modules/stickyHeader.css"); +@import url("./_modules/readMore.css"); +@import url("./_modules/seeMore.css"); + +@config '../../tailwind.install.config.js'; diff --git a/resources/styles/site.css b/resources/styles/site.css new file mode 100644 index 00000000..c5e54f99 --- /dev/null +++ b/resources/styles/site.css @@ -0,0 +1,17 @@ +@import url("./_modules/tailwind.css"); +@import url("./_modules/custom.css"); +@import url("./_modules/fonts.css"); +@import url("./_modules/colors.css"); +@import url("./_modules/breadcrumb.css"); +@import url("./_modules/dropdown.css"); +@import url("./_modules/choices.css"); +@import url("./_modules/radioBtn.css"); +@import url("./_modules/colorRadioBtn.css"); +@import url("./_modules/switch.css"); +@import url("./_modules/radioToggler.css"); +@import url("./_modules/formInputTabs.css"); +@import url("./_modules/stickyHeader.css"); +@import url("./_modules/readMore.css"); +@import url("./_modules/seeMore.css"); + +@config '../../tailwind.config.js'; diff --git a/spark b/spark index 6987fac0..b2cbf998 100644 --- a/spark +++ b/spark @@ -42,7 +42,7 @@ if (version_compare(PHP_VERSION, $minPhpVersion, '<')) { $message = sprintf( 'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s', $minPhpVersion, - PHP_VERSION + PHP_VERSION, ); exit($message); diff --git a/tailwind.config.cjs b/tailwind.admin.config.js similarity index 91% rename from tailwind.config.cjs rename to tailwind.admin.config.js index 6b4e1a8c..f6d4fea4 100644 --- a/tailwind.config.cjs +++ b/tailwind.admin.config.js @@ -1,15 +1,15 @@ -/* eslint-disable */ -const defaultTheme = require("tailwindcss/defaultTheme"); -const { transform } = require("typescript"); +import defaultTheme from "tailwindcss/defaultTheme"; +import tailwindForms from "@tailwindcss/forms"; +import tailwindTypography from "@tailwindcss/typography"; /** @type {import('tailwindcss').Config} */ -module.exports = { +export default { content: [ "./app/Views/**/*.php", - "./modules/**/Views/**/*.php", - "./themes/**/*.php", + "./themes/cp_admin/**/*.php", + "./themes/cp_auth/**/*.php", "./app/Helpers/*.php", - "./app/Resources/**/*.ts", + "./resources/**/*.ts", ], theme: { extend: { @@ -101,18 +101,6 @@ module.exports = { 800: "#00564A", 900: "#003D0B", }, - rose: { - 50: "#fcf9f8", - 100: "#fdeef2", - 200: "#fbcfe4", - 300: "#faa7cd", - 400: "#fb6ea5", - 500: "#fc437c", - 600: "#f24664", - 700: "#dd1f47", - 800: "#b21a39", - 900: "#8e162e", - }, }, gridTemplateColumns: { admin: "300px calc(100% - 300px)", @@ -179,5 +167,5 @@ module.exports = { }, }, variants: {}, - plugins: [require("@tailwindcss/forms"), require("@tailwindcss/typography")], + plugins: [tailwindForms, tailwindTypography], }; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000..42ba73eb --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,159 @@ +import defaultTheme from "tailwindcss/defaultTheme"; +import tailwindForms from "@tailwindcss/forms"; +import tailwindTypography from "@tailwindcss/typography"; + +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./app/Views/**/*.php", + "./modules/**/Views/**/*.php", + "./themes/cp_app/**/*.php", + "./app/Helpers/*.php", + "./resources/**/*.ts", + ], + theme: { + extend: { + content: { + chevronRightIcon: + "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 24 24'%3E%3Cpath d='M13.17 12 8.22 7.05l1.42-1.41L16 12l-6.36 6.36-1.42-1.41L13.17 12Z'/%3E%3C/svg%3E%0A\")", + prohibitedIcon: + "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 24 24'%3E%3Cpath d='M7.0943 5.68009L18.3199 16.9057C19.3736 15.5506 20 13.8491 20 12C20 7.58172 16.4183 4 12 4C10.1509 4 8.44939 4.62644 7.0943 5.68009ZM16.9057 18.3199L5.68009 7.0943C4.62644 8.44939 4 10.1509 4 12C4 16.4183 7.58172 20 12 20C13.8491 20 15.5506 19.3736 16.9057 18.3199ZM4.92893 4.92893C6.73748 3.12038 9.23885 2 12 2C17.5228 2 22 6.47715 22 12C22 14.7611 20.8796 17.2625 19.0711 19.0711C17.2625 20.8796 14.7611 22 12 22C6.47715 22 2 17.5228 2 12C2 9.23885 3.12038 6.73748 4.92893 4.92893Z'/%3E%3C/svg%3E%0A\")", + }, + fontFamily: { + sans: ["Inter", ...defaultTheme.fontFamily.sans], + display: ["Kumbh Sans", ...defaultTheme.fontFamily.sans], + mono: ["Noto Sans Mono", ...defaultTheme.fontFamily.mono], + }, + textDecorationThickness: { + 3: "3px", + }, + textColor: { + skin: { + base: "hsl(var(--color-text-base) / )", + muted: "hsl(var(--color-text-muted) / )", + }, + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + muted: "hsl(var(--color-accent-muted) / )", + contrast: "hsl(var(--color-accent-contrast) / )", + }, + }, + backgroundColor: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + subtle: "hsl(var(--color-border-subtle) / )", + navigation: "hsl(var(--color-background-navigation) / )", + "navigation-active": + "hsl(var(--color-background-navigation-active) / )", + backdrop: "hsl(var(--color-background-backdrop) / )", + header: "hsl(var(--color-background-header) / )", + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + highlight: "hsl(var(--color-background-highlight) / )", + }, + borderColor: { + subtle: "hsl(var(--color-border-subtle) / )", + contrast: "hsl(var(--color-border-contrast) / )", + navigation: "hsl(var(--color-border-navigation) / )", + "navigation-bg": + "hsl(var(--color-background-navigation) / )", + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + background: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + }, + }, + ringColor: { + contrast: "hsl(var(--color-border-contrast) / )", + background: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + }, + }, + colors: { + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + background: { + header: "hsl(var(--color-background-header) / )", + base: "hsl(var(--color-background-base) / )", + }, + heading: { + foreground: "hsl(var(--color-heading-foreground) / )", + background: "hsl(var(--color-heading-background) / )", + }, + pine: { + 50: "#F2FAF9", + 100: "#E7F9E4", + 200: "#bfe4e1", + 300: "#99d4cf", + 400: "#4db4aa", + 500: "#009486", + 600: "#008579", + 700: "#006D60", + 800: "#00564A", + 900: "#003D0B", + }, + }, + gridTemplateColumns: { + admin: "300px calc(100% - 300px)", + podcast: "1fr minmax(auto, 960px) 1fr", + podcastMain: "1fr minmax(200px, 300px)", + cards: "repeat(auto-fill, minmax(14rem, 1fr))", + latestEpisodes: "repeat(5, 1fr)", + colorButtons: "repeat(auto-fill, minmax(4rem, 1fr))", + platforms: "repeat(auto-fill, minmax(18rem, 1fr))", + plugins: "repeat(auto-fill, minmax(20rem, 1fr))", + radioGroup: "repeat(auto-fit, minmax(14rem, 1fr))", + }, + gridTemplateRows: { + admin: "40px 1fr", + }, + borderWidth: { + 3: "3px", + }, + ringWidth: { + 3: "3px", + }, + typography: { + DEFAULT: { + css: { + a: { + textDecoration: "underline", + fontWeight: 600, + "&:hover": { + textDecoration: "none", + }, + }, + input: { + margin: 0, + }, + }, + }, + sm: { + css: { + a: { + textDecoration: "underline", + fontWeight: 600, + "&:hover": { + textDecoration: "none", + }, + }, + }, + }, + }, + zIndex: { + 60: 60, + }, + }, + }, + variants: {}, + plugins: [tailwindForms, tailwindTypography], +}; diff --git a/tailwind.install.config.js b/tailwind.install.config.js new file mode 100644 index 00000000..3313dcee --- /dev/null +++ b/tailwind.install.config.js @@ -0,0 +1,106 @@ +import defaultTheme from "tailwindcss/defaultTheme"; +import tailwindForms from "@tailwindcss/forms"; + +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./app/Views/**/*.php", + "./themes/cp_install/**/*.php", + "./resources/**/*.ts", + ], + theme: { + extend: { + fontFamily: { + sans: ["Inter", ...defaultTheme.fontFamily.sans], + display: ["Kumbh Sans", ...defaultTheme.fontFamily.sans], + mono: ["Noto Sans Mono", ...defaultTheme.fontFamily.mono], + }, + textDecorationThickness: { + 3: "3px", + }, + textColor: { + skin: { + base: "hsl(var(--color-text-base) / )", + muted: "hsl(var(--color-text-muted) / )", + }, + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + muted: "hsl(var(--color-accent-muted) / )", + contrast: "hsl(var(--color-accent-contrast) / )", + }, + }, + backgroundColor: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + subtle: "hsl(var(--color-border-subtle) / )", + navigation: "hsl(var(--color-background-navigation) / )", + "navigation-active": + "hsl(var(--color-background-navigation-active) / )", + backdrop: "hsl(var(--color-background-backdrop) / )", + header: "hsl(var(--color-background-header) / )", + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + highlight: "hsl(var(--color-background-highlight) / )", + }, + borderColor: { + subtle: "hsl(var(--color-border-subtle) / )", + contrast: "hsl(var(--color-border-contrast) / )", + navigation: "hsl(var(--color-border-navigation) / )", + "navigation-bg": + "hsl(var(--color-background-navigation) / )", + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + background: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + }, + }, + ringColor: { + contrast: "hsl(var(--color-border-contrast) / )", + background: { + base: "hsl(var(--color-background-base) / )", + elevated: "hsl(var(--color-background-elevated) / )", + }, + }, + colors: { + accent: { + base: "hsl(var(--color-accent-base) / )", + hover: "hsl(var(--color-accent-hover) / )", + }, + background: { + header: "hsl(var(--color-background-header) / )", + base: "hsl(var(--color-background-base) / )", + }, + heading: { + foreground: "hsl(var(--color-heading-foreground) / )", + background: "hsl(var(--color-heading-background) / )", + }, + pine: { + 50: "#F2FAF9", + 100: "#E7F9E4", + 200: "#bfe4e1", + 300: "#99d4cf", + 400: "#4db4aa", + 500: "#009486", + 600: "#008579", + 700: "#006D60", + 800: "#00564A", + 900: "#003D0B", + }, + }, + borderWidth: { + 3: "3px", + }, + ringWidth: { + 3: "3px", + }, + }, + }, + variants: {}, + plugins: [tailwindForms], +}; diff --git a/tests/modules/Api/Rest/V1/EpisodeTest.php b/tests/modules/Api/Rest/V1/EpisodeTest.php index 5dfd9c52..990652f7 100644 --- a/tests/modules/Api/Rest/V1/EpisodeTest.php +++ b/tests/modules/Api/Rest/V1/EpisodeTest.php @@ -99,7 +99,7 @@ class EpisodeTest extends CIUnitTestCase 'messages' => [ 'error' => 'Episode not found', ], - ] + ], ); $result->assertHeader('Content-Type', 'application/json; charset=UTF-8'); } diff --git a/tests/modules/Api/Rest/V1/PodcastTest.php b/tests/modules/Api/Rest/V1/PodcastTest.php index 5c17bba8..cdf5a446 100644 --- a/tests/modules/Api/Rest/V1/PodcastTest.php +++ b/tests/modules/Api/Rest/V1/PodcastTest.php @@ -98,7 +98,7 @@ class PodcastTest extends CIUnitTestCase 'messages' => [ 'error' => 'Podcast not found', ], - ] + ], ); $result->assertHeader('Content-Type', 'application/json; charset=UTF-8'); } diff --git a/tests/modules/Plugins/PluginsTest.php b/tests/modules/Plugins/PluginsTest.php index 3e087131..4594bbbe 100644 --- a/tests/modules/Plugins/PluginsTest.php +++ b/tests/modules/Plugins/PluginsTest.php @@ -118,18 +118,18 @@ final class PluginsTest extends CIUnitTestCase $this->assertEquals( (string) $head, ' foo foo ' + ', ); } diff --git a/tests/unit/HealthTest.php b/tests/unit/HealthTest.php index 86da3268..0c2dd382 100644 --- a/tests/unit/HealthTest.php +++ b/tests/unit/HealthTest.php @@ -34,7 +34,7 @@ final class HealthTest extends CIUnitTestCase $config = new App(); $this->assertTrue( $validation->check($config->baseURL, 'valid_url_strict'), - 'baseURL "' . $config->baseURL . '" in .env is not valid URL' + 'baseURL "' . $config->baseURL . '" in .env is not valid URL', ); } @@ -45,7 +45,7 @@ final class HealthTest extends CIUnitTestCase // BaseURL in app/Config/App.php is a valid URL? $this->assertTrue( $validation->check($reader->baseURL, 'valid_url_strict'), - 'baseURL "' . $reader->baseURL . '" in app/Config/App.php is not valid URL' + 'baseURL "' . $reader->baseURL . '" in app/Config/App.php is not valid URL', ); } } diff --git a/themes/cp_admin/_layout.php b/themes/cp_admin/_layout.php index 84e08b61..6f78c843 100644 --- a/themes/cp_admin/_layout.php +++ b/themes/cp_admin/_layout.php @@ -8,12 +8,7 @@ $isEpisodeArea = isset($podcast) && isset($episode); -appendRawContent(service('vite')->asset('styles/index.css', 'css')) - ->appendRawContent(service('vite')->asset('js/admin.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/admin-audio-player.ts', 'js')) -?> + include('_partials/_nav_header') ?> diff --git a/themes/cp_admin/episode/list.php b/themes/cp_admin/episode/list.php index 0662e8e7..a9055b29 100644 --- a/themes/cp_admin/episode/list.php +++ b/themes/cp_admin/episode/list.php @@ -85,7 +85,7 @@ data_table( return publication_pill( $episode->published_at, $episode->publication_status, - 'text-sm' + 'text-sm', ); }, ], @@ -166,7 +166,7 @@ data_table( ], $episodes, 'mb-6 mt-4', - $podcast + $podcast, ) ?> links() ?> diff --git a/themes/cp_admin/episode/persons.php b/themes/cp_admin/episode/persons.php index d08b8b35..0a182c70 100644 --- a/themes/cp_admin/episode/persons.php +++ b/themes/cp_admin/episode/persons.php @@ -88,7 +88,7 @@ ], ], $episode->persons, - 'max-w-xl mt-6' + 'max-w-xl mt-6', ) ?> endSection() ?> diff --git a/themes/cp_admin/episode/video_clips_list.php b/themes/cp_admin/episode/video_clips_list.php index f837630c..b6fa6958 100644 --- a/themes/cp_admin/episode/video_clips_list.php +++ b/themes/cp_admin/episode/video_clips_list.php @@ -127,7 +127,7 @@ use CodeIgniter\I18n\Time; ], ], $videoClips, - 'mb-6' + 'mb-6', ) ?> links() ?> diff --git a/themes/cp_admin/fediverse/blocked_actors.php b/themes/cp_admin/fediverse/blocked_actors.php index 48c9d4ee..7232de3d 100644 --- a/themes/cp_admin/fediverse/blocked_actors.php +++ b/themes/cp_admin/fediverse/blocked_actors.php @@ -42,7 +42,7 @@ ], ], $blockedActors, - 'mt-8' + 'mt-8', ) ?> diff --git a/themes/cp_admin/fediverse/blocked_domains.php b/themes/cp_admin/fediverse/blocked_domains.php index 8eb037cf..51a2049b 100644 --- a/themes/cp_admin/fediverse/blocked_domains.php +++ b/themes/cp_admin/fediverse/blocked_domains.php @@ -41,7 +41,7 @@ ], ], $blockedDomains, - 'mt-8' + 'mt-8', ) ?> endSection() ?> diff --git a/themes/cp_admin/import/_queue_table.php b/themes/cp_admin/import/_queue_table.php index f187af3e..742fd10b 100644 --- a/themes/cp_admin/import/_queue_table.php +++ b/themes/cp_admin/import/_queue_table.php @@ -142,5 +142,5 @@ use Modules\PodcastImport\Entities\TaskStatus; }, ], ], - $podcastImportsQueue + $podcastImportsQueue, ) ?> diff --git a/themes/cp_admin/podcast/persons.php b/themes/cp_admin/podcast/persons.php index b3f8c8a0..a14745b8 100644 --- a/themes/cp_admin/podcast/persons.php +++ b/themes/cp_admin/podcast/persons.php @@ -86,7 +86,7 @@ ], ], $podcast->persons, - 'max-w-xl mt-6' + 'max-w-xl mt-6', ) ?> endSection() ?> \ No newline at end of file diff --git a/themes/cp_app/episode/_layout-preview.php b/themes/cp_app/episode/_layout-preview.php index f39178fa..b9a043b8 100644 --- a/themes/cp_app/episode/_layout-preview.php +++ b/themes/cp_app/episode/_layout-preview.php @@ -4,41 +4,10 @@ - - - - - - - - - - - - [<?= lang('Episode.preview.title') ?>] <?= $episode->title ?> - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/app.ts', 'js') ?> - asset('js/podcast.ts', 'js') ?> - asset('js/audio-player.ts', 'js') ?> - + + ->get('App.theme') ?>">
include('_admin_navbar') ?> diff --git a/themes/cp_app/episode/_layout.php b/themes/cp_app/episode/_layout.php index 27dbc413..849ae8f0 100644 --- a/themes/cp_app/episode/_layout.php +++ b/themes/cp_app/episode/_layout.php @@ -4,12 +4,7 @@ -appendRawContent(service('vite')->asset('styles/index.css', 'css')) - ->appendRawContent(service('vite')->asset('js/app.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/podcast.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/audio-player.ts', 'js')) -?> + diff --git a/themes/cp_app/episode/_partials/comment_actions.php b/themes/cp_app/episode/_partials/comment_actions.php index aac00248..baafac99 100644 --- a/themes/cp_app/episode/_partials/comment_actions.php +++ b/themes/cp_app/episode/_partials/comment_actions.php @@ -22,7 +22,7 @@ ]), [ 'class' => 'inline-flex items-center text-xs hover:underline', - ] + ], ) ?> @@ -44,7 +44,7 @@ ]), [ 'class' => 'inline-flex items-center text-xs hover:underline', - ] + ], ) ?> diff --git a/themes/cp_app/episode/_partials/comment_actions_from_post.php b/themes/cp_app/episode/_partials/comment_actions_from_post.php index a1f7f5ab..7ab2f4d7 100644 --- a/themes/cp_app/episode/_partials/comment_actions_from_post.php +++ b/themes/cp_app/episode/_partials/comment_actions_from_post.php @@ -22,7 +22,7 @@ ]), [ 'class' => 'inline-flex items-center text-xs hover:underline', - ] + ], ) ?> @@ -50,7 +50,7 @@ ]), [ 'class' => 'inline-flex items-center text-xs hover:underline', - ] + ], ) ?> diff --git a/themes/cp_app/home.php b/themes/cp_app/home.php index ac08f0d2..bd47be02 100644 --- a/themes/cp_app/home.php +++ b/themes/cp_app/home.php @@ -50,7 +50,7 @@ 'uri' => route_to('home') . '?sort=created_asc', 'class' => $sortBy === 'created_asc' ? 'font-semibold' : '', ], - ]) + ]), ) ?>" />
diff --git a/themes/cp_app/pages/credits.php b/themes/cp_app/pages/credits.php index a7eae511..35bfda9d 100644 --- a/themes/cp_app/pages/credits.php +++ b/themes/cp_app/pages/credits.php @@ -9,7 +9,6 @@ 'siteName' => esc(service('settings') ->get('App.siteName')), ])) - ->appendRawContent(service('vite')->asset('styles/index.css', 'css')) ?> -appendRawContent(service('vite')->asset('styles/index.css', 'css')) - ->appendRawContent(service('vite')->asset('js/app.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/podcast.ts', 'js')) - ->appendRawContent(service('vite')->asset('js/audio-player.ts', 'js')) -?> + diff --git a/themes/cp_app/podcast/activity.php b/themes/cp_app/podcast/activity.php index db1dbe2f..8d6c21f8 100644 --- a/themes/cp_app/podcast/activity.php +++ b/themes/cp_app/podcast/activity.php @@ -6,7 +6,6 @@
- <?= esc(interact_as_actor()
         ->display_name) ?> diff --git a/themes/cp_app/podcast/unlock.php b/themes/cp_app/podcast/unlock.php index dd50ec5e..492c6d6e 100644 --- a/themes/cp_app/podcast/unlock.php +++ b/themes/cp_app/podcast/unlock.php @@ -4,32 +4,10 @@ - - - - - - - - - - ' /> - asset('styles/index.css', 'css') ?> - asset('js/app.ts', 'js') ?> - + + ->get('App.theme') ?>">
include('_admin_navbar') ?> diff --git a/themes/cp_auth/_layout.php b/themes/cp_auth/_layout.php index 42876ad2..b542c01c 100644 --- a/themes/cp_auth/_layout.php +++ b/themes/cp_auth/_layout.php @@ -5,8 +5,7 @@ title('Castopod Auth') - ->description('Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.') - ->appendRawContent(service('vite')->asset('styles/index.css', 'css')); + ->description('Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.'); ?> diff --git a/themes/cp_install/_layout.php b/themes/cp_install/_layout.php index 5b2f22d7..dd58580d 100644 --- a/themes/cp_install/_layout.php +++ b/themes/cp_install/_layout.php @@ -2,20 +2,7 @@ - - - - - <?= lang('Install.title') ?> - - - - - asset('styles/index.css', 'css') ?> - asset('js/install.ts', 'js') ?> - +title(lang('Install.title')) ?>
diff --git a/tsconfig.json b/tsconfig.json index b56093e0..1929331b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,8 +19,8 @@ /* Module Resolution Options */ "moduleResolution": "node", - "baseUrl": "app/Resources/js" /* Base directory to resolve non-absolute module names. */ + "baseUrl": "resources/js" /* Base directory to resolve non-absolute module names. */ }, - "include": ["app/Resources/js/**/*.ts"], + "include": ["resources/js/**/*.ts"], "exclude": [] } diff --git a/vite.config.ts b/vite.config.ts index d4ef6993..099408ed 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,35 +1,41 @@ +import path from "path"; import { defineConfig } from "vite"; import { VitePWA } from "vite-plugin-pwa"; +import codeigniter from "vite-plugin-codeigniter"; -// https://vitejs.dev/config/ -export default defineConfig({ - root: "./app/Resources", - base: "/assets/", - build: { - outDir: "../../public/assets", - assetsDir: "", - manifest: true, - sourcemap: true, - rollupOptions: { - input: { - "admin-audio-player.ts": "app/Resources/js/admin-audio-player.ts", - "admin.ts": "app/Resources/js/admin.ts", - "app.ts": "app/Resources/js/app.ts", - "audio-player.ts": "app/Resources/js/audio-player.ts", - "charts.ts": "app/Resources/js/charts.ts", - "embed.ts": "app/Resources/js/embed.ts", - "error.ts": "app/Resources/js/error.ts", - "install.ts": "app/Resources/js/install.ts", - "map.ts": "app/Resources/js/map.ts", - "podcast.ts": "app/Resources/js/podcast.ts", - "styles/index.css": "app/Resources/styles/index.css", - }, +export default defineConfig(() => { + return { + server: { + host: true, + port: 5173, + strictPort: true, }, - }, - plugins: [ - VitePWA({ - manifest: false, - outDir: "../../public", - }), - ], + plugins: [ + codeigniter({ + imageVariants: [ + { + src: "images/castopod-banner-*.jpg", + sizes: { + "%NAME%_small.webp": 320, + "%NAME%_medium.webp": 960, + "%NAME%_federation.jpg": 1500, + }, + }, + { + src: "images/castopod-avatar.jpg", + sizes: { + "%NAME%_tiny.webp": 40, + "%NAME%_thumbnail.webp": 150, + "%NAME%_medium.webp": 320, + "%NAME%_federation.jpg": 400, + }, + }, + ], + }), + VitePWA({ + manifest: false, + outDir: path.resolve(__dirname, "public/assets"), + }), + ], + }; });