From b947ea0748acbd13bc6e0a562c7eb119092e97a6 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Wed, 17 Dec 2025 21:03:01 +0100 Subject: [PATCH 01/24] testing the forgejo runners --- .forgejo/workflows/playing-around.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .forgejo/workflows/playing-around.yaml diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml new file mode 100644 index 0000000..bfee772 --- /dev/null +++ b/.forgejo/workflows/playing-around.yaml @@ -0,0 +1,9 @@ +on: [push] +jobs: + print-content: + runs-on: docker + steps: + - name: checkout code + uses: actions/checkout@v4 + - name: list directory contents + run: ls -la From 1d63ab69af046d1a3ea5b21186ff14bc3b692e05 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 20:56:26 +0100 Subject: [PATCH 02/24] ffs --- .forgejo/workflows/playing-around.yaml | 48 +++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index bfee772..24789ae 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -1,9 +1,47 @@ -on: [push] +on: + push: + branches: + - stage jobs: - print-content: + build: runs-on: docker + environment: ${{ github.ref_name }} + steps: - - name: checkout code + - name: Checkout code uses: actions/checkout@v4 - - name: list directory contents - run: ls -la + + - name: Setup Node.js + uses: https://code.forgejo.org/actions/setup-node@v4 + with: + node-version: "22" + + - name: Install dependencies + run: npm ci + + - name: Build Astro project + run: npm run build + + - name: Deploy dist to dist-${{ github.ref_name }} + run: | + git config user.name "forgejo-actions[bot]" + git config user.email "forgejo-actions[bot]@users.noreply.local" + + git checkout --orphan temp-build + git rm -rf . + + git add dist + git commit -m "Update dist/ [skip ci]" + + git push \ + https://x-access-token:${{ secrets.GITHUB_TOKEN }}@${{ github.server_url#https:// }}/{{ github.repository }} \ + temp-build:dist-${{ github.ref_name }} \ + --force + + - name: Trigger deployment webhook + env: + DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_STAGE_DEPLOY_WEBHOOK }} + DEPLOY_TOKEN: ${{ secrets.COOLIFY_STAGE_DEPLOY_TOKEN }} + run: | + curl -v "$DEPLOY_WEBHOOK" \ + --header "Authorization: Bearer $DEPLOY_TOKEN" From bb1ce601be801a8c6d02d006f65fa67bb3f59d7f Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 20:59:54 +0100 Subject: [PATCH 03/24] ffs --- .forgejo/workflows/playing-around.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index 24789ae..e87ad21 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -5,7 +5,7 @@ on: jobs: build: runs-on: docker - environment: ${{ github.ref_name }} + environment: ${{ env.FORGEJO_REF_NAME }} steps: - name: Checkout code @@ -22,7 +22,7 @@ jobs: - name: Build Astro project run: npm run build - - name: Deploy dist to dist-${{ github.ref_name }} + - name: Deploy dist to dist-${{ env.FORGEJO_REF_NAME }} run: | git config user.name "forgejo-actions[bot]" git config user.email "forgejo-actions[bot]@users.noreply.local" @@ -33,10 +33,10 @@ jobs: git add dist git commit -m "Update dist/ [skip ci]" - git push \ - https://x-access-token:${{ secrets.GITHUB_TOKEN }}@${{ github.server_url#https:// }}/{{ github.repository }} \ - temp-build:dist-${{ github.ref_name }} \ - --force + # git push \ + # https://x-access-token:${{ secrets.GITHUB_TOKEN }}@${{ github.server_url#https:// }}/{{ github.repository }} \ + # temp-build:dist-${{ env.FORGEJO_REF_NAME }} \ + # --force - name: Trigger deployment webhook env: From 1abedb6c2d11615bcc3259eea3129cb4ed5648fb Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 21:08:30 +0100 Subject: [PATCH 04/24] ffs --- .forgejo/workflows/playing-around.yaml | 35 -------------------------- 1 file changed, 35 deletions(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index e87ad21..9cd0a69 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -10,38 +10,3 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 - - - name: Setup Node.js - uses: https://code.forgejo.org/actions/setup-node@v4 - with: - node-version: "22" - - - name: Install dependencies - run: npm ci - - - name: Build Astro project - run: npm run build - - - name: Deploy dist to dist-${{ env.FORGEJO_REF_NAME }} - run: | - git config user.name "forgejo-actions[bot]" - git config user.email "forgejo-actions[bot]@users.noreply.local" - - git checkout --orphan temp-build - git rm -rf . - - git add dist - git commit -m "Update dist/ [skip ci]" - - # git push \ - # https://x-access-token:${{ secrets.GITHUB_TOKEN }}@${{ github.server_url#https:// }}/{{ github.repository }} \ - # temp-build:dist-${{ env.FORGEJO_REF_NAME }} \ - # --force - - - name: Trigger deployment webhook - env: - DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_STAGE_DEPLOY_WEBHOOK }} - DEPLOY_TOKEN: ${{ secrets.COOLIFY_STAGE_DEPLOY_TOKEN }} - run: | - curl -v "$DEPLOY_WEBHOOK" \ - --header "Authorization: Bearer $DEPLOY_TOKEN" From 61d080e34bcecf076fcbfaf94af893b27f80b54f Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 21:09:12 +0100 Subject: [PATCH 05/24] ffs --- .forgejo/workflows/playing-around.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index 9cd0a69..2e21fc3 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -10,3 +10,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + + - name: Setup Node.js + uses: https://code.forgejo.org/actions/setup-node@v4 + with: + node-version: "22" From a63a72445740c9f83200abf908cb53ea3a653bc0 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 21:10:15 +0100 Subject: [PATCH 06/24] ffs --- .forgejo/workflows/playing-around.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index 2e21fc3..077037b 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -15,3 +15,9 @@ jobs: uses: https://code.forgejo.org/actions/setup-node@v4 with: node-version: "22" + + - name: Install dependencies + run: npm ci + + - name: Build Astro project + run: npm run build From decbf1cc8ce56ad8626c1f4dd966225839aa2ee9 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 21:45:53 +0100 Subject: [PATCH 07/24] ffs --- .forgejo/workflows/playing-around.yaml | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index 077037b..bf8a475 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -5,7 +5,7 @@ on: jobs: build: runs-on: docker - environment: ${{ env.FORGEJO_REF_NAME }} + #environment: ${{ env.FORGEJO_REF_NAME }} steps: - name: Checkout code @@ -21,3 +21,27 @@ jobs: - name: Build Astro project run: npm run build + + - name: Deploy dist to dist-${{ env.FORGEJO_REF_NAME }} + run: | + git config user.name "forgejo-actions[bot]" + git config user.email "forgejo-actions[bot]@users.noreply.local" + + git checkout --orphan dist-stage + git rm -rf . + + git add dist + git commit -m "Update dist" + + git push \ + https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@${{ github.server_url }}/${{ github.repository }} \ + temp-build:dist-${{ env.FORGEJO_REF_NAME }} \ + --force + + # - name: Trigger deployment webhook + # env: + # DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_STAGE_DEPLOY_WEBHOOK }} + # DEPLOY_TOKEN: ${{ secrets.COOLIFY_STAGE_DEPLOY_TOKEN }} + # run: | + # curl -v "$DEPLOY_WEBHOOK" \ + # --header "Authorization: Bearer $DEPLOY_TOKEN" From 3e2d69daeaa8638371179f46bfb70c12b32c53d1 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 21:49:18 +0100 Subject: [PATCH 08/24] ffs --- .forgejo/workflows/playing-around.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index bf8a475..f56c1d0 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -27,7 +27,7 @@ jobs: git config user.name "forgejo-actions[bot]" git config user.email "forgejo-actions[bot]@users.noreply.local" - git checkout --orphan dist-stage + git checkout --orphan temp git rm -rf . git add dist @@ -35,7 +35,7 @@ jobs: git push \ https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@${{ github.server_url }}/${{ github.repository }} \ - temp-build:dist-${{ env.FORGEJO_REF_NAME }} \ + temp:dist-${{ env.FORGEJO_REF_NAME }} \ --force # - name: Trigger deployment webhook From c81d9fcba2865c4a3e3c4e68661116ee6fca911c Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 21:51:14 +0100 Subject: [PATCH 09/24] ffs --- .forgejo/workflows/playing-around.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index f56c1d0..70bd410 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -34,7 +34,7 @@ jobs: git commit -m "Update dist" git push \ - https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@${{ github.server_url }}/${{ github.repository }} \ + x-access-token:${{ secrets.FORGEJO_TOKEN }}@${{ github.server_url }}/${{ github.repository }} \ temp:dist-${{ env.FORGEJO_REF_NAME }} \ --force From 5f7a8365d2facdb9815e7e8479c7da4acc1bca7c Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 21:55:30 +0100 Subject: [PATCH 10/24] ffs --- .forgejo/workflows/playing-around.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index 70bd410..1a0a1fb 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -34,7 +34,7 @@ jobs: git commit -m "Update dist" git push \ - x-access-token:${{ secrets.FORGEJO_TOKEN }}@${{ github.server_url }}/${{ github.repository }} \ + https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@${{ github.server_url }}/${{ github.repository }}.git \ temp:dist-${{ env.FORGEJO_REF_NAME }} \ --force From 66da5c414efd9cb9bce46fc023a6a5122ef7bb83 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 22:01:01 +0100 Subject: [PATCH 11/24] ffs --- .forgejo/workflows/playing-around.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index 1a0a1fb..0fc23d2 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -34,7 +34,7 @@ jobs: git commit -m "Update dist" git push \ - https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@${{ github.server_url }}/${{ github.repository }}.git \ + "https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@${SERVER_URL}/${{ github.repository }}.git" \ temp:dist-${{ env.FORGEJO_REF_NAME }} \ --force From 81d1807d4f458dd5d35027b7947823781058f3f7 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 22:04:30 +0100 Subject: [PATCH 12/24] ffs --- .forgejo/workflows/playing-around.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index 0fc23d2..f68ff7c 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -34,7 +34,7 @@ jobs: git commit -m "Update dist" git push \ - "https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@${SERVER_URL}/${{ github.repository }}.git" \ + "https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@${{ github.server_url }}/${{ github.repository }}.git" \ temp:dist-${{ env.FORGEJO_REF_NAME }} \ --force From 66990a037edc4b86c52e6dea62007e8240629f1a Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 20 Dec 2025 23:22:39 +0100 Subject: [PATCH 13/24] ffs --- .forgejo/workflows/playing-around.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index f68ff7c..d3873ea 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -34,7 +34,7 @@ jobs: git commit -m "Update dist" git push \ - "https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@${{ github.server_url }}/${{ github.repository }}.git" \ + "https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@git.workaround.org/${{ github.repository }}.git" \ temp:dist-${{ env.FORGEJO_REF_NAME }} \ --force From 5c452cb495199cfd7b937ee0a4841d7456797350 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 00:04:02 +0100 Subject: [PATCH 14/24] add missing information about managesieve plugin --- .../docs/ispmail-trixie/170-webmail.mdx | 51 +++++++++++++++--- .../images/webmail-roundcube-sieve-editor.png | Bin 0 -> 51996 bytes 2 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 src/content/docs/ispmail-trixie/images/webmail-roundcube-sieve-editor.png diff --git a/src/content/docs/ispmail-trixie/170-webmail.mdx b/src/content/docs/ispmail-trixie/170-webmail.mdx index 423237a..57c1044 100644 --- a/src/content/docs/ispmail-trixie/170-webmail.mdx +++ b/src/content/docs/ispmail-trixie/170-webmail.mdx @@ -126,10 +126,18 @@ email address as the user name. E.g. `john@example.org` and password `summersun` If the login fails, check `/var/log/roundcube/errors.log`. + + ## Plugins -Roundcube comes with various plugins that you can offer your users. I suggest that you enable at least the **password** -plugin so that your users can change their access password. +Roundcube comes with various plugins that you can offer your users. I suggest that you enable at least + +- the **password** plugin so that your users can change their access password +- the **managesieve** plugin so that your users can create server-based filtering rules Again edit the `/etc/roundcube/config.inc.php` file and look for the _plugins_ configuration. To enable the recommended plugins change it to: @@ -141,8 +149,11 @@ $config['plugins'] = array( ); ``` -Plugins are configured through files located in the `/etc/roundcube/plugins` directory. Let's quickly set up the -password plugin: +Plugins are configured through files located in the `/etc/roundcube/plugins` directory. + +### password + +Let's quickly set up the password plugin: ```sh title="Run this on your server" cat > /etc/roundcube/plugins/password/config.inc.php << 'EOF' @@ -161,7 +172,7 @@ chown root:www-data /etc/roundcube/plugins/password/config.inc.php chmod u=rw,g=r,o= /etc/roundcube/plugins/password/config.inc.php ``` -Let’s briefly cover the meaning of those lines: +What these settings mean: - `$config['password_driver'] = 'sql';`\ Use SQL as a backend. @@ -191,8 +202,32 @@ Try it. Log into Roundcube as `john@example.org` with password ‘summersun’. Enter a new password twice. You should get a success message at the bottom right. Now logout and login with the new password. Does it work? Great. - +The configuration file for Roundcube’s _managesieve_ plugin is found at +`/etc/roundcube/plugins/managesieve/config.inc.php`. But the defaults are fine so you do not need to change it. + +Sieve rules are stored in a special syntax on the server. This is an example that moves all incoming emails to the +_test_ folder that have “test” in the subject: + +``` +require ["fileinto"]; +if header :contains "subject" "test" +{ + fileinto "INBOX/test"; +} +``` + +You do not need to learn this syntax though. Roundcube’s sieve rule editor is way more user-friendly. + +Try adding a sieve rule for `john@example.org` in Roundcube. That feature is located in Settings/Filters. You will find +the machine-readable sieve code at `/var/vmail/example.org/john/sieve/roundcube.sieve`. + +The rule editor looks like this: + +![Roundcube's sieve rule editor](images/webmail-roundcube-sieve-editor.png) diff --git a/src/content/docs/ispmail-trixie/images/webmail-roundcube-sieve-editor.png b/src/content/docs/ispmail-trixie/images/webmail-roundcube-sieve-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..1c89758a3db7778a5c48fd81bc9a697b70193ac7 GIT binary patch literal 51996 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 literal 0 HcmV?d00001 From 395a187b36e6e3bb909b5c4e9ad26f94886c0fad Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 00:49:55 +0100 Subject: [PATCH 15/24] try caching the NPM packages --- .forgejo/workflows/playing-around.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index d3873ea..e062b9a 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -16,6 +16,14 @@ jobs: with: node-version: "22" + - name: Cache node modules + uses: actions/cache@v4 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: Install dependencies run: npm ci From 28431dbef91dd30fa3e42454361eac8c19fb3e55 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 00:52:20 +0100 Subject: [PATCH 16/24] ffs --- .forgejo/workflows/playing-around.yaml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index e062b9a..feccaf4 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -7,14 +7,17 @@ jobs: runs-on: docker #environment: ${{ env.FORGEJO_REF_NAME }} + container: + image: node:22 + steps: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js - uses: https://code.forgejo.org/actions/setup-node@v4 - with: - node-version: "22" + # - name: Setup Node.js + # uses: https://code.forgejo.org/actions/setup-node@v4 + # with: + # node-version: "22" - name: Cache node modules uses: actions/cache@v4 From 7e2abb2e1f36846506d0e461925f1fb0fe702a75 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 01:22:49 +0100 Subject: [PATCH 17/24] replaced matomo by rybbit --- src/content/docs/ispmail-bookworm/260-faq.mdx | 53 +++++++++++++------ 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/src/content/docs/ispmail-bookworm/260-faq.mdx b/src/content/docs/ispmail-bookworm/260-faq.mdx index 809fa37..e1bb01d 100644 --- a/src/content/docs/ispmail-bookworm/260-faq.mdx +++ b/src/content/docs/ispmail-bookworm/260-faq.mdx @@ -2,18 +2,23 @@ title: FAQ (frequently asked questions) slug: ispmail-bookworm/faq-frequently-asked-questions sidebar: - order: 260 + order: 260 --- ## Can I use this guide for my own work? -Previously I claimed a copyright on the documentation. However let’s make things simpler. This Bullseye guide is using the [Creative Commons BY-NC-SA license](https://creativecommons.org/licenses/by-nc-sa/4.0/). Which means: +Previously I claimed a copyright on the documentation. However let’s make things simpler. This Bullseye guide is using +the [Creative Commons BY-NC-SA license](https://creativecommons.org/licenses/by-nc-sa/4.0/). Which means: -- BY = Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. -- NC = NonCommercial — You may not use the material for commercial purposes. Do what you want with your mail server. But let’s keep the knowledge free. -- SA = ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. +- BY = Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. + You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. +- NC = NonCommercial — You may not use the material for commercial purposes. Do what you want with your mail server. But + let’s keep the knowledge free. +- SA = ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under + the same license as the original. -Besides that this guide has been a team effort. Many readers have contributed to it. I may spend the time to turn it into a guide but a lot of good ideas were not mine alone. +Besides that this guide has been a team effort. Many readers have contributed to it. I may spend the time to turn it +into a guide but a lot of good ideas were not mine alone. ## Can I advertise in your guide? @@ -21,33 +26,47 @@ No. There is no financial motivation. I just strive for freeing the world of ema ## Why don’t you use Nginx/PostgreSQL? -I personally prefer that software, too. Just go for it. But for the sake of consistency let’s keep Apache and MySQL as default choices in this guide so that readers upgrading from previous versions don’t have to switch. +I personally prefer that software, too. Just go for it. But for the sake of consistency let’s keep Apache and MySQL as +default choices in this guide so that readers upgrading from previous versions don’t have to switch. ## Do you offer paid support? -Generally, yes. Aside from my day job, I am a sysadmin freelancer. If you are just stuck at some point you may want to ask in the [chat](https://riot.im/app/#/room/#ispmail:matrix.org) first though. You can find me there as well. +Generally, yes. Aside from my day job, I am a sysadmin freelancer. If you are just stuck at some point you may want to +ask in the [chat](https://riot.im/app/#/room/#ispmail:matrix.org) first though. You can find me there as well. ## How do I filter out malware? -I understand the need for it. If your users are using low-security operating systems (e.g. those that run EXE files) they are threatened by a lot of security problems. From the perspective of an email provider I would not want to take responsibility for filtering emails. That is only working on symptoms and not addressing the actual issues. Security is a fundamental concept and not something you slap on top of something inherently broken. I would not want to be blamed for a crypto trojan infection because the user relied on me saving them from bad things to happen. Client security in non-free systems is a topic on its own. +I understand the need for it. If your users are using low-security operating systems (e.g. those that run EXE files) +they are threatened by a lot of security problems. From the perspective of an email provider I would not want to take +responsibility for filtering emails. That is only working on symptoms and not addressing the actual issues. Security is +a fundamental concept and not something you slap on top of something inherently broken. I would not want to be blamed +for a crypto trojan infection because the user relied on me saving them from bad things to happen. Client security in +non-free systems is a topic on its own. ## Debian packages are too old and insecure -If you use a Debian stable release you have chosen to stay on a specific software version. “Stable” means “a version that will not change”. That’s the best choice for a server. Those software packages are by no means less secure though because they also get security updates. Debian also has up-to-date packages but you surely don’t want to use them for a mail server unless you feel adventurous or have an intense hatred for your users. For a detailed discussion see [this separate article](https://workaround.org/debian-packages-are-so-old/). +If you use a Debian stable release you have chosen to stay on a specific software version. “Stable” means “a version +that will not change”. That’s the best choice for a server. Those software packages are by no means less secure though +because they also get security updates. Debian also has up-to-date packages but you surely don’t want to use them for a +mail server unless you feel adventurous or have an intense hatred for your users. For a detailed discussion see +[this separate article](https://workaround.org/debian-packages-are-so-old/). ## Can I download the guide as one file? -Unfortunately there is no easy way to accomplish that. Especially with interactive components like tabs of quizzes. The reasons are technical – not malice. +Unfortunately there is no easy way to accomplish that. Especially with interactive components like tabs of quizzes. The +reasons are technical – not malice. ## Your guide looks cool. How did you make it? -The site is generated using [Starlight](https://starlight.astro.build/). Discussions at the bottom of each page are powered by [Comentario](https://comentario.app/). -Diagrams have been created using [Inkscape](https://inkscape.org/). User tracking is handled by [Matomo](https://matomo.org/). +The site is generated using [Starlight](https://starlight.astro.build/). Discussions at the bottom of each page are +powered by a self-hosted instance of [Comentario](https://comentario.app/). Diagrams have been created using +[Inkscape](https://inkscape.org/). User tracking is handled by a self-hosted instance of [Rybbit](https://rybbit.com/). Everything here has been generated using open-source software and is not using any public cloud services. ## I can offer to translate your guide. -That is very kind to offer help. I understand the motivation to give back something. But trust me: you will lose interest quickly and regret your offer. -The guide is huge. It may not appear like much but once you start typing you realize just how many months of work went into it. -Even translating will take 1-2 weeks of your time. And after that someone would have to maintain both the original version and your translation. -We tried that a couple of times and it did not turn out well. +That is very kind to offer help. I understand the motivation to give back something. But trust me: you will lose +interest quickly and regret your offer. The guide is huge. It may not appear like much but once you start typing you +realize just how many months of work went into it. Even translating will take 1-2 weeks of your time. And after that +someone would have to maintain both the original version and your translation. We tried that a couple of times and it +did not turn out well. From 32031e05f2caa6f53fad34e0022a7afc4109f10f Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 01:22:59 +0100 Subject: [PATCH 18/24] fixed code block --- src/content/docs/ispmail-trixie/330-quotas.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/content/docs/ispmail-trixie/330-quotas.mdx b/src/content/docs/ispmail-trixie/330-quotas.mdx index 84f465f..1de792f 100644 --- a/src/content/docs/ispmail-trixie/330-quotas.mdx +++ b/src/content/docs/ispmail-trixie/330-quotas.mdx @@ -37,7 +37,9 @@ action=554 5.2.2 Quota exceeded (mailbox for user is full) --- -```swaks --from nonexistens@example.org --to chris@auenland.workaround.org +``` +swaks --from nonexistens@example.org --to chris@auenland.workaround.org + === Trying auenland.workaround.org:25... === Connected to auenland.workaround.org. <- 220 auenland ESMTP Postfix (Debian) From 47422745b45a30ae84275a64e57c945e442ad3a1 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 01:23:11 +0100 Subject: [PATCH 19/24] removed remains of matomo --- astro.config.mjs | 13 -- package-lock.json | 436 ++++++++++++++++++++++++++++++++-------------- package.json | 3 +- 3 files changed, 311 insertions(+), 141 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 4619eb2..b38f4e9 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -2,7 +2,6 @@ import { defineConfig } from "astro/config"; import starlight from "@astrojs/starlight"; import sitemap from "@astrojs/sitemap"; -import matomo from "astro-matomo"; import remarkSmartypants from "remark-smartypants"; // https://astro.build/config @@ -72,18 +71,6 @@ export default defineConfig({ replacesTitle: true, }, }), - // https://github.com/felix-berlin/astro-matomo - // matomo({ - // enabled: import.meta.env.PROD, // Only load in production - // host: "https://matomo.workaround.org/", - // setCookieDomain: "*.workaround.org", - // trackerUrl: "js/", // defaults to matomo.php - // srcUrl: "js/", // defaults to matomo.js - // siteId: 1, - // heartBeatTimer: 5, - // disableCookies: true, - // debug: false, - // }), sitemap(), ], diff --git a/package-lock.json b/package-lock.json index 08046a6..69bcb07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,6 @@ "@astrojs/starlight": "^0.35.2", "@splidejs/splide": "^4.1.4", "astro": "^5.13.2", - "astro-matomo": "^1.9.0", "astro-splide": "^2.0.0", "sharp": "^0.32.6", "typescript": "^5.9.2" @@ -293,9 +292,9 @@ } }, "node_modules/@capsizecss/unpack": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-3.0.0.tgz", - "integrity": "sha512-+ntATQe1AlL7nTOYjwjj6w3299CgRot48wL761TUGYpYgAou3AaONZazp0PKZyCyWhudWsjhq1nvRHOvbMzhTA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-3.0.1.tgz", + "integrity": "sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==", "license": "MIT", "dependencies": { "fontkit": "^2.0.2" @@ -1749,60 +1748,60 @@ ] }, "node_modules/@shikijs/core": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.14.0.tgz", - "integrity": "sha512-qRSeuP5vlYHCNUIrpEBQFO7vSkR7jn7Kv+5X3FO/zBKVDGQbcnlScD3XhkrHi/R8Ltz0kEjvFR9Szp/XMRbFMw==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.20.0.tgz", + "integrity": "sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.14.0", + "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "node_modules/@shikijs/engine-javascript": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.14.0.tgz", - "integrity": "sha512-3v1kAXI2TsWQuwv86cREH/+FK9Pjw3dorVEykzQDhwrZj0lwsHYlfyARaKmn6vr5Gasf8aeVpb8JkzeWspxOLQ==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.20.0.tgz", + "integrity": "sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.14.0", + "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.3" + "oniguruma-to-es": "^4.3.4" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.14.0.tgz", - "integrity": "sha512-TNcYTYMbJyy+ZjzWtt0bG5y4YyMIWC2nyePz+CFMWqm+HnZZyy9SWMgo8Z6KBJVIZnx8XUXS8U2afO6Y0g1Oug==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.20.0.tgz", + "integrity": "sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.14.0", + "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.14.0.tgz", - "integrity": "sha512-DIB2EQY7yPX1/ZH7lMcwrK5pl+ZkP/xoSpUzg9YC8R+evRCCiSQ7yyrvEyBsMnfZq4eBzLzBlugMyTAf13+pzg==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.20.0.tgz", + "integrity": "sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.14.0" + "@shikijs/types": "3.20.0" } }, "node_modules/@shikijs/themes": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.14.0.tgz", - "integrity": "sha512-fAo/OnfWckNmv4uBoUu6dSlkcBc+SA1xzj5oUSaz5z3KqHtEbUypg/9xxgJARtM6+7RVm0Q6Xnty41xA1ma1IA==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.20.0.tgz", + "integrity": "sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.14.0" + "@shikijs/types": "3.20.0" } }, "node_modules/@shikijs/types": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.14.0.tgz", - "integrity": "sha512-bQGgC6vrY8U/9ObG1Z/vTro+uclbjjD/uG58RvfxKZVD5p9Yc1ka3tVyEFy7BNJLzxuWyHH5NWynP9zZZS59eQ==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.20.0.tgz", + "integrity": "sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", @@ -2205,30 +2204,30 @@ } }, "node_modules/astro": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.15.2.tgz", - "integrity": "sha512-xQQ+PiYJ7WpUJrHJpAb52TQAUCFmSR8lAtQr3tFfSIZoTQiEMFx3HITJ01t3eDUpHjja8J6JcYqgAhr9xygKQg==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.6.tgz", + "integrity": "sha512-6mF/YrvwwRxLTu+aMEa5pwzKUNl5ZetWbTyZCs9Um0F12HUmxUiF5UHiZPy4rifzU3gtpM3xP2DfdmkNX9eZRg==", "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.12.2", - "@astrojs/internal-helpers": "0.7.4", - "@astrojs/markdown-remark": "6.3.8", + "@astrojs/compiler": "^2.13.0", + "@astrojs/internal-helpers": "0.7.5", + "@astrojs/markdown-remark": "6.3.10", "@astrojs/telemetry": "3.3.0", - "@capsizecss/unpack": "^3.0.0", + "@capsizecss/unpack": "^3.0.1", "@oslojs/encoding": "^1.1.0", - "@rollup/pluginutils": "^5.2.0", + "@rollup/pluginutils": "^5.3.0", "acorn": "^8.15.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", - "ci-info": "^4.3.0", + "ci-info": "^4.3.1", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.0.2", "cssesc": "^3.0.0", - "debug": "^4.4.1", + "debug": "^4.4.3", "deterministic-object-hash": "^2.0.2", - "devalue": "^5.3.2", + "devalue": "^5.5.0", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", @@ -2236,33 +2235,34 @@ "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", - "fontace": "~0.3.0", + "fontace": "~0.3.1", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.0", - "magic-string": "^0.30.18", - "magicast": "^0.3.5", + "js-yaml": "^4.1.1", + "magic-string": "^0.30.21", + "magicast": "^0.5.1", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", - "p-queue": "^8.1.0", - "package-manager-detector": "^1.3.0", - "picocolors": "^1.1.1", + "p-queue": "^8.1.1", + "package-manager-detector": "^1.5.0", + "piccolore": "^0.1.3", "picomatch": "^4.0.3", "prompts": "^2.4.2", "rehype": "^13.0.2", - "semver": "^7.7.2", - "shiki": "^3.12.0", - "smol-toml": "^1.4.2", - "tinyexec": "^1.0.1", - "tinyglobby": "^0.2.14", + "semver": "^7.7.3", + "shiki": "^3.15.0", + "smol-toml": "^1.5.2", + "svgo": "^4.0.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.6.0", "unist-util-visit": "^5.0.0", - "unstorage": "^1.17.0", + "unstorage": "^1.17.3", "vfile": "^6.0.3", "vite": "^6.4.1", "vitefu": "^1.1.1", @@ -2270,7 +2270,7 @@ "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.3", "zod": "^3.25.76", - "zod-to-json-schema": "^3.24.6", + "zod-to-json-schema": "^3.25.0", "zod-to-ts": "^1.2.0" }, "bin": { @@ -2301,28 +2301,6 @@ "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0" } }, - "node_modules/astro-matomo": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astro-matomo/-/astro-matomo-1.9.0.tgz", - "integrity": "sha512-eOmhDHvqjrasJvhaKTSEZIMk9pW/3OcqYS6VVGOQBrEg33H1/Mk62sJuv2dxmsg3cNTDwm2rlZlw9r18KNgYnw==", - "funding": [ - { - "type": "PayPal", - "url": "https://paypal.me/FelixScholze" - }, - { - "type": "Buy me a coffee", - "url": "https://www.buymeacoffee.com/felixberlin" - } - ], - "license": "GPL-3.0", - "workspaces": [ - "demo" - ], - "peerDependencies": { - "astro": "^2.0.0-beta.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, "node_modules/astro-splide": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/astro-splide/-/astro-splide-2.0.1.tgz", @@ -2332,6 +2310,41 @@ "@splidejs/splide": "^4.1.4" } }, + "node_modules/astro/node_modules/@astrojs/internal-helpers": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", + "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", + "license": "MIT" + }, + "node_modules/astro/node_modules/@astrojs/markdown-remark": { + "version": "6.3.10", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.10.tgz", + "integrity": "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.7.5", + "@astrojs/prism": "3.3.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "shiki": "^3.19.0", + "smol-toml": "^1.5.2", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, "node_modules/astro/node_modules/sharp": { "version": "0.34.4", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", @@ -2922,6 +2935,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/common-ancestor-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", @@ -2952,6 +2974,22 @@ "uncrypto": "^0.1.3" } }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/css-selector-parser": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.1.3.tgz", @@ -2981,6 +3019,18 @@ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -2993,6 +3043,39 @@ "node": ">=4" } }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -3090,9 +3173,9 @@ } }, "node_modules/devalue": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.4.2.tgz", - "integrity": "sha512-MwPZTKEPK2k8Qgfmqrd48ZKVvzSQjgW0lXLxiIBA8dQjtf/6mw6pggHNLcyDKyf+fI6eXxlQwPsfaCMTU5U+Bw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.1.tgz", + "integrity": "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==", "license": "MIT" }, "node_modules/devlop": { @@ -3142,6 +3225,73 @@ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "license": "MIT" }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, "node_modules/dset": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", @@ -4264,9 +4414,9 @@ } }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -4337,14 +4487,14 @@ } }, "node_modules/magicast": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", - "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", + "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.25.4", - "@babel/types": "^7.25.4", - "source-map-js": "^1.2.0" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "source-map-js": "^1.2.1" } }, "node_modules/markdown-extensions": { @@ -4638,9 +4788,9 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -5587,9 +5737,9 @@ "license": "MIT" }, "node_modules/node-mock-http": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.3.tgz", - "integrity": "sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", "license": "MIT" }, "node_modules/normalize-path": { @@ -5614,9 +5764,9 @@ } }, "node_modules/ofetch": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.0.tgz", - "integrity": "sha512-A7llJ7eZyziA5xq9//3ZurA8OhFqtS99K5/V1sLBJ5j137CM/OAjlbA/TEJXBuOWwOfLqih+oH5U3ran4za1FQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", "license": "MIT", "dependencies": { "destr": "^2.0.5", @@ -5646,9 +5796,9 @@ "license": "MIT" }, "node_modules/oniguruma-to-es": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", - "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", + "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", "license": "MIT", "dependencies": { "oniguruma-parser": "^0.12.1", @@ -5789,6 +5939,12 @@ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "license": "MIT" }, + "node_modules/piccolore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==", + "license": "ISC" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -6131,9 +6287,9 @@ } }, "node_modules/regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", - "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" @@ -6591,17 +6747,17 @@ } }, "node_modules/shiki": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.14.0.tgz", - "integrity": "sha512-J0yvpLI7LSig3Z3acIuDLouV5UCKQqu8qOArwMx+/yPVC3WRMgrP67beaG8F+j4xfEWE0eVC4GeBCIXeOPra1g==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.20.0.tgz", + "integrity": "sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==", "license": "MIT", "dependencies": { - "@shikijs/core": "3.14.0", - "@shikijs/engine-javascript": "3.14.0", - "@shikijs/engine-oniguruma": "3.14.0", - "@shikijs/langs": "3.14.0", - "@shikijs/themes": "3.14.0", - "@shikijs/types": "3.14.0", + "@shikijs/core": "3.20.0", + "@shikijs/engine-javascript": "3.20.0", + "@shikijs/engine-oniguruma": "3.20.0", + "@shikijs/langs": "3.20.0", + "@shikijs/themes": "3.20.0", + "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } @@ -6692,9 +6848,9 @@ "license": "MIT" }, "node_modules/smol-toml": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.4.2.tgz", - "integrity": "sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", + "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==", "license": "BSD-3-Clause", "engines": { "node": ">= 18" @@ -6830,6 +6986,31 @@ "inline-style-parser": "0.2.4" } }, + "node_modules/svgo": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", + "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.4.1" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, "node_modules/tar-fs": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", @@ -6871,10 +7052,13 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", - "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", - "license": "MIT" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { "version": "0.2.15", @@ -7213,9 +7397,9 @@ } }, "node_modules/unstorage": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", - "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.3.tgz", + "integrity": "sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", @@ -7224,7 +7408,7 @@ "h3": "^1.15.4", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.7", - "ofetch": "^1.4.1", + "ofetch": "^1.5.1", "ufo": "^1.6.1" }, "peerDependencies": { @@ -7979,12 +8163,12 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.24.6", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz", + "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==", "license": "ISC", "peerDependencies": { - "zod": "^3.24.1" + "zod": "^3.25 || ^4" } }, "node_modules/zod-to-ts": { diff --git a/package.json b/package.json index 439a557..317ee40 100644 --- a/package.json +++ b/package.json @@ -17,12 +17,11 @@ "@astrojs/starlight": "^0.35.2", "@splidejs/splide": "^4.1.4", "astro": "^5.13.2", - "astro-matomo": "^1.9.0", "astro-splide": "^2.0.0", "sharp": "^0.32.6", "typescript": "^5.9.2" }, - "engines": { + "engines": { "node": ">=22" } } From b3a3a2f8eb0c6a33bcc12980ca5798f4d0f8ad04 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 01:33:58 +0100 Subject: [PATCH 20/24] npm update --- package-lock.json | 1162 ++++++++++++++++++++++----------------------- 1 file changed, 563 insertions(+), 599 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69bcb07..728a633 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,18 +22,18 @@ } }, "node_modules/@astrojs/check": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.5.tgz", - "integrity": "sha512-88vc8n2eJ1Oua74yXSGo/8ABMeypfQPGEzuoAx2awL9Ju8cE6tZ2Rz9jVx5hIExHK5gKVhpxfZj4WXm7e32g1w==", + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.6.tgz", + "integrity": "sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA==", "license": "MIT", "dependencies": { - "@astrojs/language-server": "^2.15.0", + "@astrojs/language-server": "^2.16.1", "chokidar": "^4.0.1", "kleur": "^4.1.5", "yargs": "^17.7.2" }, "bin": { - "astro-check": "dist/bin.js" + "astro-check": "bin/astro-check.js" }, "peerDependencies": { "typescript": "^5.0.0" @@ -46,15 +46,15 @@ "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.4.tgz", - "integrity": "sha512-lDA9MqE8WGi7T/t2BMi+EAXhs4Vcvr94Gqx3q15cFEz8oFZMO4/SFBqYr/UcmNlvW+35alowkVj+w9VhLvs5Cw==", + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", + "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", "license": "MIT" }, "node_modules/@astrojs/language-server": { - "version": "2.15.5", - "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.15.5.tgz", - "integrity": "sha512-GizawjrIytYEOv8c/VUDrzGYo5t584w6S0fUAmVK2u11BtAZcbtXWNjGtwFWYLyR27J9pZe4Ipe/qP8mXUfCWQ==", + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.16.2.tgz", + "integrity": "sha512-J3hVx/mFi3FwEzKf8ExYXQNERogD6RXswtbU+TyrxoXRBiQoBO5ooo7/lRWJ+rlUKUd7+rziMPI9jYB7TRlh0w==", "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.10.3", @@ -66,13 +66,13 @@ "@volar/language-service": "~2.4.23", "fast-glob": "^3.2.12", "muggle-string": "^0.4.1", - "volar-service-css": "0.0.65", - "volar-service-emmet": "0.0.65", - "volar-service-html": "0.0.65", - "volar-service-prettier": "0.0.65", - "volar-service-typescript": "0.0.65", - "volar-service-typescript-twoslash-queries": "0.0.65", - "volar-service-yaml": "0.0.65", + "volar-service-css": "0.0.67", + "volar-service-emmet": "0.0.67", + "volar-service-html": "0.0.67", + "volar-service-prettier": "0.0.67", + "volar-service-typescript": "0.0.67", + "volar-service-typescript-twoslash-queries": "0.0.67", + "volar-service-yaml": "0.0.67", "vscode-html-languageservice": "^5.5.2", "vscode-uri": "^3.1.0" }, @@ -93,18 +93,18 @@ } }, "node_modules/@astrojs/markdown-remark": { - "version": "6.3.8", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.8.tgz", - "integrity": "sha512-uFNyFWadnULWK2cOw4n0hLKeu+xaVWeuECdP10cQ3K2fkybtTlhb7J7TcScdjmS8Yps7oje9S/ehYMfZrhrgCg==", + "version": "6.3.10", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.10.tgz", + "integrity": "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.7.4", + "@astrojs/internal-helpers": "0.7.5", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", @@ -112,28 +112,28 @@ "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", - "shiki": "^3.13.0", - "smol-toml": "^1.4.2", + "shiki": "^3.19.0", + "smol-toml": "^1.5.2", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.1", + "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "node_modules/@astrojs/mdx": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.9.tgz", - "integrity": "sha512-80LHiM4z3FxAjATHNgFpa8nlTNSprAWB4UUKnr/QG56Pwk7uRnJWrXlok4wSCi/3fg8kTZ98A408Q91M+iqJdw==", + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.13.tgz", + "integrity": "sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==", "license": "MIT", "dependencies": { - "@astrojs/markdown-remark": "6.3.8", + "@astrojs/markdown-remark": "6.3.10", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.15.0", "es-module-lexer": "^1.7.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", - "picocolors": "^1.1.1", + "piccolore": "^0.1.3", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", @@ -331,8 +331,9 @@ } }, "node_modules/@emmetio/css-parser": { - "version": "0.4.0", - "resolved": "git+ssh://git@github.com/ramya-rao-a/css-parser.git#370c480ac103bd17c7bcfb34bf5d577dc40d3660", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.1.tgz", + "integrity": "sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==", "license": "MIT", "dependencies": { "@emmetio/stream-reader": "^2.2.0", @@ -367,9 +368,9 @@ "license": "MIT" }, "node_modules/@emnapi/runtime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.6.0.tgz", - "integrity": "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", "license": "MIT", "optional": true, "dependencies": { @@ -377,9 +378,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", - "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], @@ -393,9 +394,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", - "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], @@ -409,9 +410,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", - "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], @@ -425,9 +426,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", - "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], @@ -441,9 +442,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", - "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -457,9 +458,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", - "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], @@ -473,9 +474,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", - "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], @@ -489,9 +490,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", - "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], @@ -505,9 +506,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", - "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -521,9 +522,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", - "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -537,9 +538,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", - "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], @@ -553,9 +554,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", - "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], @@ -569,9 +570,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", - "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], @@ -585,9 +586,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", - "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], @@ -601,9 +602,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", - "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -617,9 +618,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", - "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -633,9 +634,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", - "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -649,9 +650,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", - "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "cpu": [ "arm64" ], @@ -665,9 +666,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", - "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -681,9 +682,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", - "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "cpu": [ "arm64" ], @@ -697,9 +698,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", - "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -713,9 +714,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", - "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", "cpu": [ "arm64" ], @@ -729,9 +730,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", - "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -745,9 +746,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", - "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -761,9 +762,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", - "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -777,9 +778,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", - "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -793,9 +794,9 @@ } }, "node_modules/@expressive-code/core": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.41.3.tgz", - "integrity": "sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==", + "version": "0.41.5", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.41.5.tgz", + "integrity": "sha512-II5TEy5eOoXiqPwqtpSqwamUd7lZS3YH3ofxR1ZyQMmygqORZn8/7SzgfF8G0kB7uKCBzFZT6RgKgCuHcJuPpA==", "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^4.0.4", @@ -810,31 +811,31 @@ } }, "node_modules/@expressive-code/plugin-frames": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.41.3.tgz", - "integrity": "sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==", + "version": "0.41.5", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.41.5.tgz", + "integrity": "sha512-qU0cvAQGfRLX7XwGf3/+hqIVmAc/mNNTlqVLR0iBfJF6EKvtP3R7/uAlPrAxnxQxn0meTazCz8D+PsPyOpHKrQ==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.3" + "@expressive-code/core": "^0.41.5" } }, "node_modules/@expressive-code/plugin-shiki": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.41.3.tgz", - "integrity": "sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==", + "version": "0.41.5", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.41.5.tgz", + "integrity": "sha512-gw6OWvnmDmvcKJ5AZSzl2VkuixJMQ/zWSwPLFNzitqCa8aPfIFunb0K8IIOsE43LELgOWkie9lRFspOxwDVwrg==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.3", + "@expressive-code/core": "^0.41.5", "shiki": "^3.2.2" } }, "node_modules/@expressive-code/plugin-text-markers": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.41.3.tgz", - "integrity": "sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==", + "version": "0.41.5", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.41.5.tgz", + "integrity": "sha512-0DSiTsjWFEz6/iuLOGNNy2GaeCW41OwnVJMKx1tS+XKeQxAL89UkZP3egWNzxjWNHNMzEv3ZWWWYqbonEQlv/Q==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.3" + "@expressive-code/core": "^0.41.5" } }, "node_modules/@img/colour": { @@ -848,9 +849,9 @@ } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz", - "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", "cpu": [ "arm64" ], @@ -866,13 +867,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.3" + "@img/sharp-libvips-darwin-arm64": "1.2.4" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz", - "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", "cpu": [ "x64" ], @@ -888,13 +889,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.3" + "@img/sharp-libvips-darwin-x64": "1.2.4" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz", - "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", "cpu": [ "arm64" ], @@ -908,9 +909,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz", - "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", "cpu": [ "x64" ], @@ -924,9 +925,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz", - "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", "cpu": [ "arm" ], @@ -940,9 +941,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz", - "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", "cpu": [ "arm64" ], @@ -956,9 +957,9 @@ } }, "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz", - "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", "cpu": [ "ppc64" ], @@ -971,10 +972,26 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz", - "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", "cpu": [ "s390x" ], @@ -988,9 +1005,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz", - "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", "cpu": [ "x64" ], @@ -1004,9 +1021,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz", - "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", "cpu": [ "arm64" ], @@ -1020,9 +1037,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz", - "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", "cpu": [ "x64" ], @@ -1036,9 +1053,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz", - "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", "cpu": [ "arm" ], @@ -1054,13 +1071,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.3" + "@img/sharp-libvips-linux-arm": "1.2.4" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz", - "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", "cpu": [ "arm64" ], @@ -1076,13 +1093,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.3" + "@img/sharp-libvips-linux-arm64": "1.2.4" } }, "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz", - "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", "cpu": [ "ppc64" ], @@ -1098,13 +1115,35 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.3" + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz", - "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", "cpu": [ "s390x" ], @@ -1120,13 +1159,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.3" + "@img/sharp-libvips-linux-s390x": "1.2.4" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz", - "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", "cpu": [ "x64" ], @@ -1142,13 +1181,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.3" + "@img/sharp-libvips-linux-x64": "1.2.4" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz", - "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", "cpu": [ "arm64" ], @@ -1164,13 +1203,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz", - "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", "cpu": [ "x64" ], @@ -1186,20 +1225,20 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.3" + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz", - "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", "cpu": [ "wasm32" ], "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "@emnapi/runtime": "^1.5.0" + "@emnapi/runtime": "^1.7.0" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -1209,9 +1248,9 @@ } }, "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz", - "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", "cpu": [ "arm64" ], @@ -1228,9 +1267,9 @@ } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz", - "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", "cpu": [ "ia32" ], @@ -1247,9 +1286,9 @@ } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz", - "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", "cpu": [ "x64" ], @@ -1462,9 +1501,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", - "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz", + "integrity": "sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==", "cpu": [ "arm" ], @@ -1475,9 +1514,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", - "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz", + "integrity": "sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==", "cpu": [ "arm64" ], @@ -1488,9 +1527,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", - "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz", + "integrity": "sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==", "cpu": [ "arm64" ], @@ -1501,9 +1540,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", - "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz", + "integrity": "sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==", "cpu": [ "x64" ], @@ -1514,9 +1553,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", - "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz", + "integrity": "sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==", "cpu": [ "arm64" ], @@ -1527,9 +1566,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", - "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz", + "integrity": "sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==", "cpu": [ "x64" ], @@ -1540,9 +1579,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", - "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz", + "integrity": "sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==", "cpu": [ "arm" ], @@ -1553,9 +1592,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", - "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz", + "integrity": "sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==", "cpu": [ "arm" ], @@ -1566,9 +1605,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", - "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz", + "integrity": "sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==", "cpu": [ "arm64" ], @@ -1579,9 +1618,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", - "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz", + "integrity": "sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==", "cpu": [ "arm64" ], @@ -1592,9 +1631,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", - "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz", + "integrity": "sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==", "cpu": [ "loong64" ], @@ -1605,9 +1644,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", - "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz", + "integrity": "sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==", "cpu": [ "ppc64" ], @@ -1618,9 +1657,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", - "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz", + "integrity": "sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==", "cpu": [ "riscv64" ], @@ -1631,9 +1670,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", - "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz", + "integrity": "sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==", "cpu": [ "riscv64" ], @@ -1644,9 +1683,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", - "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz", + "integrity": "sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==", "cpu": [ "s390x" ], @@ -1657,9 +1696,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", - "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz", + "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==", "cpu": [ "x64" ], @@ -1670,9 +1709,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", - "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz", + "integrity": "sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==", "cpu": [ "x64" ], @@ -1683,9 +1722,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", - "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz", + "integrity": "sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==", "cpu": [ "arm64" ], @@ -1696,9 +1735,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", - "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz", + "integrity": "sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==", "cpu": [ "arm64" ], @@ -1709,9 +1748,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", - "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz", + "integrity": "sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==", "cpu": [ "ia32" ], @@ -1722,9 +1761,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", - "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz", + "integrity": "sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==", "cpu": [ "x64" ], @@ -1735,9 +1774,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", - "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz", + "integrity": "sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==", "cpu": [ "x64" ], @@ -1821,9 +1860,9 @@ "license": "MIT" }, "node_modules/@swc/helpers": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz", + "integrity": "sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.0" @@ -1908,9 +1947,9 @@ } }, "node_modules/@types/node": { - "version": "24.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.2.tgz", - "integrity": "sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -1938,13 +1977,13 @@ "license": "ISC" }, "node_modules/@volar/kit": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.23.tgz", - "integrity": "sha512-YuUIzo9zwC2IkN7FStIcVl1YS9w5vkSFEZfPvnu0IbIMaR9WHhc9ZxvlT+91vrcSoRY469H2jwbrGqpG7m1KaQ==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.27.tgz", + "integrity": "sha512-ilZoQDMLzqmSsImJRWx4YiZ4FcvvPrPnFVmL6hSsIWB6Bn3qc7k88J9yP32dagrs5Y8EXIlvvD/mAFaiuEOACQ==", "license": "MIT", "dependencies": { - "@volar/language-service": "2.4.23", - "@volar/typescript": "2.4.23", + "@volar/language-service": "2.4.27", + "@volar/typescript": "2.4.27", "typesafe-path": "^0.2.2", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" @@ -1954,23 +1993,23 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.23.tgz", - "integrity": "sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.27.tgz", + "integrity": "sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==", "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.23" + "@volar/source-map": "2.4.27" } }, "node_modules/@volar/language-server": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.23.tgz", - "integrity": "sha512-k0iO+tybMGMMyrNdWOxgFkP0XJTdbH0w+WZlM54RzJU3WZSjHEupwL30klpM7ep4FO6qyQa03h+VcGHD4Q8gEg==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.27.tgz", + "integrity": "sha512-SymGNkErcHg8GjiG65iQN8sLkhqu1pwKhFySmxeBuYq5xFYagKBW36eiNITXQTdvT0tutI1GXcXdq/FdE/IyjA==", "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.23", - "@volar/language-service": "2.4.23", - "@volar/typescript": "2.4.23", + "@volar/language-core": "2.4.27", + "@volar/language-service": "2.4.27", + "@volar/typescript": "2.4.27", "path-browserify": "^1.0.1", "request-light": "^0.7.0", "vscode-languageserver": "^9.0.1", @@ -1980,30 +2019,30 @@ } }, "node_modules/@volar/language-service": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.23.tgz", - "integrity": "sha512-h5mU9DZ/6u3LCB9xomJtorNG6awBNnk9VuCioGsp6UtFiM8amvS5FcsaC3dabdL9zO0z+Gq9vIEMb/5u9K6jGQ==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.27.tgz", + "integrity": "sha512-SxKZ8yLhpWa7Y5e/RDxtNfm7j7xsXp/uf2urijXEffRNpPSmVdfzQrFFy5d7l8PNpZy+bHg+yakmqBPjQN+MOw==", "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.23", + "@volar/language-core": "2.4.27", "vscode-languageserver-protocol": "^3.17.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" } }, "node_modules/@volar/source-map": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.23.tgz", - "integrity": "sha512-Z1Uc8IB57Lm6k7q6KIDu/p+JWtf3xsXJqAX/5r18hYOTpJyBn0KXUR8oTJ4WFYOcDzWC9n3IflGgHowx6U6z9Q==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.27.tgz", + "integrity": "sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==", "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.23.tgz", - "integrity": "sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.27.tgz", + "integrity": "sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==", "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.23", + "@volar/language-core": "2.4.27", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } @@ -2064,6 +2103,20 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -2290,72 +2343,37 @@ } }, "node_modules/astro-expressive-code": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.41.3.tgz", - "integrity": "sha512-u+zHMqo/QNLE2eqYRCrK3+XMlKakv33Bzuz+56V1gs8H0y6TZ0hIi3VNbIxeTn51NLn+mJfUV/A0kMNfE4rANw==", + "version": "0.41.5", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.41.5.tgz", + "integrity": "sha512-6jfABbPO0fkRD1ROAPBQtJR2p7gjbmk/GjfblOpo5Z7F+gwhL7+s8bEhLz9GdW10yfbn+gJvwEf7f9Lu2clh2A==", "license": "MIT", "dependencies": { - "rehype-expressive-code": "^0.41.3" + "rehype-expressive-code": "^0.41.5" }, "peerDependencies": { "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0" } }, "node_modules/astro-splide": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/astro-splide/-/astro-splide-2.0.1.tgz", - "integrity": "sha512-571B3+kM47kCbRRl7mE0dQO9x6LUllM8j2aJXy3aOo63OzvBdRINDhlWUslS3g58hWZ4N7rzAbaK34D2dvzJIw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/astro-splide/-/astro-splide-2.0.2.tgz", + "integrity": "sha512-R+Jh00OS+iKG5v2DUcc4/J8h3H/PKKGkmx5HQGspn2EokSF2DYpGDO2Kqozl7j2WnZLtFpfYM1loKYCPtIYu3A==", "license": "MIT", "dependencies": { "@splidejs/splide": "^4.1.4" } }, - "node_modules/astro/node_modules/@astrojs/internal-helpers": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", - "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", - "license": "MIT" - }, - "node_modules/astro/node_modules/@astrojs/markdown-remark": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.10.tgz", - "integrity": "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/prism": "3.3.0", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.1", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "remark-smartypants": "^3.0.2", - "shiki": "^3.19.0", - "smol-toml": "^1.5.2", - "unified": "^11.0.5", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.2", - "vfile": "^6.0.3" - } - }, "node_modules/astro/node_modules/sharp": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", - "integrity": "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", "hasInstallScript": true, "license": "Apache-2.0", "optional": true, "dependencies": { "@img/colour": "^1.0.0", - "detect-libc": "^2.1.0", - "semver": "^7.7.2" + "detect-libc": "^2.1.2", + "semver": "^7.7.3" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -2364,28 +2382,30 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.4", - "@img/sharp-darwin-x64": "0.34.4", - "@img/sharp-libvips-darwin-arm64": "1.2.3", - "@img/sharp-libvips-darwin-x64": "1.2.3", - "@img/sharp-libvips-linux-arm": "1.2.3", - "@img/sharp-libvips-linux-arm64": "1.2.3", - "@img/sharp-libvips-linux-ppc64": "1.2.3", - "@img/sharp-libvips-linux-s390x": "1.2.3", - "@img/sharp-libvips-linux-x64": "1.2.3", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", - "@img/sharp-libvips-linuxmusl-x64": "1.2.3", - "@img/sharp-linux-arm": "0.34.4", - "@img/sharp-linux-arm64": "0.34.4", - "@img/sharp-linux-ppc64": "0.34.4", - "@img/sharp-linux-s390x": "0.34.4", - "@img/sharp-linux-x64": "0.34.4", - "@img/sharp-linuxmusl-arm64": "0.34.4", - "@img/sharp-linuxmusl-x64": "0.34.4", - "@img/sharp-wasm32": "0.34.4", - "@img/sharp-win32-arm64": "0.34.4", - "@img/sharp-win32-ia32": "0.34.4", - "@img/sharp-win32-x64": "0.34.4" + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" } }, "node_modules/axobject-query": { @@ -2422,9 +2442,9 @@ } }, "node_modules/bare-events": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.1.tgz", - "integrity": "sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "license": "Apache-2.0", "peerDependencies": { "bare-abort-controller": "*" @@ -2436,9 +2456,9 @@ } }, "node_modules/bare-fs": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.0.tgz", - "integrity": "sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.2.tgz", + "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", "license": "Apache-2.0", "optional": true, "dependencies": { @@ -2503,9 +2523,9 @@ } }, "node_modules/bare-url": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.1.tgz", - "integrity": "sha512-v2yl0TnaZTdEnelkKtXZGnotiV6qATBlnNuUMrHl6v9Lmmrh9mw9RYyImPU7/4RahumSwQS1k2oKXcRfXcbjJw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", "license": "Apache-2.0", "optional": true, "dependencies": { @@ -2951,12 +2971,16 @@ "license": "ISC" }, "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", "license": "MIT", "engines": { "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/cookie-es": { @@ -2991,9 +3015,9 @@ } }, "node_modules/css-selector-parser": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.1.3.tgz", - "integrity": "sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz", + "integrity": "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==", "funding": [ { "type": "github", @@ -3383,9 +3407,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", - "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -3395,32 +3419,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.11", - "@esbuild/android-arm": "0.25.11", - "@esbuild/android-arm64": "0.25.11", - "@esbuild/android-x64": "0.25.11", - "@esbuild/darwin-arm64": "0.25.11", - "@esbuild/darwin-x64": "0.25.11", - "@esbuild/freebsd-arm64": "0.25.11", - "@esbuild/freebsd-x64": "0.25.11", - "@esbuild/linux-arm": "0.25.11", - "@esbuild/linux-arm64": "0.25.11", - "@esbuild/linux-ia32": "0.25.11", - "@esbuild/linux-loong64": "0.25.11", - "@esbuild/linux-mips64el": "0.25.11", - "@esbuild/linux-ppc64": "0.25.11", - "@esbuild/linux-riscv64": "0.25.11", - "@esbuild/linux-s390x": "0.25.11", - "@esbuild/linux-x64": "0.25.11", - "@esbuild/netbsd-arm64": "0.25.11", - "@esbuild/netbsd-x64": "0.25.11", - "@esbuild/openbsd-arm64": "0.25.11", - "@esbuild/openbsd-x64": "0.25.11", - "@esbuild/openharmony-arm64": "0.25.11", - "@esbuild/sunos-x64": "0.25.11", - "@esbuild/win32-arm64": "0.25.11", - "@esbuild/win32-ia32": "0.25.11", - "@esbuild/win32-x64": "0.25.11" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/escalade": { @@ -3560,15 +3584,15 @@ } }, "node_modules/expressive-code": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.41.3.tgz", - "integrity": "sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==", + "version": "0.41.5", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.41.5.tgz", + "integrity": "sha512-iXl9BgDogQgzgE/WRSrcyU8upOcRZrXPMiu6tegEHML57YLQ65S0E3/sjAXmMZy0GXoPs60s9jbwoMo/mdEQOg==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.3", - "@expressive-code/plugin-frames": "^0.41.3", - "@expressive-code/plugin-shiki": "^0.41.3", - "@expressive-code/plugin-text-markers": "^0.41.3" + "@expressive-code/core": "^0.41.5", + "@expressive-code/plugin-frames": "^0.41.5", + "@expressive-code/plugin-shiki": "^0.41.5", + "@expressive-code/plugin-text-markers": "^0.41.5" } }, "node_modules/extend": { @@ -3622,9 +3646,9 @@ "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -4065,15 +4089,15 @@ } }, "node_modules/hast-util-to-parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" @@ -4083,16 +4107,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-parse5/node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/hast-util-to-string": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", @@ -4250,9 +4264,9 @@ "license": "ISC" }, "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", "license": "MIT" }, "node_modules/iron-webcrypto": { @@ -5713,9 +5727,9 @@ } }, "node_modules/node-abi": { - "version": "3.78.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.78.0.tgz", - "integrity": "sha512-E2wEyrgX/CqvicaQYU3Ze1PFGjc4QYPGsjUrlYkqAE0WjHEZwgOsGMPMzkMse4LjJbDmaEuDX3CM036j5K2DSQ==", + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.85.0.tgz", + "integrity": "sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==", "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -5850,9 +5864,9 @@ } }, "node_modules/package-manager-detector": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.5.0.tgz", - "integrity": "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", "license": "MIT" }, "node_modules/pagefind": { @@ -6084,12 +6098,10 @@ } }, "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", + "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "license": "MIT", - "optional": true, - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -6327,12 +6339,12 @@ } }, "node_modules/rehype-expressive-code": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.41.3.tgz", - "integrity": "sha512-8d9Py4c/V6I/Od2VIXFAdpiO2kc0SV2qTJsRAaqSIcM9aruW4ASLNe2kOEo1inXAAkIhpFzAHTc358HKbvpNUg==", + "version": "0.41.5", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.41.5.tgz", + "integrity": "sha512-SzKJyu7heDpkt+XE/AqeWsYMSMocE/5mpJXD6CMgstqJHSE9bxGNcLp3zL9Wne3M5iBsS4GJyOD2syV77kRveA==", "license": "MIT", "dependencies": { - "expressive-code": "^0.41.3" + "expressive-code": "^0.41.5" } }, "node_modules/rehype-format": { @@ -6622,9 +6634,9 @@ } }, "node_modules/rollup": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", - "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz", + "integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -6637,28 +6649,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.5", - "@rollup/rollup-android-arm64": "4.52.5", - "@rollup/rollup-darwin-arm64": "4.52.5", - "@rollup/rollup-darwin-x64": "4.52.5", - "@rollup/rollup-freebsd-arm64": "4.52.5", - "@rollup/rollup-freebsd-x64": "4.52.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", - "@rollup/rollup-linux-arm-musleabihf": "4.52.5", - "@rollup/rollup-linux-arm64-gnu": "4.52.5", - "@rollup/rollup-linux-arm64-musl": "4.52.5", - "@rollup/rollup-linux-loong64-gnu": "4.52.5", - "@rollup/rollup-linux-ppc64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-musl": "4.52.5", - "@rollup/rollup-linux-s390x-gnu": "4.52.5", - "@rollup/rollup-linux-x64-gnu": "4.52.5", - "@rollup/rollup-linux-x64-musl": "4.52.5", - "@rollup/rollup-openharmony-arm64": "4.52.5", - "@rollup/rollup-win32-arm64-msvc": "4.52.5", - "@rollup/rollup-win32-ia32-msvc": "4.52.5", - "@rollup/rollup-win32-x64-gnu": "4.52.5", - "@rollup/rollup-win32-x64-msvc": "4.52.5", + "@rollup/rollup-android-arm-eabi": "4.54.0", + "@rollup/rollup-android-arm64": "4.54.0", + "@rollup/rollup-darwin-arm64": "4.54.0", + "@rollup/rollup-darwin-x64": "4.54.0", + "@rollup/rollup-freebsd-arm64": "4.54.0", + "@rollup/rollup-freebsd-x64": "4.54.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.54.0", + "@rollup/rollup-linux-arm-musleabihf": "4.54.0", + "@rollup/rollup-linux-arm64-gnu": "4.54.0", + "@rollup/rollup-linux-arm64-musl": "4.54.0", + "@rollup/rollup-linux-loong64-gnu": "4.54.0", + "@rollup/rollup-linux-ppc64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-gnu": "4.54.0", + "@rollup/rollup-linux-riscv64-musl": "4.54.0", + "@rollup/rollup-linux-s390x-gnu": "4.54.0", + "@rollup/rollup-linux-x64-gnu": "4.54.0", + "@rollup/rollup-linux-x64-musl": "4.54.0", + "@rollup/rollup-openharmony-arm64": "4.54.0", + "@rollup/rollup-win32-arm64-msvc": "4.54.0", + "@rollup/rollup-win32-ia32-msvc": "4.54.0", + "@rollup/rollup-win32-x64-gnu": "4.54.0", + "@rollup/rollup-win32-x64-msvc": "4.54.0", "fsevents": "~2.3.2" } }, @@ -6706,10 +6718,10 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "license": "ISC" + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "license": "BlueOak-1.0.0" }, "node_modules/semver": { "version": "7.7.3", @@ -6823,9 +6835,9 @@ "license": "MIT" }, "node_modules/sitemap": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.1.tgz", - "integrity": "sha512-4Y8ynSMFAy/DadeAeio8Kx4zfC8/0VcKi7TH0I1SazvBcrU2fpJaGoeWsX1FMRaHoe3VGMA53DqVoLErZrtG9Q==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.2.tgz", + "integrity": "sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ==", "license": "MIT", "dependencies": { "@types/node": "^17.0.5", @@ -6969,21 +6981,21 @@ } }, "node_modules/style-to-js": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.18.tgz", - "integrity": "sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", "license": "MIT", "dependencies": { - "style-to-object": "1.0.11" + "style-to-object": "1.0.14" } }, "node_modules/style-to-object": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.11.tgz", - "integrity": "sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", "license": "MIT", "dependencies": { - "inline-style-parser": "0.2.4" + "inline-style-parser": "0.2.7" } }, "node_modules/svgo": { @@ -7634,9 +7646,9 @@ } }, "node_modules/volar-service-css": { - "version": "0.0.65", - "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.65.tgz", - "integrity": "sha512-oaImNguZF/8NfQh5jJZ2lJYBtF3aFS5H2w+6GmH7ykESAgBJ1UC7DrhmH5smBGGF7OOzzc9AzrrnriafoFJBdA==", + "version": "0.0.67", + "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.67.tgz", + "integrity": "sha512-zV7C6enn9T9tuvQ6iSUyYEs34iPXR69Pf9YYWpbFYPWzVs22w96BtE8p04XYXbmjU6unt5oFt+iLL77bMB5fhA==", "license": "MIT", "dependencies": { "vscode-css-languageservice": "^6.3.0", @@ -7653,12 +7665,12 @@ } }, "node_modules/volar-service-emmet": { - "version": "0.0.65", - "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.65.tgz", - "integrity": "sha512-YkAPlkJnjyAAUZGtG7STgy3ENFy7C0n3dl6MffUYkcovosfUUNgpUOmsj4t1qw1c7t5KMvLfAZHsEC3Ig5Qs3w==", + "version": "0.0.67", + "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.67.tgz", + "integrity": "sha512-UDBL5x7KptmuJZNCCXMlCndMhFult/tj+9jXq3FH1ZGS1E4M/1U5hC06pg1c6e4kn+vnR6bqmvX0vIhL4f98+A==", "license": "MIT", "dependencies": { - "@emmetio/css-parser": "ramya-rao-a/css-parser#vscode", + "@emmetio/css-parser": "^0.4.1", "@emmetio/html-matcher": "^1.3.0", "@vscode/emmet-helper": "^2.9.3", "vscode-uri": "^3.0.8" @@ -7673,9 +7685,9 @@ } }, "node_modules/volar-service-html": { - "version": "0.0.65", - "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.65.tgz", - "integrity": "sha512-AxXckCTbCr5j5z81d3bNiRRL32xCaBSa8lmYhq0QfzBPVPaRv06YYaxp22XizM061f96iizM7ZkSHCu1RuSwRA==", + "version": "0.0.67", + "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.67.tgz", + "integrity": "sha512-ljREMF79JbcjNvObiv69HK2HCl5UT7WTD10zi6CRFUHMbPfiF2UZ42HGLsEGSzaHGZz6H4IFjSS/qfENRLUviQ==", "license": "MIT", "dependencies": { "vscode-html-languageservice": "^5.3.0", @@ -7692,9 +7704,9 @@ } }, "node_modules/volar-service-prettier": { - "version": "0.0.65", - "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.65.tgz", - "integrity": "sha512-cJH+5MtYp5q+zL8d6rd9RwQpwXFJuBaRHMuUyG+kasEkeWMbJKVVFYzUzNtbM8HMGMq5yYy+UGn/Zuh3CvSjaA==", + "version": "0.0.67", + "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.67.tgz", + "integrity": "sha512-B4KnPJPNWFTkEDa6Fn08i5PpO6T1CecmLLTFZoXz2eI4Fxwba/3nDaaVSsEP7e/vEe+U5YqV9fBzayJT71G5xg==", "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8" @@ -7713,9 +7725,9 @@ } }, "node_modules/volar-service-typescript": { - "version": "0.0.65", - "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.65.tgz", - "integrity": "sha512-zPJuLIMs7lkQCvL+Rza8+3/EIoXEIkX8+DL7bNNfPgnbalbvRDhqWLVMJ6Zk3pINjLJafDqyhSbw8srfkUv97w==", + "version": "0.0.67", + "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.67.tgz", + "integrity": "sha512-rfQBy36Rm1PU9vLWHk8BYJ4r2j/CI024vocJcH4Nb6K2RTc2Irmw6UOVY5DdGiPRV5r+e10wLMK5njj/EcL8sA==", "license": "MIT", "dependencies": { "path-browserify": "^1.0.1", @@ -7735,9 +7747,9 @@ } }, "node_modules/volar-service-typescript-twoslash-queries": { - "version": "0.0.65", - "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.65.tgz", - "integrity": "sha512-aghyUm2Rc4QNjKG1nvEjT2Kdzuvccs5H1TD0fIaM5i7X5d/vnm3QLP6wzIGGffa3sjD5b6YmLZR2XaFfNEusog==", + "version": "0.0.67", + "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.67.tgz", + "integrity": "sha512-LD2R7WivDYp1SPgZrxx/0222xVTitDjm36oKo5+bfYG5kEgnw+BOPVHdwmvpJKg/RfssfxDI1ouwD4XkEDEfbA==", "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8" @@ -7752,13 +7764,13 @@ } }, "node_modules/volar-service-yaml": { - "version": "0.0.65", - "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.65.tgz", - "integrity": "sha512-1C67p6M+Y11IVDOHfmbnF4AJiqmH5xaWsJhvM9eO4kazvHzVhk3+kzCtKcNoXIa77uPNmEbbox5CRysage8MNA==", + "version": "0.0.67", + "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.67.tgz", + "integrity": "sha512-jkdP/RF6wPIXEE3Ktnd81oJPn7aAvnVSiaqQHThC2Hrvo6xd9pEcqtbBUI+YfqVgvcMtXAkbtNO61K2GPhAiuA==", "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8", - "yaml-language-server": "~1.15.0" + "yaml-language-server": "~1.19.2" }, "peerDependencies": { "@volar/language-service": "~2.4.0" @@ -7770,9 +7782,9 @@ } }, "node_modules/vscode-css-languageservice": { - "version": "6.3.8", - "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.8.tgz", - "integrity": "sha512-dBk/9ullEjIMbfSYAohGpDOisOVU1x2MQHOeU12ohGJQI7+r0PCimBwaa/pWpxl/vH4f7ibrBfxIZY3anGmHKQ==", + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.9.tgz", + "integrity": "sha512-1tLWfp+TDM5ZuVWht3jmaY5y7O6aZmpeXLoHl5bv1QtRsRKt4xYGRMmdJa5Pqx/FTkgRbsna9R+Gn2xE+evVuA==", "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", @@ -7782,9 +7794,9 @@ } }, "node_modules/vscode-html-languageservice": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.6.0.tgz", - "integrity": "sha512-FIVz83oGw2tBkOr8gQPeiREInnineCKGCz3ZD1Pi6opOuX3nSRkc4y4zLLWsuop+6ttYX//XZCI6SLzGhRzLmA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.6.1.tgz", + "integrity": "sha512-5Mrqy5CLfFZUgkyhNZLA1Ye5g12Cb/v6VM7SxUzZUaRKWMDz4md+y26PrfRTSU0/eQAl3XpO9m2og+GGtDMuaA==", "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", @@ -7943,55 +7955,41 @@ } }, "node_modules/yaml": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", - "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yaml-language-server": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.15.0.tgz", - "integrity": "sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.19.2.tgz", + "integrity": "sha512-9F3myNmJzUN/679jycdMxqtydPSDRAarSj3wPiF7pchEPnO9Dg07Oc+gIYLqXR4L+g+FSEVXXv2+mr54StLFOg==", "license": "MIT", "dependencies": { - "ajv": "^8.11.0", + "@vscode/l10n": "^0.0.18", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", "lodash": "4.17.21", + "prettier": "^3.5.0", "request-light": "^0.5.7", "vscode-json-languageservice": "4.1.8", - "vscode-languageserver": "^7.0.0", + "vscode-languageserver": "^9.0.0", "vscode-languageserver-textdocument": "^1.0.1", "vscode-languageserver-types": "^3.16.0", - "vscode-nls": "^5.0.0", "vscode-uri": "^3.0.2", - "yaml": "2.2.2" + "yaml": "2.7.1" }, "bin": { "yaml-language-server": "bin/yaml-language-server" - }, - "optionalDependencies": { - "prettier": "2.8.7" - } - }, - "node_modules/yaml-language-server/node_modules/prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "license": "MIT", - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/yaml-language-server/node_modules/request-light": { @@ -8000,48 +7998,14 @@ "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==", "license": "MIT" }, - "node_modules/yaml-language-server/node_modules/vscode-jsonrpc": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", - "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", - "license": "MIT", - "engines": { - "node": ">=8.0.0 || >=10.0.0" - } - }, - "node_modules/yaml-language-server/node_modules/vscode-languageserver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", - "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", - "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "3.16.0" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/yaml-language-server/node_modules/vscode-languageserver-protocol": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", - "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "6.0.0", - "vscode-languageserver-types": "3.16.0" - } - }, - "node_modules/yaml-language-server/node_modules/vscode-languageserver-types": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", - "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", - "license": "MIT" - }, "node_modules/yaml-language-server/node_modules/yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } @@ -8115,9 +8079,9 @@ } }, "node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "license": "MIT", "engines": { "node": ">=12.20" From f0fe64980fdaf2a4157a598c727618e0f61ff192 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 01:38:02 +0100 Subject: [PATCH 21/24] remove github build stuff because I build on forgejo --- .github/workflows/build-and-deploy.yml | 58 -------------------------- 1 file changed, 58 deletions(-) delete mode 100644 .github/workflows/build-and-deploy.yml diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml deleted file mode 100644 index 6460280..0000000 --- a/.github/workflows/build-and-deploy.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Build Astro and deploy dist - -on: - push: - branches: - - stage - - prod - workflow_dispatch: - -permissions: - contents: write # 👈 This is required for pushing branches - -jobs: - build: - runs-on: ubuntu-latest - # Dynamically set environment name based on branch - environment: ${{ github.ref_name }} - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: "22" # match your project - - - name: Install dependencies - run: npm ci - - - name: Build Astro project - run: npm run build - - - name: Deploy dist to dist-${{ github.ref_name }} - run: | - # Configure Git - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - - # Create temporary branch - git checkout --orphan temp-build - - # Clean it - git rm -rf . - - # Commit and force push - git add dist - - git branch - git commit -m "Update dist/ [skip ci]" - git push https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} temp-build:dist-${{ github.ref_name }} --force - - - name: Trigger deployment webhook - run: | - curl -v "$DEPLOY_WEBHOOK" --header "Authorization: Bearer $DEPLOY_TOKEN" - env: - DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_DEPLOY_WEBHOOK }} - DEPLOY_TOKEN: ${{ secrets.COOLIFY_DEPLOY_TOKEN }} From 867361c3cc48e423ebffa8001a773f4e09471582 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 01:58:27 +0100 Subject: [PATCH 22/24] ci ffs --- .forgejo/workflows/playing-around.yaml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index feccaf4..fce522f 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -14,11 +14,6 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - # - name: Setup Node.js - # uses: https://code.forgejo.org/actions/setup-node@v4 - # with: - # node-version: "22" - - name: Cache node modules uses: actions/cache@v4 with: @@ -49,10 +44,10 @@ jobs: temp:dist-${{ env.FORGEJO_REF_NAME }} \ --force - # - name: Trigger deployment webhook - # env: - # DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_STAGE_DEPLOY_WEBHOOK }} - # DEPLOY_TOKEN: ${{ secrets.COOLIFY_STAGE_DEPLOY_TOKEN }} - # run: | - # curl -v "$DEPLOY_WEBHOOK" \ - # --header "Authorization: Bearer $DEPLOY_TOKEN" + - name: Trigger deployment webhook + env: + DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_STAGE_DEPLOY_WEBHOOK }} + DEPLOY_TOKEN: ${{ secrets.COOLIFY_STAGE_DEPLOY_TOKEN }} + run: | + curl -v "$DEPLOY_WEBHOOK" \ + --header "Authorization: Bearer $DEPLOY_TOKEN" From dd668438fafa20518ee9f2305f792f78a7b84e70 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 02:26:36 +0100 Subject: [PATCH 23/24] ci ffs --- .forgejo/workflows/playing-around.yaml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index fce522f..9d91e19 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -2,6 +2,8 @@ on: push: branches: - stage + - prod + jobs: build: runs-on: docker @@ -37,7 +39,7 @@ jobs: git rm -rf . git add dist - git commit -m "Update dist" + git commit -m "Update dist for ${{ env.FORGEJO_REF_NAME }}" git push \ "https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@git.workaround.org/${{ github.repository }}.git" \ @@ -46,8 +48,16 @@ jobs: - name: Trigger deployment webhook env: - DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_STAGE_DEPLOY_WEBHOOK }} - DEPLOY_TOKEN: ${{ secrets.COOLIFY_STAGE_DEPLOY_TOKEN }} + DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_DEPLOY_WEBHOOK_ }} + DEPLOY_TOKEN: ${{ secrets.COOLIFY_DEPLOY_TOKEN }} run: | + if [ "${{ env.FORGEJO_REF_NAME }}" = "stage" ]; then + DEPLOY_WEBHOOK="${{ secrets.COOLIFY_DEPLOY_WEBHOOK_STAGE }}" + DEPLOY_TOKEN="${{ secrets.COOLIFY_DEPLOY_TOKEN_STAGE }}" + else + DEPLOY_WEBHOOK="${{ secrets.COOLIFY_DEPLOY_WEBHOOK_PROD }}" + DEPLOY_TOKEN="${{ secrets.COOLIFY_DEPLOY_TOKEN_PROD }}" + fi + curl -v "$DEPLOY_WEBHOOK" \ --header "Authorization: Bearer $DEPLOY_TOKEN" From 137565ca70bba9e8bb2f5fcf21348a97034e4e67 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sat, 27 Dec 2025 13:41:26 +0100 Subject: [PATCH 24/24] ffs --- .forgejo/workflows/playing-around.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/playing-around.yaml b/.forgejo/workflows/playing-around.yaml index 9d91e19..8dff946 100644 --- a/.forgejo/workflows/playing-around.yaml +++ b/.forgejo/workflows/playing-around.yaml @@ -48,7 +48,7 @@ jobs: - name: Trigger deployment webhook env: - DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_DEPLOY_WEBHOOK_ }} + DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_DEPLOY_WEBHOOK }} DEPLOY_TOKEN: ${{ secrets.COOLIFY_DEPLOY_TOKEN }} run: | if [ "${{ env.FORGEJO_REF_NAME }}" = "stage" ]; then