Merge pull request #443 from jonnybarnes/develop

MTM Fix IndieAuth sign in
This commit is contained in:
Jonny Barnes 2022-09-24 18:42:27 +01:00 committed by GitHub
commit 0faf896e8f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 643 additions and 419 deletions

View file

@ -5,18 +5,26 @@ declare(strict_types=1);
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Services\TokenService; use App\Services\TokenService;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\Exception\BadResponseException;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use IndieAuth\Client; use IndieAuth\Client;
class TokenEndpointController extends Controller class TokenEndpointController extends Controller
{ {
/** /**
* The IndieAuth Client. * @var Client The IndieAuth Client.
*/ */
protected Client $client; protected Client $client;
/** /**
* The Token handling service. * @var GuzzleClient The GuzzleHttp client.
*/
protected GuzzleClient $guzzle;
/**
* @var TokenService The Token handling service.
*/ */
protected TokenService $tokenService; protected TokenService $tokenService;
@ -24,43 +32,64 @@ class TokenEndpointController extends Controller
* Inject the dependencies. * Inject the dependencies.
* *
* @param Client $client * @param Client $client
* @param GuzzleClient $guzzle
* @param TokenService $tokenService * @param TokenService $tokenService
*/ */
public function __construct( public function __construct(
Client $client, Client $client,
GuzzleClient $guzzle,
TokenService $tokenService TokenService $tokenService
) { ) {
$this->client = $client; $this->client = $client;
$this->guzzle = $guzzle;
$this->tokenService = $tokenService; $this->tokenService = $tokenService;
} }
/** /**
* If the user has authd via the IndieAuth protocol, issue a valid token. * If the user has authd via the IndieAuth protocol, issue a valid token.
* *
* @param Request $request
* @return JsonResponse * @return JsonResponse
*/ */
public function create(): JsonResponse public function create(Request $request): JsonResponse
{ {
$authorizationEndpoint = $this->client->discoverAuthorizationEndpoint(normalize_url(request()->input('me'))); if (empty($request->input('me'))) {
if ($authorizationEndpoint) { return response()->json([
$auth = $this->client->verifyIndieAuthCode( 'error' => 'Missing {me} param from input',
], 400);
}
$authorizationEndpoint = $this->client::discoverAuthorizationEndpoint(normalize_url($request->input('me')));
if (empty($authorizationEndpoint)) {
return response()->json([
'error' => sprintf('Could not discover the authorization endpoint for %s', $request->input('me')),
], 400);
}
$auth = $this->verifyIndieAuthCode(
$authorizationEndpoint, $authorizationEndpoint,
request()->input('code'), $request->input('code'),
request()->input('me'), $request->input('me'),
request()->input('redirect_uri'), $request->input('redirect_uri'),
request()->input('client_id'), $request->input('client_id'),
null // code_verifier
); );
if (array_key_exists('me', $auth)) {
if ($auth === null || ! array_key_exists('me', $auth)) {
return response()->json([
'error' => 'There was an error verifying the IndieAuth code',
], 401);
}
$scope = $auth['scope'] ?? ''; $scope = $auth['scope'] ?? '';
$tokenData = [ $tokenData = [
'me' => request()->input('me'), 'me' => $request->input('me'),
'client_id' => request()->input('client_id'), 'client_id' => $request->input('client_id'),
'scope' => $scope, 'scope' => $scope,
]; ];
$token = $this->tokenService->getNewToken($tokenData); $token = $this->tokenService->getNewToken($tokenData);
$content = [ $content = [
'me' => request()->input('me'), 'me' => $request->input('me'),
'scope' => $scope, 'scope' => $scope,
'access_token' => $token, 'access_token' => $token,
]; ];
@ -68,13 +97,35 @@ class TokenEndpointController extends Controller
return response()->json($content); return response()->json($content);
} }
return response()->json([ protected function verifyIndieAuthCode(
'error' => 'There was an error verifying the authorisation code.', string $authorizationEndpoint,
], 401); string $code,
string $me,
string $redirectUri,
string $clientId
): ?array {
try {
$response = $this->guzzle->request('POST', $authorizationEndpoint, [
'headers' => [
'Accept' => 'application/json',
],
'form_params' => [
'code' => $code,
'me' => $me,
'redirect_uri' => $redirectUri,
'client_id' => $clientId,
],
]);
} catch (BadResponseException) {
return null;
} }
return response()->json([ try {
'error' => 'Cant determine the authorisation endpoint.', $authData = json_decode((string) $response->getBody(), true, 512, JSON_THROW_ON_ERROR);
], 400); } catch (\JsonException) {
return null;
}
return $authData;
} }
} }

397
composer.lock generated
View file

