build: set minimal php version to 8.1

closes #225
This commit is contained in:
Yassine Doghri 2022-10-17 14:17:50 +00:00
parent c745fd8b28
commit 3a57538572
59 changed files with 415 additions and 397 deletions

View File

@ -1,4 +1,4 @@
image: code.castopod.org:5050/adaures/castopod:php8.0 image: code.castopod.org:5050/adaures/castopod:php8.1
stages: stages:
- prepare - prepare
@ -49,8 +49,9 @@ lint-php:
- vendor/bin/ecs check --ansi - vendor/bin/ecs check --ansi
# phpstan - increase memory limit to 1GB to prevent script failure # phpstan - increase memory limit to 1GB to prevent script failure
- php -d memory_limit=1G vendor/bin/phpstan analyse --ansi - php -d memory_limit=1G vendor/bin/phpstan analyse --ansi
# FIXME: rector keeps failing in CI
# run rector to check for php errors # run rector to check for php errors
- vendor/bin/rector process --dry-run --ansi # - vendor/bin/rector process --dry-run --ansi
dependencies: dependencies:
- php-dependencies - php-dependencies

View File

@ -42,7 +42,7 @@ class Fediverse extends FediverseBaseConfig
} }
['dirname' => $dirname, 'extension' => $extension, 'filename' => $filename] = pathinfo( ['dirname' => $dirname, 'extension' => $extension, 'filename' => $filename] = pathinfo(
$defaultBanner['path'] (string) $defaultBanner['path']
); );
$defaultBannerPath = $filename; $defaultBannerPath = $filename;
if ($dirname !== '.') { if ($dirname !== '.') {

View File

@ -176,7 +176,7 @@ class EpisodeController extends BaseController
$session = Services::session(); $session = Services::session();
$session->start(); $session->start();
if (isset($_SERVER['HTTP_REFERER'])) { if (isset($_SERVER['HTTP_REFERER'])) {
$session->set('embed_domain', parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)); $session->set('embed_domain', parse_url((string) $_SERVER['HTTP_REFERER'], PHP_URL_HOST));
} }
$cacheName = implode( $cacheName = implode(

View File

@ -20,7 +20,7 @@ class WebmanifestController extends Controller
/** /**
* @var array<string, array<string, string>> * @var array<string, array<string, string>>
*/ */
public const THEME_COLORS = [ final public const THEME_COLORS = [
'pine' => [ 'pine' => [
'theme' => '#009486', 'theme' => '#009486',
'background' => '#F0F9F8', 'background' => '#F0F9F8',

View File

@ -53,7 +53,7 @@ class VideoClip extends BaseClip
public function setFormat(string $format): self public function setFormat(string $format): self
{ {
$this->attributes['metadata'] = json_decode($this->attributes['metadata'], true); $this->attributes['metadata'] = json_decode((string) $this->attributes['metadata'], true);
$this->attributes['format'] = $format; $this->attributes['format'] = $format;
$this->attributes['metadata']['format'] = $format; $this->attributes['metadata']['format'] = $format;

View File

@ -536,7 +536,7 @@ class Episode extends Entity
{ {
if ($this->description === null) { if ($this->description === null) {
$this->description = trim( $this->description = trim(
preg_replace('~\s+~', ' ', strip_tags($this->attributes['description_html'])), preg_replace('~\s+~', ' ', strip_tags((string) $this->attributes['description_html'])),
); );
} }
@ -620,7 +620,7 @@ class Episode extends Entity
'elements' => $this->custom_rss, 'elements' => $this->custom_rss,
], $xmlNode); ], $xmlNode);
return (string) str_replace(['<item>', '</item>'], '', $xmlNode->asXML()); return str_replace(['<item>', '</item>'], '', (string) $xmlNode->asXML());
} }
/** /**
@ -659,7 +659,7 @@ class Episode extends Entity
$this->getPodcast() $this->getPodcast()
->partner_id . ->partner_id .
'&guid=' . '&guid=' .
urlencode($this->attributes['guid']); urlencode((string) $this->attributes['guid']);
if ($serviceSlug !== null) { if ($serviceSlug !== null) {
$partnerLink .= '&_from=' . $serviceSlug; $partnerLink .= '&_from=' . $serviceSlug;
@ -675,7 +675,7 @@ class Episode extends Entity
$this->getPodcast() $this->getPodcast()
->partner_id . ->partner_id .
'&guid=' . '&guid=' .
urlencode($this->attributes['guid']) . urlencode((string) $this->attributes['guid']) .
($serviceSlug !== null ? '&_from=' . $serviceSlug : ''); ($serviceSlug !== null ? '&_from=' . $serviceSlug : '');
} }
} }

View File

@ -115,7 +115,7 @@ class Location extends Entity
$places[0], $places[0],
'osm_id' 'osm_id'
) && $places[0]->osm_id !== null)) { ) && $places[0]->osm_id !== null)) {
$this->attributes['osm'] = strtoupper(substr($places[0]->osm_type, 0, 1)) . $places[0]->osm_id; $this->attributes['osm'] = strtoupper(substr((string) $places[0]->osm_type, 0, 1)) . $places[0]->osm_id;
} }
return $this; return $this;

View File

@ -495,7 +495,7 @@ class Podcast extends Entity
{ {
if ($this->description === null) { if ($this->description === null) {
$this->description = trim( $this->description = trim(
(string) preg_replace('~\s+~', ' ', strip_tags($this->attributes['description_html'])), (string) preg_replace('~\s+~', ' ', strip_tags((string) $this->attributes['description_html'])),
); );
} }
@ -658,7 +658,7 @@ class Podcast extends Entity
'elements' => $this->custom_rss, 'elements' => $this->custom_rss,
], $xmlNode); ], $xmlNode);
return (string) str_replace(['<channel>', '</channel>'], '', $xmlNode->asXML()); return str_replace(['<channel>', '</channel>'], '', (string) $xmlNode->asXML());
} }
/** /**

View File

@ -70,7 +70,7 @@ if (! function_exists('parse_form_attributes')) {
foreach ($default as $key => $val) { foreach ($default as $key => $val) {
if (! is_bool($val)) { if (! is_bool($val)) {
if ($key === 'name' && ! strlen($default['name'])) { if ($key === 'name' && ! strlen((string) $default['name'])) {
continue; continue;
} }

View File

@ -130,7 +130,7 @@ if (! function_exists('media_base_url')) {
$appConfig = config('App'); $appConfig = config('App');
$mediaBaseUrl = $appConfig->mediaBaseURL === '' ? $appConfig->baseURL : $appConfig->mediaBaseURL; $mediaBaseUrl = $appConfig->mediaBaseURL === '' ? $appConfig->baseURL : $appConfig->mediaBaseURL;
return rtrim($mediaBaseUrl, '/') . return rtrim((string) $mediaBaseUrl, '/') .
'/' . '/' .
$appConfig->mediaRoot . $appConfig->mediaRoot .
'/' . '/' .

View File

@ -23,7 +23,7 @@ class VideoClipper
/** /**
* @var array<string, string> * @var array<string, string>
*/ */
public const FONTS = [ final public const FONTS = [
'episodeTitle' => 'Rubik-Bold.ttf', 'episodeTitle' => 'Rubik-Bold.ttf',
'podcastTitle' => 'Inter-Regular.otf', 'podcastTitle' => 'Inter-Regular.otf',
'subtitles' => 'Inter-SemiBold', 'subtitles' => 'Inter-SemiBold',

View File

@ -159,17 +159,17 @@ class Router extends CodeIgniterRouter
// Support resource route when function with subdirectory // Support resource route when function with subdirectory
// ex: $routes->resource('Admin/Admins'); // ex: $routes->resource('Admin/Admins');
if ( if (
str_contains($val, '$') && str_contains((string) $val, '$') &&
str_contains($routeKey, '(') && str_contains($routeKey, '(') &&
str_contains($routeKey, '/') str_contains($routeKey, '/')
) { ) {
$replacekey = str_replace('/(.*)', '', $routeKey); $replacekey = str_replace('/(.*)', '', $routeKey);
$val = preg_replace('#^' . $routeKey . '$#u', $val, $uri); $val = preg_replace('#^' . $routeKey . '$#u', $val, $uri);
$val = str_replace($replacekey, str_replace('/', '\\', $replacekey), $val); $val = str_replace($replacekey, str_replace('/', '\\', $replacekey), $val);
} elseif (str_contains($val, '$') && str_contains($routeKey, '(')) { } elseif (str_contains((string) $val, '$') && str_contains($routeKey, '(')) {
$val = preg_replace('#^' . $routeKey . '$#u', $val, $uri); $val = preg_replace('#^' . $routeKey . '$#u', $val, $uri);
} elseif (str_contains($val, '/')) { } elseif (str_contains((string) $val, '/')) {
[$controller, $method] = explode('::', $val); [$controller, $method] = explode('::', (string) $val);
// Only replace slashes in the controller, not in the method. // Only replace slashes in the controller, not in the method.
$controller = str_replace('/', '\\', $controller); $controller = str_replace('/', '\\', $controller);
@ -177,7 +177,7 @@ class Router extends CodeIgniterRouter
$val = $controller . '::' . $method; $val = $controller . '::' . $method;
} }
$this->setRequest(explode('/', $val)); $this->setRequest(explode('/', (string) $val));
$this->matchedRoute = [$matchedKey, $val]; $this->matchedRoute = [$matchedKey, $val];

View File

@ -73,7 +73,7 @@ class EpisodeCommentModel extends UuidModel
return $found; return $found;
} }
public function addComment(EpisodeComment $comment, bool $registerActivity = true): string | false public function addComment(EpisodeComment $comment, bool $registerActivity = true): bool|int|object|string
{ {
$this->db->transStart(); $this->db->transStart();

View File

@ -53,7 +53,7 @@ class PlatformModel extends Model
public function getPlatforms(): array public function getPlatforms(): array
{ {
if (! ($found = cache('platforms'))) { if (! ($found = cache('platforms'))) {
$baseUrl = rtrim(config('app')->baseURL, '/'); $baseUrl = rtrim((string) config('app')->baseURL, '/');
$found = $this->select( $found = $this->select(
"*, CONCAT('{$baseUrl}/assets/images/platforms/',`type`,'/',`slug`,'.svg') as icon", "*, CONCAT('{$baseUrl}/assets/images/platforms/',`type`,'/',`slug`,'.svg') as icon",
)->findAll(); )->findAll();

View File

@ -41,7 +41,7 @@ class DropdownMenu extends Component
]); ]);
break; break;
case 'html': case 'html':
$menuItems .= htmlspecialchars_decode($item['content']); $menuItems .= htmlspecialchars_decode((string) $item['content']);
break; break;
case 'separator': case 'separator':
$menuItems .= '<hr class="my-2 border border-subtle">'; $menuItems .= '<hr class="my-2 border border-subtle">';

View File

@ -6,7 +6,7 @@
"homepage": "https://castopod.org", "homepage": "https://castopod.org",
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"require": { "require": {
"php": "^8.0", "php": "^8.1",
"codeigniter4/framework": "v4.2.7", "codeigniter4/framework": "v4.2.7",
"james-heinrich/getid3": "^2.0.x-dev", "james-heinrich/getid3": "^2.0.x-dev",
"whichbrowser/parser": "^v2.1.7", "whichbrowser/parser": "^v2.1.7",
@ -47,8 +47,8 @@
"scripts": { "scripts": {
"test": "vendor/bin/phpunit", "test": "vendor/bin/phpunit",
"analyse": "vendor/bin/phpstan analyse --ansi", "analyse": "vendor/bin/phpstan analyse --ansi",
"rector": "vendor/bin/rector process --dry-run --ansi --memory-limit=1G", "rector": "vendor/bin/rector process --dry-run --ansi --memory-limit=2G",
"rector:fix": "vendor/bin/rector process --ansi --memory-limit=1G", "rector:fix": "vendor/bin/rector process --ansi --memory-limit=2G",
"style": "vendor/bin/ecs check --ansi", "style": "vendor/bin/ecs check --ansi",
"style:fix": "vendor/bin/ecs check --fix --ansi", "style:fix": "vendor/bin/ecs check --fix --ansi",
"post-install-cmd": [ "post-install-cmd": [

40
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "51482dcb24c719550a1f0aa7e7580dfc", "content-hash": "c6dd2c4c4588bd654fd4973c5b574606",
"packages": [ "packages": [
{ {
"name": "adaures/ipcat-php", "name": "adaures/ipcat-php",
@ -2411,16 +2411,16 @@
}, },
{ {
"name": "vlucas/phpdotenv", "name": "vlucas/phpdotenv",
"version": "v5.4.1", "version": "v5.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/vlucas/phpdotenv.git", "url": "https://github.com/vlucas/phpdotenv.git",
"reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
"reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2435,15 +2435,19 @@
"require-dev": { "require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1", "bamarni/composer-bin-plugin": "^1.4.1",
"ext-filter": "*", "ext-filter": "*",
"phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25"
}, },
"suggest": { "suggest": {
"ext-filter": "Required to use the boolean validator." "ext-filter": "Required to use the boolean validator."
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"bamarni-bin": {
"bin-links": true,
"forward-command": true
},
"branch-alias": { "branch-alias": {
"dev-master": "5.4-dev" "dev-master": "5.5-dev"
} }
}, },
"autoload": { "autoload": {
@ -2469,7 +2473,7 @@
"keywords": ["dotenv", "env", "environment"], "keywords": ["dotenv", "env", "environment"],
"support": { "support": {
"issues": "https://github.com/vlucas/phpdotenv/issues", "issues": "https://github.com/vlucas/phpdotenv/issues",
"source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0"
}, },
"funding": [ "funding": [
{ {
@ -2481,7 +2485,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-12-12T23:22:04+00:00" "time": "2022-10-16T01:01:54+00:00"
}, },
{ {
"name": "whichbrowser/parser", "name": "whichbrowser/parser",
@ -3829,25 +3833,25 @@
}, },
{ {
"name": "rector/rector", "name": "rector/rector",
"version": "0.14.5", "version": "0.14.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/rectorphp/rector.git", "url": "https://github.com/rectorphp/rector.git",
"reference": "f7fd87b2435835f481e6a94ee28e09af412bd3cc" "reference": "e61574288661334155de6e5f0f45497285abad5d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/f7fd87b2435835f481e6a94ee28e09af412bd3cc", "url": "https://api.github.com/repos/rectorphp/rector/zipball/e61574288661334155de6e5f0f45497285abad5d",
"reference": "f7fd87b2435835f481e6a94ee28e09af412bd3cc", "reference": "e61574288661334155de6e5f0f45497285abad5d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.2|^8.0", "php": "^7.2|^8.0",
"phpstan/phpstan": "^1.8.6" "phpstan/phpstan": "^1.8.7"
}, },
"conflict": { "conflict": {
"rector/rector-cakephp": "*",
"rector/rector-doctrine": "*", "rector/rector-doctrine": "*",
"rector/rector-downgrade-php": "*",
"rector/rector-laravel": "*", "rector/rector-laravel": "*",
"rector/rector-php-parser": "*", "rector/rector-php-parser": "*",
"rector/rector-phpoffice": "*", "rector/rector-phpoffice": "*",
@ -3869,7 +3873,7 @@
"description": "Instant Upgrade and Automated Refactoring of any PHP code", "description": "Instant Upgrade and Automated Refactoring of any PHP code",
"support": { "support": {
"issues": "https://github.com/rectorphp/rector/issues", "issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/0.14.5" "source": "https://github.com/rectorphp/rector/tree/0.14.6"
}, },
"funding": [ "funding": [
{ {
@ -3877,7 +3881,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-09-29T11:05:42+00:00" "time": "2022-10-15T22:58:22+00:00"
}, },
{ {
"name": "sebastian/cli-parser", "name": "sebastian/cli-parser",
@ -6687,7 +6691,7 @@
"prefer-stable": true, "prefer-stable": true,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^8.0" "php": "^8.1"
}, },
"platform-dev": [], "platform-dev": [],
"plugin-api-version": "2.3.0" "plugin-api-version": "2.3.0"

View File

@ -1,11 +1,11 @@
FROM docker.io/alpine:3.13 AS ffmpeg-downloader FROM docker.io/alpine:3.16 AS ffmpeg-downloader
RUN apk add --no-cache curl && \ RUN apk add --no-cache curl && \
curl https://johnvansickle.com/ffmpeg/releases/ffmpeg-5.1.1-amd64-static.tar.xz -o ffmpeg.tar.xz && \ curl https://johnvansickle.com/ffmpeg/releases/ffmpeg-5.1.1-amd64-static.tar.xz -o ffmpeg.tar.xz && \
mkdir ffmpeg && \ mkdir ffmpeg && \
tar -xJf ffmpeg.tar.xz -C ffmpeg --strip-components 1 tar -xJf ffmpeg.tar.xz -C ffmpeg --strip-components 1
FROM docker.io/php:8.0-fpm-alpine3.13 FROM docker.io/php:8.1-fpm-alpine3.16
COPY docker/production/app/entrypoint.sh /entrypoint.sh COPY docker/production/app/entrypoint.sh /entrypoint.sh

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -20,13 +20,13 @@ Si preferiu utilitzar Docker, podeu ometre això i anar directament a la
## Requisits ## Requisits
- PHP v8.0 o superior - PHP v8.1 o superior
- MySQL versió 5.7 o superior o MariaDB versió 10.2 o superior - MySQL versió 5.7 o superior o MariaDB versió 10.2 o superior
- Support d'HTTPS - Support d'HTTPS
### PHP v8.0 o superior ### PHP v8.1 o superior
Es requereix PHP versió 8.0 o superior, amb les extensions següents Es requereix PHP versió 8.1 o superior, amb les extensions següents
instal·lades: instal·lades:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -20,13 +20,13 @@ Si prefieres usar Docker, puedes saltarte esto e ir directamente a la
## Requisitos ## Requisitos
- PHP v8.0 o superior - PHP v8.1 o superior
- MySQL versión 5.7 o superior o MariaDB versión 10.2 o superior - MySQL versión 5.7 o superior o MariaDB versión 10.2 o superior
- Soporte HTTPS - Soporte HTTPS
### PHP v8.0 o superior ### PHP v8.1 o superior
Se requiere PHP versión 8.0 o superior con las siguientes extensiones Se requiere PHP versión 8.1 o superior con las siguientes extensiones
instaladas: instaladas:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -20,13 +20,13 @@ directement à la [documentation Docker](./docker.md) pour Castopod.
## Prérequis ## Prérequis
- PHP v8.0 ou supérieure - PHP v8.1 ou supérieure
- MySQL version 5.7 ou supérieure ou MariaDB version 10.2 ou supérieure - MySQL version 5.7 ou supérieure ou MariaDB version 10.2 ou supérieure
- Prise en charge HTTPS - Prise en charge HTTPS
### PHP v8.0 ou supérieure ### PHP v8.1 ou supérieure
PHP version 8.0 ou supérieure est requise, avec les extensions suivantes PHP version 8.1 ou supérieure est requise, avec les extensions suivantes
installées : installées :
- [intl](https://www.php.net/manual/fr/intl.requirements.php) - [intl](https://www.php.net/manual/fr/intl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -20,13 +20,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Krav ## Krav
- PHP v8.0 eller nyare - PHP v8.1 eller nyare
- MySQL versjon 5.7 eller nyare, eller MariaDB versjon 10.2 eller nyare - MySQL versjon 5.7 eller nyare, eller MariaDB versjon 10.2 eller nyare
- Støtte for HTTPS - Støtte for HTTPS
### PHP v8.0 eller nyare ### PHP v8.1 eller nyare
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -20,13 +20,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requisitos ## Requisitos
- PHP v8.0 ou superior - PHP v8.1 ou superior
- MySQL versão 5.7 ou superior ou MariaDB versão 10.2 ou superior - MySQL versão 5.7 ou superior ou MariaDB versão 10.2 ou superior
- Suporte a HTTPS - Suporte a HTTPS
### PHP v8.0 ou superior ### PHP v8.1 ou superior
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements ## Requirements
- PHP v8.0 or higher - PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher - MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support - HTTPS support
### PHP v8.0 or higher ### PHP v8.1 or higher
PHP version 8.0 or higher is required, with the following extensions installed: PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

View File

@ -19,13 +19,13 @@ Castopod 的安装非常简单。 你能在大多数兼容的 PHP-MySQL 的服
## 要求 ## 要求
- PHP 8.0 或更高版本 - PHP 8.1 或更高版本
- MySQL 5.7 或更高版本与 MariaDB 10.2 或更高版本 - MySQL 5.7 或更高版本与 MariaDB 10.2 或更高版本
- HTTPS 支持 - HTTPS 支持
### PHP 8.0 或更高版本 ### PHP 8.1 或更高版本
需要 PHP 8.0 或更高版本,并安装以下扩展: 需要 PHP 8.1 或更高版本,并安装以下扩展:
- [intl](https://php.net/manual/en/intl.requirements.php) - [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php)

29
ecs.php
View File

@ -1,12 +1,14 @@
<?php <?php
use PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer; declare(strict_types=1);
use Symplify\CodingStandard\Fixer\Naming\StandardizeHereNowDocKeywordFixer;
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
use Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer;
use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff; use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff;
use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer; use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer;
use PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer;
use Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer;
use Symplify\CodingStandard\Fixer\Naming\StandardizeHereNowDocKeywordFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig; use Symplify\EasyCodingStandard\Config\ECSConfig;
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
return static function (ECSConfig $ecsConfig): void { return static function (ECSConfig $ecsConfig): void {
// alternative to CLI arguments, easier to maintain and extend // alternative to CLI arguments, easier to maintain and extend
@ -16,6 +18,11 @@ return static function (ECSConfig $ecsConfig): void {
__DIR__ . '/themes', __DIR__ . '/themes',
__DIR__ . '/tests', __DIR__ . '/tests',
__DIR__ . '/public', __DIR__ . '/public',
__DIR__ . '/builds',
__DIR__ . '/ecs.php',
__DIR__ . '/preload.php',
__DIR__ . '/rector.php',
__DIR__ . '/spark',
]); ]);
$ecsConfig->skip([ $ecsConfig->skip([
@ -26,7 +33,7 @@ return static function (ECSConfig $ecsConfig): void {
__DIR__ . '/app/Views/Components/*', __DIR__ . '/app/Views/Components/*',
__DIR__ . '/modules/**/Views/Components/*', __DIR__ . '/modules/**/Views/Components/*',
__DIR__ . '/themes/**/Views/Components/*', __DIR__ . '/themes/**/Views/Components/*',
__DIR__ . '/app/Helpers/components_helper.php' __DIR__ . '/app/Helpers/components_helper.php',
], ],
LineLengthFixer::class => [ LineLengthFixer::class => [
@ -43,18 +50,10 @@ return static function (ECSConfig $ecsConfig): void {
// crowdin enforces its own style for translation files // crowdin enforces its own style for translation files
// remove SingleQuoteFixer for Language files to prevent conflicts // remove SingleQuoteFixer for Language files to prevent conflicts
SingleQuoteFixer::class => [ SingleQuoteFixer::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/**/Language/*'],
__DIR__ . '/app/Language/*',
__DIR__ . '/modules/**/Language/*'
],
AssignmentInConditionSniff::class, AssignmentInConditionSniff::class,
]); ]);
$ecsConfig->sets([ $ecsConfig->sets([SetList::PSR_12, SetList::SYMPLIFY, SetList::COMMON, SetList::CLEAN_CODE]);
SetList::PSR_12,
SetList::SYMPLIFY,
SetList::COMMON,
SetList::CLEAN_CODE
]);
}; };

View File

@ -214,18 +214,18 @@ class SettingsController extends BaseController
$allImages = (new MediaModel('image'))->getAllOfType(); $allImages = (new MediaModel('image'))->getAllOfType();
foreach ($allImages as $image) { foreach ($allImages as $image) {
if (str_starts_with($image->file_path, 'podcasts')) { if (str_starts_with((string) $image->file_path, 'podcasts')) {
if (str_ends_with($image->file_path, 'banner.jpg') || str_ends_with( if (str_ends_with((string) $image->file_path, 'banner.jpg') || str_ends_with(
$image->file_path, (string) $image->file_path,
'banner.png' 'banner.png'
) || str_ends_with($image->file_path, 'banner.jpeg')) { ) || str_ends_with((string) $image->file_path, 'banner.jpeg')) {
$image->sizes = config('Images') $image->sizes = config('Images')
->podcastBannerSizes; ->podcastBannerSizes;
} else { } else {
$image->sizes = config('Images') $image->sizes = config('Images')
->podcastCoverSizes; ->podcastCoverSizes;
} }
} elseif (str_starts_with($image->file_path, 'persons')) { } elseif (str_starts_with((string) $image->file_path, 'persons')) {
$image->sizes = config('Images') $image->sizes = config('Images')
->personAvatarSizes; ->personAvatarSizes;
} else { } else {

View File

@ -31,10 +31,10 @@ trait AnalyticsTrait
$referer = $session->get('referer'); $referer = $session->get('referer');
$domain = $domain =
parse_url($referer, PHP_URL_HOST) === null parse_url((string) $referer, PHP_URL_HOST) === null
? '- Direct -' ? '- Direct -'
: parse_url($referer, PHP_URL_HOST); : parse_url((string) $referer, PHP_URL_HOST);
parse_str((string) parse_url($referer, PHP_URL_QUERY), $queries); parse_str((string) parse_url((string) $referer, PHP_URL_QUERY), $queries);
$keywords = $queries['q'] ?? null; $keywords = $queries['q'] ?? null;
$procedureName = $db->prefixTable('analytics_website'); $procedureName = $db->prefixTable('analytics_website');

View File

@ -63,7 +63,7 @@ class EpisodeAnalyticsController extends Controller
} elseif ($session->get('embed_domain') !== null) { } elseif ($session->get('embed_domain') !== null) {
$serviceName = $session->get('embed_domain'); $serviceName = $session->get('embed_domain');
} elseif ($session->get('referer') !== null && $session->get('referer') !== '- Direct -') { } elseif ($session->get('referer') !== null && $session->get('referer') !== '- Direct -') {
$serviceName = parse_url($session->get('referer'), PHP_URL_HOST); $serviceName = parse_url((string) $session->get('referer'), PHP_URL_HOST);
} }
$episodeData = unpack( $episodeData = unpack(

View File

@ -212,7 +212,7 @@ if (! function_exists('set_user_session_referer')) {
? $_SERVER['HTTP_REFERER'] ? $_SERVER['HTTP_REFERER']
: '- Direct -'; : '- Direct -';
$newreferer = $newreferer =
parse_url($newreferer, PHP_URL_HOST) === parse_url((string) $newreferer, PHP_URL_HOST) ===
parse_url(current_url(false), PHP_URL_HOST) parse_url(current_url(false), PHP_URL_HOST)
? '- Direct -' ? '- Direct -'
: $newreferer; : $newreferer;
@ -311,7 +311,7 @@ if (! function_exists('podcast_hit')) {
// [0-1] bytes range requests are used (by Apple) to check that file exists and that 206 partial content is working. // [0-1] bytes range requests are used (by Apple) to check that file exists and that 206 partial content is working.
// We don't count these requests. // We don't count these requests.
// We calculate how many bytes are being downloaded based on HTTP_RANGE values: // We calculate how many bytes are being downloaded based on HTTP_RANGE values:
$ranges = explode(',', substr($httpRange, 6)); $ranges = explode(',', substr((string) $httpRange, 6));
foreach ($ranges as $range) { foreach ($ranges as $range) {
$parts = explode('-', $range); $parts = explode('-', $range);
$downloadedBytes += array_key_exists(1, $parts) $downloadedBytes += array_key_exists(1, $parts)

View File

@ -173,7 +173,11 @@ class RolesDoc extends BaseCommand
private function detectLocaleFromPath($filePath): string private function detectLocaleFromPath($filePath): string
{ {
preg_match('~docs\/src\/(?:([a-z]{2}(?:-[A-Za-z]{2,})?)\/)getting-started\/auth\.md~', $filePath, $match); preg_match(
'~docs\/src\/(?:([a-z]{2}(?:-[A-Za-z]{2,})?)\/)getting-started\/auth\.md~',
(string) $filePath,
$match
);
if ($match === []) { if ($match === []) {
return 'en'; return 'en';

View File

@ -155,7 +155,7 @@ if (! function_exists('get_podcast_group')) {
} }
// strip the `podcast#{id}.` prefix when returning group // strip the `podcast#{id}.` prefix when returning group
return substr($podcastGroup, strlen('podcast#' . $podcastId . '-')); return substr((string) $podcastGroup, strlen('podcast#' . $podcastId . '-'));
} }
} }
@ -183,7 +183,7 @@ if (! function_exists('get_podcast_groups')) {
$userPodcastIds = []; $userPodcastIds = [];
// extract all podcast ids from groups // extract all podcast ids from groups
foreach ($podcastGroups as $podcastGroup) { foreach ($podcastGroups as $podcastGroup) {
$userPodcastIds[] = substr($podcastGroup, strpos($podcastGroup, '#') + 1, 1); $userPodcastIds[] = substr((string) $podcastGroup, strpos((string) $podcastGroup, '#') + 1, 1);
} }
return $userPodcastIds; return $userPodcastIds;

View File

@ -334,7 +334,7 @@ class ActorController extends Controller
->setBody($followersCollection->toJSON()); ->setBody($followersCollection->toJSON());
} }
public function attemptFollow(): RedirectResponse | ResponseInterface public function attemptFollow(): RedirectResponse
{ {
$rules = [ $rules = [
'handle' => 'handle' =>
@ -382,7 +382,7 @@ class ActorController extends Controller
} }
return redirect()->to( return redirect()->to(
str_replace('{uri}', urlencode($this->actor->uri), $data->links[$ostatusKey]->template), str_replace('{uri}', urlencode($this->actor->uri), (string) $data->links[$ostatusKey]->template),
); );
} }

View File

@ -259,7 +259,7 @@ class PostController extends Controller
} }
return redirect()->to( return redirect()->to(
str_replace('{uri}', urlencode($this->post->uri), $data->links[$ostatusKey]->template), str_replace('{uri}', urlencode($this->post->uri), (string) $data->links[$ostatusKey]->template),
); );
} }

View File

@ -11,7 +11,6 @@ declare(strict_types=1);
namespace Modules\Fediverse\Models; namespace Modules\Fediverse\Models;
use CodeIgniter\Database\BaseResult; use CodeIgniter\Database\BaseResult;
use CodeIgniter\Database\Query;
use CodeIgniter\Events\Events; use CodeIgniter\Events\Events;
use CodeIgniter\HTTP\URI; use CodeIgniter\HTTP\URI;
use CodeIgniter\I18n\Time; use CodeIgniter\I18n\Time;
@ -230,7 +229,7 @@ class PostModel extends BaseUuidModel
return $found; return $found;
} }
public function addPreviewCard(string $postId, int $previewCardId): Query | bool public function addPreviewCard(string $postId, int $previewCardId): bool
{ {
return $this->db->table(config('Fediverse')->tablesPrefix . 'posts_preview_cards') return $this->db->table(config('Fediverse')->tablesPrefix . 'posts_preview_cards')
->insert([ ->insert([
@ -249,7 +248,7 @@ class PostModel extends BaseUuidModel
Post $post, Post $post,
bool $createPreviewCard = true, bool $createPreviewCard = true,
bool $registerActivity = true bool $registerActivity = true
): string | false { ): bool|int|object|string {
helper('fediverse'); helper('fediverse');
$this->db->transStart(); $this->db->transStart();

429
package-lock.json generated
View File

@ -42,7 +42,7 @@
"@tailwindcss/forms": "^0.5.3", "@tailwindcss/forms": "^0.5.3",
"@tailwindcss/line-clamp": "^0.4.2", "@tailwindcss/line-clamp": "^0.4.2",
"@tailwindcss/typography": "^0.5.7", "@tailwindcss/typography": "^0.5.7",
"@types/leaflet": "^1.8.0", "@types/leaflet": "^1.9.0",
"@types/marked": "^4.0.7", "@types/marked": "^4.0.7",
"@types/wavesurfer.js": "^6.0.3", "@types/wavesurfer.js": "^6.0.3",
"@typescript-eslint/eslint-plugin": "^5.40.0", "@typescript-eslint/eslint-plugin": "^5.40.0",
@ -64,8 +64,8 @@
"prettier": "2.7.1", "prettier": "2.7.1",
"prettier-plugin-organize-imports": "^3.1.1", "prettier-plugin-organize-imports": "^3.1.1",
"semantic-release": "^19.0.5", "semantic-release": "^19.0.5",
"stylelint": "^14.13.0", "stylelint": "^14.14.0",
"stylelint-config-standard": "^28.0.0", "stylelint-config-standard": "^29.0.0",
"svgo": "^2.8.0", "svgo": "^2.8.0",
"tailwindcss": "^3.1.8", "tailwindcss": "^3.1.8",
"typescript": "^4.8.4", "typescript": "^4.8.4",
@ -2460,6 +2460,22 @@
"postcss-selector-parser": "^6.0.10" "postcss-selector-parser": "^6.0.10"
} }
}, },
"node_modules/@esbuild/linux-loong64": {
"version": "0.14.54",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
"integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
"cpu": [
"loong64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@eslint/eslintrc": { "node_modules/@eslint/eslintrc": {
"version": "1.3.3", "version": "1.3.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
@ -3508,9 +3524,9 @@
} }
}, },
"node_modules/@types/leaflet": { "node_modules/@types/leaflet": {
"version": "1.8.0", "version": "1.9.0",
"resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.8.0.tgz", "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.0.tgz",
"integrity": "sha512-+sXFmiJTFdhaXXIGFlV5re9AdqtAODoXbGAvxx02e5SHXL3ir7ClP5J7pahO8VmzKY3dth4RUS1nf2BTT+DW1A==", "integrity": "sha512-7LeOSj7EloC5UcyOMo+1kc3S1UT3MjJxwqsMT1d2PTyvQz53w0Y0oSSk9nwZnOZubCmBvpSNGceucxiq+ZPEUw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/geojson": "*" "@types/geojson": "*"
@ -6305,9 +6321,9 @@
} }
}, },
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
"integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==", "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"bin": { "bin": {
@ -6317,32 +6333,33 @@
"node": ">=12" "node": ">=12"
}, },
"optionalDependencies": { "optionalDependencies": {
"esbuild-android-64": "0.14.48", "@esbuild/linux-loong64": "0.14.54",
"esbuild-android-arm64": "0.14.48", "esbuild-android-64": "0.14.54",
"esbuild-darwin-64": "0.14.48", "esbuild-android-arm64": "0.14.54",
"esbuild-darwin-arm64": "0.14.48", "esbuild-darwin-64": "0.14.54",
"esbuild-freebsd-64": "0.14.48", "esbuild-darwin-arm64": "0.14.54",
"esbuild-freebsd-arm64": "0.14.48", "esbuild-freebsd-64": "0.14.54",
"esbuild-linux-32": "0.14.48", "esbuild-freebsd-arm64": "0.14.54",
"esbuild-linux-64": "0.14.48", "esbuild-linux-32": "0.14.54",
"esbuild-linux-arm": "0.14.48", "esbuild-linux-64": "0.14.54",
"esbuild-linux-arm64": "0.14.48", "esbuild-linux-arm": "0.14.54",
"esbuild-linux-mips64le": "0.14.48", "esbuild-linux-arm64": "0.14.54",
"esbuild-linux-ppc64le": "0.14.48", "esbuild-linux-mips64le": "0.14.54",
"esbuild-linux-riscv64": "0.14.48", "esbuild-linux-ppc64le": "0.14.54",
"esbuild-linux-s390x": "0.14.48", "esbuild-linux-riscv64": "0.14.54",
"esbuild-netbsd-64": "0.14.48", "esbuild-linux-s390x": "0.14.54",
"esbuild-openbsd-64": "0.14.48", "esbuild-netbsd-64": "0.14.54",
"esbuild-sunos-64": "0.14.48", "esbuild-openbsd-64": "0.14.54",
"esbuild-windows-32": "0.14.48", "esbuild-sunos-64": "0.14.54",
"esbuild-windows-64": "0.14.48", "esbuild-windows-32": "0.14.54",
"esbuild-windows-arm64": "0.14.48" "esbuild-windows-64": "0.14.54",
"esbuild-windows-arm64": "0.14.54"
} }
}, },
"node_modules/esbuild-android-64": { "node_modules/esbuild-android-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
"integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==", "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -6356,9 +6373,9 @@
} }
}, },
"node_modules/esbuild-android-arm64": { "node_modules/esbuild-android-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
"integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==", "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -6372,9 +6389,9 @@
} }
}, },
"node_modules/esbuild-darwin-64": { "node_modules/esbuild-darwin-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
"integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==", "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -6388,9 +6405,9 @@
} }
}, },
"node_modules/esbuild-darwin-arm64": { "node_modules/esbuild-darwin-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
"integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==", "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -6404,9 +6421,9 @@
} }
}, },
"node_modules/esbuild-freebsd-64": { "node_modules/esbuild-freebsd-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
"integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==", "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -6420,9 +6437,9 @@
} }
}, },
"node_modules/esbuild-freebsd-arm64": { "node_modules/esbuild-freebsd-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
"integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==", "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -6436,9 +6453,9 @@
} }
}, },
"node_modules/esbuild-linux-32": { "node_modules/esbuild-linux-32": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
"integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==", "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@ -6452,9 +6469,9 @@
} }
}, },
"node_modules/esbuild-linux-64": { "node_modules/esbuild-linux-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
"integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==", "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -6468,9 +6485,9 @@
} }
}, },
"node_modules/esbuild-linux-arm": { "node_modules/esbuild-linux-arm": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
"integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==", "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -6484,9 +6501,9 @@
} }
}, },
"node_modules/esbuild-linux-arm64": { "node_modules/esbuild-linux-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
"integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==", "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -6500,9 +6517,9 @@
} }
}, },
"node_modules/esbuild-linux-mips64le": { "node_modules/esbuild-linux-mips64le": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
"integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==", "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
"cpu": [ "cpu": [
"mips64el" "mips64el"
], ],
@ -6516,9 +6533,9 @@
} }
}, },
"node_modules/esbuild-linux-ppc64le": { "node_modules/esbuild-linux-ppc64le": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
"integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==", "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
@ -6532,9 +6549,9 @@
} }
}, },
"node_modules/esbuild-linux-riscv64": { "node_modules/esbuild-linux-riscv64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
"integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==", "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
@ -6548,9 +6565,9 @@
} }
}, },
"node_modules/esbuild-linux-s390x": { "node_modules/esbuild-linux-s390x": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
"integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==", "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
@ -6564,9 +6581,9 @@
} }
}, },
"node_modules/esbuild-netbsd-64": { "node_modules/esbuild-netbsd-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
"integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==", "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -6580,9 +6597,9 @@
} }
}, },
"node_modules/esbuild-openbsd-64": { "node_modules/esbuild-openbsd-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
"integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==", "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -6596,9 +6613,9 @@
} }
}, },
"node_modules/esbuild-sunos-64": { "node_modules/esbuild-sunos-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
"integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==", "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -6612,9 +6629,9 @@
} }
}, },
"node_modules/esbuild-windows-32": { "node_modules/esbuild-windows-32": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
"integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==", "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@ -6628,9 +6645,9 @@
} }
}, },
"node_modules/esbuild-windows-64": { "node_modules/esbuild-windows-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
"integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==", "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -6644,9 +6661,9 @@
} }
}, },
"node_modules/esbuild-windows-arm64": { "node_modules/esbuild-windows-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
"integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==", "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -12993,9 +13010,9 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.16", "version": "8.4.18",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
"integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@ -14686,9 +14703,9 @@
} }
}, },
"node_modules/rollup": { "node_modules/rollup": {
"version": "2.75.7", "version": "2.79.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
"integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==", "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
"dev": true, "dev": true,
"bin": { "bin": {
"rollup": "dist/bin/rollup" "rollup": "dist/bin/rollup"
@ -15524,9 +15541,9 @@
} }
}, },
"node_modules/stylelint": { "node_modules/stylelint": {
"version": "14.13.0", "version": "14.14.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.13.0.tgz", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.14.0.tgz",
"integrity": "sha512-NJSAdloiAB/jgVJKxMR90mWlctvmeBFGFVUvyKngi9+j/qPSJ5ZB+u8jOmGbLTnS7OHrII9NFGehPRyar8U5vg==", "integrity": "sha512-yUI+4xXfPHVnueYddSQ/e1GuEA/2wVhWQbGj16AmWLtQJtn28lVxfS4b0CsWyVRPgd3Auzi0NXOthIEUhtQmmA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@csstools/selector-specificity": "^2.0.2", "@csstools/selector-specificity": "^2.0.2",
@ -15552,7 +15569,7 @@
"micromatch": "^4.0.5", "micromatch": "^4.0.5",
"normalize-path": "^3.0.0", "normalize-path": "^3.0.0",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"postcss": "^8.4.16", "postcss": "^8.4.17",
"postcss-media-query-parser": "^0.2.3", "postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.1", "postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^6.0.0", "postcss-safe-parser": "^6.0.0",
@ -15589,15 +15606,15 @@
} }
}, },
"node_modules/stylelint-config-standard": { "node_modules/stylelint-config-standard": {
"version": "28.0.0", "version": "29.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-28.0.0.tgz", "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-29.0.0.tgz",
"integrity": "sha512-q/StuowDdDmFCravzGHAwgS9pjX0bdOQUEBBDIkIWsQuYGgYz/xsO8CM6eepmIQ1fc5bKdDVimlJZ6MoOUcJ5Q==", "integrity": "sha512-uy8tZLbfq6ZrXy4JKu3W+7lYLgRQBxYTUUB88vPgQ+ZzAxdrvcaSUW9hOMNLYBnwH+9Kkj19M2DHdZ4gKwI7tg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"stylelint-config-recommended": "^9.0.0" "stylelint-config-recommended": "^9.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"stylelint": "^14.11.0" "stylelint": "^14.14.0"
} }
}, },
"node_modules/stylelint/node_modules/balanced-match": { "node_modules/stylelint/node_modules/balanced-match": {
@ -18856,6 +18873,13 @@
"dev": true, "dev": true,
"requires": {} "requires": {}
}, },
"@esbuild/linux-loong64": {
"version": "0.14.54",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
"integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
"dev": true,
"optional": true
},
"@eslint/eslintrc": { "@eslint/eslintrc": {
"version": "1.3.3", "version": "1.3.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
@ -19647,9 +19671,9 @@
} }
}, },
"@types/leaflet": { "@types/leaflet": {
"version": "1.8.0", "version": "1.9.0",
"resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.8.0.tgz", "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.0.tgz",
"integrity": "sha512-+sXFmiJTFdhaXXIGFlV5re9AdqtAODoXbGAvxx02e5SHXL3ir7ClP5J7pahO8VmzKY3dth4RUS1nf2BTT+DW1A==", "integrity": "sha512-7LeOSj7EloC5UcyOMo+1kc3S1UT3MjJxwqsMT1d2PTyvQz53w0Y0oSSk9nwZnOZubCmBvpSNGceucxiq+ZPEUw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/geojson": "*" "@types/geojson": "*"
@ -21577,170 +21601,171 @@
} }
}, },
"esbuild": { "esbuild": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
"integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==", "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
"dev": true, "dev": true,
"requires": { "requires": {
"esbuild-android-64": "0.14.48", "@esbuild/linux-loong64": "0.14.54",
"esbuild-android-arm64": "0.14.48", "esbuild-android-64": "0.14.54",
"esbuild-darwin-64": "0.14.48", "esbuild-android-arm64": "0.14.54",
"esbuild-darwin-arm64": "0.14.48", "esbuild-darwin-64": "0.14.54",
"esbuild-freebsd-64": "0.14.48", "esbuild-darwin-arm64": "0.14.54",
"esbuild-freebsd-arm64": "0.14.48", "esbuild-freebsd-64": "0.14.54",
"esbuild-linux-32": "0.14.48", "esbuild-freebsd-arm64": "0.14.54",
"esbuild-linux-64": "0.14.48", "esbuild-linux-32": "0.14.54",
"esbuild-linux-arm": "0.14.48", "esbuild-linux-64": "0.14.54",
"esbuild-linux-arm64": "0.14.48", "esbuild-linux-arm": "0.14.54",
"esbuild-linux-mips64le": "0.14.48", "esbuild-linux-arm64": "0.14.54",
"esbuild-linux-ppc64le": "0.14.48", "esbuild-linux-mips64le": "0.14.54",
"esbuild-linux-riscv64": "0.14.48", "esbuild-linux-ppc64le": "0.14.54",
"esbuild-linux-s390x": "0.14.48", "esbuild-linux-riscv64": "0.14.54",
"esbuild-netbsd-64": "0.14.48", "esbuild-linux-s390x": "0.14.54",
"esbuild-openbsd-64": "0.14.48", "esbuild-netbsd-64": "0.14.54",
"esbuild-sunos-64": "0.14.48", "esbuild-openbsd-64": "0.14.54",
"esbuild-windows-32": "0.14.48", "esbuild-sunos-64": "0.14.54",
"esbuild-windows-64": "0.14.48", "esbuild-windows-32": "0.14.54",
"esbuild-windows-arm64": "0.14.48" "esbuild-windows-64": "0.14.54",
"esbuild-windows-arm64": "0.14.54"
} }
}, },
"esbuild-android-64": { "esbuild-android-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
"integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==", "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-android-arm64": { "esbuild-android-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
"integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==", "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-darwin-64": { "esbuild-darwin-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
"integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==", "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-darwin-arm64": { "esbuild-darwin-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
"integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==", "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-freebsd-64": { "esbuild-freebsd-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
"integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==", "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-freebsd-arm64": { "esbuild-freebsd-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
"integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==", "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-linux-32": { "esbuild-linux-32": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
"integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==", "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-linux-64": { "esbuild-linux-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
"integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==", "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-linux-arm": { "esbuild-linux-arm": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
"integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==", "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-linux-arm64": { "esbuild-linux-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
"integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==", "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-linux-mips64le": { "esbuild-linux-mips64le": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
"integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==", "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-linux-ppc64le": { "esbuild-linux-ppc64le": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
"integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==", "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-linux-riscv64": { "esbuild-linux-riscv64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
"integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==", "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-linux-s390x": { "esbuild-linux-s390x": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
"integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==", "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-netbsd-64": { "esbuild-netbsd-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
"integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==", "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-openbsd-64": { "esbuild-openbsd-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
"integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==", "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-sunos-64": { "esbuild-sunos-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
"integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==", "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-windows-32": { "esbuild-windows-32": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
"integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==", "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-windows-64": { "esbuild-windows-64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
"integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==", "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"esbuild-windows-arm64": { "esbuild-windows-arm64": {
"version": "0.14.48", "version": "0.14.54",
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz", "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
"integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==", "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
@ -26047,9 +26072,9 @@
} }
}, },
"postcss": { "postcss": {
"version": "8.4.16", "version": "8.4.18",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
"integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
"requires": { "requires": {
"nanoid": "^3.3.4", "nanoid": "^3.3.4",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
@ -27087,9 +27112,9 @@
} }
}, },
"rollup": { "rollup": {
"version": "2.75.7", "version": "2.79.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
"integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==", "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
"dev": true, "dev": true,
"requires": { "requires": {
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
@ -27687,9 +27712,9 @@
} }
}, },
"stylelint": { "stylelint": {
"version": "14.13.0", "version": "14.14.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.13.0.tgz", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.14.0.tgz",
"integrity": "sha512-NJSAdloiAB/jgVJKxMR90mWlctvmeBFGFVUvyKngi9+j/qPSJ5ZB+u8jOmGbLTnS7OHrII9NFGehPRyar8U5vg==", "integrity": "sha512-yUI+4xXfPHVnueYddSQ/e1GuEA/2wVhWQbGj16AmWLtQJtn28lVxfS4b0CsWyVRPgd3Auzi0NXOthIEUhtQmmA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@csstools/selector-specificity": "^2.0.2", "@csstools/selector-specificity": "^2.0.2",
@ -27715,7 +27740,7 @@
"micromatch": "^4.0.5", "micromatch": "^4.0.5",
"normalize-path": "^3.0.0", "normalize-path": "^3.0.0",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"postcss": "^8.4.16", "postcss": "^8.4.17",
"postcss-media-query-parser": "^0.2.3", "postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.1", "postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^6.0.0", "postcss-safe-parser": "^6.0.0",
@ -27780,9 +27805,9 @@
"requires": {} "requires": {}
}, },
"stylelint-config-standard": { "stylelint-config-standard": {
"version": "28.0.0", "version": "29.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-28.0.0.tgz", "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-29.0.0.tgz",
"integrity": "sha512-q/StuowDdDmFCravzGHAwgS9pjX0bdOQUEBBDIkIWsQuYGgYz/xsO8CM6eepmIQ1fc5bKdDVimlJZ6MoOUcJ5Q==", "integrity": "sha512-uy8tZLbfq6ZrXy4JKu3W+7lYLgRQBxYTUUB88vPgQ+ZzAxdrvcaSUW9hOMNLYBnwH+9Kkj19M2DHdZ4gKwI7tg==",
"dev": true, "dev": true,
"requires": { "requires": {
"stylelint-config-recommended": "^9.0.0" "stylelint-config-recommended": "^9.0.0"

View File

@ -60,7 +60,7 @@
"@tailwindcss/forms": "^0.5.3", "@tailwindcss/forms": "^0.5.3",
"@tailwindcss/line-clamp": "^0.4.2", "@tailwindcss/line-clamp": "^0.4.2",
"@tailwindcss/typography": "^0.5.7", "@tailwindcss/typography": "^0.5.7",
"@types/leaflet": "^1.8.0", "@types/leaflet": "^1.9.0",
"@types/marked": "^4.0.7", "@types/marked": "^4.0.7",
"@types/wavesurfer.js": "^6.0.3", "@types/wavesurfer.js": "^6.0.3",
"@typescript-eslint/eslint-plugin": "^5.40.0", "@typescript-eslint/eslint-plugin": "^5.40.0",
@ -82,8 +82,8 @@
"prettier": "2.7.1", "prettier": "2.7.1",
"prettier-plugin-organize-imports": "^3.1.1", "prettier-plugin-organize-imports": "^3.1.1",
"semantic-release": "^19.0.5", "semantic-release": "^19.0.5",
"stylelint": "^14.13.0", "stylelint": "^14.14.0",
"stylelint-config-standard": "^28.0.0", "stylelint-config-standard": "^29.0.0",
"svgo": "^2.8.0", "svgo": "^2.8.0",
"tailwindcss": "^3.1.8", "tailwindcss": "^3.1.8",
"typescript": "^4.8.4", "typescript": "^4.8.4",

View File

@ -1,12 +1,14 @@
<?php <?php
declare(strict_types=1);
/** /**
* This file is part of CodeIgniter 4 framework. * This file is part of CodeIgniter 4 framework.
* *
* (c) CodeIgniter Foundation <admin@codeigniter.com> * (c) CodeIgniter Foundation <admin@codeigniter.com>
* *
* For the full copyright and license information, please view * For the full copyright and license information, please view the LICENSE file that was distributed with this source
* the LICENSE file that was distributed with this source code. * code.
*/ */
/* /*
@ -75,12 +77,6 @@ class preload
$this->loadAutoloader(); $this->loadAutoloader();
} }
private function loadAutoloader(): void
{
$paths = new Config\Paths();
require rtrim($paths->systemDirectory, '\\/ ') . DIRECTORY_SEPARATOR . 'bootstrap.php';
}
/** /**
* Load PHP files. * Load PHP files.
*/ */
@ -89,11 +85,7 @@ class preload
foreach ($this->paths as $path) { foreach ($this->paths as $path) {
$directory = new RecursiveDirectoryIterator($path['include']); $directory = new RecursiveDirectoryIterator($path['include']);
$fullTree = new RecursiveIteratorIterator($directory); $fullTree = new RecursiveIteratorIterator($directory);
$phpFiles = new RegexIterator( $phpFiles = new RegexIterator($fullTree, '/.+((?<!Test)+\.php$)/i', RecursiveRegexIterator::GET_MATCH);
$fullTree,
'/.+((?<!Test)+\.php$)/i',
RecursiveRegexIterator::GET_MATCH
);
foreach ($phpFiles as $key => $file) { foreach ($phpFiles as $key => $file) {
foreach ($path['exclude'] as $exclude) { foreach ($path['exclude'] as $exclude) {
@ -107,6 +99,12 @@ class preload
} }
} }
} }
private function loadAutoloader(): void
{
$paths = new Config\Paths();
require rtrim($paths->systemDirectory, '\\/ ') . DIRECTORY_SEPARATOR . 'bootstrap.php';
}
} }
(new preload())->load(); (new preload())->load();

View File

@ -7,7 +7,7 @@ use Config\Paths;
use Config\Services; use Config\Services;
// Check PHP version. // Check PHP version.
$minPhpVersion = '8.0'; // If you update this, don't forget to update `spark`. $minPhpVersion = '8.1'; // If you update this, don't forget to update `spark`.
if (version_compare(PHP_VERSION, $minPhpVersion, '<')) { if (version_compare(PHP_VERSION, $minPhpVersion, '<')) {
$message = sprintf( $message = sprintf(
'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s', 'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s',

View File

@ -18,21 +18,14 @@ use Rector\Php71\Rector\FuncCall\RemoveExtraParametersRector;
use Rector\Set\ValueObject\SetList; use Rector\Set\ValueObject\SetList;
return static function (RectorConfig $rectorConfig): void { return static function (RectorConfig $rectorConfig): void {
// get parameters $rectorConfig->paths([__DIR__ . '/app', __DIR__ . '/modules', __DIR__ . '/tests', __DIR__ . '/public']);
$rectorConfig->paths([
__DIR__ . '/app',
__DIR__ . '/modules',
__DIR__ . '/tests',
__DIR__ . '/public',
]);
// do you need to include constants, class aliases or custom autoloader? files listed will be executed // do you need to include constants, class aliases or custom autoloader? files listed will be executed
$rectorConfig->bootstrapFiles([ $rectorConfig->bootstrapFiles([__DIR__ . '/vendor/codeigniter4/framework/system/Test/bootstrap.php']);
__DIR__ . '/vendor/codeigniter4/framework/system/Test/bootstrap.php',
]);
// Define what rule sets will be applied // Define what rule sets will be applied
$rectorConfig->sets([SetList::PHP_80, $rectorConfig->sets([
SetList::PHP_81,
SetList::TYPE_DECLARATION, SetList::TYPE_DECLARATION,
SetList::TYPE_DECLARATION_STRICT, SetList::TYPE_DECLARATION_STRICT,
SetList::CODE_QUALITY, SetList::CODE_QUALITY,
@ -44,7 +37,7 @@ return static function (RectorConfig $rectorConfig): void {
// auto import fully qualified class names // auto import fully qualified class names
$rectorConfig->importNames(); $rectorConfig->importNames();
$rectorConfig->phpVersion(PhpVersion::PHP_80); $rectorConfig->phpVersion(PhpVersion::PHP_81);
$rectorConfig->skip([ $rectorConfig->skip([
// .mp3 files were somehow processed by rector, so skip all media files // .mp3 files were somehow processed by rector, so skip all media files
@ -69,14 +62,9 @@ return static function (RectorConfig $rectorConfig): void {
__DIR__ . '/app/Language/*', __DIR__ . '/app/Language/*',
__DIR__ . '/modules/*/Language/*', __DIR__ . '/modules/*/Language/*',
], ],
SymplifyQuoteEscapeRector::class => [ SymplifyQuoteEscapeRector::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/*/Language/*'],
__DIR__ . '/app/Language/*',
__DIR__ . '/modules/*/Language/*',
],
NewlineAfterStatementRector::class => [ NewlineAfterStatementRector::class => [__DIR__ . '/app/Views'],
__DIR__ . '/app/Views',
]
]); ]);
// Path to phpstan with extensions, that PHPStan in Rector uses to determine types // Path to phpstan with extensions, that PHPStan in Rector uses to determine types

6
spark
View File

@ -6,8 +6,8 @@
* *
* (c) CodeIgniter Foundation <admin@codeigniter.com> * (c) CodeIgniter Foundation <admin@codeigniter.com>
* *
* For the full copyright and license information, please view * For the full copyright and license information, please view the LICENSE file that was distributed with this source
* the LICENSE file that was distributed with this source code. * code.
*/ */
/* /*
@ -27,7 +27,7 @@ if (strpos(PHP_SAPI, 'cgi') === 0) {
} }
// Check PHP version. // Check PHP version.
$minPhpVersion = '8.0'; // If you update this, don't forget to update `public/index.php`. $minPhpVersion = '8.1'; // If you update this, don't forget to update `public/index.php`.
if (version_compare(PHP_VERSION, $minPhpVersion, '<')) { if (version_compare(PHP_VERSION, $minPhpVersion, '<')) {
$message = sprintf( $message = sprintf(
'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s', 'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s',

View File

@ -44,7 +44,7 @@ class PodcastTest extends CIUnitTestCase
*/ */
private array $podcast = []; private array $podcast = [];
private string $podcastApiUrl; private readonly string $podcastApiUrl;
/** /**
* @param array<mixed> $data * @param array<mixed> $data