From ed3089d41261caeb0cd58ee01bca8d00a52614ae Mon Sep 17 00:00:00 2001 From: Thorsten Rinne Date: Fri, 6 Dec 2024 13:04:21 +0100 Subject: [PATCH 1/5] chore: updated 3rd party dependencies --- CHANGELOG.md | 4 + composer.lock | 417 ++++++++++++++++++-------------- package.json | 8 +- phpmyfaq/assets/src/faq/faq.js | 2 +- phpmyfaq/assets/src/frontend.js | 2 +- pnpm-lock.yaml | 358 +++++++++++++-------------- 6 files changed, 414 insertions(+), 377 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7daf653afe..54ffc6ace0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ This is a log of major user-visible changes in each phpMyFAQ release. +### phpMyFAQ v4.0.1 - unreleased + +- updated 3rd party dependencies (Thorsten) + ### phpMyFAQ v4.0.0 - 2024-12-06 - changed PHP requirement to PHP 8.2 or later (Thorsten) diff --git a/composer.lock b/composer.lock index c89ee1f0b9..558b5b85af 100644 --- a/composer.lock +++ b/composer.lock @@ -1318,16 +1318,16 @@ }, { "name": "monolog/monolog", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "32e515fdc02cdafbe4593e30a9350d486b125b67" + "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/32e515fdc02cdafbe4593e30a9350d486b125b67", - "reference": "32e515fdc02cdafbe4593e30a9350d486b125b67", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", + "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", "shasum": "" }, "require": { @@ -1405,7 +1405,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.8.0" + "source": "https://github.com/Seldaek/monolog/tree/3.8.1" }, "funding": [ { @@ -1417,7 +1417,7 @@ "type": "tidelift" } ], - "time": "2024-11-12T13:57:08+00:00" + "time": "2024-12-05T17:15:07+00:00" }, { "name": "myclabs/deep-copy", @@ -2611,16 +2611,16 @@ }, { "name": "symfony/config", - "version": "v7.1.7", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "dc373a5cbd345354696f5dfd39c5c7a8ea23f4c8" + "reference": "bcd3c4adf0144dee5011bb35454728c38adec055" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/dc373a5cbd345354696f5dfd39c5c7a8ea23f4c8", - "reference": "dc373a5cbd345354696f5dfd39c5c7a8ea23f4c8", + "url": "https://api.github.com/repos/symfony/config/zipball/bcd3c4adf0144dee5011bb35454728c38adec055", + "reference": "bcd3c4adf0144dee5011bb35454728c38adec055", "shasum": "" }, "require": { @@ -2666,7 +2666,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.1.7" + "source": "https://github.com/symfony/config/tree/v7.2.0" }, "funding": [ { @@ -2682,20 +2682,20 @@ "type": "tidelift" } ], - "time": "2024-11-04T11:34:07+00:00" + "time": "2024-11-04T11:36:24+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "e4d13f0f394f4d02a041ff76acd31c5a20a5f70b" + "reference": "a475747af1a1c98272a5471abc35f3da81197c5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e4d13f0f394f4d02a041ff76acd31c5a20a5f70b", - "reference": "e4d13f0f394f4d02a041ff76acd31c5a20a5f70b", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a475747af1a1c98272a5471abc35f3da81197c5d", + "reference": "a475747af1a1c98272a5471abc35f3da81197c5d", "shasum": "" }, "require": { @@ -2746,7 +2746,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.1.8" + "source": "https://github.com/symfony/dependency-injection/tree/v7.2.0" }, "funding": [ { @@ -2762,20 +2762,20 @@ "type": "tidelift" } ], - "time": "2024-11-09T09:16:45+00:00" + "time": "2024-11-25T15:45:00+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -2813,7 +2813,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -2829,20 +2829,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/error-handler", - "version": "v7.1.7", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "010e44661f4c6babaf8c4862fe68c24a53903342" + "reference": "672b3dd1ef8b87119b446d67c58c106c43f965fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/010e44661f4c6babaf8c4862fe68c24a53903342", - "reference": "010e44661f4c6babaf8c4862fe68c24a53903342", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/672b3dd1ef8b87119b446d67c58c106c43f965fe", + "reference": "672b3dd1ef8b87119b446d67c58c106c43f965fe", "shasum": "" }, "require": { @@ -2888,7 +2888,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.1.7" + "source": "https://github.com/symfony/error-handler/tree/v7.2.0" }, "funding": [ { @@ -2904,20 +2904,20 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:34:55+00:00" + "time": "2024-11-05T15:35:02+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "87254c78dd50721cfd015b62277a8281c5589702" + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/87254c78dd50721cfd015b62277a8281c5589702", - "reference": "87254c78dd50721cfd015b62277a8281c5589702", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", "shasum": "" }, "require": { @@ -2968,7 +2968,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.6" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" }, "funding": [ { @@ -2984,20 +2984,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { @@ -3044,7 +3044,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -3060,20 +3060,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/filesystem", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "c835867b3c62bb05c7fe3d637c871c7ae52024d4" + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/c835867b3c62bb05c7fe3d637c871c7ae52024d4", - "reference": "c835867b3c62bb05c7fe3d637c871c7ae52024d4", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", "shasum": "" }, "require": { @@ -3110,7 +3110,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.1.6" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" }, "funding": [ { @@ -3126,20 +3126,20 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:11:02+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/html-sanitizer", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/html-sanitizer.git", - "reference": "a25620fc6407e14331f3c0c5668eb4f35c392d4a" + "reference": "1d23de45af5e8508441ff5f82bb493e83cdcbba4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/a25620fc6407e14331f3c0c5668eb4f35c392d4a", - "reference": "a25620fc6407e14331f3c0c5668eb4f35c392d4a", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/1d23de45af5e8508441ff5f82bb493e83cdcbba4", + "reference": "1d23de45af5e8508441ff5f82bb493e83cdcbba4", "shasum": "" }, "require": { @@ -3179,7 +3179,7 @@ "sanitizer" ], "support": { - "source": "https://github.com/symfony/html-sanitizer/tree/v7.1.6" + "source": "https://github.com/symfony/html-sanitizer/tree/v7.2.0" }, "funding": [ { @@ -3195,30 +3195,31 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/http-client", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a" + "reference": "955e43336aff03df1e8a8e17daefabb0127a313b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a", - "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a", + "url": "https://api.github.com/repos/symfony/http-client/zipball/955e43336aff03df1e8a8e17daefabb0127a313b", + "reference": "955e43336aff03df1e8a8e17daefabb0127a313b", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-client-contracts": "^3.4.1", + "symfony/http-client-contracts": "~3.4.3|^3.5.1", "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "amphp/amp": "<2.5", "php-http/discovery": "<1.15", "symfony/http-foundation": "<6.4" }, @@ -3229,14 +3230,14 @@ "symfony/http-client-implementation": "3.0" }, "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", + "amphp/http-client": "^4.2.1|^5.0", + "amphp/http-tunnel": "^1.0|^2.0", "amphp/socket": "^1.1", "guzzlehttp/promises": "^1.4|^2.0", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", + "symfony/amphp-http-client-meta": "^1.0|^2.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", "symfony/messenger": "^6.4|^7.0", @@ -3273,7 +3274,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.1.8" + "source": "https://github.com/symfony/http-client/tree/v7.2.0" }, "funding": [ { @@ -3289,20 +3290,20 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:40:27+00:00" + "time": "2024-11-29T08:22:02+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "20414d96f391677bf80078aa55baece78b82647d" + "reference": "c2f3ad828596624ca39ea40f83617ef51ca8bbf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", - "reference": "20414d96f391677bf80078aa55baece78b82647d", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/c2f3ad828596624ca39ea40f83617ef51ca8bbf9", + "reference": "c2f3ad828596624ca39ea40f83617ef51ca8bbf9", "shasum": "" }, "require": { @@ -3351,7 +3352,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.1" }, "funding": [ { @@ -3367,24 +3368,25 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-11-25T12:02:18+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "f4419ec69ccfc3f725a4de7c20e4e57626d10112" + "reference": "e88a66c3997859532bc2ddd6dd8f35aba2711744" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4419ec69ccfc3f725a4de7c20e4e57626d10112", - "reference": "f4419ec69ccfc3f725a4de7c20e4e57626d10112", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e88a66c3997859532bc2ddd6dd8f35aba2711744", + "reference": "e88a66c3997859532bc2ddd6dd8f35aba2711744", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php83": "^1.27" }, @@ -3428,7 +3430,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.1.8" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.0" }, "funding": [ { @@ -3444,20 +3446,20 @@ "type": "tidelift" } ], - "time": "2024-11-09T09:16:45+00:00" + "time": "2024-11-13T18:58:46+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "33fef24e3dc79d6d30bf4936531f2f4bd2ca189e" + "reference": "6b4722a25e0aed1ccb4914b9bcbd493cc4676b4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/33fef24e3dc79d6d30bf4936531f2f4bd2ca189e", - "reference": "33fef24e3dc79d6d30bf4936531f2f4bd2ca189e", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6b4722a25e0aed1ccb4914b9bcbd493cc4676b4d", + "reference": "6b4722a25e0aed1ccb4914b9bcbd493cc4676b4d", "shasum": "" }, "require": { @@ -3486,7 +3488,7 @@ "symfony/twig-bridge": "<6.4", "symfony/validator": "<6.4", "symfony/var-dumper": "<6.4", - "twig/twig": "<3.0.4" + "twig/twig": "<3.12" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" @@ -3514,7 +3516,7 @@ "symfony/validator": "^6.4|^7.0", "symfony/var-dumper": "^6.4|^7.0", "symfony/var-exporter": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "twig/twig": "^3.12" }, "type": "library", "autoload": { @@ -3542,7 +3544,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.1.8" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.0" }, "funding": [ { @@ -3558,20 +3560,20 @@ "type": "tidelift" } ], - "time": "2024-11-13T14:25:32+00:00" + "time": "2024-11-29T08:42:40+00:00" }, { "name": "symfony/intl", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "e56b243fc0afa5a12bd11dace4002ada5a7d99f8" + "reference": "76bb3462c6c308f8bd97d3c178c2626ae44d4dea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/e56b243fc0afa5a12bd11dace4002ada5a7d99f8", - "reference": "e56b243fc0afa5a12bd11dace4002ada5a7d99f8", + "url": "https://api.github.com/repos/symfony/intl/zipball/76bb3462c6c308f8bd97d3c178c2626ae44d4dea", + "reference": "76bb3462c6c308f8bd97d3c178c2626ae44d4dea", "shasum": "" }, "require": { @@ -3628,7 +3630,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.1.8" + "source": "https://github.com/symfony/intl/tree/v7.2.0" }, "funding": [ { @@ -3644,20 +3646,20 @@ "type": "tidelift" } ], - "time": "2024-11-08T15:46:42+00:00" + "time": "2024-11-25T14:26:33+00:00" }, { "name": "symfony/mailer", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "69c9948451fb3a6a4d47dc8261d1794734e76cdd" + "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/69c9948451fb3a6a4d47dc8261d1794734e76cdd", - "reference": "69c9948451fb3a6a4d47dc8261d1794734e76cdd", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e4d358702fb66e4c8a2af08e90e7271a62de39cc", + "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc", "shasum": "" }, "require": { @@ -3666,7 +3668,7 @@ "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", + "symfony/mime": "^7.2", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -3708,7 +3710,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.1.6" + "source": "https://github.com/symfony/mailer/tree/v7.2.0" }, "funding": [ { @@ -3724,20 +3726,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-11-25T15:21:05+00:00" }, { "name": "symfony/mime", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "caa1e521edb2650b8470918dfe51708c237f0598" + "reference": "cc84a4b81f62158c3846ac7ff10f696aae2b524d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/caa1e521edb2650b8470918dfe51708c237f0598", - "reference": "caa1e521edb2650b8470918dfe51708c237f0598", + "url": "https://api.github.com/repos/symfony/mime/zipball/cc84a4b81f62158c3846ac7ff10f696aae2b524d", + "reference": "cc84a4b81f62158c3846ac7ff10f696aae2b524d", "shasum": "" }, "require": { @@ -3792,7 +3794,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.1.6" + "source": "https://github.com/symfony/mime/tree/v7.2.0" }, "funding": [ { @@ -3808,7 +3810,7 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:11:02+00:00" + "time": "2024-11-23T09:19:39+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4443,16 +4445,16 @@ }, { "name": "symfony/routing", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "66a2c469f6c22d08603235c46a20007c0701ea0a" + "reference": "e10a2450fa957af6c448b9b93c9010a4e4c0725e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/66a2c469f6c22d08603235c46a20007c0701ea0a", - "reference": "66a2c469f6c22d08603235c46a20007c0701ea0a", + "url": "https://api.github.com/repos/symfony/routing/zipball/e10a2450fa957af6c448b9b93c9010a4e4c0725e", + "reference": "e10a2450fa957af6c448b9b93c9010a4e4c0725e", "shasum": "" }, "require": { @@ -4504,7 +4506,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.1.6" + "source": "https://github.com/symfony/routing/tree/v7.2.0" }, "funding": [ { @@ -4520,20 +4522,20 @@ "type": "tidelift" } ], - "time": "2024-10-01T08:31:23+00:00" + "time": "2024-11-25T11:08:51+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -4587,7 +4589,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -4603,20 +4605,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "7bb01a47b1b00428d32b5e7b4d3b2d1aa58d3db8" + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7bb01a47b1b00428d32b5e7b4d3b2d1aa58d3db8", - "reference": "7bb01a47b1b00428d32b5e7b4d3b2d1aa58d3db8", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c", + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c", "shasum": "" }, "require": { @@ -4632,7 +4634,7 @@ "symfony/http-kernel": "^6.4|^7.0", "symfony/process": "^6.4|^7.0", "symfony/uid": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "twig/twig": "^3.12" }, "bin": [ "Resources/bin/var-dump-server" @@ -4670,7 +4672,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.1.8" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.0" }, "funding": [ { @@ -4686,20 +4688,20 @@ "type": "tidelift" } ], - "time": "2024-11-08T15:46:42+00:00" + "time": "2024-11-08T15:48:14+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "90173ef89c40e7c8c616653241048705f84130ef" + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/90173ef89c40e7c8c616653241048705f84130ef", - "reference": "90173ef89c40e7c8c616653241048705f84130ef", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1a6a89f95a46af0f142874c9d650a6358d13070d", + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d", "shasum": "" }, "require": { @@ -4746,7 +4748,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.1.6" + "source": "https://github.com/symfony/var-exporter/tree/v7.2.0" }, "funding": [ { @@ -4762,7 +4764,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-10-18T07:58:17+00:00" }, { "name": "tecnickcom/tcpdf", @@ -4838,16 +4840,16 @@ }, { "name": "twig/intl-extra", - "version": "v3.13.0", + "version": "v3.16.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "1b8d78c5db08bdc61015fd55009d2e84b3aa7e38" + "reference": "4eeab2a3f8d04d1838be7251ab2d183f817aea7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/1b8d78c5db08bdc61015fd55009d2e84b3aa7e38", - "reference": "1b8d78c5db08bdc61015fd55009d2e84b3aa7e38", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/4eeab2a3f8d04d1838be7251ab2d183f817aea7b", + "reference": "4eeab2a3f8d04d1838be7251ab2d183f817aea7b", "shasum": "" }, "require": { @@ -4886,7 +4888,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.13.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.16.0" }, "funding": [ { @@ -4898,20 +4900,20 @@ "type": "tidelift" } ], - "time": "2024-09-03T13:08:40+00:00" + "time": "2024-11-20T13:19:52+00:00" }, { "name": "twig/twig", - "version": "v3.14.2", + "version": "v3.16.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a" + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", - "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561", + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561", "shasum": "" }, "require": { @@ -4922,6 +4924,7 @@ "symfony/polyfill-php81": "^1.29" }, "require-dev": { + "phpstan/phpstan": "^2.0", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, @@ -4965,7 +4968,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.14.2" + "source": "https://github.com/twigphp/Twig/tree/v3.16.0" }, "funding": [ { @@ -4977,7 +4980,7 @@ "type": "tidelift" } ], - "time": "2024-11-07T12:36:22+00:00" + "time": "2024-11-29T08:27:05+00:00" } ], "packages-dev": [ @@ -5841,16 +5844,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.10", + "version": "1.12.12", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "fc463b5d0fe906dcf19689be692c65c50406a071" + "reference": "b5ae1b88f471d3fd4ba1aa0046234b5ca3776dd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/fc463b5d0fe906dcf19689be692c65c50406a071", - "reference": "fc463b5d0fe906dcf19689be692c65c50406a071", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b5ae1b88f471d3fd4ba1aa0046234b5ca3776dd0", + "reference": "b5ae1b88f471d3fd4ba1aa0046234b5ca3776dd0", "shasum": "" }, "require": { @@ -5895,7 +5898,7 @@ "type": "github" } ], - "time": "2024-11-11T15:37:09+00:00" + "time": "2024-11-28T22:13:23+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6222,16 +6225,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.4.3", + "version": "11.5.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e8e8ed1854de5d36c088ec1833beae40d2dedd76" + "reference": "0569902506a6c0878930b87ea79ec3b50ea563f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e8e8ed1854de5d36c088ec1833beae40d2dedd76", - "reference": "e8e8ed1854de5d36c088ec1833beae40d2dedd76", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0569902506a6c0878930b87ea79ec3b50ea563f7", + "reference": "0569902506a6c0878930b87ea79ec3b50ea563f7", "shasum": "" }, "require": { @@ -6241,7 +6244,7 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.0", + "myclabs/deep-copy": "^1.12.1", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", @@ -6252,14 +6255,15 @@ "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", "sebastian/code-unit": "^3.0.1", - "sebastian/comparator": "^6.1.1", + "sebastian/comparator": "^6.2.1", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.0", - "sebastian/exporter": "^6.1.3", + "sebastian/exporter": "^6.3.0", "sebastian/global-state": "^7.0.2", "sebastian/object-enumerator": "^6.0.1", "sebastian/type": "^5.1.0", - "sebastian/version": "^5.0.2" + "sebastian/version": "^5.0.2", + "staabm/side-effects-detector": "^1.0.5" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -6270,7 +6274,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "11.4-dev" + "dev-main": "11.5-dev" } }, "autoload": { @@ -6302,7 +6306,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.4.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.0" }, "funding": [ { @@ -6318,7 +6322,7 @@ "type": "tidelift" } ], - "time": "2024-10-28T13:07:50+00:00" + "time": "2024-12-06T05:57:38+00:00" }, { "name": "rector/rector", @@ -6817,16 +6821,16 @@ }, { "name": "sebastian/exporter", - "version": "6.1.3", + "version": "6.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e" + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", - "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/3473f61172093b2da7de1fb5782e1f24cc036dc3", + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3", "shasum": "" }, "require": { @@ -6835,7 +6839,7 @@ "sebastian/recursion-context": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^11.2" + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { @@ -6883,7 +6887,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/6.1.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.0" }, "funding": [ { @@ -6891,7 +6895,7 @@ "type": "github" } ], - "time": "2024-07-03T04:56:19+00:00" + "time": "2024-12-05T09:17:50+00:00" }, { "name": "sebastian/global-state", @@ -7304,16 +7308,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.11.0", + "version": "3.11.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "70c08f8d20c0eb4fe56f26644dd94dae76a7f450" + "reference": "19473c30efe4f7b3cd42522d0b2e6e7f243c6f87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/70c08f8d20c0eb4fe56f26644dd94dae76a7f450", - "reference": "70c08f8d20c0eb4fe56f26644dd94dae76a7f450", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/19473c30efe4f7b3cd42522d0b2e6e7f243c6f87", + "reference": "19473c30efe4f7b3cd42522d0b2e6e7f243c6f87", "shasum": "" }, "require": { @@ -7380,20 +7384,72 @@ "type": "open_collective" } ], - "time": "2024-11-12T09:53:29+00:00" + "time": "2024-11-16T12:02:36+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" }, { "name": "symfony/finder", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8" + "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2cb89664897be33f78c65d3d2845954c8d7a43b8", - "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8", + "url": "https://api.github.com/repos/symfony/finder/zipball/6de263e5868b9a137602dd1e33e4d48bfae99c49", + "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49", "shasum": "" }, "require": { @@ -7428,7 +7484,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.1.6" + "source": "https://github.com/symfony/finder/tree/v7.2.0" }, "funding": [ { @@ -7444,24 +7500,25 @@ "type": "tidelift" } ], - "time": "2024-10-01T08:31:23+00:00" + "time": "2024-10-23T06:56:12+00:00" }, { "name": "symfony/yaml", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671" + "reference": "099581e99f557e9f16b43c5916c26380b54abb22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3ced3f29e4f0d6bce2170ff26719f1fe9aacc671", - "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671", + "url": "https://api.github.com/repos/symfony/yaml/zipball/099581e99f557e9f16b43c5916c26380b54abb22", + "reference": "099581e99f557e9f16b43c5916c26380b54abb22", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -7499,7 +7556,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.1.6" + "source": "https://github.com/symfony/yaml/tree/v7.2.0" }, "funding": [ { @@ -7515,7 +7572,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-10-23T06:56:12+00:00" }, { "name": "theseer/tokenizer", diff --git a/package.json b/package.json index bb6171d7e1..157f971d84 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "bootstrap": "^5.3.3", "bootstrap-datepicker": "^1.10.0", "bootstrap-icons": "^1.11.3", - "chart.js": "^4.4.6", + "chart.js": "^4.4.7", "handlebars": "4.7.8", "highlight.js": "^11.10.0", "masonry-layout": "^4.2.2", @@ -65,14 +65,14 @@ "jest-fetch-mock": "^3.0.3", "mini-css-extract-plugin": "^2.9.2", "postcss": "^8.4.49", - "prettier": "^3.4.1", + "prettier": "^3.4.2", "pretty-quick": "^4.0.0", "raw-loader": "^4.0.2", "sass": "1.77.6", - "sass-loader": "^16.0.3", + "sass-loader": "^16.0.4", "sigmund": "^1.0.1", "style-loader": "^4.0.0", - "webpack": "^5.96.1", + "webpack": "^5.97.1", "webpack-cli": "^5.1.4", "webpack-merge": "^6.0.1", "webpack-sources": "^3.2.3" diff --git a/phpmyfaq/assets/src/faq/faq.js b/phpmyfaq/assets/src/faq/faq.js index 5ffda03f23..ffb93f5d73 100644 --- a/phpmyfaq/assets/src/faq/faq.js +++ b/phpmyfaq/assets/src/faq/faq.js @@ -57,7 +57,7 @@ export const handleAddFaq = () => { } }; -export const handleShowFaq = async () => { +export const handleShowFaq = () => { const bookmarkToggle = document.getElementById('pmf-bookmark-toggle'); if (bookmarkToggle) { bookmarkToggle.addEventListener('click', async (event) => { diff --git a/phpmyfaq/assets/src/frontend.js b/phpmyfaq/assets/src/frontend.js index 0e1465e9c2..70cb5c674b 100644 --- a/phpmyfaq/assets/src/frontend.js +++ b/phpmyfaq/assets/src/frontend.js @@ -78,7 +78,7 @@ handleAddFaq(); // // Handle show FAQ // -await handleShowFaq(); +handleShowFaq(); handleShareLinkButton(); // diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca598a0aff..4511d2d21b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,8 +21,8 @@ dependencies: specifier: ^1.11.3 version: 1.11.3 chart.js: - specifier: ^4.4.6 - version: 4.4.6 + specifier: ^4.4.7 + version: 4.4.7 handlebars: specifier: 4.7.8 version: 4.7.8 @@ -57,7 +57,7 @@ devDependencies: version: 19.6.0 '@mcler/webpack-concat-plugin': specifier: ^4.1.6 - version: 4.1.6(html-webpack-plugin@5.6.3)(webpack-sources@3.2.3)(webpack@5.96.1) + version: 4.1.6(html-webpack-plugin@5.6.3)(webpack-sources@3.2.3)(webpack@5.97.1) '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.6.3 @@ -72,28 +72,28 @@ devDependencies: version: 29.7.0(@babel/core@7.26.0) babel-loader: specifier: ^9.2.1 - version: 9.2.1(@babel/core@7.26.0)(webpack@5.96.1) + version: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1) babel-preset-env: specifier: ^1.7.0 version: 1.7.0 clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.96.1) + version: 4.0.0(webpack@5.97.1) css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.96.1) + version: 7.1.2(webpack@5.97.1) css-minimizer-webpack-plugin: specifier: ^7.0.0 - version: 7.0.0(webpack@5.96.1) + version: 7.0.0(webpack@5.97.1) extend-expect: specifier: link:@testing-library/jest-dom/extend-expect version: link:@testing-library/jest-dom/extend-expect file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.96.1) + version: 6.2.0(webpack@5.97.1) html-webpack-plugin: specifier: ^5.6.3 - version: 5.6.3(webpack@5.96.1) + version: 5.6.3(webpack@5.97.1) husky: specifier: ^9.1.7 version: 9.1.7 @@ -108,37 +108,37 @@ devDependencies: version: 3.0.3 mini-css-extract-plugin: specifier: ^2.9.2 - version: 2.9.2(webpack@5.96.1) + version: 2.9.2(webpack@5.97.1) postcss: specifier: ^8.4.49 version: 8.4.49 prettier: - specifier: ^3.4.1 - version: 3.4.1 + specifier: ^3.4.2 + version: 3.4.2 pretty-quick: specifier: ^4.0.0 - version: 4.0.0(prettier@3.4.1) + version: 4.0.0(prettier@3.4.2) raw-loader: specifier: ^4.0.2 - version: 4.0.2(webpack@5.96.1) + version: 4.0.2(webpack@5.97.1) sass: specifier: 1.77.6 version: 1.77.6 sass-loader: - specifier: ^16.0.3 - version: 16.0.3(sass@1.77.6)(webpack@5.96.1) + specifier: ^16.0.4 + version: 16.0.4(sass@1.77.6)(webpack@5.97.1) sigmund: specifier: ^1.0.1 version: 1.0.1 style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.96.1) + version: 4.0.0(webpack@5.97.1) webpack: - specifier: ^5.96.1 - version: 5.96.1(webpack-cli@5.1.4) + specifier: ^5.97.1 + version: 5.97.1(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack@5.96.1) + version: 5.1.4(webpack@5.97.1) webpack-merge: specifier: ^6.0.1 version: 6.0.1 @@ -169,8 +169,8 @@ packages: picocolors: 1.1.1 dev: true - /@babel/compat-data@7.26.2: - resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + /@babel/compat-data@7.26.3: + resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} engines: {node: '>=6.9.0'} dev: true @@ -180,14 +180,14 @@ packages: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 + '@babel/generator': 7.26.3 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 + '@babel/parser': 7.26.3 '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 convert-source-map: 2.0.0 debug: 4.3.7 gensync: 1.0.0-beta.2 @@ -197,12 +197,12 @@ packages: - supports-color dev: true - /@babel/generator@7.26.2: - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + /@babel/generator@7.26.3: + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -212,24 +212,14 @@ packages: resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.26.0 - dev: true - - /@babel/helper-builder-binary-assignment-operator-visitor@7.25.9: - resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.26.3 dev: true /@babel/helper-compilation-targets@7.25.9: resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.26.2 + '@babel/compat-data': 7.26.3 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.2 lru-cache: 5.1.1 @@ -248,14 +238,14 @@ packages: '@babel/helper-optimise-call-expression': 7.25.9 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} + /@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -285,8 +275,8 @@ packages: resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -295,8 +285,8 @@ packages: resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -310,7 +300,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -319,7 +309,7 @@ packages: resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@babel/helper-plugin-utils@7.25.9: @@ -336,7 +326,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -350,17 +340,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-simple-access@7.25.9: - resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -369,8 +349,8 @@ packages: resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -395,8 +375,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -406,15 +386,15 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true - /@babel/parser@7.26.2: - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + /@babel/parser@7.26.3: + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0): @@ -425,7 +405,7 @@ packages: dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -472,7 +452,7 @@ packages: dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -662,7 +642,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -685,7 +665,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -761,7 +741,7 @@ packages: '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -795,7 +775,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -816,7 +796,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -830,17 +810,14 @@ packages: '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} + /@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0): @@ -875,7 +852,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -933,8 +910,8 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} + /@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -942,7 +919,6 @@ packages: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-simple-access': 7.25.9 transitivePeerDependencies: - supports-color dev: true @@ -957,7 +933,7 @@ packages: '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -982,7 +958,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1129,7 +1105,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1213,7 +1189,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1224,7 +1200,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1235,7 +1211,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1245,7 +1221,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.26.2 + '@babel/compat-data': 7.26.3 '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 @@ -1273,7 +1249,7 @@ packages: '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.0) '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) @@ -1282,7 +1258,7 @@ packages: '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) @@ -1326,7 +1302,7 @@ packages: dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 esutils: 2.0.3 dev: true @@ -1342,27 +1318,27 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 dev: true - /@babel/traverse@7.25.9: - resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + /@babel/traverse@7.26.4: + resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types@7.26.0: - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + /@babel/types@7.26.3: + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.25.9 @@ -1811,7 +1787,7 @@ packages: resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} dev: false - /@mcler/webpack-concat-plugin@4.1.6(html-webpack-plugin@5.6.3)(webpack-sources@3.2.3)(webpack@5.96.1): + /@mcler/webpack-concat-plugin@4.1.6(html-webpack-plugin@5.6.3)(webpack-sources@3.2.3)(webpack@5.97.1): resolution: {integrity: sha512-kwEjQGOLVpkuyh/Ho6Bw9OuSG2COFJZB5APR9eWtE32PX5Z84ZXciTfy2wy+gtpRzzcKdD1WmAvgA6bW0DhkGw==} engines: {node: '>= 14'} peerDependencies: @@ -1820,10 +1796,10 @@ packages: webpack-sources: ^3.2.1 dependencies: globby: 8.0.2 - html-webpack-plugin: 5.6.3(webpack@5.96.1) + html-webpack-plugin: 5.6.3(webpack@5.97.1) schema-utils: 4.2.0 upath: 2.0.1 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) webpack-sources: 3.2.3 transitivePeerDependencies: - supports-color @@ -1888,8 +1864,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 @@ -1898,20 +1874,20 @@ packages: /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 dev: true /@types/babel__traverse@7.20.6: resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@types/conventional-commits-parser@5.0.1: @@ -2117,29 +2093,29 @@ packages: '@xtuc/long': 4.2.2 dev: true - /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.96.1): + /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.97.1): resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x dependencies: - webpack: 5.96.1(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.96.1) + webpack: 5.97.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.97.1) dev: true - /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.96.1): + /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.97.1): resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x dependencies: - webpack: 5.96.1(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.96.1) + webpack: 5.97.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.97.1) dev: true - /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.96.1): + /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.97.1): resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} engines: {node: '>=14.15.0'} peerDependencies: @@ -2150,8 +2126,8 @@ packages: webpack-dev-server: optional: true dependencies: - webpack: 5.96.1(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.96.1) + webpack: 5.97.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.97.1) dev: true /@xtuc/ieee754@1.2.0: @@ -2375,7 +2351,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.24.2 - caniuse-lite: 1.0.30001684 + caniuse-lite: 1.0.30001687 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -2517,7 +2493,7 @@ packages: - supports-color dev: true - /babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.96.1): + /babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1): resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -2527,7 +2503,7 @@ packages: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true /babel-messages@6.23.0: @@ -2560,7 +2536,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 dev: true @@ -2570,7 +2546,7 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.26.2 + '@babel/compat-data': 7.26.3 '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) semver: 6.3.1 @@ -3038,8 +3014,8 @@ packages: resolution: {integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==} hasBin: true dependencies: - caniuse-lite: 1.0.30001684 - electron-to-chromium: 1.5.67 + caniuse-lite: 1.0.30001687 + electron-to-chromium: 1.5.71 dev: true /browserslist@4.24.2: @@ -3047,8 +3023,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001684 - electron-to-chromium: 1.5.67 + caniuse-lite: 1.0.30001687 + electron-to-chromium: 1.5.71 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) dev: true @@ -3108,13 +3084,13 @@ packages: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.24.2 - caniuse-lite: 1.0.30001684 + caniuse-lite: 1.0.30001687 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true - /caniuse-lite@1.0.30001684: - resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==} + /caniuse-lite@1.0.30001687: + resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==} dev: true /chalk@1.1.3: @@ -3154,8 +3130,8 @@ packages: engines: {node: '>=10'} dev: true - /chart.js@4.4.6: - resolution: {integrity: sha512-8Y406zevUPbbIBA/HRk33khEmQPk5+cxeflWE/2rx1NJsjVWMPw/9mSP9rxHP5eqi6LNoPBVMfZHxbwLSgldYA==} + /chart.js@4.4.7: + resolution: {integrity: sha512-pwkcKfdzTMAU/+jNosKhNL2bHtJc/sSmYgVbuGTEDhzkrhmyihmP7vUc/5ZK9WopidMDHNe3Wm7jOd/WhuHWuw==} engines: {pnpm: '>=8'} dependencies: '@kurkle/color': 0.3.4 @@ -3207,14 +3183,14 @@ packages: source-map: 0.6.1 dev: true - /clean-webpack-plugin@4.0.0(webpack@5.96.1): + /clean-webpack-plugin@4.0.0(webpack@5.97.1): resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} engines: {node: '>=10.0.0'} peerDependencies: webpack: '>=4.0.0 <6.0.0' dependencies: del: 4.1.1 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true /cliui@8.0.1: @@ -3437,7 +3413,7 @@ packages: postcss: 8.4.49 dev: true - /css-loader@7.1.2(webpack@5.96.1): + /css-loader@7.1.2(webpack@5.97.1): resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -3457,10 +3433,10 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.49) postcss-value-parser: 4.2.0 semver: 7.6.3 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true - /css-minimizer-webpack-plugin@7.0.0(webpack@5.96.1): + /css-minimizer-webpack-plugin@7.0.0(webpack@5.97.1): resolution: {integrity: sha512-niy66jxsQHqO+EYbhPuIhqRQ1mNcNVUHrMnkzzir9kFOERJUaQDDRhh7dKDz33kBpkWMF9M8Vx0QlDbc5AHOsw==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -3491,7 +3467,7 @@ packages: postcss: 8.4.49 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true /css-select@4.3.0: @@ -3600,7 +3576,7 @@ packages: postcss: ^8.4.31 dependencies: cssnano-preset-default: 7.0.6(postcss@8.4.49) - lilconfig: 3.1.2 + lilconfig: 3.1.3 postcss: 8.4.49 dev: true @@ -3830,8 +3806,8 @@ packages: is-obj: 2.0.0 dev: true - /electron-to-chromium@1.5.67: - resolution: {integrity: sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==} + /electron-to-chromium@1.5.71: + resolution: {integrity: sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==} dev: true /emittery@0.13.1: @@ -4072,7 +4048,7 @@ packages: bser: 2.1.1 dev: true - /file-loader@6.2.0(webpack@5.96.1): + /file-loader@6.2.0(webpack@5.97.1): resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -4080,7 +4056,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true /fill-range@4.0.0: @@ -4408,10 +4384,10 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.36.0 + terser: 5.37.0 dev: true - /html-webpack-plugin@5.6.3(webpack@5.96.1): + /html-webpack-plugin@5.6.3(webpack@5.97.1): resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} engines: {node: '>=10.13.0'} peerDependencies: @@ -4428,7 +4404,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true /htmlparser2@6.1.0: @@ -4747,7 +4723,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.2 + '@babel/parser': 7.26.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -4760,7 +4736,7 @@ packages: engines: {node: '>=10'} dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.2 + '@babel/parser': 7.26.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -5078,7 +5054,7 @@ packages: jest-util: 29.7.0 jest-validate: 29.7.0 resolve: 1.22.8 - resolve.exports: 2.0.2 + resolve.exports: 2.0.3 slash: 3.0.0 dev: true @@ -5146,10 +5122,10 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.2 + '@babel/generator': 7.26.3 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -5383,8 +5359,8 @@ packages: engines: {node: '>=6'} dev: true - /lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + /lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} dev: true @@ -5599,7 +5575,7 @@ packages: engines: {node: '>=4'} dev: true - /mini-css-extract-plugin@2.9.2(webpack@5.96.1): + /mini-css-extract-plugin@2.9.2(webpack@5.97.1): resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -5607,7 +5583,7 @@ packages: dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true /minimatch@3.1.2: @@ -6327,8 +6303,8 @@ packages: source-map-js: 1.2.1 dev: true - /prettier@3.4.1: - resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} + /prettier@3.4.2: + resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} engines: {node: '>=14'} hasBin: true dev: true @@ -6349,7 +6325,7 @@ packages: react-is: 18.3.1 dev: true - /pretty-quick@4.0.0(prettier@3.4.1): + /pretty-quick@4.0.0(prettier@3.4.2): resolution: {integrity: sha512-M+2MmeufXb/M7Xw3Afh1gxcYpj+sK0AxEfnfF958ktFeAyi5MsKY5brymVURQLgPLV1QaF5P4pb2oFJ54H3yzQ==} engines: {node: '>=14'} hasBin: true @@ -6362,7 +6338,7 @@ packages: mri: 1.2.0 picocolors: 1.1.1 picomatch: 3.0.1 - prettier: 3.4.1 + prettier: 3.4.2 tslib: 2.8.1 dev: true @@ -6383,8 +6359,8 @@ packages: sisteransi: 1.0.5 dev: true - /psl@1.14.0: - resolution: {integrity: sha512-Syk1bnf6fRZ9wQs03AtKJHcM12cKbOLo9L8JtCCdYj5/DTsHmTyXM4BK5ouWeG2P6kZ4nmFvuNTdtaqfobCOCg==} + /psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} dependencies: punycode: 2.3.1 dev: true @@ -6408,7 +6384,7 @@ packages: safe-buffer: 5.2.1 dev: true - /raw-loader@4.0.2(webpack@5.96.1): + /raw-loader@4.0.2(webpack@5.97.1): resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -6416,7 +6392,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true /react-is@18.3.1: @@ -6589,8 +6565,8 @@ packages: deprecated: https://github.com/lydell/resolve-url#deprecated dev: true - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + /resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} dev: true @@ -6630,8 +6606,8 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass-loader@16.0.3(sass@1.77.6)(webpack@5.96.1): - resolution: {integrity: sha512-gosNorT1RCkuCMyihv6FBRR7BMV06oKRAs+l4UMp1mlcVg9rWN6KMmUj3igjQwmYys4mDP3etEYJgiHRbgHCHA==} + /sass-loader@16.0.4(sass@1.77.6)(webpack@5.97.1): + resolution: {integrity: sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -6653,7 +6629,7 @@ packages: dependencies: neo-async: 2.6.2 sass: 1.77.6 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true /sass@1.77.6: @@ -6929,13 +6905,13 @@ packages: engines: {node: '>=8'} dev: true - /style-loader@4.0.0(webpack@5.96.1): + /style-loader@4.0.0(webpack@5.97.1): resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.27.0 dependencies: - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) dev: true /stylehacks@7.0.4(postcss@8.4.49): @@ -6996,7 +6972,7 @@ packages: engines: {node: '>=6'} dev: true - /terser-webpack-plugin@5.3.10(webpack@5.96.1): + /terser-webpack-plugin@5.3.10(webpack@5.97.1): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -7016,12 +6992,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.36.0 - webpack: 5.96.1(webpack-cli@5.1.4) + terser: 5.37.0 + webpack: 5.97.1(webpack-cli@5.1.4) dev: true - /terser@5.36.0: - resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} + /terser@5.37.0: + resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -7102,7 +7078,7 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} dependencies: - psl: 1.14.0 + psl: 1.15.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 @@ -7292,7 +7268,7 @@ packages: engines: {node: '>=12'} dev: true - /webpack-cli@5.1.4(webpack@5.96.1): + /webpack-cli@5.1.4(webpack@5.97.1): resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} engines: {node: '>=14.15.0'} hasBin: true @@ -7310,9 +7286,9 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.96.1) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.96.1) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.96.1) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.97.1) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.97.1) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.97.1) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.6 @@ -7321,7 +7297,7 @@ packages: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.96.1(webpack-cli@5.1.4) + webpack: 5.97.1(webpack-cli@5.1.4) webpack-merge: 5.10.0 dev: true @@ -7348,8 +7324,8 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.96.1(webpack-cli@5.1.4): - resolution: {integrity: sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==} + /webpack@5.97.1(webpack-cli@5.1.4): + resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -7378,9 +7354,9 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.96.1) + terser-webpack-plugin: 5.3.10(webpack@5.97.1) watchpack: 2.4.2 - webpack-cli: 5.1.4(webpack@5.96.1) + webpack-cli: 5.1.4(webpack@5.97.1) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' From 72d3a701318cb96d15d6f28109cd00d4d25c4b63 Mon Sep 17 00:00:00 2001 From: Thorsten Rinne Date: Sun, 8 Dec 2024 19:04:02 +0100 Subject: [PATCH 2/5] feat: improved update handling of .htaccess file --- CHANGELOG.md | 1 + composer.json | 1 + composer.lock | 137 ++++++++++++------ package.json | 2 +- phpmyfaq/src/phpMyFAQ/Configuration.php | 5 + .../Administration/UpdateController.php | 7 +- .../Setup/EnvironmentConfigurator.php | 95 ++++++++++++ phpmyfaq/src/phpMyFAQ/Setup/Installer.php | 3 +- phpmyfaq/src/phpMyFAQ/System.php | 2 +- phpmyfaq/src/services.php | 6 + scripts/version.sh | 2 +- tests/.htaccess | 2 +- tests/bootstrap.php | 3 +- .../Setup/EnvironmentConfiguratorTest.php | 90 ++++++++++++ 14 files changed, 302 insertions(+), 54 deletions(-) create mode 100644 phpmyfaq/src/phpMyFAQ/Setup/EnvironmentConfigurator.php create mode 100644 tests/phpMyFAQ/Setup/EnvironmentConfiguratorTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 54ffc6ace0..4e410249ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ This is a log of major user-visible changes in each phpMyFAQ release. ### phpMyFAQ v4.0.1 - unreleased +- improved update handling of .htaccess file (Thorsten) - updated 3rd party dependencies (Thorsten) ### phpMyFAQ v4.0.0 - 2024-12-06 diff --git a/composer.json b/composer.json index ab9c033e6c..0625665492 100644 --- a/composer.json +++ b/composer.json @@ -44,6 +44,7 @@ "symfony/mailer": "^7.0", "symfony/routing": "^7.0", "tecnickcom/tcpdf": "~6.0", + "tivie/htaccess-parser": "0.3.0", "twig/intl-extra": "^3.10", "twig/twig": "^3.10" }, diff --git a/composer.lock b/composer.lock index 558b5b85af..ba729b4d16 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "489c07e6d615b5a37b13d14af64d653a", + "content-hash": "f17f23f54ec4d34ac6b5ba022c67abab", "packages": [ { "name": "2tvenom/cborencode", @@ -889,16 +889,16 @@ }, { "name": "league/commonmark", - "version": "2.5.3", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "b650144166dfa7703e62a22e493b853b58d874b0" + "reference": "d150f911e0079e90ae3c106734c93137c184f932" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/b650144166dfa7703e62a22e493b853b58d874b0", - "reference": "b650144166dfa7703e62a22e493b853b58d874b0", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d150f911e0079e90ae3c106734c93137c184f932", + "reference": "d150f911e0079e90ae3c106734c93137c184f932", "shasum": "" }, "require": { @@ -923,8 +923,9 @@ "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 || ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -934,7 +935,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.6-dev" + "dev-main": "2.7-dev" } }, "autoload": { @@ -991,7 +992,7 @@ "type": "tidelift" } ], - "time": "2024-08-16T11:46:16+00:00" + "time": "2024-12-07T15:34:16+00:00" }, { "name": "league/config", @@ -1077,20 +1078,20 @@ }, { "name": "league/uri", - "version": "7.4.1", + "version": "7.5.1", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "bedb6e55eff0c933668addaa7efa1e1f2c417cc4" + "reference": "81fb5145d2644324614cc532b28efd0215bda430" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/bedb6e55eff0c933668addaa7efa1e1f2c417cc4", - "reference": "bedb6e55eff0c933668addaa7efa1e1f2c417cc4", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.3", + "league/uri-interfaces": "^7.5", "php": "^8.1" }, "conflict": { @@ -1155,7 +1156,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.4.1" + "source": "https://github.com/thephpleague/uri/tree/7.5.1" }, "funding": [ { @@ -1163,20 +1164,20 @@ "type": "github" } ], - "time": "2024-03-23T07:42:40+00:00" + "time": "2024-12-08T08:40:02+00:00" }, { "name": "league/uri-interfaces", - "version": "7.4.1", + "version": "7.5.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "8d43ef5c841032c87e2de015972c06f3865ef718" + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/8d43ef5c841032c87e2de015972c06f3865ef718", - "reference": "8d43ef5c841032c87e2de015972c06f3865ef718", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", "shasum": "" }, "require": { @@ -1239,7 +1240,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.1" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" }, "funding": [ { @@ -1247,7 +1248,7 @@ "type": "github" } ], - "time": "2024-03-23T07:42:40+00:00" + "time": "2024-12-08T08:18:47+00:00" }, { "name": "masterminds/html5", @@ -3311,12 +3312,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4838,6 +4839,54 @@ ], "time": "2024-10-26T12:15:02+00:00" }, + { + "name": "tivie/htaccess-parser", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/tivie/php-htaccess-parser.git", + "reference": "14e14d066533c340851172ba1019ff52890b30b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tivie/php-htaccess-parser/zipball/14e14d066533c340851172ba1019ff52890b30b3", + "reference": "14e14d066533c340851172ba1019ff52890b30b3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tivie\\HtaccessParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Estevão Soares dos Santos", + "email": "estevao@soares-dos-santos.com" + } + ], + "description": "A .htaccess parser and validator implemented in PHP", + "homepage": "https://github.com/tivie/php-htaccess-parser", + "keywords": [ + ".htaccess", + "htaccess" + ], + "support": { + "issues": "https://github.com/tivie/php-htaccess-parser/issues", + "source": "https://github.com/tivie/php-htaccess-parser/tree/0.3.0" + }, + "time": "2024-03-17T05:33:05+00:00" + }, { "name": "twig/intl-extra", "version": "v3.16.0", @@ -5131,29 +5180,27 @@ }, { "name": "doctrine/deprecations", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "1.4.10 || 2.0.3", + "phpstan/phpstan-phpunit": "^1.0 || ^2", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" + "psr/log": "^1 || ^2 || ^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -5161,7 +5208,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -5172,9 +5219,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.4" }, - "time": "2024-01-30T19:34:25+00:00" + "time": "2024-12-07T21:18:45+00:00" }, { "name": "doctrine/instantiator", @@ -5592,16 +5639,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.0", + "version": "5.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c" + "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/f3558a4c23426d12bffeaab463f8a8d8b681193c", - "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", + "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", "shasum": "" }, "require": { @@ -5650,9 +5697,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.0" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.1" }, - "time": "2024-11-12T11:25:25+00:00" + "time": "2024-12-07T09:39:29+00:00" }, { "name": "phpdocumentor/type-resolver", diff --git a/package.json b/package.json index 157f971d84..f031322558 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@thorsten/phpmyfaq", - "version": "4.0.0", + "version": "4.0.1", "description": "phpMyFAQ", "repository": "git://github.com/thorsten/phpMyFAQ.git", "author": "Thorsten Rinne", diff --git a/phpmyfaq/src/phpMyFAQ/Configuration.php b/phpmyfaq/src/phpMyFAQ/Configuration.php index a6e89402fe..a6470f090d 100644 --- a/phpmyfaq/src/phpMyFAQ/Configuration.php +++ b/phpmyfaq/src/phpMyFAQ/Configuration.php @@ -201,6 +201,11 @@ public function getDefaultUrl(): string return $defaultUrl; } + public function getRootPath(): string + { + return PMF_ROOT_DIR; + } + /** * Returns a configuration item. * diff --git a/phpmyfaq/src/phpMyFAQ/Controller/Administration/UpdateController.php b/phpmyfaq/src/phpMyFAQ/Controller/Administration/UpdateController.php index 1c31856a61..23e7db39ff 100644 --- a/phpmyfaq/src/phpMyFAQ/Controller/Administration/UpdateController.php +++ b/phpmyfaq/src/phpMyFAQ/Controller/Administration/UpdateController.php @@ -234,7 +234,7 @@ public function createTemporaryBackup(): StreamedResponse } /** - * @throws Exception + * @throws \Exception */ #[Route('admin/api/install-package')] public function installPackage(): StreamedResponse @@ -242,13 +242,14 @@ public function installPackage(): StreamedResponse $this->userHasPermission(PermissionType::CONFIGURATION_EDIT); $upgrade = new Upgrade(new System(), $this->configuration); - return new StreamedResponse(static function () use ($upgrade) { + $configurator = $this->container->get('phpmyfaq.setup.environment_configurator'); + return new StreamedResponse(static function () use ($upgrade, $configurator) { $progressCallback = static function ($progress) { echo json_encode(['progress' => $progress]) . "\n"; ob_flush(); flush(); }; - if ($upgrade->installPackage($progressCallback)) { + if ($upgrade->installPackage($progressCallback) && $configurator->adjustRewriteBaseHtaccess()) { echo json_encode(['message' => '✅ Package successfully installed.']); } else { echo json_encode(['message' => 'Install package failed']); diff --git a/phpmyfaq/src/phpMyFAQ/Setup/EnvironmentConfigurator.php b/phpmyfaq/src/phpMyFAQ/Setup/EnvironmentConfigurator.php new file mode 100644 index 0000000000..cbe03f21f6 --- /dev/null +++ b/phpmyfaq/src/phpMyFAQ/Setup/EnvironmentConfigurator.php @@ -0,0 +1,95 @@ + + * @copyright 2024 phpMyFAQ Team + * @license https://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0 + * @link https://www.phpmyfaq.de + * @since 2024-11-16 + */ + +namespace phpMyFAQ\Setup; + +use phpMyFAQ\Configuration; +use phpMyFAQ\Core\Exception; +use SplFileObject; +use Tivie\HtaccessParser\Exception\SyntaxException; +use Tivie\HtaccessParser\Parser; + +use const Tivie\HtaccessParser\Token\TOKEN_DIRECTIVE; + +class EnvironmentConfigurator +{ + private string $htaccessPath; + + public function __construct(private readonly Configuration $configuration) + { + $this->htaccessPath = $this->configuration->getRootPath() . '/.htaccess'; + } + + public function getHtaccessPath(): string + { + return $this->htaccessPath; + } + + public function getServerPath(): string + { + return parse_url($this->configuration->getDefaultUrl(), PHP_URL_PATH); + } + + /** + * @throws Exception + */ + public function getRewriteBase(): string + { + $file = new SplFileObject($this->htaccessPath); + $parser = new Parser(); + try { + $htaccess = $parser->parse($file); + } catch (SyntaxException $e) { + throw new Exception('Syntax error in .htaccess file: ' . $e->getMessage()); + } catch (\Tivie\HtaccessParser\Exception\Exception $e) { + throw new Exception('Error parsing .htaccess file: ' . $e->getMessage()); + } + $rewriteBase = $htaccess->search('RewriteBase', TOKEN_DIRECTIVE); + + return $rewriteBase->getArguments()[0]; + } + + /** + * Adjusts the RewriteBase in the .htaccess file for the user's environment to avoid errors with controllers. + * Returns true, if the file was successfully changed. + * + * @throws Exception + */ + public function adjustRewriteBaseHtaccess(): bool + { + if (!file_exists($this->htaccessPath)) { + throw new Exception(sprintf('The %s/.htaccess file does not exist!', $this->getServerPath())); + } + + $file = new SplFileObject($this->htaccessPath); + $parser = new Parser(); + try { + $htaccess = $parser->parse($file); + } catch (SyntaxException $e) { + throw new Exception('Syntax error in .htaccess file: ' . $e->getMessage()); + } catch (\Tivie\HtaccessParser\Exception\Exception $e) { + throw new Exception('Error parsing .htaccess file: ' . $e->getMessage()); + } + $rewriteBase = $htaccess->search('RewriteBase', TOKEN_DIRECTIVE); + + $rewriteBase->removeArgument($this->getRewriteBase()); + $rewriteBase->setArguments((array)$this->getServerPath()); + + $output = (string) $htaccess; + return file_put_contents($this->htaccessPath, $output); + } +} diff --git a/phpmyfaq/src/phpMyFAQ/Setup/Installer.php b/phpmyfaq/src/phpMyFAQ/Setup/Installer.php index 39765f3625..043703c22d 100644 --- a/phpmyfaq/src/phpMyFAQ/Setup/Installer.php +++ b/phpmyfaq/src/phpMyFAQ/Setup/Installer.php @@ -1142,7 +1142,8 @@ public function startInstall(array|null $setup = null): void } // adjust RewriteBase in .htaccess - $this->adjustRewriteBaseHtaccess($rootDir); + $configurator = new EnvironmentConfigurator($configuration); + $configurator->adjustRewriteBaseHtaccess(); } /** diff --git a/phpmyfaq/src/phpMyFAQ/System.php b/phpmyfaq/src/phpMyFAQ/System.php index d857245230..28b049b01d 100644 --- a/phpmyfaq/src/phpMyFAQ/System.php +++ b/phpmyfaq/src/phpMyFAQ/System.php @@ -47,7 +47,7 @@ class System /** * Patch level. */ - private const VERSION_PATCH_LEVEL = 0; + private const VERSION_PATCH_LEVEL = 1; /** * Pre-release version. diff --git a/phpmyfaq/src/services.php b/phpmyfaq/src/services.php index 4b93a5ed47..7c80f27fb0 100644 --- a/phpmyfaq/src/services.php +++ b/phpmyfaq/src/services.php @@ -28,6 +28,7 @@ use phpMyFAQ\Language; use phpMyFAQ\Services\Gravatar; use phpMyFAQ\Session; +use phpMyFAQ\Setup\EnvironmentConfigurator; use phpMyFAQ\Sitemap; use phpMyFAQ\Tags; use phpMyFAQ\User\CurrentUser; @@ -109,6 +110,11 @@ $services->set('phpmyfaq.services.gravatar', Gravatar::class); + $services->set('phpmyfaq.setup.environment_configurator', EnvironmentConfigurator::class) + ->args([ + new Reference('phpmyfaq.configuration') + ]); + $services->set('phpmyfaq.tags', Tags::class) ->args([ new Reference('phpmyfaq.configuration') diff --git a/scripts/version.sh b/scripts/version.sh index 8274e65337..0c95481d3f 100644 --- a/scripts/version.sh +++ b/scripts/version.sh @@ -1,5 +1,5 @@ #!/bin/sh # Check if PMF_VERSION is not set or empty if [ -z "${PMF_VERSION}" ]; then - PMF_VERSION="4.0.0" + PMF_VERSION="4.0.1" fi diff --git a/tests/.htaccess b/tests/.htaccess index 3103ab3dca..096eb92300 100644 --- a/tests/.htaccess +++ b/tests/.htaccess @@ -1 +1 @@ -RewriteBase / +RewriteBase /phpmyfaq-test/ \ No newline at end of file diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 9d039b11b5..e96386edff 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -78,7 +78,8 @@ 'loginname' => 'admin', 'password' => 'password', 'password_retyped' => 'password', - 'rootDir' => PMF_TEST_DIR + 'rootDir' => PMF_TEST_DIR, + 'mainUrl' => 'https://localhost/', ]; Strings::init(); diff --git a/tests/phpMyFAQ/Setup/EnvironmentConfiguratorTest.php b/tests/phpMyFAQ/Setup/EnvironmentConfiguratorTest.php new file mode 100644 index 0000000000..7d2a46da23 --- /dev/null +++ b/tests/phpMyFAQ/Setup/EnvironmentConfiguratorTest.php @@ -0,0 +1,90 @@ +configuration = $this->createMock(Configuration::class); + $this->configuration->method('getRootPath')->willReturn(dirname(__DIR__, 2)); + $this->configuration->method('getDefaultUrl')->willReturn('https://localhost/'); + $this->configurator = new EnvironmentConfigurator($this->configuration); + } + + protected function tearDown(): void + { + file_put_contents(dirname(__DIR__, 2) . '/.htaccess', 'RewriteBase /phpmyfaq-test/'); + } + + public function testGetHtaccessPath(): void + { + $this->assertEquals(dirname(__DIR__, 2) . '/.htaccess', $this->configurator->getHtaccessPath()); + } + + public function testGetServerPath(): void + { + $configurator = new EnvironmentConfigurator($this->configuration); + $this->assertEquals('/', $configurator->getServerPath()); + } + + /** + * @throws Exception + */ + public function testGetRewriteBase(): void + { + $this->configuration->method('getDefaultUrl')->willReturn('https://localhost/phpmyfaq-test/'); + $configurator = new EnvironmentConfigurator($this->configuration); + $this->assertEquals('/phpmyfaq-test/', $configurator->getRewriteBase()); + } + + /** + * @throws \PHPUnit\Framework\MockObject\Exception + */ + public function testGetServerPathWithSubdirectoryPath(): void + { + $configuration = $this->createMock(Configuration::class); + $configuration->method('getRootPath')->willReturn(dirname(__DIR__, 2) . '/path/info'); + $configuration->method('getDefaultUrl')->willReturn('https://localhost/path/info'); + $configurator = new EnvironmentConfigurator($configuration); + $this->assertEquals('/path/info', $configurator->getServerPath()); + } + + /** + * @throws \PHPUnit\Framework\MockObject\Exception + */ + public function testAdjustRewriteBaseHtaccessThrowsExceptionForMissingFile(): void + { + $configuration = $this->createMock(Configuration::class); + $configuration->method('getRootPath')->willReturn(dirname(__DIR__, 2). '/path/to'); + $configuration->method('getDefaultUrl')->willReturn('https://localhost/path/to'); + $configurator = new EnvironmentConfigurator($configuration); + $this->expectException(Exception::class); + $this->expectExceptionMessage('The /path/to/.htaccess file does not exist!'); + $configurator->adjustRewriteBaseHtaccess(); + } + + /** + * @throws Exception + * @throws \PHPUnit\Framework\MockObject\Exception + */ + public function testAdjustRewriteBaseHtaccess(): void + { + $configuration = $this->createMock(Configuration::class); + $configuration->method('getRootPath')->willReturn(dirname(__DIR__, 2)); + $configuration->method('getDefaultUrl')->willReturn('https://localhost/path/info'); + $configurator = new EnvironmentConfigurator($configuration); + $this->assertTrue($configurator->adjustRewriteBaseHtaccess()); + $this->assertEquals('/path/info', $configurator->getRewriteBase()); + } +} From fc75b1c2c55a60ac7bb833feaec0eb1957362869 Mon Sep 17 00:00:00 2001 From: Thorsten Rinne Date: Sun, 8 Dec 2024 19:09:55 +0100 Subject: [PATCH 3/5] build: hide external deprecation warnings --- phpunit.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index ff3386c6d6..2672f2c8cc 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -9,10 +9,10 @@ cacheDirectory=".phpunit.cache" requireCoverageMetadata="false" beStrictAboutCoverageMetadata="true" - displayDetailsOnPhpunitDeprecations="true" + displayDetailsOnPhpunitDeprecations="false" displayDetailsOnIncompleteTests="true" displayDetailsOnSkippedTests="true" - displayDetailsOnTestsThatTriggerDeprecations="true" + displayDetailsOnTestsThatTriggerDeprecations="false" displayDetailsOnTestsThatTriggerErrors="true" displayDetailsOnTestsThatTriggerNotices="true" displayDetailsOnTestsThatTriggerWarnings="true"> From 112aaa0cd10d2626030f7a25b1756e9715d88119 Mon Sep 17 00:00:00 2001 From: Thorsten Rinne Date: Sun, 8 Dec 2024 19:15:57 +0100 Subject: [PATCH 4/5] build: hide external deprecation warnings --- tests/bootstrap.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/bootstrap.php b/tests/bootstrap.php index e96386edff..fea3b7ef0a 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -25,7 +25,7 @@ ini_set('display_errors', 1); ini_set('display_startup_errors', 1); -error_reporting(E_ALL | E_STRICT); +error_reporting(E_ALL & ~E_DEPRECATED); // // The root directory @@ -63,7 +63,7 @@ $loader->register(); // -// Delete possible SQLite file first +// Delete a possible SQLite file first // @unlink(PMF_TEST_DIR . '/test.db'); From 8a4ed750bd34f2434fa7f95238a971b470bdad5e Mon Sep 17 00:00:00 2001 From: Thorsten Rinne Date: Mon, 9 Dec 2024 19:51:42 +0100 Subject: [PATCH 5/5] fix: adding categories without category images was not possible, closes #3281 --- phpmyfaq/admin/category.main.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/phpmyfaq/admin/category.main.php b/phpmyfaq/admin/category.main.php index 52fed2a6f0..1a02d50fe6 100644 --- a/phpmyfaq/admin/category.main.php +++ b/phpmyfaq/admin/category.main.php @@ -47,7 +47,7 @@ // Image upload // $request = Request::createFromGlobals(); -$uploadedFile = $request->files->get('image'); +$uploadedFile = $request->files->get('image') ?? []; $categoryImage = new Image($faqConfig); $categoryImage->setUploadedFile($uploadedFile); @@ -75,9 +75,9 @@ ->setName(Filter::filterInput(INPUT_POST, 'name', FILTER_SANITIZE_SPECIAL_CHARS)) ->setDescription(Filter::filterInput(INPUT_POST, 'description', FILTER_SANITIZE_SPECIAL_CHARS)) ->setUserId(Filter::filterInput(INPUT_POST, 'user_id', FILTER_VALIDATE_INT)) - ->setGroupId(Filter::filterInput(INPUT_POST, 'group_id', FILTER_VALIDATE_INT)) + ->setGroupId(Filter::filterInput(INPUT_POST, 'group_id', FILTER_VALIDATE_INT) ?? -1) ->setActive(Filter::filterInput(INPUT_POST, 'active', FILTER_VALIDATE_INT) ?? false) - ->setImage($categoryImage->getFileName($categoryId, $categoryLang)) + ->setImage($categoryImage->getFileName($categoryId, $categoryLang) ?? '') ->setParentId($parentId) ->setShowHome(Filter::filterInput(INPUT_POST, 'show_home', FILTER_VALIDATE_INT));