@ -58,16 +58,16 @@
}, },
{ {
"name": "aws/aws-sdk-php", "name": "aws/aws-sdk-php",
"version": "3.235.4", "version": "3.235.10",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/aws/aws-sdk-php.git", "url": "https://github.com/aws/aws-sdk-php.git",
"reference": "4adc3ba34f1666c13a2a35894e225bd47e8af7c4" "reference": "943f96f50d19244584675c34fb3e4c8aa3eaddce"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4adc3ba34f1666c13a2a35894e225bd47e8af7c4", "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/943f96f50d19244584675c34fb3e4c8aa3eaddce",
"reference": "4adc3ba34f1666c13a2a35894e225bd47e8af7c4", "reference": "943f96f50d19244584675c34fb3e4c8aa3eaddce",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -86,6 +86,7 @@
"aws/aws-php-sns-message-validator": "~1.0", "aws/aws-php-sns-message-validator": "~1.0",
"behat/behat": "~3.0", "behat/behat": "~3.0",
"composer/composer": "^1.10.22", "composer/composer": "^1.10.22",
"dms/phpunit-arraysubset-asserts": "^0.4.0",
"doctrine/cache": "~1.4", "doctrine/cache": "~1.4",
"ext-dom": "*", "ext-dom": "*",
"ext-openssl": "*", "ext-openssl": "*",
@ -93,10 +94,11 @@
"ext-sockets": "*", "ext-sockets": "*",
"nette/neon": "^2.3", "nette/neon": "^2.3",
"paragonie/random_compat": ">= 2", "paragonie/random_compat": ">= 2",
"phpunit/phpunit": "^4.8.35 || ^5.6.3", "phpunit/phpunit": "^4.8.35 || ^5.6.3 || ^9.5",
"psr/cache": "^1.0", "psr/cache": "^1.0",
"psr/simple-cache": "^1.0", "psr/simple-cache": "^1.0",
"sebastian/comparator": "^1.2.3" "sebastian/comparator": "^1.2.3 || ^4.0",
"yoast/phpunit-polyfills": "^1.0"
}, },
"suggest": { "suggest": {
"aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications",
@ -144,9 +146,9 @@
"support": { "support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues", "issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.235.4" "source": "https://github.com/aws/aws-sdk-php/tree/3.235.10"
}, },
"time": "2022-09-08T18:49:27+00:00" "time": "2022-09-16T18:18:42+00:00"
}, },
{ {
"name": "brick/math", "name": "brick/math",
@ -746,16 +748,16 @@
}, },
{ {
"name": "dragonmantank/cron-expression", "name": "dragonmantank/cron-expression",
"version": "v3.3.1", "version": "v3.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/dragonmantank/cron-expression.git", "url": "https://github.com/dragonmantank/cron-expression.git",
"reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8",
"reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -795,7 +797,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/dragonmantank/cron-expression/issues", "issues": "https://github.com/dragonmantank/cron-expression/issues",
"source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2"
}, },
"funding": [ "funding": [
{ {
@ -803,7 +805,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-01-18T15:43:28+00:00" "time": "2022-09-10T18:51:20+00:00"
}, },
{ {
"name": "egulias/email-validator", "name": "egulias/email-validator",
@ -1739,16 +1741,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v9.28.0", "version": "v9.31.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "396a89e1f3654123d1c7f56306051212e5c75bc0" "reference": "75013d4fffe3b24748d313fbbea53206351214f7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/396a89e1f3654123d1c7f56306051212e5c75bc0", "url": "https://api.github.com/repos/laravel/framework/zipball/75013d4fffe3b24748d313fbbea53206351214f7",
"reference": "396a89e1f3654123d1c7f56306051212e5c75bc0", "reference": "75013d4fffe3b24748d313fbbea53206351214f7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1778,6 +1780,7 @@
"symfony/mime": "^6.0", "symfony/mime": "^6.0",
"symfony/process": "^6.0", "symfony/process": "^6.0",
"symfony/routing": "^6.0", "symfony/routing": "^6.0",
"symfony/uid": "^6.0",
"symfony/var-dumper": "^6.0", "symfony/var-dumper": "^6.0",
"tijsverkoyen/css-to-inline-styles": "^2.2.2", "tijsverkoyen/css-to-inline-styles": "^2.2.2",
"vlucas/phpdotenv": "^5.4.1", "vlucas/phpdotenv": "^5.4.1",
@ -1825,12 +1828,15 @@
"illuminate/view": "self.version" "illuminate/view": "self.version"
}, },
"require-dev": { "require-dev": {
"ably/ably-php": "^1.0",
"aws/aws-sdk-php": "^3.198.1", "aws/aws-sdk-php": "^3.198.1",
"doctrine/dbal": "^2.13.3|^3.1.4", "doctrine/dbal": "^2.13.3|^3.1.4",
"fakerphp/faker": "^1.9.2", "fakerphp/faker": "^1.9.2",
"guzzlehttp/guzzle": "^7.2", "guzzlehttp/guzzle": "^7.2",
"league/flysystem-aws-s3-v3": "^3.0", "league/flysystem-aws-s3-v3": "^3.0",
"league/flysystem-ftp": "^3.0", "league/flysystem-ftp": "^3.0",
"league/flysystem-path-prefixing": "^3.3",
"league/flysystem-read-only": "^3.3",
"league/flysystem-sftp-v3": "^3.0", "league/flysystem-sftp-v3": "^3.0",
"mockery/mockery": "^1.4.4", "mockery/mockery": "^1.4.4",
"orchestra/testbench-core": "^7.1", "orchestra/testbench-core": "^7.1",
@ -1858,6 +1864,8 @@
"laravel/tinker": "Required to use the tinker console command (^2.0).", "laravel/tinker": "Required to use the tinker console command (^2.0).",
"league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).",
"league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).",
"league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).",
"league/flysystem-read-only": "Required to use read-only disks (^3.3)",
"league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).",
"mockery/mockery": "Required to use mocking (^1.4.4).", "mockery/mockery": "Required to use mocking (^1.4.4).",
"nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
@ -1915,7 +1923,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2022-09-06T14:57:01+00:00" "time": "2022-09-20T13:32:50+00:00"
}, },
{ {
"name": "laravel/horizon", "name": "laravel/horizon",
@ -2447,16 +2455,16 @@
}, },
{ {
"name": "league/flysystem", "name": "league/flysystem",
"version": "3.3.0", "version": "3.5.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/thephpleague/flysystem.git", "url": "https://github.com/thephpleague/flysystem.git",
"reference": "d8295793b3e2f91aa39e1feb2d5bfce772891ae2" "reference": "f14993c6e394450ac4649da35264df0544d0234e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d8295793b3e2f91aa39e1feb2d5bfce772891ae2", "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f14993c6e394450ac4649da35264df0544d0234e",
"reference": "d8295793b3e2f91aa39e1feb2d5bfce772891ae2", "reference": "f14993c6e394450ac4649da35264df0544d0234e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2518,7 +2526,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/thephpleague/flysystem/issues", "issues": "https://github.com/thephpleague/flysystem/issues",
"source": "https://github.com/thephpleague/flysystem/tree/3.3.0" "source": "https://github.com/thephpleague/flysystem/tree/3.5.1"
}, },
"funding": [ "funding": [
{ {
@ -2534,20 +2542,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-09-09T11:11:42+00:00" "time": "2022-09-18T18:23:19+00:00"
}, },
{ {
"name": "league/flysystem-aws-s3-v3", "name": "league/flysystem-aws-s3-v3",
"version": "3.3.0", "version": "3.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git",
"reference": "c9402e0b8d89d36b1b88ecf88c2a80b6d61fd114" "reference": "adb6633f325c934c15a099c363dc5362bdcb07a2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/c9402e0b8d89d36b1b88ecf88c2a80b6d61fd114", "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/adb6633f325c934c15a099c363dc5362bdcb07a2",
"reference": "c9402e0b8d89d36b1b88ecf88c2a80b6d61fd114", "reference": "adb6633f325c934c15a099c363dc5362bdcb07a2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2588,7 +2596,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues",
"source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.3.0" "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.5.0"
}, },
"funding": [ "funding": [
{ {
@ -2604,7 +2612,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-09-09T10:03:42+00:00" "time": "2022-09-17T21:00:35+00:00"
}, },
{ {
"name": "league/glide", "name": "league/glide",
@ -3356,20 +3364,20 @@
}, },
{ {
"name": "nette/utils", "name": "nette/utils",
"version": "v3.2.7", "version": "v3.2.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nette/utils.git", "url": "https://github.com/nette/utils.git",
"reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" "reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", "url": "https://api.github.com/repos/nette/utils/zipball/02a54c4c872b99e4ec05c4aec54b5a06eb0f6368",
"reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", "reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2 <8.2" "php": ">=7.2 <8.3"
}, },
"conflict": { "conflict": {
"nette/di": "<3.0.6" "nette/di": "<3.0.6"
@ -3435,9 +3443,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nette/utils/issues", "issues": "https://github.com/nette/utils/issues",
"source": "https://github.com/nette/utils/tree/v3.2.7" "source": "https://github.com/nette/utils/tree/v3.2.8"
}, },
"time": "2022-01-24T11:29:14+00:00" "time": "2022-09-12T23:36:20+00:00"
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
@ -4263,20 +4271,20 @@
}, },
{ {
"name": "ramsey/uuid", "name": "ramsey/uuid",
"version": "4.4.0", "version": "4.5.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/ramsey/uuid.git", "url": "https://github.com/ramsey/uuid.git",
"reference": "373f7bacfcf3de038778ff27dcce5672ddbf4c8a" "reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/373f7bacfcf3de038778ff27dcce5672ddbf4c8a", "url": "https://api.github.com/repos/ramsey/uuid/zipball/a161a26d917604dc6d3aa25100fddf2556e9f35d",
"reference": "373f7bacfcf3de038778ff27dcce5672ddbf4c8a", "reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"brick/math": "^0.8 || ^0.9 || ^0.10", "brick/math": "^0.8.8 || ^0.9 || ^0.10",
"ext-ctype": "*", "ext-ctype": "*",
"ext-json": "*", "ext-json": "*",
"php": "^8.0", "php": "^8.0",
@ -4297,12 +4305,13 @@
"php-mock/php-mock-mockery": "^1.3", "php-mock/php-mock-mockery": "^1.3",
"php-parallel-lint/php-parallel-lint": "^1.1", "php-parallel-lint/php-parallel-lint": "^1.1",
"phpbench/phpbench": "^1.0", "phpbench/phpbench": "^1.0",
"phpstan/extension-installer": "^1.0", "phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^0.12", "phpstan/phpstan": "^1.8",
"phpstan/phpstan-mockery": "^0.12", "phpstan/phpstan-mockery": "^1.1",
"phpstan/phpstan-phpunit": "^0.12", "phpstan/phpstan-phpunit": "^1.1",
"phpunit/phpunit": "^8.5 || ^9", "phpunit/phpunit": "^8.5 || ^9",
"slevomat/coding-standard": "^7.0", "ramsey/composer-repl": "^1.4",
"slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.5", "squizlabs/php_codesniffer": "^3.5",
"vimeo/psalm": "^4.9" "vimeo/psalm": "^4.9"
}, },
@ -4340,7 +4349,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/ramsey/uuid/issues", "issues": "https://github.com/ramsey/uuid/issues",
"source": "https://github.com/ramsey/uuid/tree/4.4.0" "source": "https://github.com/ramsey/uuid/tree/4.5.1"
}, },
"funding": [ "funding": [
{ {
@ -4352,7 +4361,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-08-05T17:58:37+00:00" "time": "2022-09-16T03:22:46+00:00"
}, },
{ {
"name": "scrivo/highlight.php", "name": "scrivo/highlight.php",
@ -6367,6 +6376,88 @@
], ],
"time": "2022-05-24T11:49:31+00:00" "time": "2022-05-24T11:49:31+00:00"
}, },
{
"name": "symfony/polyfill-uuid",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-uuid.git",
"reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/a41886c1c81dc075a09c71fe6db5b9d68c79de23",
"reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"provide": {
"ext-uuid": "*"
},
"suggest": {
"ext-uuid": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Uuid\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Pineau",
"email": "lyrixx@lyrixx.info"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for uuid functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"uuid"
],
"support": {
"source": "https://github.com/symfony/polyfill-uuid/tree/v1.26.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
},
{ {
"name": "symfony/process", "name": "symfony/process",
"version": "v6.1.3", "version": "v6.1.3",
@ -6863,6 +6954,80 @@
], ],
"time": "2022-06-27T17:24:16+00:00" "time": "2022-06-27T17:24:16+00:00"
}, },
{
"name": "symfony/uid",
"version": "v6.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/uid.git",
"reference": "ea2ccf0fdb88c83e626105b68e5bab5c132d812b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/uid/zipball/ea2ccf0fdb88c83e626105b68e5bab5c132d812b",
"reference": "ea2ccf0fdb88c83e626105b68e5bab5c132d812b",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/polyfill-uuid": "^1.15"
},
"require-dev": {
"symfony/console": "^5.4|^6.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Uid\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Pineau",
"email": "lyrixx@lyrixx.info"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Provides an object-oriented API to generate and represent UIDs",
"homepage": "https://symfony.com",
"keywords": [
"UID",
"ulid",
"uuid"
],
"support": {
"source": "https://github.com/symfony/uid/tree/v6.1.3"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2022-07-20T13:46:29+00:00"
},
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v6.1.3", "version": "v6.1.3",
@ -6953,16 +7118,16 @@
}, },
{ {
"name": "tijsverkoyen/css-to-inline-styles", "name": "tijsverkoyen/css-to-inline-styles",
"version": "2.2.4", "version": "2.2.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
"reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" "reference": "4348a3a06651827a27d989ad1d13efec6bb49b19"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/4348a3a06651827a27d989ad1d13efec6bb49b19",
"reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", "reference": "4348a3a06651827a27d989ad1d13efec6bb49b19",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7000,9 +7165,9 @@
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
"support": { "support": {
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
"source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.5"
}, },
"time": "2021-12-08T09:12:39+00:00" "time": "2022-09-12T13:28:28+00:00"
}, },
{ {
"name": "vlucas/phpdotenv", "name": "vlucas/phpdotenv",
@ -8710,16 +8875,16 @@
}, },
{ {
"name": "laravel/dusk", "name": "laravel/dusk",
"version": "v7.0.1", "version": "v7.0.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/dusk.git", "url": "https://github.com/laravel/dusk.git",
"reference": "7b4e00c7750c65c9ae9206356c9c139223ea221c" "reference": "0fa48e86ad6234bd12ef92a12055e1236cec87dd"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/dusk/zipball/7b4e00c7750c65c9ae9206356c9c139223ea221c", "url": "https://api.github.com/repos/laravel/dusk/zipball/0fa48e86ad6234bd12ef92a12055e1236cec87dd",
"reference": "7b4e00c7750c65c9ae9206356c9c139223ea221c", "reference": "0fa48e86ad6234bd12ef92a12055e1236cec87dd",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -8777,22 +8942,22 @@
], ],
"support": { "support": {
"issues": "https://github.com/laravel/dusk/issues", "issues": "https://github.com/laravel/dusk/issues",
"source": "https://github.com/laravel/dusk/tree/v7.0.1" "source": "https://github.com/laravel/dusk/tree/v7.0.2"
}, },
"time": "2022-09-02T14:42:03+00:00" "time": "2022-09-15T13:17:41+00:00"
}, },
{ {
"name": "laravel/pint", "name": "laravel/pint",
"version": "v1.1.3", "version": "v1.2.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/pint.git", "url": "https://github.com/laravel/pint.git",
"reference": "9fb8e93074de3c04a0975beb90dcb38562afbdaa" "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/9fb8e93074de3c04a0975beb90dcb38562afbdaa", "url": "https://api.github.com/repos/laravel/pint/zipball/1d276e4c803397a26cc337df908f55c2a4e90d86",
"reference": "9fb8e93074de3c04a0975beb90dcb38562afbdaa", "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -8845,7 +9010,7 @@
"issues": "https://github.com/laravel/pint/issues", "issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint" "source": "https://github.com/laravel/pint"
}, },
"time": "2022-09-06T16:01:44+00:00" "time": "2022-09-13T15:07:15+00:00"
}, },
{ {
"name": "laravel/sail", "name": "laravel/sail",
@ -10319,16 +10484,16 @@
}, },
{ {
"name": "sebastian/comparator", "name": "sebastian/comparator",
"version": "4.0.6", "version": "4.0.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git", "url": "https://github.com/sebastianbergmann/comparator.git",
"reference": "55f4261989e546dc112258c7a75935a81a7ce382" "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
"reference": "55f4261989e546dc112258c7a75935a81a7ce382", "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -10381,7 +10546,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues", "issues": "https://github.com/sebastianbergmann/comparator/issues",
"source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
}, },
"funding": [ "funding": [
{ {
@ -10389,7 +10554,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2020-10-26T15:49:45+00:00" "time": "2022-09-14T12:41:17+00:00"
}, },
{ {
"name": "sebastian/complexity", "name": "sebastian/complexity",
@ -10579,16 +10744,16 @@
}, },
{ {
"name": "sebastian/exporter", "name": "sebastian/exporter",
"version": "4.0.4", "version": "4.0.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git", "url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -10644,7 +10809,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues", "issues": "https://github.com/sebastianbergmann/exporter/issues",
"source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
}, },
"funding": [ "funding": [
{ {
@ -10652,7 +10817,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-11-11T14:18:36+00:00" "time": "2022-09-14T06:03:37+00:00"
}, },
{ {
"name": "sebastian/global-state", "name": "sebastian/global-state",
@ -11007,16 +11172,16 @@
}, },
{ {
"name": "sebastian/type", "name": "sebastian/type",
"version": "3.1.0", "version": "3.2.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/type.git", "url": "https://github.com/sebastianbergmann/type.git",
"reference": "fb44e1cc6e557418387ad815780360057e40753e" "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb44e1cc6e557418387ad815780360057e40753e", "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
"reference": "fb44e1cc6e557418387ad815780360057e40753e", "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -11028,7 +11193,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.1-dev" "dev-master": "3.2-dev"
} }
}, },
"autoload": { "autoload": {
@ -11051,7 +11216,7 @@
"homepage": "https://github.com/sebastianbergmann/type", "homepage": "https://github.com/sebastianbergmann/type",
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/type/issues", "issues": "https://github.com/sebastianbergmann/type/issues",
"source": "https://github.com/sebastianbergmann/type/tree/3.1.0" "source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
}, },
"funding": [ "funding": [
{ {
@ -11059,7 +11224,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-08-29T06:55:37+00:00" "time": "2022-09-12T14:47:03+00:00"
}, },
{ {
"name": "sebastian/version", "name": "sebastian/version",
@ -11322,27 +11487,27 @@
}, },
{ {
"name": "spatie/laravel-ignition", "name": "spatie/laravel-ignition",
"version": "1.4.1", "version": "1.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/spatie/laravel-ignition.git", "url": "https://github.com/spatie/laravel-ignition.git",
"reference": "29deea5d9cf921590184be6956e657c4f4566440" "reference": "192962f4d84526f6868c512530c00633e3165749"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/29deea5d9cf921590184be6956e657c4f4566440", "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/192962f4d84526f6868c512530c00633e3165749",
"reference": "29deea5d9cf921590184be6956e657c4f4566440", "reference": "192962f4d84526f6868c512530c00633e3165749",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-curl": "*", "ext-curl": "*",
"ext-json": "*", "ext-json": "*",
"ext-mbstring": "*", "ext-mbstring": "*",
"illuminate/support": "^8.77|^9.0", "illuminate/support": "^8.77|^9.27",
"monolog/monolog": "^2.3", "monolog/monolog": "^2.3",
"php": "^8.0", "php": "^8.0",
"spatie/flare-client-php": "^1.0.1", "spatie/flare-client-php": "^1.0.1",
"spatie/ignition": "^1.2.4", "spatie/ignition": "^1.4.1",
"symfony/console": "^5.0|^6.0", "symfony/console": "^5.0|^6.0",
"symfony/var-dumper": "^5.0|^6.0" "symfony/var-dumper": "^5.0|^6.0"
}, },
@ -11408,20 +11573,20 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-09-01T11:31:14+00:00" "time": "2022-09-16T13:45:54+00:00"
}, },
{ {
"name": "spatie/laravel-ray", "name": "spatie/laravel-ray",
"version": "1.30.0", "version": "1.31.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/spatie/laravel-ray.git", "url": "https://github.com/spatie/laravel-ray.git",
"reference": "1afe8d38cf13e9f7d0f6438e67bca71c3ed8d1f6" "reference": "7394694afd89d05879e7a69c54abab73c1199acd"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-ray/zipball/1afe8d38cf13e9f7d0f6438e67bca71c3ed8d1f6", "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/7394694afd89d05879e7a69c54abab73c1199acd",
"reference": "1afe8d38cf13e9f7d0f6438e67bca71c3ed8d1f6", "reference": "7394694afd89d05879e7a69c54abab73c1199acd",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -11480,7 +11645,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/spatie/laravel-ray/issues", "issues": "https://github.com/spatie/laravel-ray/issues",
"source": "https://github.com/spatie/laravel-ray/tree/1.30.0" "source": "https://github.com/spatie/laravel-ray/tree/1.31.0"
}, },
"funding": [ "funding": [
{ {
@ -11492,7 +11657,7 @@
"type": "other" "type": "other"
} }
], ],
"time": "2022-07-29T10:02:43+00:00" "time": "2022-09-20T13:13:22+00:00"
}, },
{ {
"name": "spatie/macroable", "name": "spatie/macroable",
@ -11546,16 +11711,16 @@
}, },
{ {
"name": "spatie/ray", "name": "spatie/ray",
"version": "1.34.5", "version": "1.36.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/spatie/ray.git", "url": "https://github.com/spatie/ray.git",
"reference": "2d64ea264eecbdc7ec01e4e8b45978cae80815d2" "reference": "4a4def8cda4806218341b8204c98375aa8c34323"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/spatie/ray/zipball/2d64ea264eecbdc7ec01e4e8b45978cae80815d2", "url": "https://api.github.com/repos/spatie/ray/zipball/4a4def8cda4806218341b8204c98375aa8c34323",
"reference": "2d64ea264eecbdc7ec01e4e8b45978cae80815d2", "reference": "4a4def8cda4806218341b8204c98375aa8c34323",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -11605,7 +11770,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/spatie/ray/issues", "issues": "https://github.com/spatie/ray/issues",
"source": "https://github.com/spatie/ray/tree/1.34.5" "source": "https://github.com/spatie/ray/tree/1.36.0"
}, },
"funding": [ "funding": [
{ {
@ -11617,7 +11782,7 @@
"type": "other" "type": "other"
} }
], ],
"time": "2022-06-03T12:32:57+00:00" "time": "2022-08-11T14:04:18+00:00"
}, },
{ {
"name": "symfony/polyfill-iconv", "name": "symfony/polyfill-iconv",
@ -11974,16 +12139,16 @@
}, },
{ {
"name": "zbateson/mail-mime-parser", "name": "zbateson/mail-mime-parser",
"version": "2.2.1", "version": "2.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/zbateson/mail-mime-parser.git", "url": "https://github.com/zbateson/mail-mime-parser.git",
"reference": "24955de7ec352b3258c1d4551efd21202cb8710c" "reference": "318cd809afebe48e8fb41625b05b25470fb3fa86"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/24955de7ec352b3258c1d4551efd21202cb8710c", "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/318cd809afebe48e8fb41625b05b25470fb3fa86",
"reference": "24955de7ec352b3258c1d4551efd21202cb8710c", "reference": "318cd809afebe48e8fb41625b05b25470fb3fa86",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -12043,7 +12208,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-02-22T21:35:59+00:00" "time": "2022-09-01T15:59:13+00:00"
}, },
{ {
"name": "zbateson/mb-wrapper", "name": "zbateson/mb-wrapper",
@ -12114,16 +12279,16 @@
}, },
{ {
"name": "zbateson/stream-decorators", "name": "zbateson/stream-decorators",
"version": "1.0.6", "version": "1.0.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/zbateson/stream-decorators.git", "url": "https://github.com/zbateson/stream-decorators.git",
"reference": "3403c4323bd1cd15fe54348b031b26b064c706af" "reference": "8f8ca208572963258b7e6d91106181706deacd10"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/3403c4323bd1cd15fe54348b031b26b064c706af", "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/8f8ca208572963258b7e6d91106181706deacd10",
"reference": "3403c4323bd1cd15fe54348b031b26b064c706af", "reference": "8f8ca208572963258b7e6d91106181706deacd10",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -12163,7 +12328,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/zbateson/stream-decorators/issues", "issues": "https://github.com/zbateson/stream-decorators/issues",
"source": "https://github.com/zbateson/stream-decorators/tree/1.0.6" "source": "https://github.com/zbateson/stream-decorators/tree/1.0.7"
}, },
"funding": [ "funding": [
{ {
@ -12171,7 +12336,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-07-08T19:01:59+00:00" "time": "2022-09-08T15:44:55+00:00"
} }
], ],
"aliases": [], "aliases": [],

455
package-lock.json generated
View file

@ -10,18 +10,18 @@
"license": "CC0-1.0", "license": "CC0-1.0",
"dependencies": { "dependencies": {
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"puppeteer": "^17.1.3" "puppeteer": "^18.0.5"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.19.0", "@babel/core": "^7.19.1",
"@babel/preset-env": "^7.19.0", "@babel/preset-env": "^7.19.1",
"autoprefixer": "^10.4.8", "autoprefixer": "^10.4.12",
"babel-loader": "^8.2.1", "babel-loader": "^8.2.1",
"browserlist": "^1.0.1", "browserlist": "^1.0.1",
"compression-webpack-plugin": "^10.0.0", "compression-webpack-plugin": "^10.0.0",
"css-loader": "^6.2.0", "css-loader": "^6.2.0",
"cssnano": "^5.1.13", "cssnano": "^5.1.13",
"eslint": "^8.23.0", "eslint": "^8.23.1",
"eslint-webpack-plugin": "^3.2.0", "eslint-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "^2.6.1", "mini-css-extract-plugin": "^2.6.1",
"postcss": "^8.4.16", "postcss": "^8.4.16",
@ -29,7 +29,7 @@
"postcss-combine-media-query": "^1.0.1", "postcss-combine-media-query": "^1.0.1",
"postcss-import": "^15.0.0", "postcss-import": "^15.0.0",
"postcss-loader": "^7.0.1", "postcss-loader": "^7.0.1",
"stylelint": "^14.11.0", "stylelint": "^14.12.1",
"stylelint-config-standard": "^28.0.0", "stylelint-config-standard": "^28.0.0",
"stylelint-webpack-plugin": "^3.1.1", "stylelint-webpack-plugin": "^3.1.1",
"webpack": "^5.74.0", "webpack": "^5.74.0",
@ -62,29 +62,29 @@
} }
}, },
"node_modules/@babel/compat-data": { "node_modules/@babel/compat-data": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz",
"integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@babel/core": { "node_modules/@babel/core": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz",
"integrity": "sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==", "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.1.0", "@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6", "@babel/code-frame": "^7.18.6",
"@babel/generator": "^7.19.0", "@babel/generator": "^7.19.0",
"@babel/helper-compilation-targets": "^7.19.0", "@babel/helper-compilation-targets": "^7.19.1",
"@babel/helper-module-transforms": "^7.19.0", "@babel/helper-module-transforms": "^7.19.0",
"@babel/helpers": "^7.19.0", "@babel/helpers": "^7.19.0",
"@babel/parser": "^7.19.0", "@babel/parser": "^7.19.1",
"@babel/template": "^7.18.10", "@babel/template": "^7.18.10",
"@babel/traverse": "^7.19.0", "@babel/traverse": "^7.19.1",
"@babel/types": "^7.19.0", "@babel/types": "^7.19.0",
"convert-source-map": "^1.7.0", "convert-source-map": "^1.7.0",
"debug": "^4.1.0", "debug": "^4.1.0",
@ -154,14 +154,14 @@
} }
}, },
"node_modules/@babel/helper-compilation-targets": { "node_modules/@babel/helper-compilation-targets": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz",
"integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/compat-data": "^7.19.0", "@babel/compat-data": "^7.19.1",
"@babel/helper-validator-option": "^7.18.6", "@babel/helper-validator-option": "^7.18.6",
"browserslist": "^4.20.2", "browserslist": "^4.21.3",
"semver": "^6.3.0" "semver": "^6.3.0"
}, },
"engines": { "engines": {
@ -209,9 +209,9 @@
} }
}, },
"node_modules/@babel/helper-define-polyfill-provider": { "node_modules/@babel/helper-define-polyfill-provider": {
"version": "0.3.2", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
"integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-compilation-targets": "^7.17.7",
@ -476,9 +476,9 @@
} }
}, },
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz",
"integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==",
"dev": true, "dev": true,
"bin": { "bin": {
"parser": "bin/babel-parser.js" "parser": "bin/babel-parser.js"
@ -520,9 +520,9 @@
} }
}, },
"node_modules/@babel/plugin-proposal-async-generator-functions": { "node_modules/@babel/plugin-proposal-async-generator-functions": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz",
"integrity": "sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==", "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-environment-visitor": "^7.18.9",
@ -1255,9 +1255,9 @@
} }
}, },
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz",
"integrity": "sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ==", "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.19.0", "@babel/helper-create-regexp-features-plugin": "^7.19.0",
@ -1470,18 +1470,18 @@
} }
}, },
"node_modules/@babel/preset-env": { "node_modules/@babel/preset-env": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.1.tgz",
"integrity": "sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==", "integrity": "sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/compat-data": "^7.19.0", "@babel/compat-data": "^7.19.1",
"@babel/helper-compilation-targets": "^7.19.0", "@babel/helper-compilation-targets": "^7.19.1",
"@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0",
"@babel/helper-validator-option": "^7.18.6", "@babel/helper-validator-option": "^7.18.6",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
"@babel/plugin-proposal-async-generator-functions": "^7.19.0", "@babel/plugin-proposal-async-generator-functions": "^7.19.1",
"@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6",
"@babel/plugin-proposal-dynamic-import": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6",
@ -1529,7 +1529,7 @@
"@babel/plugin-transform-modules-commonjs": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6",
"@babel/plugin-transform-modules-systemjs": "^7.19.0", "@babel/plugin-transform-modules-systemjs": "^7.19.0",
"@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-modules-umd": "^7.18.6",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.19.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
"@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-new-target": "^7.18.6",
"@babel/plugin-transform-object-super": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6",
"@babel/plugin-transform-parameters": "^7.18.8", "@babel/plugin-transform-parameters": "^7.18.8",
@ -1545,10 +1545,10 @@
"@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/plugin-transform-unicode-regex": "^7.18.6",
"@babel/preset-modules": "^0.1.5", "@babel/preset-modules": "^0.1.5",
"@babel/types": "^7.19.0", "@babel/types": "^7.19.0",
"babel-plugin-polyfill-corejs2": "^0.3.2", "babel-plugin-polyfill-corejs2": "^0.3.3",
"babel-plugin-polyfill-corejs3": "^0.5.3", "babel-plugin-polyfill-corejs3": "^0.6.0",
"babel-plugin-polyfill-regenerator": "^0.4.0", "babel-plugin-polyfill-regenerator": "^0.4.1",
"core-js-compat": "^3.22.1", "core-js-compat": "^3.25.1",
"semver": "^6.3.0" "semver": "^6.3.0"
}, },
"engines": { "engines": {
@ -1601,9 +1601,9 @@
} }
}, },
"node_modules/@babel/traverse": { "node_modules/@babel/traverse": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz",
"integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.18.6", "@babel/code-frame": "^7.18.6",
@ -1612,7 +1612,7 @@
"@babel/helper-function-name": "^7.19.0", "@babel/helper-function-name": "^7.19.0",
"@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6",
"@babel/parser": "^7.19.0", "@babel/parser": "^7.19.1",
"@babel/types": "^7.19.0", "@babel/types": "^7.19.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0" "globals": "^11.1.0"
@ -1662,9 +1662,9 @@
} }
}, },
"node_modules/@eslint/eslintrc": { "node_modules/@eslint/eslintrc": {
"version": "1.3.1", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz",
"integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
@ -2288,9 +2288,9 @@
} }
}, },
"node_modules/autoprefixer": { "node_modules/autoprefixer": {
"version": "10.4.8", "version": "10.4.12",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz",
"integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==", "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -2303,8 +2303,8 @@
} }
], ],
"dependencies": { "dependencies": {
"browserslist": "^4.21.3", "browserslist": "^4.21.4",
"caniuse-lite": "^1.0.30001373", "caniuse-lite": "^1.0.30001407",
"fraction.js": "^4.2.0", "fraction.js": "^4.2.0",
"normalize-range": "^0.1.2", "normalize-range": "^0.1.2",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
@ -2349,13 +2349,13 @@
} }
}, },
"node_modules/babel-plugin-polyfill-corejs2": { "node_modules/babel-plugin-polyfill-corejs2": {
"version": "0.3.2", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
"integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/compat-data": "^7.17.7", "@babel/compat-data": "^7.17.7",
"@babel/helper-define-polyfill-provider": "^0.3.2", "@babel/helper-define-polyfill-provider": "^0.3.3",
"semver": "^6.1.1" "semver": "^6.1.1"
}, },
"peerDependencies": { "peerDependencies": {
@ -2363,25 +2363,25 @@
} }
}, },
"node_modules/babel-plugin-polyfill-corejs3": { "node_modules/babel-plugin-polyfill-corejs3": {
"version": "0.5.3", "version": "0.6.0",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
"integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/helper-define-polyfill-provider": "^0.3.2", "@babel/helper-define-polyfill-provider": "^0.3.3",
"core-js-compat": "^3.21.0" "core-js-compat": "^3.25.1"
}, },
"peerDependencies": { "peerDependencies": {
"@babel/core": "^7.0.0-0" "@babel/core": "^7.0.0-0"
} }
}, },
"node_modules/babel-plugin-polyfill-regenerator": { "node_modules/babel-plugin-polyfill-regenerator": {
"version": "0.4.0", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
"integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/helper-define-polyfill-provider": "^0.3.2" "@babel/helper-define-polyfill-provider": "^0.3.3"
}, },
"peerDependencies": { "peerDependencies": {
"@babel/core": "^7.0.0-0" "@babel/core": "^7.0.0-0"
@ -2483,9 +2483,9 @@
} }
}, },
"node_modules/browserslist": { "node_modules/browserslist": {
"version": "4.21.3", "version": "4.21.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
"integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -2498,10 +2498,10 @@
} }
], ],
"dependencies": { "dependencies": {
"caniuse-lite": "^1.0.30001370", "caniuse-lite": "^1.0.30001400",
"electron-to-chromium": "^1.4.202", "electron-to-chromium": "^1.4.251",
"node-releases": "^2.0.6", "node-releases": "^2.0.6",
"update-browserslist-db": "^1.0.5" "update-browserslist-db": "^1.0.9"
}, },
"bin": { "bin": {
"browserslist": "cli.js" "browserslist": "cli.js"
@ -2608,9 +2608,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001373", "version": "1.0.30001409",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz",
"integrity": "sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==", "integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -2807,28 +2807,18 @@
} }
}, },
"node_modules/core-js-compat": { "node_modules/core-js-compat": {
"version": "3.24.1", "version": "3.25.1",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.1.tgz",
"integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", "integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"browserslist": "^4.21.3", "browserslist": "^4.21.3"
"semver": "7.0.0"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/core-js" "url": "https://opencollective.com/core-js"
} }
}, },
"node_modules/core-js-compat/node_modules/semver": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
"integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/cosmiconfig": { "node_modules/cosmiconfig": {
"version": "7.0.1", "version": "7.0.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
@ -3224,9 +3214,9 @@
} }
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.4.206", "version": "1.4.257",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.206.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.257.tgz",
"integrity": "sha512-h+Fadt1gIaQ06JaIiyqPsBjJ08fV5Q7md+V8bUvQW/9OvXfL2LRICTz2EcnnCP7QzrFTS6/27MRV6Bl9Yn97zA==", "integrity": "sha512-C65sIwHqNnPC2ADMfse/jWTtmhZMII+x6ADI9gENzrOiI7BpxmfKFE84WkIEl5wEg+7+SfIkwChDlsd1Erju2A==",
"dev": true "dev": true
}, },
"node_modules/emoji-regex": { "node_modules/emoji-regex": {
@ -3320,12 +3310,12 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.23.0", "version": "8.23.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz",
"integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint/eslintrc": "^1.3.1", "@eslint/eslintrc": "^1.3.2",
"@humanwhocodes/config-array": "^0.10.4", "@humanwhocodes/config-array": "^0.10.4",
"@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
@ -3344,7 +3334,6 @@
"fast-deep-equal": "^3.1.3", "fast-deep-equal": "^3.1.3",
"file-entry-cache": "^6.0.1", "file-entry-cache": "^6.0.1",
"find-up": "^5.0.0", "find-up": "^5.0.0",
"functional-red-black-tree": "^1.0.1",
"glob-parent": "^6.0.1", "glob-parent": "^6.0.1",
"globals": "^13.15.0", "globals": "^13.15.0",
"globby": "^11.1.0", "globby": "^11.1.0",
@ -3353,6 +3342,7 @@
"import-fresh": "^3.0.0", "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",
"is-glob": "^4.0.0", "is-glob": "^4.0.0",
"js-sdsl": "^4.1.4",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1", "json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1", "levn": "^0.4.1",
@ -3803,9 +3793,9 @@
"dev": true "dev": true
}, },
"node_modules/fast-glob": { "node_modules/fast-glob": {
"version": "3.2.11", "version": "3.2.12",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
"integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.stat": "^2.0.2",
@ -3970,12 +3960,6 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true "dev": true
}, },
"node_modules/functional-red-black-tree": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
"dev": true
},
"node_modules/gensync": { "node_modules/gensync": {
"version": "1.0.0-beta.2", "version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@ -4484,6 +4468,12 @@
"url": "https://github.com/chalk/supports-color?sponsor=1" "url": "https://github.com/chalk/supports-color?sponsor=1"
} }
}, },
"node_modules/js-sdsl": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz",
"integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==",
"dev": true
},
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@ -5913,9 +5903,9 @@
} }
}, },
"node_modules/puppeteer": { "node_modules/puppeteer": {
"version": "17.1.3", "version": "18.0.5",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-17.1.3.tgz", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-18.0.5.tgz",
"integrity": "sha512-tVtvNSOOqlq75rUgwLeDAEQoLIiBqmRg0/zedpI6fuqIocIkuxG23A7FIl1oVSkuSMMLgcOP5kVhNETmsmjvPw==", "integrity": "sha512-s4erjxU0VtKojPvF+KvLKG6OHUPw7gO2YV1dtOsoryyCbhrs444fXb4QZqGWuTv3V/rgSCUzeixxu34g0ZkSMA==",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"cross-fetch": "3.1.5", "cross-fetch": "3.1.5",
@ -6562,9 +6552,9 @@
} }
}, },
"node_modules/stylelint": { "node_modules/stylelint": {
"version": "14.11.0", "version": "14.12.1",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.11.0.tgz", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.12.1.tgz",
"integrity": "sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA==", "integrity": "sha512-ZEM4TuksChMBfuPadQsHUkbOoRySAT9QMfDvvYxdAchOJl0p+csTMBXOu6ORAAxKhwBmxqJiep8V88bXfNs3EQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@csstools/selector-specificity": "^2.0.2", "@csstools/selector-specificity": "^2.0.2",
@ -6573,7 +6563,7 @@
"cosmiconfig": "^7.0.1", "cosmiconfig": "^7.0.1",
"css-functions-list": "^3.1.0", "css-functions-list": "^3.1.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"fast-glob": "^3.2.11", "fast-glob": "^3.2.12",
"fastest-levenshtein": "^1.0.16", "fastest-levenshtein": "^1.0.16",
"file-entry-cache": "^6.0.1", "file-entry-cache": "^6.0.1",
"global-modules": "^2.0.0", "global-modules": "^2.0.0",
@ -6600,7 +6590,7 @@
"string-width": "^4.2.3", "string-width": "^4.2.3",
"strip-ansi": "^6.0.1", "strip-ansi": "^6.0.1",
"style-search": "^0.1.0", "style-search": "^0.1.0",
"supports-hyperlinks": "^2.2.0", "supports-hyperlinks": "^2.3.0",
"svg-tags": "^1.0.0", "svg-tags": "^1.0.0",
"table": "^6.8.0", "table": "^6.8.0",
"v8-compile-cache": "^2.3.0", "v8-compile-cache": "^2.3.0",
@ -6781,9 +6771,9 @@
} }
}, },
"node_modules/supports-hyperlinks": { "node_modules/supports-hyperlinks": {
"version": "2.2.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
"integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"has-flag": "^4.0.0", "has-flag": "^4.0.0",
@ -7135,9 +7125,9 @@
} }
}, },
"node_modules/update-browserslist-db": { "node_modules/update-browserslist-db": {
"version": "1.0.5", "version": "1.0.9",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz",
"integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -7508,26 +7498,26 @@
} }
}, },
"@babel/compat-data": { "@babel/compat-data": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz",
"integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==",
"dev": true "dev": true
}, },
"@babel/core": { "@babel/core": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz",
"integrity": "sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==", "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@ampproject/remapping": "^2.1.0", "@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6", "@babel/code-frame": "^7.18.6",
"@babel/generator": "^7.19.0", "@babel/generator": "^7.19.0",
"@babel/helper-compilation-targets": "^7.19.0", "@babel/helper-compilation-targets": "^7.19.1",
"@babel/helper-module-transforms": "^7.19.0", "@babel/helper-module-transforms": "^7.19.0",
"@babel/helpers": "^7.19.0", "@babel/helpers": "^7.19.0",
"@babel/parser": "^7.19.0", "@babel/parser": "^7.19.1",
"@babel/template": "^7.18.10", "@babel/template": "^7.18.10",
"@babel/traverse": "^7.19.0", "@babel/traverse": "^7.19.1",
"@babel/types": "^7.19.0", "@babel/types": "^7.19.0",
"convert-source-map": "^1.7.0", "convert-source-map": "^1.7.0",
"debug": "^4.1.0", "debug": "^4.1.0",
@ -7580,14 +7570,14 @@
} }
}, },
"@babel/helper-compilation-targets": { "@babel/helper-compilation-targets": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz",
"integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/compat-data": "^7.19.0", "@babel/compat-data": "^7.19.1",
"@babel/helper-validator-option": "^7.18.6", "@babel/helper-validator-option": "^7.18.6",
"browserslist": "^4.20.2", "browserslist": "^4.21.3",
"semver": "^6.3.0" "semver": "^6.3.0"
} }
}, },
@ -7617,9 +7607,9 @@
} }
}, },
"@babel/helper-define-polyfill-provider": { "@babel/helper-define-polyfill-provider": {
"version": "0.3.2", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
"integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-compilation-targets": "^7.17.7",
@ -7818,9 +7808,9 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz",
"integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==",
"dev": true "dev": true
}, },
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
@ -7844,9 +7834,9 @@
} }
}, },
"@babel/plugin-proposal-async-generator-functions": { "@babel/plugin-proposal-async-generator-functions": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz",
"integrity": "sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==", "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-environment-visitor": "^7.18.9",
@ -8324,9 +8314,9 @@
} }
}, },
"@babel/plugin-transform-named-capturing-groups-regex": { "@babel/plugin-transform-named-capturing-groups-regex": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz",
"integrity": "sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ==", "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-create-regexp-features-plugin": "^7.19.0", "@babel/helper-create-regexp-features-plugin": "^7.19.0",
@ -8455,18 +8445,18 @@
} }
}, },
"@babel/preset-env": { "@babel/preset-env": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.1.tgz",
"integrity": "sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==", "integrity": "sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/compat-data": "^7.19.0", "@babel/compat-data": "^7.19.1",
"@babel/helper-compilation-targets": "^7.19.0", "@babel/helper-compilation-targets": "^7.19.1",
"@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0",
"@babel/helper-validator-option": "^7.18.6", "@babel/helper-validator-option": "^7.18.6",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
"@babel/plugin-proposal-async-generator-functions": "^7.19.0", "@babel/plugin-proposal-async-generator-functions": "^7.19.1",
"@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6",
"@babel/plugin-proposal-dynamic-import": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6",
@ -8514,7 +8504,7 @@
"@babel/plugin-transform-modules-commonjs": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6",
"@babel/plugin-transform-modules-systemjs": "^7.19.0", "@babel/plugin-transform-modules-systemjs": "^7.19.0",
"@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-modules-umd": "^7.18.6",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.19.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
"@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-new-target": "^7.18.6",
"@babel/plugin-transform-object-super": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6",
"@babel/plugin-transform-parameters": "^7.18.8", "@babel/plugin-transform-parameters": "^7.18.8",
@ -8530,10 +8520,10 @@
"@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/plugin-transform-unicode-regex": "^7.18.6",
"@babel/preset-modules": "^0.1.5", "@babel/preset-modules": "^0.1.5",
"@babel/types": "^7.19.0", "@babel/types": "^7.19.0",
"babel-plugin-polyfill-corejs2": "^0.3.2", "babel-plugin-polyfill-corejs2": "^0.3.3",
"babel-plugin-polyfill-corejs3": "^0.5.3", "babel-plugin-polyfill-corejs3": "^0.6.0",
"babel-plugin-polyfill-regenerator": "^0.4.0", "babel-plugin-polyfill-regenerator": "^0.4.1",
"core-js-compat": "^3.22.1", "core-js-compat": "^3.25.1",
"semver": "^6.3.0" "semver": "^6.3.0"
} }
}, },
@ -8571,9 +8561,9 @@
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.19.0", "version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz",
"integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.18.6", "@babel/code-frame": "^7.18.6",
@ -8582,7 +8572,7 @@
"@babel/helper-function-name": "^7.19.0", "@babel/helper-function-name": "^7.19.0",
"@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6",
"@babel/parser": "^7.19.0", "@babel/parser": "^7.19.1",
"@babel/types": "^7.19.0", "@babel/types": "^7.19.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0" "globals": "^11.1.0"
@ -8613,9 +8603,9 @@
"dev": true "dev": true
}, },
"@eslint/eslintrc": { "@eslint/eslintrc": {
"version": "1.3.1", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz",
"integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
@ -9130,13 +9120,13 @@
"dev": true "dev": true
}, },
"autoprefixer": { "autoprefixer": {
"version": "10.4.8", "version": "10.4.12",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz",
"integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==", "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"browserslist": "^4.21.3", "browserslist": "^4.21.4",
"caniuse-lite": "^1.0.30001373", "caniuse-lite": "^1.0.30001407",
"fraction.js": "^4.2.0", "fraction.js": "^4.2.0",
"normalize-range": "^0.1.2", "normalize-range": "^0.1.2",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
@ -9165,33 +9155,33 @@
} }
}, },
"babel-plugin-polyfill-corejs2": { "babel-plugin-polyfill-corejs2": {
"version": "0.3.2", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
"integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/compat-data": "^7.17.7", "@babel/compat-data": "^7.17.7",
"@babel/helper-define-polyfill-provider": "^0.3.2", "@babel/helper-define-polyfill-provider": "^0.3.3",
"semver": "^6.1.1" "semver": "^6.1.1"
} }
}, },
"babel-plugin-polyfill-corejs3": { "babel-plugin-polyfill-corejs3": {
"version": "0.5.3", "version": "0.6.0",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
"integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-define-polyfill-provider": "^0.3.2", "@babel/helper-define-polyfill-provider": "^0.3.3",
"core-js-compat": "^3.21.0" "core-js-compat": "^3.25.1"
} }
}, },
"babel-plugin-polyfill-regenerator": { "babel-plugin-polyfill-regenerator": {
"version": "0.4.0", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
"integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-define-polyfill-provider": "^0.3.2" "@babel/helper-define-polyfill-provider": "^0.3.3"
} }
}, },
"balanced-match": { "balanced-match": {
@ -9266,15 +9256,15 @@
} }
}, },
"browserslist": { "browserslist": {
"version": "4.21.3", "version": "4.21.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
"integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001370", "caniuse-lite": "^1.0.30001400",
"electron-to-chromium": "^1.4.202", "electron-to-chromium": "^1.4.251",
"node-releases": "^2.0.6", "node-releases": "^2.0.6",
"update-browserslist-db": "^1.0.5" "update-browserslist-db": "^1.0.9"
} }
}, },
"buffer": { "buffer": {
@ -9343,9 +9333,9 @@
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001373", "version": "1.0.30001409",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz",
"integrity": "sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==", "integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==",
"dev": true "dev": true
}, },
"chalk": { "chalk": {
@ -9497,21 +9487,12 @@
} }
}, },
"core-js-compat": { "core-js-compat": {
"version": "3.24.1", "version": "3.25.1",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.1.tgz",
"integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", "integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==",
"dev": true, "dev": true,
"requires": { "requires": {
"browserslist": "^4.21.3", "browserslist": "^4.21.3"
"semver": "7.0.0"
},
"dependencies": {
"semver": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
"integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
"dev": true
}
} }
}, },
"cosmiconfig": { "cosmiconfig": {
@ -9794,9 +9775,9 @@
} }
}, },
"electron-to-chromium": { "electron-to-chromium": {
"version": "1.4.206", "version": "1.4.257",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.206.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.257.tgz",
"integrity": "sha512-h+Fadt1gIaQ06JaIiyqPsBjJ08fV5Q7md+V8bUvQW/9OvXfL2LRICTz2EcnnCP7QzrFTS6/27MRV6Bl9Yn97zA==", "integrity": "sha512-C65sIwHqNnPC2ADMfse/jWTtmhZMII+x6ADI9gENzrOiI7BpxmfKFE84WkIEl5wEg+7+SfIkwChDlsd1Erju2A==",
"dev": true "dev": true
}, },
"emoji-regex": { "emoji-regex": {
@ -9869,12 +9850,12 @@
"dev": true "dev": true
}, },
"eslint": { "eslint": {
"version": "8.23.0", "version": "8.23.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz",
"integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@eslint/eslintrc": "^1.3.1", "@eslint/eslintrc": "^1.3.2",
"@humanwhocodes/config-array": "^0.10.4", "@humanwhocodes/config-array": "^0.10.4",
"@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
@ -9893,7 +9874,6 @@
"fast-deep-equal": "^3.1.3", "fast-deep-equal": "^3.1.3",
"file-entry-cache": "^6.0.1", "file-entry-cache": "^6.0.1",
"find-up": "^5.0.0", "find-up": "^5.0.0",
"functional-red-black-tree": "^1.0.1",
"glob-parent": "^6.0.1", "glob-parent": "^6.0.1",
"globals": "^13.15.0", "globals": "^13.15.0",
"globby": "^11.1.0", "globby": "^11.1.0",
@ -9902,6 +9882,7 @@
"import-fresh": "^3.0.0", "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",
"is-glob": "^4.0.0", "is-glob": "^4.0.0",
"js-sdsl": "^4.1.4",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1", "json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1", "levn": "^0.4.1",
@ -10202,9 +10183,9 @@
"dev": true "dev": true
}, },
"fast-glob": { "fast-glob": {
"version": "3.2.11", "version": "3.2.12",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
"integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
"dev": true, "dev": true,
"requires": { "requires": {
"@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.stat": "^2.0.2",
@ -10337,12 +10318,6 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true "dev": true
}, },
"functional-red-black-tree": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
"dev": true
},
"gensync": { "gensync": {
"version": "1.0.0-beta.2", "version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@ -10701,6 +10676,12 @@
} }
} }
}, },
"js-sdsl": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz",
"integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==",
"dev": true
},
"js-tokens": { "js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@ -11687,9 +11668,9 @@
"dev": true "dev": true
}, },
"puppeteer": { "puppeteer": {
"version": "17.1.3", "version": "18.0.5",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-17.1.3.tgz", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-18.0.5.tgz",
"integrity": "sha512-tVtvNSOOqlq75rUgwLeDAEQoLIiBqmRg0/zedpI6fuqIocIkuxG23A7FIl1oVSkuSMMLgcOP5kVhNETmsmjvPw==", "integrity": "sha512-s4erjxU0VtKojPvF+KvLKG6OHUPw7gO2YV1dtOsoryyCbhrs444fXb4QZqGWuTv3V/rgSCUzeixxu34g0ZkSMA==",
"requires": { "requires": {
"cross-fetch": "3.1.5", "cross-fetch": "3.1.5",
"debug": "4.3.4", "debug": "4.3.4",
@ -12176,9 +12157,9 @@
} }
}, },
"stylelint": { "stylelint": {
"version": "14.11.0", "version": "14.12.1",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.11.0.tgz", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.12.1.tgz",
"integrity": "sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA==", "integrity": "sha512-ZEM4TuksChMBfuPadQsHUkbOoRySAT9QMfDvvYxdAchOJl0p+csTMBXOu6ORAAxKhwBmxqJiep8V88bXfNs3EQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@csstools/selector-specificity": "^2.0.2", "@csstools/selector-specificity": "^2.0.2",
@ -12187,7 +12168,7 @@
"cosmiconfig": "^7.0.1", "cosmiconfig": "^7.0.1",
"css-functions-list": "^3.1.0", "css-functions-list": "^3.1.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"fast-glob": "^3.2.11", "fast-glob": "^3.2.12",
"fastest-levenshtein": "^1.0.16", "fastest-levenshtein": "^1.0.16",
"file-entry-cache": "^6.0.1", "file-entry-cache": "^6.0.1",
"global-modules": "^2.0.0", "global-modules": "^2.0.0",
@ -12214,7 +12195,7 @@
"string-width": "^4.2.3", "string-width": "^4.2.3",
"strip-ansi": "^6.0.1", "strip-ansi": "^6.0.1",
"style-search": "^0.1.0", "style-search": "^0.1.0",
"supports-hyperlinks": "^2.2.0", "supports-hyperlinks": "^2.3.0",
"svg-tags": "^1.0.0", "svg-tags": "^1.0.0",
"table": "^6.8.0", "table": "^6.8.0",
"v8-compile-cache": "^2.3.0", "v8-compile-cache": "^2.3.0",
@ -12341,9 +12322,9 @@
} }
}, },
"supports-hyperlinks": { "supports-hyperlinks": {
"version": "2.2.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
"integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
"dev": true, "dev": true,
"requires": { "requires": {
"has-flag": "^4.0.0", "has-flag": "^4.0.0",
@ -12604,9 +12585,9 @@
"dev": true "dev": true
}, },
"update-browserslist-db": { "update-browserslist-db": {
"version": "1.0.5", "version": "1.0.9",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz",
"integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==",
"dev": true, "dev": true,
"requires": { "requires": {
"escalade": "^3.1.1", "escalade": "^3.1.1",

View file

@ -6,18 +6,18 @@
"license": "CC0-1.0", "license": "CC0-1.0",
"dependencies": { "dependencies": {
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"puppeteer": "^17.1.3" "puppeteer": "^18.0.5"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.19.0", "@babel/core": "^7.19.1",
"@babel/preset-env": "^7.19.0", "@babel/preset-env": "^7.19.1",
"autoprefixer": "^10.4.8", "autoprefixer": "^10.4.12",
"babel-loader": "^8.2.1", "babel-loader": "^8.2.1",
"browserlist": "^1.0.1", "browserlist": "^1.0.1",
"compression-webpack-plugin": "^10.0.0", "compression-webpack-plugin": "^10.0.0",
"css-loader": "^6.2.0", "css-loader": "^6.2.0",
"cssnano": "^5.1.13", "cssnano": "^5.1.13",
"eslint": "^8.23.0", "eslint": "^8.23.1",
"eslint-webpack-plugin": "^3.2.0", "eslint-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "^2.6.1", "mini-css-extract-plugin": "^2.6.1",
"postcss": "^8.4.16", "postcss": "^8.4.16",
@ -25,7 +25,7 @@
"postcss-combine-media-query": "^1.0.1", "postcss-combine-media-query": "^1.0.1",
"postcss-import": "^15.0.0", "postcss-import": "^15.0.0",
"postcss-loader": "^7.0.1", "postcss-loader": "^7.0.1",
"stylelint": "^14.11.0", "stylelint": "^14.12.1",
"stylelint-config-standard": "^28.0.0", "stylelint-config-standard": "^28.0.0",
"stylelint-webpack-plugin": "^3.1.1", "stylelint-webpack-plugin": "^3.1.1",
"webpack": "^5.74.0", "webpack": "^5.74.0",

View file

@ -129,7 +129,7 @@ Route::group(['domain' => config('url.longurl')], function () {
Route::get('/feed.rss', [FeedsController::class, 'blogRss']); Route::get('/feed.rss', [FeedsController::class, 'blogRss']);
Route::get('/feed.atom', [FeedsController::class, 'blogAtom']); Route::get('/feed.atom', [FeedsController::class, 'blogAtom']);
Route::get('/feed.json', [FeedsController::class, 'blogJson']); Route::get('/feed.json', [FeedsController::class, 'blogJson']);
Route::get('/feed.jf2', [Feedscontroller::class, 'blogJf2']); Route::get('/feed.jf2', [FeedsController::class, 'blogJf2']);
Route::get('/s/{id}', [ArticlesController::class, 'onlyIdInURL']); Route::get('/s/{id}', [ArticlesController::class, 'onlyIdInURL']);
Route::get('/{year?}/{month?}', [ArticlesController::class, 'index']); Route::get('/{year?}/{month?}', [ArticlesController::class, 'index']);
Route::get('/{year}/{month}/{slug}', [ArticlesController::class, 'show']); Route::get('/{year}/{month}/{slug}', [ArticlesController::class, 'show']);

View file

@ -4,32 +4,46 @@ declare(strict_types=1);
namespace Tests\Feature; namespace Tests\Feature;
use IndieAuth\Client; use Exception;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack;
use IndieAuth\Client as IndieAuthClient;
use JsonException;
use Mockery; use Mockery;
use Tests\TestCase; use Tests\TestCase;
class TokenEndpointTest extends TestCase class TokenEndpointTest extends TestCase
{ {
/** @test */ /**
* @test
*
* @throws JsonException
* @throws Exception
*/
public function tokenEndpointIssuesToken(): void public function tokenEndpointIssuesToken(): void
{ {
$mockClient = Mockery::mock(Client::class); $mockIndieAuthClient = Mockery::mock(IndieAuthClient::class);
$mockClient->shouldReceive('discoverAuthorizationEndpoint') $mockIndieAuthClient->shouldReceive('discoverAuthorizationEndpoint')
->with(normalize_url(config('app.url'))) ->with(normalize_url(config('app.url')))
->once() ->once()
->andReturn('https://indieauth.com/auth'); ->andReturn('https://indieauth.com/auth');
$mockClient->shouldReceive('verifyIndieAuthCode') $mockHandler = new MockHandler([
->andReturn([ new \GuzzleHttp\Psr7\Response(200, [], json_encode([
'me' => config('app.url'), 'me' => config('app.url'),
'scope' => 'create update', 'scope' => 'create update',
], JSON_THROW_ON_ERROR)),
]); ]);
$this->app->instance(Client::class, $mockClient); $handlerStack = HandlerStack::create($mockHandler);
$mockGuzzleClient = new GuzzleClient(['handler' => $handlerStack]);
$this->app->instance(IndieAuthClient::class, $mockIndieAuthClient);
$this->app->instance(GuzzleClient::class, $mockGuzzleClient);
$response = $this->post('/api/token', [ $response = $this->post('/api/token', [
'me' => config('app.url'), 'me' => config('app.url'),
'code' => 'abc123', 'code' => 'abc123',
'redirect_uri' => config('app.url') . '/indieauth-callback', 'redirect_uri' => config('app.url') . '/indieauth-callback',
'client_id' => config('app.url') . '/micropub-client', 'client_id' => config('app.url') . '/micropub-client',
'state' => mt_rand(1000, 10000), 'state' => random_int(1000, 10000),
]); ]);
$response->assertJson([ $response->assertJson([
'me' => config('app.url'), 'me' => config('app.url'),
@ -37,51 +51,64 @@ class TokenEndpointTest extends TestCase
]); ]);
} }
/** @test */ /**
* @test
*
* @throws JsonException
* @throws Exception
*/
public function tokenEndpointReturnsErrorWhenAuthEndpointLacksMeData(): void public function tokenEndpointReturnsErrorWhenAuthEndpointLacksMeData(): void
{ {
$mockClient = Mockery::mock(Client::class); $mockIndieAuthClient = Mockery::mock(IndieAuthClient::class);
$mockClient->shouldReceive('discoverAuthorizationEndpoint') $mockIndieAuthClient->shouldReceive('discoverAuthorizationEndpoint')
->with(normalize_url(config('app.url'))) ->with(normalize_url(config('app.url')))
->once() ->once()
->andReturn('https://indieauth.com/auth'); ->andReturn('https://indieauth.com/auth');
$mockClient->shouldReceive('verifyIndieAuthCode') $mockHandler = new MockHandler([
->andReturn([ new \GuzzleHttp\Psr7\Response(400, [], json_encode([
'error' => 'error_message', 'error' => 'error_message',
], JSON_THROW_ON_ERROR)),
]); ]);
$this->app->instance(Client::class, $mockClient); $handlerStack = HandlerStack::create($mockHandler);
$mockGuzzleClient = new GuzzleClient(['handler' => $handlerStack]);
$this->app->instance(IndieAuthClient::class, $mockIndieAuthClient);
$this->app->instance(GuzzleClient::class, $mockGuzzleClient);
$response = $this->post('/api/token', [ $response = $this->post('/api/token', [
'me' => config('app.url'), 'me' => config('app.url'),
'code' => 'abc123', 'code' => 'abc123',
'redirect_uri' => config('app.url') . '/indieauth-callback', 'redirect_uri' => config('app.url') . '/indieauth-callback',
'client_id' => config('app.url') . '/micropub-client', 'client_id' => config('app.url') . '/micropub-client',
'state' => mt_rand(1000, 10000), 'state' => random_int(1000, 10000),
]); ]);
$response->assertStatus(401); $response->assertStatus(401);
$response->assertJson([ $response->assertJson([
'error' => 'There was an error verifying the authorisation code.', 'error' => 'There was an error verifying the IndieAuth code',
]); ]);
} }
/** @test */ /**
* @test
*
* @throws Exception
*/
public function tokenEndpointReturnsErrorWhenNoAuthEndpointFound(): void public function tokenEndpointReturnsErrorWhenNoAuthEndpointFound(): void
{ {
$mockClient = Mockery::mock(Client::class); $mockIndieAuthClient = Mockery::mock(IndieAuthClient::class);
$mockClient->shouldReceive('discoverAuthorizationEndpoint') $mockIndieAuthClient->shouldReceive('discoverAuthorizationEndpoint')
->with(normalize_url(config('app.url'))) ->with(normalize_url(config('app.url')))
->once() ->once()
->andReturn(null); ->andReturn(null);
$this->app->instance(Client::class, $mockClient); $this->app->instance(IndieAuthClient::class, $mockIndieAuthClient);
$response = $this->post('/api/token', [ $response = $this->post('/api/token', [
'me' => config('app.url'), 'me' => config('app.url'),
'code' => 'abc123', 'code' => 'abc123',
'redirect_uri' => config('app.url') . '/indieauth-callback', 'redirect_uri' => config('app.url') . '/indieauth-callback',
'client_id' => config('app.url') . '/micropub-client', 'client_id' => config('app.url') . '/micropub-client',
'state' => mt_rand(1000, 10000), 'state' => random_int(1000, 10000),
]); ]);
$response->assertStatus(400); $response->assertStatus(400);
$response->assertJson([ $response->assertJson([
'error' => 'Cant determine the authorisation endpoint.', ] 'error' => 'Could not discover the authorization endpoint for ' . config('app.url'),
); ]);
} }
} }