diff --git a/.github/renovate.json b/.github/renovate.json
index d5223615..c3bda816 100644
--- a/.github/renovate.json
+++ b/.github/renovate.json
@@ -15,6 +15,20 @@
"matchDatasources": ["docker"],
"matchUpdateTypes": ["digest"]
},
+ {
+ "groupName": "github-actions-digest",
+ "matchManagers": ["github-actions"],
+ "matchUpdateTypes": ["digest"]
+ },
+ {
+ "matchManagers": ["npm"],
+ "rangeStrategy": "bump"
+ },
+ {
+ "groupName": "npm-non-major",
+ "matchManagers": ["npm"],
+ "matchUpdateTypes": ["patch", "minor", "lockFileMaintenance"]
+ },
{
"matchManagers": ["docker-compose"],
"pinDigests": false
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 89bcf5dd..bd68a0b0 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -30,14 +30,14 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Initialize CodeQL
- uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
+ uses: github/codeql-action/init@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4
with:
languages: ${{ matrix.language }}
- name: Autobuild
- uses: github/codeql-action/autobuild@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
+ uses: github/codeql-action/autobuild@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
+ uses: github/codeql-action/analyze@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4
with:
category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/deploy-development.yml b/.github/workflows/deploy-development.yml
index 66e1c9fd..a445faac 100644
--- a/.github/workflows/deploy-development.yml
+++ b/.github/workflows/deploy-development.yml
@@ -45,14 +45,14 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
- uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4
+ uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4
+ uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7
with:
context: .
platforms: ${{ matrix.arch.platform }}
@@ -106,7 +106,7 @@ jobs:
password: ${{ secrets.CODEBERG_PASS }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4
+ uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4
- name: Docker meta
id: meta
diff --git a/.github/workflows/deploy-edge.yml b/.github/workflows/deploy-edge.yml
index 38eb2245..e3340657 100644
--- a/.github/workflows/deploy-edge.yml
+++ b/.github/workflows/deploy-edge.yml
@@ -54,14 +54,14 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
- uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4
+ uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4
+ uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7
with:
context: .
platforms: ${{ matrix.arch.platform }}
@@ -115,7 +115,7 @@ jobs:
password: ${{ secrets.CODEBERG_PASS }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4
+ uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4
- name: Docker meta
id: meta
diff --git a/.github/workflows/deploy-pr.yml b/.github/workflows/deploy-pr.yml
index 434ad00e..a94eeb26 100644
--- a/.github/workflows/deploy-pr.yml
+++ b/.github/workflows/deploy-pr.yml
@@ -32,10 +32,10 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Set up QEMU
- uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4
+ uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4
+ uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4
- name: Login to GitHub Container Registry
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
@@ -45,7 +45,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker Image
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7
with:
context: .
push: false
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 46fccf18..f3e7e824 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -53,14 +53,14 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
- uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4
+ uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4
+ uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7
with:
context: .
platforms: ${{ matrix.arch.platform }}
@@ -116,7 +116,7 @@ jobs:
password: ${{ secrets.CODEBERG_PASS }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4
+ uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4
- name: Docker meta
id: meta
diff --git a/.node-version b/.node-version
new file mode 100644
index 00000000..941ea486
--- /dev/null
+++ b/.node-version
@@ -0,0 +1 @@
+lts/krypton
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 4ef19e7e..010720f7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM docker.io/library/node:krypton-alpine@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43 AS build
+FROM docker.io/library/node:krypton-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 AS build
WORKDIR /app
# update corepack
@@ -17,7 +17,7 @@ RUN pnpm build
# renovate: datasource=github-releases depName=amnezia-vpn/amneziawg-tools
ARG AWGTOOLS_BRANCH=v3.1.20260812
# renovate: datasource=github-tags depName=amnezia-vpn/amneziawg-go
-ARG AWGGO_BRANCH=v3.1.20260814
+ARG AWGGO_BRANCH=v3.1.20260828
# Build amneziawg-tools
RUN apk add linux-headers build-base go git && \
@@ -29,13 +29,13 @@ RUN apk add linux-headers build-base go git && \
make && \
sed -i 's|\[\[ $proto == -4 \]\] && cmd sysctl -q net\.ipv4\.conf\.all\.src_valid_mark=1|[[ $proto == -4 ]] \&\& [[ $(sysctl -n net.ipv4.conf.all.src_valid_mark) != 1 ]] \&\& cmd sysctl -q net.ipv4.conf.all.src_valid_mark=1|' ./wg-quick/linux.bash
-FROM docker.io/library/node:krypton-alpine@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43 AS build-libsql
+FROM docker.io/library/node:krypton-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81 AS build-libsql
WORKDIR /app
RUN npm install --no-save --omit=dev libsql
# Copy build result to a new image.
# This saves a lot of disk space.
-FROM docker.io/library/node:krypton-alpine@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43
+FROM docker.io/library/node:krypton-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81
WORKDIR /app
HEALTHCHECK --interval=1m --timeout=5s --retries=3 CMD /usr/bin/timeout 5s /bin/sh -c "/usr/bin/wg show | /bin/grep -q interface || exit 1"
diff --git a/Dockerfile.dev b/Dockerfile.dev
index d8377eb6..2a9127b8 100644
--- a/Dockerfile.dev
+++ b/Dockerfile.dev
@@ -1,4 +1,4 @@
-FROM docker.io/library/node:krypton-alpine@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43
+FROM docker.io/library/node:krypton-alpine@sha256:50c8e8ca1d27439048670df5883f32d57cf81cff6233222c893fd0d9884cbd81
WORKDIR /app
ENV PNPM_HOME="/pnpm"
diff --git a/docs/content/advanced/config/amnezia.md b/docs/content/advanced/config/amnezia.md
index 3e8d4d0a..46fbeb48 100644
--- a/docs/content/advanced/config/amnezia.md
+++ b/docs/content/advanced/config/amnezia.md
@@ -39,14 +39,33 @@ If a parameter is not set, it will not be added to the configuration. If all Amn
### Parameter Compatibility Table
-| Parameter | Can differ between server and client | Configurable on server | Configurable on client |
-| --------- | ------------------------------------ | ---------------------- | ------------------------ |
-| Jc | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
-| Jmin | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
-| Jmax | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
-| S1-S4 | :x: No, must match | :white_check_mark: | :x: (copied from server) |
-| H1-H4 | :x: No, must match | :white_check_mark: | :x: (copied from server) |
-| I1-I5 | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| Parameter | Can differ between server and client | Configurable on server | Configurable on client |
+| ---------------------- | ------------------------------------ | ---------------------- | ------------------------ |
+| Jc | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| Jmin | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| Jmax | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| S1-S4 | :x: No, must match | :white_check_mark: | :x: (copied from server) |
+| H1-H4 | :x: No, must match | :white_check_mark: | :x: (copied from server) |
+| I1-I5 | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| HeaderProtectionKey | :x: No, must match | :white_check_mark: | :x: (copied from server) |
+| RandomTrailers | :x: No, must match | :white_check_mark: | :x: (copied from server) |
+| ContentPaddingAddition | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| RekeyAfterTime | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| RekeyTimeout | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| RejectAfterTime | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| KeepaliveTimeout | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| MaxHandshakeAttempts | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+| DisableCookies | :white_check_mark: Yes | :white_check_mark: | :white_check_mark: |
+
+### AmneziaWG 3.0 and 3.1 Parameters
+
+These parameters require AmneziaWG 3.0 or newer on both ends of the tunnel. Older clients reject configurations that contain them, so leave them unset if you still support AmneziaWG 2.x clients.
+
+`HeaderProtectionKey` is a 32 byte key in base64, in the same format as a WireGuard key. It encrypts the packet headers, so it has to be identical on both sides and is copied into every client configuration. Header protection uses the first 12 bytes of each junk prefix as its nonce, which means **S1, S2, S3 and S4 all have to be set to at least 12** while a key is configured.
+
+`ContentPaddingAddition`, `RekeyAfterTime`, `RekeyTimeout`, `RejectAfterTime`, `KeepaliveTimeout` and `MaxHandshakeAttempts` accept either a single number or an inclusive range written as `lower-upper` (for example `30-90`, both bounds between 0 and 65535). When a range is given, AmneziaWG picks a random value from it, which removes the fixed timings a DPI system could otherwise fingerprint.
+
+`RandomTrailers` appends a random amount of bytes to handshake packets and has to be enabled on both sides. `DisableCookies` stops this side from answering handshakes with cookie messages when it is under load and only affects the peer it is set on.
## Client Applications
diff --git a/docs/content/advanced/config/optional-config.md b/docs/content/advanced/config/optional-config.md
index 1cafa65e..518a73eb 100644
--- a/docs/content/advanced/config/optional-config.md
+++ b/docs/content/advanced/config/optional-config.md
@@ -11,7 +11,18 @@ You can set these environment variables to configure the container. They are not
| `INSECURE` | `false` | `true` | If access over http is allowed |
| `DISABLE_IPV6` | `false` | `true` | If IPv6 support should be disabled |
| `DISABLE_VERSION_CHECK` | `false` | `true` | If wg-easy should check for new updates |
-| `TRUSTED_PROXIES` | | `172.18.0.2,fd00:1234::/64` | Proxy IP addresses or CIDRs allowed to forward the request host |
+| `TRUSTED_PROXIES` | | `172.18.0.2,fd00:1234::/64` | Proxy IP addresses or CIDRs allowed to forward request metadata |
+| `WG_INTERFACE` | `wg0` | `wg1` | Name of the WireGuard interface |
+
+/// note | IPv6 Caveats
+
+Disabling IPv6 will disable the creation of the default IPv6 firewall rules and won't add a IPv6 address to the interface and clients.
+
+You will however still see a IPv6 address in the Web UI, but it won't be used.
+
+This option can be removed in the future, as more devices support IPv6.
+
+///
## Trusted Proxies
@@ -25,17 +36,18 @@ environment:
```
Only add the source addresses used by your reverse proxy. wg-easy only uses
-`X-Forwarded-Host` when the request comes from one of these addresses. The
+`X-Forwarded-Host` and `X-Forwarded-For` when the request comes from one of
+these addresses. The forwarded client address is included in security logs so
+that tools such as CrowdSec can identify failed authentication attempts. The
request protocol remains controlled by `INSECURE`. Invalid addresses prevent
wg-easy from starting so that configuration errors are not silently ignored.
Restart the container after changing this setting.
-/// note | IPv6 Caveats
+## WireGuard Interface
-Disabling IPv6 will disable the creation of the default IPv6 firewall rules and won't add a IPv6 address to the interface and clients.
+Set `WG_INTERFACE` to specify a custom interface name, useful if you are running multiple wg-easy instances on the same host with `network_mode: host`:
-You will however still see a IPv6 address in the Web UI, but it won't be used.
-
-This option can be removed in the future, as more devices support IPv6.
-
-///
+```yaml
+environment:
+ - WG_INTERFACE=wg1
+```
diff --git a/docs/content/examples/tutorials/adguard.md b/docs/content/examples/tutorials/adguard.md
index e65054ae..1e8906b3 100644
--- a/docs/content/examples/tutorials/adguard.md
+++ b/docs/content/examples/tutorials/adguard.md
@@ -127,13 +127,13 @@ networks:
**_PostUp_**
```shell
- iptables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; iptables -t nat -A PREROUTING -i wg0 -p udp --dport 53 -j DNAT --to-destination 10.42.42.43; iptables -t nat -A PREROUTING -i wg0 -p tcp --dport 53 -j DNAT --to-destination 10.42.42.43; ip6tables -t nat -A PREROUTING -i wg0 -p udp --dport 53 -j DNAT --to-destination fdcc:ad94:bacf:61a3::2b; ip6tables -t nat -A PREROUTING -i wg0 -p tcp --dport 53 -j DNAT --to-destination fdcc:ad94:bacf:61a3::2b; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s {{ipv4Cidr}} -o {{device}} -j MASQUERADE; ip6tables -t nat -A POSTROUTING -s {{ipv6Cidr}} -o {{device}} -j MASQUERADE;
+ iptables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; iptables -t nat -A PREROUTING -i {{interface}} -p udp --dport 53 -j DNAT --to-destination 10.42.42.43; iptables -t nat -A PREROUTING -i {{interface}} -p tcp --dport 53 -j DNAT --to-destination 10.42.42.43; ip6tables -t nat -A PREROUTING -i {{interface}} -p udp --dport 53 -j DNAT --to-destination fdcc:ad94:bacf:61a3::2b; ip6tables -t nat -A PREROUTING -i {{interface}} -p tcp --dport 53 -j DNAT --to-destination fdcc:ad94:bacf:61a3::2b; iptables -A FORWARD -i {{interface}} -j ACCEPT; iptables -A FORWARD -o {{interface}} -j ACCEPT; ip6tables -A FORWARD -i {{interface}} -j ACCEPT; ip6tables -A FORWARD -o {{interface}} -j ACCEPT; iptables -t nat -A POSTROUTING -s {{ipv4Cidr}} -o {{device}} -j MASQUERADE; ip6tables -t nat -A POSTROUTING -s {{ipv6Cidr}} -o {{device}} -j MASQUERADE;
```
**_PostDown_**
```shell
- iptables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT || true; ip6tables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT || true; iptables -t nat -D PREROUTING -i wg0 -p udp --dport 53 -j DNAT --to-destination 10.42.42.43 || true; iptables -t nat -D PREROUTING -i wg0 -p tcp --dport 53 -j DNAT --to-destination 10.42.42.43 || true; ip6tables -t nat -D PREROUTING -i wg0 -p udp --dport 53 -j DNAT --to-destination fdcc:ad94:bacf:61a3::2b || true; ip6tables -t nat -D PREROUTING -i wg0 -p tcp --dport 53 -j DNAT --to-destination fdcc:ad94:bacf:61a3::2b || true; iptables -D FORWARD -i wg0 -j ACCEPT || true; iptables -D FORWARD -o wg0 -j ACCEPT || true; ip6tables -D FORWARD -i wg0 -j ACCEPT || true; ip6tables -D FORWARD -o wg0 -j ACCEPT || true; iptables -t nat -D POSTROUTING -s {{ipv4Cidr}} -o {{device}} -j MASQUERADE || true; ip6tables -t nat -D POSTROUTING -s {{ipv6Cidr}} -o {{device}} -j MASQUERADE || true;
+ iptables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT || true; ip6tables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT || true; iptables -t nat -D PREROUTING -i {{interface}} -p udp --dport 53 -j DNAT --to-destination 10.42.42.43 || true; iptables -t nat -D PREROUTING -i {{interface}} -p tcp --dport 53 -j DNAT --to-destination 10.42.42.43 || true; ip6tables -t nat -D PREROUTING -i {{interface}} -p udp --dport 53 -j DNAT --to-destination fdcc:ad94:bacf:61a3::2b || true; ip6tables -t nat -D PREROUTING -i {{interface}} -p tcp --dport 53 -j DNAT --to-destination fdcc:ad94:bacf:61a3::2b || true; iptables -D FORWARD -i {{interface}} -j ACCEPT || true; iptables -D FORWARD -o {{interface}} -j ACCEPT || true; ip6tables -D FORWARD -i {{interface}} -j ACCEPT || true; ip6tables -D FORWARD -o {{interface}} -j ACCEPT || true; iptables -t nat -D POSTROUTING -s {{ipv4Cidr}} -o {{device}} -j MASQUERADE || true; ip6tables -t nat -D POSTROUTING -s {{ipv6Cidr}} -o {{device}} -j MASQUERADE || true;
```
3. Restart `wg-easy` to apply changes:
diff --git a/docs/content/examples/tutorials/caddy.md b/docs/content/examples/tutorials/caddy.md
index c9373d92..d9d123b0 100644
--- a/docs/content/examples/tutorials/caddy.md
+++ b/docs/content/examples/tutorials/caddy.md
@@ -101,3 +101,17 @@ sudo docker compose up -d
```
You can now access `wg-easy` at [https://wg-easy.example.com](https://wg-easy.example.com) and start the setup.
+
+## Rate Limiting
+
+wg-easy does not implement rate limiting. Configure Caddy, a Caddy rate
+limiting module, or an external security tool such as CrowdSec to limit requests
+to these paths:
+
+- `/api/auth/password`
+- `/api/auth/verify-2fa`
+- `/cnf/*`
+
+Choose limits appropriate for your deployment. When using wg-easy security logs
+for detection, configure [`TRUSTED_PROXIES`](../../advanced/config/optional-config.md#trusted-proxies)
+so that logged events contain the original client IP address.
diff --git a/docs/content/examples/tutorials/podman-nft.md b/docs/content/examples/tutorials/podman-nft.md
index 31141a61..071f47f5 100644
--- a/docs/content/examples/tutorials/podman-nft.md
+++ b/docs/content/examples/tutorials/podman-nft.md
@@ -88,13 +88,13 @@ In the Admin Panel of your WireGuard server, go to the `Hooks` tab and add the f
1. PostUp
```shell
- nft add table inet wg_table; nft add chain inet wg_table prerouting { type nat hook prerouting priority 100 \; }; nft add chain inet wg_table postrouting { type nat hook postrouting priority 100 \; }; nft add rule inet wg_table postrouting ip saddr {{ipv4Cidr}} oifname {{device}} masquerade; nft add rule inet wg_table postrouting ip6 saddr {{ipv6Cidr}} oifname {{device}} masquerade; nft add chain inet wg_table input { type filter hook input priority 0 \; policy accept \; }; nft add rule inet wg_table input udp dport {{port}} accept; nft add rule inet wg_table input tcp dport {{uiPort}} accept; nft add chain inet wg_table forward { type filter hook forward priority 0 \; policy accept \; }; nft add rule inet wg_table forward iifname "wg0" accept; nft add rule inet wg_table forward oifname "wg0" accept;
+ nft add table inet wg_table_{{interface}}; nft add chain inet wg_table_{{interface}} prerouting { type nat hook prerouting priority 100 \; }; nft add chain inet wg_table_{{interface}} postrouting { type nat hook postrouting priority 100 \; }; nft add rule inet wg_table_{{interface}} postrouting ip saddr {{ipv4Cidr}} oifname {{device}} masquerade; nft add rule inet wg_table_{{interface}} postrouting ip6 saddr {{ipv6Cidr}} oifname {{device}} masquerade; nft add chain inet wg_table_{{interface}} input { type filter hook input priority 0 \; policy accept \; }; nft add rule inet wg_table_{{interface}} input udp dport {{port}} accept; nft add rule inet wg_table_{{interface}} input tcp dport {{uiPort}} accept; nft add chain inet wg_table_{{interface}} forward { type filter hook forward priority 0 \; policy accept \; }; nft add rule inet wg_table_{{interface}} forward iifname "{{interface}}" accept; nft add rule inet wg_table_{{interface}} forward oifname "{{interface}}" accept;
```
2. PostDown
```shell
- nft delete table inet wg_table
+ nft delete table inet wg_table_{{interface}}
```
If you don't have iptables loaded on your server, you could see many errors in the logs or in the UI. You can ignore them.
diff --git a/docs/content/examples/tutorials/routed.md b/docs/content/examples/tutorials/routed.md
index 2afdd9c9..5c406577 100644
--- a/docs/content/examples/tutorials/routed.md
+++ b/docs/content/examples/tutorials/routed.md
@@ -86,13 +86,13 @@ Then go to Admin → Hooks and add:
PostUp
```shell
-iptables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; ip6tables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -A FORWARD -o wg0 -j ACCEPT
+iptables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; iptables -A FORWARD -i {{interface}} -j ACCEPT; iptables -A FORWARD -o {{interface}} -j ACCEPT; ip6tables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -A FORWARD -i {{interface}} -j ACCEPT; ip6tables -A FORWARD -o {{interface}} -j ACCEPT
```
PostDown
```shell
-iptables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; ip6tables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -D FORWARD -o wg0 -j ACCEPT
+iptables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT; iptables -D FORWARD -i {{interface}} -j ACCEPT; iptables -D FORWARD -o {{interface}} -j ACCEPT; ip6tables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -D FORWARD -i {{interface}} -j ACCEPT; ip6tables -D FORWARD -o {{interface}} -j ACCEPT
```
/// warning | Important: When using nftables use the following hooks instead.
@@ -100,13 +100,13 @@ iptables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT; iptables -D FORWARD
PostUp
```shell
-nft add chain ip filter WG_EASY; nft add rule ip filter DOCKER-USER jump WG_EASY; nft add rule ip filter WG_EASY iifname {{device}} accept; nft add rule ip filter WG_EASY oifname {{device}} accept; nft add chain ip6 filter WG_EASY; nft add rule ip6 filter DOCKER-USER jump WG_EASY; nft add rule ip6 filter WG_EASY iifname {{device}} accept; nft add rule ip6 filter WG_EASY oifname {{device}} accept;
+nft add chain ip filter WG_EASY_{{interface}}; nft add rule ip filter DOCKER-USER jump WG_EASY_{{interface}}; nft add rule ip filter WG_EASY_{{interface}} iifname {{device}} accept; nft add rule ip filter WG_EASY_{{interface}} oifname {{device}} accept; nft add chain ip6 filter WG_EASY_{{interface}}; nft add rule ip6 filter DOCKER-USER jump WG_EASY_{{interface}}; nft add rule ip6 filter WG_EASY_{{interface}} iifname {{device}} accept; nft add rule ip6 filter WG_EASY_{{interface}} oifname {{device}} accept;
```
PostDown
```shell
-nft delete rule ip filter DOCKER-USER handle $(nft -a list chain ip filter DOCKER-USER | awk '/jump WG_EASY/ {print $NF}'); nft flush chain ip filter WG_EASY; nft delete chain ip filter WG_EASY; nft delete rule ip6 filter DOCKER-USER handle $(nft -a list chain ip6 filter DOCKER-USER | awk '/jump WG_EASY/ {print $NF}'); nft flush chain ip6 filter WG_EASY; nft delete chain ip6 filter WG_EASY
+nft delete rule ip filter DOCKER-USER handle $(nft -a list chain ip filter DOCKER-USER | awk '/jump WG_EASY_{{interface}}/ {print $NF}'); nft flush chain ip filter WG_EASY_{{interface}}; nft delete chain ip filter WG_EASY_{{interface}}; nft delete rule ip6 filter DOCKER-USER handle $(nft -a list chain ip6 filter DOCKER-USER | awk '/jump WG_EASY_{{interface}}/ {print $NF}'); nft flush chain ip6 filter WG_EASY_{{interface}}; nft delete chain ip6 filter WG_EASY_{{interface}}
```
///
diff --git a/docs/content/examples/tutorials/traefik.md b/docs/content/examples/tutorials/traefik.md
index 1760f4f5..4369581a 100644
--- a/docs/content/examples/tutorials/traefik.md
+++ b/docs/content/examples/tutorials/traefik.md
@@ -22,7 +22,7 @@ File: `/etc/docker/containers/traefik/docker-compose.yml`
```yaml
services:
traefik:
- image: traefik:3.3
+ image: traefik:3.7
container_name: traefik
restart: unless-stopped
ports:
@@ -184,3 +184,36 @@ sudo docker compose up -d
```
You can now access `wg-easy` at `https://wg-easy.$example.com$` and start the setup.
+
+## Rate Limiting
+
+wg-easy does not implement rate limiting. Configure a Traefik rate limit
+middleware or an external security tool such as CrowdSec to limit requests to
+these paths:
+
+- `/api/auth/password`
+- `/api/auth/verify-2fa`
+- `/cnf/*`
+
+Choose limits appropriate for your deployment. When using wg-easy security logs
+for detection, configure [`TRUSTED_PROXIES`](../../advanced/config/optional-config.md#trusted-proxies)
+so that logged events contain the original client IP address.
+
+For example, add these labels to the `wg-easy` service to allow an average of
+five requests per minute per client IP, with a burst of five requests:
+
+```yaml
+labels:
+ - 'traefik.http.routers.wg-easy-rate-limit.rule=Host(`wg-easy.$example.com$`) && (Path(`/api/auth/password`) || Path(`/api/auth/verify-2fa`) || PathPrefix(`/cnf/`))'
+ - 'traefik.http.routers.wg-easy-rate-limit.entrypoints=websecure'
+ - 'traefik.http.routers.wg-easy-rate-limit.service=wg-easy'
+ - 'traefik.http.routers.wg-easy-rate-limit.middlewares=wg-easy-rate-limit'
+ - 'traefik.http.routers.wg-easy-rate-limit.priority=100'
+ - 'traefik.http.middlewares.wg-easy-rate-limit.ratelimit.average=5'
+ - 'traefik.http.middlewares.wg-easy-rate-limit.ratelimit.period=1m'
+ - 'traefik.http.middlewares.wg-easy-rate-limit.ratelimit.burst=5'
+```
+
+The dedicated router applies the [rate limit middleware](https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/http/middlewares/ratelimit/)
+only to the sensitive paths. Adjust `average`, `period`, and `burst` for your
+deployment.
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 57dd73aa..eccad788 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,2 +1,2 @@
-zensical==0.0.57
+zensical==0.0.62
git+https://github.com/squidfunk/mike.git
diff --git a/package.json b/package.json
index f6eb94c4..529fd28a 100644
--- a/package.json
+++ b/package.json
@@ -13,5 +13,5 @@
"devDependencies": {
"prettier": "^3.9.6"
},
- "packageManager": "pnpm@11.22.0"
+ "packageManager": "pnpm@12.4.1"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 66fd4317..f7eacc01 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,3 +1,161 @@
+---
+lockfileVersion: '9.0'
+
+importers:
+
+ .:
+ configDependencies: {}
+ packageManagerDependencies:
+ pnpm:
+ specifier: 12.4.1
+ version: 12.4.1
+
+packages:
+
+ '@pnpm/exe.android-arm64@12.4.1':
+ resolution: {integrity: sha512-/HwsqXMSmlOfgtV9+O0ratzjV6Vd/8n1hh4rGHpCGmDURvt52MwZxdbhyxP4K03ZfvgSDvotFPr8O+RzE5Eu8A==}
+ cpu: [arm64]
+ os: [android]
+
+ '@pnpm/exe.android-x64@12.4.1':
+ resolution: {integrity: sha512-+l74Qb4c2YjOzNKHXJLg+1wr8xHM1ckkUhnU5KRUK9TJqiiczt6yeTZqqzHIlJ8i6pAoj5V0OJevDRwnQKLgrQ==}
+ cpu: [x64]
+ os: [android]
+
+ '@pnpm/exe.darwin-arm64@12.4.1':
+ resolution: {integrity: sha512-6rkZkT3iGfaxknUdGHraqSWFvTa6N0ajAHluv9Ax0GRWs0sIcGNiFhDopv6xSZCsJZmG483aNS/b6UEDy3blfw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@pnpm/exe.darwin-x64@12.4.1':
+ resolution: {integrity: sha512-Vb1CHlR88HghC1qUxjxjs82zQSXnXacPD+btG2CmG8Q/hBU7Q0/b2YWJKSQqZXicunV5khFtfTlAwJddV9RkYA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@pnpm/exe.freebsd-x64@12.4.1':
+ resolution: {integrity: sha512-iT3iHz3Nl0Sxxj7UPOtZ/aQ81AFsQhjoeWMAlPkSRO04gsgDGAXv3UYxOFaesMWsfNxaGn0A+CITbuCHFF66FA==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@pnpm/exe.linux-arm64-musl@12.4.1':
+ resolution: {integrity: sha512-aBooZfNXM5f+OGUgCAMFWpE/kAhsWfvmqIyMtHy6zl3aNxyInWrcY/Saln/UElzo7lZWMC0Yktroxd/2J26lNQ==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-arm64@12.4.1':
+ resolution: {integrity: sha512-TlOdacTTP09BgcMvwWBFRsu8VAjfwqwnslBj+XSq1JFM3ck4f3k+1O/747EuctxZxs3/o785b6Q3s7Pd92Ptsg==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-ppc64@12.4.1':
+ resolution: {integrity: sha512-r/ab/MlIBo75oizUP5ITiziCCrnXz4SJwfErLQ+603AshB+Yq7xTMCoMtzTSCAMu6aaymIKkAFtZvd2J75Wq0w==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-riscv64@12.4.1':
+ resolution: {integrity: sha512-C/D1QWdKMiB8+wv/spl1rGITFUuqC+aI/fb6h8NB5sqxsOaGXeYc/g891oCuzggHn6SODk9p+I09hI76x/cMNw==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-s390x@12.4.1':
+ resolution: {integrity: sha512-nxz5zD4yXt94uzbStDk0QTPKW+aE92hH1b5tFXK9ctB1HE9Xcq1vjTiA2LsZMFC6p4gdu5OwQeFqYNAVGa6QlA==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-x64-musl@12.4.1':
+ resolution: {integrity: sha512-5AwgFdGhVUg2kIweYGfxzSLEHiIG77PQhZAkXC3TwofQHsu1Wr+TrV5/rNX2PopFnHRzuE581zoB8F6Wle32yg==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-x64@12.4.1':
+ resolution: {integrity: sha512-FJOZuuuQMhp0oLzBtcKkLXknBI92hfkmSnlKc47vfin4HrmfID5khY2lGekL9tCzk1cpR+HShEw/meFl+nHtzQ==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.win32-arm64@12.4.1':
+ resolution: {integrity: sha512-OO7eKBL9S+xk5hRy+JUUZSNJknGuGe3GEUffsrlC2LbqKF02g+VX1anGIzSbJDvkkdnpJhSlxF5AUz2JzJu2Jw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@pnpm/exe.win32-x64@12.4.1':
+ resolution: {integrity: sha512-x7gJHZgHo6hp354xCYA2NvoFzYJkHwovt2kVsUBK5EmXULLcP51JGMq09CX+5FRFJUZFKoXjLu3mZWmfP7o6PQ==}
+ cpu: [x64]
+ os: [win32]
+
+ pnpm@12.4.1:
+ resolution: {integrity: sha512-LoHjmdc/6DkNqyXgaqeIq3pZCCSNL1o3D4K0gRR6ano2e/gEj5pv22Rg8hpm8FQt7bi5TKLIcjWWdBkgsWVtTA==}
+ engines: {node: '>=18.*'}
+ hasBin: true
+
+snapshots:
+
+ '@pnpm/exe.android-arm64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.android-x64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.darwin-arm64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.darwin-x64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.freebsd-x64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-arm64-musl@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-arm64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-ppc64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-riscv64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-s390x@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-x64-musl@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-x64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.win32-arm64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.win32-x64@12.4.1':
+ optional: true
+
+ pnpm@12.4.1:
+ optionalDependencies:
+ '@pnpm/exe.android-arm64': 12.4.1
+ '@pnpm/exe.android-x64': 12.4.1
+ '@pnpm/exe.darwin-arm64': 12.4.1
+ '@pnpm/exe.darwin-x64': 12.4.1
+ '@pnpm/exe.freebsd-x64': 12.4.1
+ '@pnpm/exe.linux-arm64': 12.4.1
+ '@pnpm/exe.linux-arm64-musl': 12.4.1
+ '@pnpm/exe.linux-ppc64': 12.4.1
+ '@pnpm/exe.linux-riscv64': 12.4.1
+ '@pnpm/exe.linux-s390x': 12.4.1
+ '@pnpm/exe.linux-x64': 12.4.1
+ '@pnpm/exe.linux-x64-musl': 12.4.1
+ '@pnpm/exe.win32-arm64': 12.4.1
+ '@pnpm/exe.win32-x64': 12.4.1
+
+---
lockfileVersion: '9.0'
settings:
diff --git a/src/.nuxtrc b/src/.nuxtrc
index 0e6b68e6..15c8165f 100644
--- a/src/.nuxtrc
+++ b/src/.nuxtrc
@@ -1 +1 @@
-setups.@nuxt/test-utils="4.1.0"
\ No newline at end of file
+setups.@nuxt/test-utils="4.3.2"
\ No newline at end of file
diff --git a/src/app/components/Form/NullSwitchField.vue b/src/app/components/Form/NullSwitchField.vue
new file mode 100644
index 00000000..6291105e
--- /dev/null
+++ b/src/app/components/Form/NullSwitchField.vue
@@ -0,0 +1,48 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+ {{ $t('form.nullNotSet') }}
+
+
+ {{ $t('form.set') }}
+
+
+
+
+
+ {{ $t('form.unset') }}
+
+
+
+
+
+
diff --git a/src/app/pages/admin/interface.vue b/src/app/pages/admin/interface.vue
index 12d839b0..df3af779 100644
--- a/src/app/pages/admin/interface.vue
+++ b/src/app/pages/admin/interface.vue
@@ -129,6 +129,63 @@
:label="$t('awg.i5Label')"
:description="$t('awg.i5Description')"
/>
+
+
+
{{ $t('awg.rangeNote') }}
+
+
+
+
+
+
+
+
+
{{ $t('admin.interface.firewall') }}
diff --git a/src/app/pages/clients/[id].vue b/src/app/pages/clients/[id].vue
index 6694c284..380cca16 100644
--- a/src/app/pages/clients/[id].vue
+++ b/src/app/pages/clients/[id].vue
@@ -144,6 +144,53 @@
:label="$t('awg.i5Label')"
:description="$t('awg.i5Description')"
/>
+
+
+ {{ $t('awg.rangeNote') }}
+
+
+
+
+
+
+
+
+
diff --git a/src/cli/clients/qr.ts b/src/cli/clients/qr.ts
index f0b7a33d..eb00fa92 100644
--- a/src/cli/clients/qr.ts
+++ b/src/cli/clients/qr.ts
@@ -3,6 +3,7 @@ import { consola } from 'consola';
import { eq } from 'drizzle-orm';
import { db, schema } from '#cli/db';
+import { WG_ENV } from '#server/utils/config';
import { wg } from '#server/utils/wgHelper';
import { encodeQRCodeTerm } from '#server/utils/qr';
@@ -34,7 +35,7 @@ export default defineCommand({
consola.info('Generating QR code for client...');
const wgInterface = await db.query.wgInterface.findFirst({
- where: eq(schema.wgInterface.name, 'wg0'),
+ where: eq(schema.wgInterface.name, WG_ENV.WG_INTERFACE),
});
if (!wgInterface) {
consola.error('WireGuard interface not found');
@@ -42,7 +43,7 @@ export default defineCommand({
}
const userConfig = await db.query.userConfig.findFirst({
- where: eq(schema.userConfig.id, 'wg0'),
+ where: eq(schema.userConfig.id, wgInterface.name),
});
if (!userConfig) {
consola.error('User config not found');
diff --git a/src/i18n/i18n.config.ts b/src/i18n/i18n.config.ts
index b6ee1d47..e8d054a3 100644
--- a/src/i18n/i18n.config.ts
+++ b/src/i18n/i18n.config.ts
@@ -22,6 +22,8 @@ import hi from './locales/hi.json';
import gl from './locales/gl.json';
import cs from './locales/cs.json';
import vi from './locales/vi.json';
+import sv from './locales/sv.json';
+import az from './locales/az.json';
export default defineI18nConfig(() => ({
legacy: false,
@@ -51,5 +53,7 @@ export default defineI18nConfig(() => ({
gl,
cs,
vi,
+ sv,
+ az,
},
}));
diff --git a/src/i18n/locales/az.json b/src/i18n/locales/az.json
new file mode 100644
index 00000000..f32c2b44
--- /dev/null
+++ b/src/i18n/locales/az.json
@@ -0,0 +1,334 @@
+{
+ "pages": {
+ "me": "Hesab",
+ "clients": "Müştərilər",
+ "admin": {
+ "panel": "İdarəetmə paneli",
+ "general": "Ümumi",
+ "config": "Konfiqurasiya",
+ "interface": "İnterfeys",
+ "hooks": "Hook-lar"
+ }
+ },
+ "user": {
+ "email": "E-poçt"
+ },
+ "me": {
+ "currentPassword": "Cari parol",
+ "enable2fa": "İkifaktorlu doğrulamanı aktivləşdir",
+ "enable2faDesc": "Doğrulama tətbiqinizlə QR kodu skan edin və ya açarı əl ilə daxil edin.",
+ "2faKey": "TOTP açarı",
+ "2faCodeDesc": "Doğrulama tətbiqinizdəki kodu daxil edin.",
+ "disable2fa": "İkifaktorlu doğrulamanı söndür",
+ "disable2faDesc": "İkifaktorlu doğrulamanı söndürmək üçün parolunuzu daxil edin.",
+ "linkOauth": "Hesabını xarici provayderlə əlaqələndir",
+ "unlinkOauth": "Əlaqəni kəs",
+ "linkedWith": "{provider} ilə əlaqələndirilib",
+ "providerDisabled": "Hazırda hesabınızla əlaqələndirilmiş provayder aktiv deyil"
+ },
+ "general": {
+ "name": "Ad",
+ "username": "İstifadəçi adı",
+ "password": "Parol",
+ "newPassword": "Yeni parol",
+ "updatePassword": "Parolu yenilə",
+ "addPassword": "Parol əlavə et",
+ "mtu": "MTU",
+ "allowedIps": "İcazə verilən IP-lər",
+ "dns": "DNS",
+ "persistentKeepalive": "Daimi keepalive",
+ "logout": "Çıxış",
+ "continue": "Davam et",
+ "host": "Host",
+ "port": "Port",
+ "yes": "Bəli",
+ "no": "Xeyr",
+ "confirmPassword": "Parolu təsdiqlə",
+ "loading": "Yüklənir...",
+ "2fa": "İkifaktorlu doğrulama",
+ "2faCode": "TOTP kodu",
+ "externalAuth": "Xarici doğrulama"
+ },
+ "setup": {
+ "welcome": "wg-easy proqramının ilkin quraşdırılmasına xoş gəlmisiniz",
+ "welcomeDesc": "İstənilən Linux hostunda WireGuard quraşdırmağın və idarə etməyin ən asan yolunu tapmısınız",
+ "existingSetup": "Mövcud quraşdırmanız varmı?",
+ "createAdminDesc": "Əvvəlcə inzibatçı üçün istifadəçi adı və güclü, təhlükəsiz parol daxil edin. Bu məlumatlar idarəetmə panelinizə daxil olmaq üçün istifadə ediləcək.",
+ "setupConfigDesc": "Host və port məlumatlarını daxil edin. Bu məlumatlar müştərilərin cihazlarında WireGuard quraşdırılarkən müştəri konfiqurasiyası üçün istifadə ediləcək.",
+ "setupMigrationDesc": "Əvvəlki wg-easy versiyasındakı məlumatlarınızı yeni quraşdırmaya köçürmək istəyirsinizsə, ehtiyat nüsxə faylını təqdim edin.",
+ "upload": "Yüklə",
+ "migration": "Ehtiyat nüsxəni bərpa et:",
+ "createAccount": "Hesab yarat",
+ "successful": "Quraşdırma uğurla tamamlandı",
+ "hostDesc": "Müştərilərin qoşulacağı ictimai host adı",
+ "portDesc": "Müştərilərin qoşulacağı və WireGuard-ın dinləyəcəyi ictimai UDP portu"
+ },
+ "update": {
+ "updateAvailable": "Yeniləmə mövcuddur!",
+ "update": "Yenilə"
+ },
+ "theme": {
+ "dark": "Tünd mövzu",
+ "light": "Açıq mövzu",
+ "system": "Sistem mövzusu"
+ },
+ "layout": {
+ "toggleCharts": "Qrafikləri göstər/gizlət",
+ "donate": "İanə et"
+ },
+ "login": {
+ "signIn": "Daxil ol",
+ "signInWith": "{provider} ilə daxil ol",
+ "or": "və ya",
+ "rememberMe": "Məni xatırla",
+ "rememberMeDesc": "Brauzeri bağladıqdan sonra da hesabınızda qalın",
+ "insecure": "Təhlükəsiz olmayan qoşulma ilə daxil ola bilməzsiniz. HTTPS istifadə edin.",
+ "2faRequired": "İkifaktorlu doğrulama tələb olunur",
+ "2faWrong": "İkifaktorlu doğrulama kodu yanlışdır",
+ "loginExpired": "Giriş müddəti bitib. Yenidən cəhd edin"
+ },
+ "client": {
+ "empty": "Hələ müştəri yoxdur.",
+ "newShort": "Yeni",
+ "sort": "Sırala",
+ "create": "Müştəri yarat",
+ "created": "Müştəri yaradıldı",
+ "new": "Yeni müştəri",
+ "name": "Ad",
+ "expireDate": "Bitmə tarixi",
+ "expireDateDesc": "Müştərinin söndürüləcəyi tarix. Daimi olması üçün boş saxlayın",
+ "delete": "Sil",
+ "deleteClient": "Müştərini sil",
+ "deleteDialog": "{name} adlı müştərini silmək istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla bilməz.",
+ "enabled": "Aktivdir",
+ "address": "Ünvan",
+ "serverAllowedIps": "Serverdə icazə verilən IP-lər",
+ "otlDesc": "Qısa birdəfəlik keçid yarat",
+ "permanent": "Daimi",
+ "createdOn": "Yaradılma tarixi: {date}",
+ "lastSeen": "Son görünmə tarixi: {date}",
+ "totalDownload": "Cəmi endirilən: {total}",
+ "totalUpload": "Cəmi yüklənən: {total}",
+ "newClient": "Yeni müştəri",
+ "disableClient": "Müştərini söndür",
+ "enableClient": "Müştərini aktivləşdir",
+ "noPrivKey": "Bu müştərinin məlum məxfi açarı yoxdur. Konfiqurasiya yaratmaq mümkün deyil.",
+ "showQR": "QR kodu göstər",
+ "downloadConfig": "Konfiqurasiyanı endir",
+ "allowedIpsDesc": "VPN vasitəsilə yönləndiriləcək IP-lər (ümumi konfiqurasiyanı əvəz edir)",
+ "serverAllowedIpsDesc": "Serverin müştəriyə yönləndirəcəyi IP-lər",
+ "mtuDesc": "VPN tuneli üçün maksimum ötürmə vahidini (paket ölçüsünü) təyin edir",
+ "persistentKeepaliveDesc": "Keepalive paketləri üçün intervalı (saniyə ilə) təyin edir. 0 onu söndürür",
+ "hooks": "Hook-lar",
+ "hooksDescription": "Hook-lar yalnız wg-quick ilə işləyir",
+ "hooksLeaveEmpty": "Yalnız wg-quick üçündür. Əks halda boş saxlayın",
+ "dnsDesc": "Müştərilərin istifadə edəcəyi DNS server (ümumi konfiqurasiyanı əvəz edir)",
+ "notConnected": "Müştəri qoşulmayıb",
+ "endpoint": "Ünvan",
+ "endpointDesc": "WireGuard qoşulmasının qurulduğu müştərinin IP ünvanı",
+ "search": "Müştəriləri axtar...",
+ "config": "Konfiqurasiya",
+ "viewConfig": "Konfiqurasiyaya bax",
+ "firewallIps": "Firewall üçün icazə verilən IP-lər",
+ "firewallIpsDesc": "Bu müştərinin çıxışına icazə verilən təyinat IP-ləri/CIDR-ləri (server tərəfində tətbiq olunur). İcazə verilən IP-lərdən istifadə etmək üçün boş saxlayın. İstəyə bağlı port və protokol filtrləməsi dəstəklənir. Sintaksis üçün sənədlərə baxın.",
+ "downloadPng": "PNG endir",
+ "copyPng": "PNG kopyala"
+ },
+ "dialog": {
+ "change": "Dəyişdir",
+ "cancel": "Ləğv et",
+ "create": "Yarat"
+ },
+ "toast": {
+ "success": "Uğurlu",
+ "saved": "Yadda saxlanıldı",
+ "error": "Xəta",
+ "unknown": "Naməlum xəta. Ətraflı məlumat üçün konsola baxın"
+ },
+ "form": {
+ "actions": "Əməliyyatlar",
+ "save": "Yadda saxla",
+ "revert": "Geri qaytar",
+ "sectionGeneral": "Ümumi",
+ "sectionAdvanced": "Əlavə",
+ "noItems": "Element yoxdur",
+ "nullNoItems": "Element yoxdur. Ümumi konfiqurasiya istifadə olunur",
+ "nullNotSet": "Təyin edilməyib",
+ "set": "Təyin et",
+ "unset": "Təyinatı sil",
+ "add": "Əlavə et"
+ },
+ "admin": {
+ "general": {
+ "sessionTimeout": "Sessiya vaxtı bitməsi",
+ "sessionTimeoutDesc": "Məni xatırla seçimi üçün sessiya müddəti (saniyə)",
+ "metrics": "Metrikalar",
+ "metricsPassword": "Parol",
+ "metricsPasswordDesc": "Metrika ünvanı üçün Bearer parolu (parol və ya argon2 heşi)",
+ "json": "JSON",
+ "jsonDesc": "JSON formatında metrikalar üçün yol",
+ "prometheus": "Prometheus",
+ "prometheusDesc": "Prometheus metrikaları üçün yol"
+ },
+ "config": {
+ "connection": "Qoşulma",
+ "hostDesc": "Müştərilərin qoşulacağı ictimai host adı (konfiqurasiyanı etibarsız edir)",
+ "portDesc": "Müştərilərin qoşulacağı ictimai UDP portu (konfiqurasiyanı etibarsız edir, interfeys portunu da dəyişdirməyiniz lazım ola bilər)",
+ "allowedIpsDesc": "Müştərilərin istifadə edəcəyi icazə verilən IP-lər (ümumi konfiqurasiya)",
+ "dnsDesc": "Müştərilərin istifadə edəcəyi DNS server (ümumi konfiqurasiya)",
+ "mtuDesc": "Müştərilərin istifadə edəcəyi MTU (yalnız yeni müştərilər üçün)",
+ "persistentKeepaliveDesc": "Serverə keepalive paketlərinin göndərilmə intervalı, saniyə ilə. 0 = deaktiv (yalnız yeni müştərilər üçün)",
+ "suggest": "Təklif et",
+ "suggestDesc": "Host sahəsi üçün IP ünvanı və ya host adı seçin"
+ },
+ "interface": {
+ "cidrSuccess": "CIDR dəyişdirildi",
+ "device": "Cihaz",
+ "deviceDesc": "WireGuard trafikinin yönləndiriləcəyi Ethernet cihazı",
+ "routingTable": "Marşrutlaşdırma cədvəli",
+ "routingTableDesc": "WireGuard marşrutları üçün marşrutlaşdırma cədvəli. auto, off və ya cədvəl nömrəsi təyin edin.",
+ "mtuDesc": "WireGuard-ın istifadə edəcəyi MTU",
+ "portDesc": "WireGuard-ın dinləyəcəyi UDP portu (konfiqurasiya portunu da dəyişdirməyiniz lazım ola bilər)",
+ "changeCidr": "CIDR dəyişdir",
+ "restart": "İnterfeysi yenidən başlat",
+ "restartDesc": "WireGuard interfeysini yenidən başladın",
+ "restartWarn": "İnterfeysi yenidən başlatmaq istədiyinizə əminsiniz? Bu, bütün müştərilərin qoşulmasını kəsəcək.",
+ "restartSuccess": "İnterfeys yenidən başladıldı",
+ "firewall": "Trafikin filtrlənməsi",
+ "firewallEnabled": "Hər müştəri üçün firewall aktivləşdir",
+ "firewallEnabledDesc": "iptables vasitəsilə müştəri trafikini müəyyən təyinat IP-ləri ilə məhdudlaşdırın. Aktiv olduqda hər müştəri üçün icazə verilən təyinat ünvanları konfiqurasiya edilə bilər."
+ },
+ "introText": "İdarəetmə panelinə xoş gəlmisiniz.\n\nBurada ümumi parametrləri, konfiqurasiyanı, interfeys parametrlərini və hook-ları idarə edə bilərsiniz.\n\nBaşlamaq üçün yan paneldəki bölmələrdən birini seçin."
+ },
+ "zod": {
+ "generic": {
+ "required": "{field} tələb olunur",
+ "validNumber": "{field} etibarlı ədəd olmalıdır",
+ "validNumberRange": "{field} etibarlı ədəd və ya ədəd aralığı olmalıdır",
+ "validString": "{field} etibarlı mətn sətri olmalıdır",
+ "validBoolean": "{field} etibarlı məntiqi dəyər olmalıdır",
+ "validArray": "{field} etibarlı massiv olmalıdır",
+ "stringMin": "{field} ən azı {min} simvoldan ibarət olmalıdır",
+ "stringMax": "{field} ən çoxu {max} simvoldan ibarət olmalıdır",
+ "numberMin": "{field} ən azı {min} olmalıdır",
+ "numberMax": "{field} ən çoxu {max} olmalıdır"
+ },
+ "client": {
+ "id": "Müştəri ID-si",
+ "name": "Ad",
+ "expiresAt": "Bitmə vaxtı",
+ "address4": "IPv4 ünvanı",
+ "address6": "IPv6 ünvanı",
+ "serverAllowedIps": "Serverdə icazə verilən IP-lər",
+ "firewallIps": "Firewall üçün icazə verilən IP-lər",
+ "firewallIpsInvalid": "Firewall IP qeydi etibarsızdır. Dəstəklənən sintaksis üçün sənədlərə baxın."
+ },
+ "user": {
+ "username": "İstifadəçi adı",
+ "password": "Parol",
+ "remember": "Xatırla",
+ "name": "Ad",
+ "email": "E-poçt",
+ "emailInvalid": "E-poçt ünvanı etibarlı olmalıdır",
+ "passwordMatch": "Parollar uyğun gəlməlidir",
+ "totpEnable": "TOTP aktivləşdir",
+ "totpEnableTrue": "TOTP aktivləşdir seçimi aktiv olmalıdır",
+ "totpCode": "TOTP kodu"
+ },
+ "userConfig": {
+ "host": "Host"
+ },
+ "general": {
+ "sessionTimeout": "Sessiya vaxtı bitməsi",
+ "metricsEnabled": "Metrikalar",
+ "metricsPassword": "Metrika parolu"
+ },
+ "interface": {
+ "cidr": "CIDR",
+ "device": "Cihaz",
+ "cidrValid": "CIDR etibarlı olmalıdır",
+ "routingTable": "Marşrutlaşdırma cədvəli auto, off və ya cədvəl nömrəsi olmalıdır",
+ "headerProtectionJunkSize": "Başlığı qoruma açarı təyin edildikdə S1-S4 saxta məlumat ölçüləri ən azı 12 olmalıdır"
+ },
+ "otl": "Birdəfəlik keçid",
+ "stringMalformed": "Mətn sətrinin formatı yanlışdır",
+ "keyMalformed": "Açar base64 ilə kodlaşdırılmış 32 baytlıq açar olmalıdır",
+ "body": "Sorğunun gövdəsi etibarlı obyekt olmalıdır",
+ "hook": "Hook",
+ "enabled": "Aktivdir",
+ "mtu": "MTU",
+ "port": "Port",
+ "persistentKeepalive": "Daimi keepalive",
+ "address": "IP ünvanı",
+ "dns": "DNS",
+ "allowedIps": "İcazə verilən IP-lər",
+ "file": "Fayl"
+ },
+ "hooks": {
+ "preUp": "PreUp",
+ "postUp": "PostUp",
+ "preDown": "PreDown",
+ "postDown": "PostDown"
+ },
+ "copy": {
+ "notSupported": "Kopyalama dəstəklənmir",
+ "copied": "Kopyalandı!",
+ "failed": "Kopyalama alınmadı",
+ "copy": "Kopyala"
+ },
+ "awg": {
+ "jCLabel": "Saxta paketlərin sayı (Jc)",
+ "jCDescription": "Göndəriləcək saxta paketlərin sayı (1-128, tövsiyə olunur: 4-12)",
+ "jMinLabel": "Saxta paketlərin minimum ölçüsü (Jmin)",
+ "jMinDescription": "Saxta paketlərin minimum ölçüsü (0-1279*, tövsiyə olunur: 8, < Jmax olmalıdır)",
+ "jMaxLabel": "Saxta paketlərin maksimum ölçüsü (Jmax)",
+ "jMaxDescription": "Saxta paketlərin maksimum ölçüsü (1-1280*, tövsiyə olunur: 80, > Jmin olmalıdır)",
+ "s1Label": "Başlatma paketindəki saxta məlumatların ölçüsü (S1)",
+ "s1Description": "Başlatma paketindəki saxta məlumatların ölçüsü (0-1132[1280* - 148 = 1132], tövsiyə olunur: 15-150, S1+56 ≠ S2)",
+ "s2Label": "Cavab paketindəki saxta məlumatların ölçüsü (S2)",
+ "s2Description": "Cavab paketindəki saxta məlumatların ölçüsü (0-1188[1280* - 92 = 1188], tövsiyə olunur: 15-150)",
+ "s3Label": "Kuki cavab paketindəki saxta məlumatların ölçüsü (S3)",
+ "s3Description": "Kuki cavab paketindəki saxta məlumatların ölçüsü",
+ "s4Label": "Nəql paketindəki saxta məlumatların ölçüsü (S4)",
+ "s4Description": "Nəql paketindəki saxta məlumatların ölçüsü",
+ "h1Label": "Başlatma paketinin xüsusi başlığı (H1)",
+ "h1Description": "Başlatma paketinin başlıq dəyəri və ya aralığı (X və ya X-Y, burada X",
+ "i2Label": "Xüsusi saxta paket 2 (I2)",
+ "i2Description": "Protokolu təqlid edən paket, onaltılıq formatda: ",
+ "i3Label": "Xüsusi saxta paket 3 (I3)",
+ "i3Description": "Protokolu təqlid edən paket, onaltılıq formatda: ",
+ "i4Label": "Xüsusi saxta paket 4 (I4)",
+ "i4Description": "Protokolu təqlid edən paket, onaltılıq formatda: ",
+ "i5Label": "Xüsusi saxta paket 5 (I5)",
+ "i5Description": "Protokolu təqlid edən paket, onaltılıq formatda: ",
+ "rangeNote": "Aşağıdakı parametrlər tək ədəd və ya sərhəd dəyərləri daxil olan aralıq (0-65535) qəbul edir, məsələn, 30 və ya 30-90",
+ "headerProtectionKeyLabel": "Başlığı qoruma açarı",
+ "headerProtectionKeyDescription": "Paket başlıqlarını şifrələmək üçün istifadə olunan 32 baytlıq base64 açarı. Hər iki tərəfdə eyni olmalıdır, buna görə hər müştəriyə kopyalanır. S1-S4 ölçülərinin ən azı 12 olmasını tələb edir",
+ "contentPaddingAdditionLabel": "Məzmun üçün doldurma baytlarının əlavə edilməsi",
+ "contentPaddingAdditionDescription": "Şifrələmədən əvvəl nəql paketlərinin sonuna əlavə olunan təsadüfi sayda bayt",
+ "rekeyAfterTimeLabel": "Açarın yenilənməsinə qədər müddət",
+ "rekeyAfterTimeDescription": "Sessiyanın yenidən razılaşdırılmasına qədər saniyə sayı (WireGuard standartı: 120)",
+ "rekeyTimeoutLabel": "Açarın yenilənməsi üçün gözləmə müddəti",
+ "rekeyTimeoutDescription": "Əl sıxma üçün yenidən cəhdlər arasındakı saniyə sayı (WireGuard standartı: 5)",
+ "rejectAfterTimeLabel": "Rədd edilməyə qədər müddət",
+ "rejectAfterTimeDescription": "Sessiyanın saniyə ilə ömrü (WireGuard standartı: 180)",
+ "keepaliveTimeoutLabel": "Keepalive üçün gözləmə müddəti",
+ "keepaliveTimeoutDescription": "Keepalive göndərilməsinə qədər fəaliyyətsiz keçən saniyə sayı (WireGuard standartı: 10)",
+ "maxHandshakeAttemptsLabel": "Əl sıxma cəhdlərinin maksimum sayı",
+ "maxHandshakeAttemptsDescription": "İmtina edilənə qədər əl sıxma cəhdlərinin sayı (WireGuard standartı: 18)",
+ "randomTrailersLabel": "Təsadüfi sonluqlar",
+ "randomTrailersDescription": "Əl sıxma paketlərinin sonuna təsadüfi sayda bayt əlavə edir. Hər iki tərəfdə eyni olmalıdır, buna görə hər müştəriyə kopyalanır",
+ "disableCookiesLabel": "Kukiləri söndür",
+ "disableCookiesDescription": "Yük altında olduqda əl sıxmalara kuki mesajları ilə cavab vermir. Yalnız tunelin bu tərəfinə təsir edir",
+ "mtuNote": "Dəyərlər MTU-dan asılıdır",
+ "obfuscationParameters": "AmneziaWG gizlətmə parametrləri"
+ }
+}
diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json
index 40a087de..0eac8758 100644
--- a/src/i18n/locales/en.json
+++ b/src/i18n/locales/en.json
@@ -160,6 +160,9 @@
"sectionAdvanced": "Advanced",
"noItems": "No items",
"nullNoItems": "No items. Using global config",
+ "nullNotSet": "Not set",
+ "set": "Set",
+ "unset": "Unset",
"add": "Add"
},
"admin": {
@@ -251,10 +254,12 @@
"cidr": "CIDR",
"device": "Device",
"cidrValid": "CIDR must be valid",
- "routingTable": "Routing table must be auto, off, or a table number"
+ "routingTable": "Routing table must be auto, off, or a table number",
+ "headerProtectionJunkSize": "Junk sizes S1-S4 must be at least 12 when a Header Protection Key is set"
},
"otl": "One Time link",
"stringMalformed": "String is malformed",
+ "keyMalformed": "Key must be a 32 byte base64 encoded key",
"body": "Body must be a valid object",
"hook": "Hook",
"enabled": "Enabled",
@@ -311,6 +316,25 @@
"i4Description": "Protocol mimic packet in hex format: ",
"i5Label": "Special junk packet 5 (I5)",
"i5Description": "Protocol mimic packet in hex format: ",
+ "rangeNote": "The following parameters accept a single number or an inclusive range (0-65535), for example 30 or 30-90",
+ "headerProtectionKeyLabel": "Header protection key",
+ "headerProtectionKeyDescription": "32 byte base64 key used to encrypt packet headers. Must match on both sides, so it is copied to every client. Requires S1-S4 to be at least 12",
+ "contentPaddingAdditionLabel": "Content padding addition",
+ "contentPaddingAdditionDescription": "Random amount of bytes appended to transport packets before encryption",
+ "rekeyAfterTimeLabel": "Rekey after time",
+ "rekeyAfterTimeDescription": "Seconds before a session is renegotiated (WireGuard default: 120)",
+ "rekeyTimeoutLabel": "Rekey timeout",
+ "rekeyTimeoutDescription": "Seconds between handshake retries (WireGuard default: 5)",
+ "rejectAfterTimeLabel": "Reject after time",
+ "rejectAfterTimeDescription": "Session lifetime in seconds (WireGuard default: 180)",
+ "keepaliveTimeoutLabel": "Keepalive timeout",
+ "keepaliveTimeoutDescription": "Idle seconds before a keepalive is sent (WireGuard default: 10)",
+ "maxHandshakeAttemptsLabel": "Max handshake attempts",
+ "maxHandshakeAttemptsDescription": "Handshake attempts before giving up (WireGuard default: 18)",
+ "randomTrailersLabel": "Random trailers",
+ "randomTrailersDescription": "Append a random amount of bytes to handshake packets. Must match on both sides, so it is copied to every client",
+ "disableCookiesLabel": "Disable cookies",
+ "disableCookiesDescription": "Do not answer handshakes with cookie messages when under load. Only affects this side of the tunnel",
"mtuNote": "Values depend on the MTU",
"obfuscationParameters": "AmneziaWG Obfuscation Parameters"
}
diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json
new file mode 100644
index 00000000..7c8d0c74
--- /dev/null
+++ b/src/i18n/locales/sv.json
@@ -0,0 +1,310 @@
+{
+ "pages": {
+ "me": "Konto",
+ "clients": "Klienter",
+ "admin": {
+ "panel": "Adminpanel",
+ "general": "Allmänt",
+ "config": "Konfiguration",
+ "interface": "Gränssnitt",
+ "hooks": "Hooks"
+ }
+ },
+ "user": {
+ "email": "E-post"
+ },
+ "me": {
+ "currentPassword": "Nuvarande lösenord",
+ "enable2fa": "Aktivera tvåfaktorsautentisering",
+ "enable2faDesc": "Skanna QR-koden med din autentiseringsapp eller ange nyckeln manuellt.",
+ "2faKey": "TOTP-nyckel",
+ "2faCodeDesc": "Ange koden från din autentiseringsapp.",
+ "disable2fa": "Inaktivera tvåfaktorsautentisering",
+ "disable2faDesc": "Ange ditt lösenord för att inaktivera tvåfaktorsautentisering.",
+ "linkOauth": "Länka ditt konto till en extern leverantör",
+ "unlinkOauth": "Ta bort länk",
+ "linkedWith": "Länkat till {provider}",
+ "providerDisabled": "Din länkade leverantör är inte aktiverad"
+ },
+ "general": {
+ "name": "Namn",
+ "username": "Användarnamn",
+ "password": "Lösenord",
+ "newPassword": "Nytt lösenord",
+ "updatePassword": "Uppdatera lösenord",
+ "addPassword": "Lägg till lösenord",
+ "mtu": "MTU",
+ "allowedIps": "Tillåtna IP-adresser",
+ "dns": "DNS",
+ "persistentKeepalive": "Persistent Keepalive",
+ "logout": "Logga ut",
+ "continue": "Fortsätt",
+ "host": "Värd",
+ "port": "Port",
+ "yes": "Ja",
+ "no": "Nej",
+ "confirmPassword": "Bekräfta lösenord",
+ "loading": "Laddar...",
+ "2fa": "Tvåfaktorsautentisering",
+ "2faCode": "TOTP-kod",
+ "externalAuth": "Extern autentisering"
+ },
+ "setup": {
+ "welcome": "Välkommen till den första konfigurationen av wg-easy",
+ "welcomeDesc": "Du har hittat det enklaste sättet att installera och hantera WireGuard på en Linux-värd",
+ "existingSetup": "Har du en befintlig konfiguration?",
+ "createAdminDesc": "Ange först ett administratörsanvändarnamn och ett starkt, säkert lösenord. Dessa uppgifter används för att logga in på adminpanelen.",
+ "setupConfigDesc": "Ange värd- och portinformation. Den används i klientkonfigurationen när WireGuard konfigureras på klienternas enheter.",
+ "setupMigrationDesc": "Ange säkerhetskopian om du vill migrera data från din tidigare version av wg-easy till den nya installationen.",
+ "upload": "Ladda upp",
+ "migration": "Återställ säkerhetskopian:",
+ "createAccount": "Skapa konto",
+ "successful": "Konfigurationen slutfördes",
+ "hostDesc": "Publikt värdnamn som klienterna ansluter till",
+ "portDesc": "Publik UDP-port som klienterna ansluter till och som WireGuard lyssnar på"
+ },
+ "update": {
+ "updateAvailable": "Det finns en tillgänglig uppdatering!",
+ "update": "Uppdatera"
+ },
+ "theme": {
+ "dark": "Mörkt tema",
+ "light": "Ljust tema",
+ "system": "Systemtema"
+ },
+ "layout": {
+ "toggleCharts": "Visa/dölj diagram",
+ "donate": "Donera"
+ },
+ "login": {
+ "signIn": "Logga in",
+ "signInWith": "Logga in med {provider}",
+ "or": "eller",
+ "rememberMe": "Kom ihåg mig",
+ "rememberMeDesc": "Fortsätt vara inloggad efter att webbläsaren stängts",
+ "insecure": "Du kan inte logga in via en osäker anslutning. Använd HTTPS.",
+ "2faRequired": "Tvåfaktorsautentisering krävs",
+ "2faWrong": "Koden för tvåfaktorsautentisering är felaktig",
+ "loginExpired": "Inloggningen har löpt ut. Försök igen"
+ },
+ "client": {
+ "empty": "Det finns inga klienter ännu.",
+ "newShort": "Ny",
+ "sort": "Sortera",
+ "create": "Skapa klient",
+ "created": "Klienten skapades",
+ "new": "Ny klient",
+ "name": "Namn",
+ "expireDate": "Utgångsdatum",
+ "expireDateDesc": "Datum då klienten inaktiveras. Lämna tomt för permanent åtkomst",
+ "delete": "Ta bort",
+ "deleteClient": "Ta bort klient",
+ "deleteDialog": "Är du säker på att du vill ta bort {name}? Åtgärden kan inte ångras.",
+ "enabled": "Aktiverad",
+ "address": "Adress",
+ "serverAllowedIps": "Serverns tillåtna IP-adresser",
+ "otlDesc": "Generera en kort engångslänk",
+ "permanent": "Permanent",
+ "createdOn": "Skapad {date}",
+ "lastSeen": "Senast sedd {date}",
+ "totalDownload": "Totalt nedladdat: {total}",
+ "totalUpload": "Totalt uppladdat: {total}",
+ "newClient": "Ny klient",
+ "disableClient": "Inaktivera klient",
+ "enableClient": "Aktivera klient",
+ "noPrivKey": "Klienten saknar en känd privat nyckel. Konfigurationen kan inte skapas.",
+ "showQR": "Visa QR-kod",
+ "downloadConfig": "Ladda ner konfiguration",
+ "allowedIpsDesc": "Vilka IP-adresser som ska routas genom VPN-anslutningen (åsidosätter den globala konfigurationen)",
+ "serverAllowedIpsDesc": "Vilka IP-adresser servern ska routa till klienten",
+ "mtuDesc": "Anger maximal överföringsenhet (paketstorlek) för VPN-tunneln",
+ "persistentKeepaliveDesc": "Anger intervallet i sekunder för keepalive-paket. 0 inaktiverar funktionen",
+ "hooks": "Hooks",
+ "hooksDescription": "Hooks fungerar endast med wg-quick",
+ "hooksLeaveEmpty": "Endast för wg-quick. Lämna annars tomt",
+ "dnsDesc": "DNS-server som klienterna ska använda (åsidosätter den globala konfigurationen)",
+ "notConnected": "Klienten är inte ansluten",
+ "endpoint": "Slutpunkt",
+ "endpointDesc": "Klientens IP-adress från vilken WireGuard-anslutningen upprättas",
+ "search": "Sök klienter...",
+ "config": "Konfiguration",
+ "viewConfig": "Visa konfiguration",
+ "firewallIps": "Tillåtna IP-adresser i brandväggen",
+ "firewallIpsDesc": "Mål-IP-adresser/CIDR som klienten får åtkomst till (tillämpas på serversidan). Lämna tomt för att använda Tillåtna IP-adresser. Valfri filtrering efter port och protokoll stöds. Se dokumentationen för syntax.",
+ "downloadPng": "Ladda ner PNG",
+ "copyPng": "Kopiera PNG"
+ },
+ "dialog": {
+ "change": "Ändra",
+ "cancel": "Avbryt",
+ "create": "Skapa"
+ },
+ "toast": {
+ "success": "Klart",
+ "saved": "Sparat",
+ "error": "Fel",
+ "unknown": "Okänt fel. Se konsolen för mer information"
+ },
+ "form": {
+ "actions": "Åtgärder",
+ "save": "Spara",
+ "revert": "Återställ",
+ "sectionGeneral": "Allmänt",
+ "sectionAdvanced": "Avancerat",
+ "noItems": "Inga objekt",
+ "nullNoItems": "Inga objekt. Den globala konfigurationen används",
+ "add": "Lägg till"
+ },
+ "admin": {
+ "general": {
+ "sessionTimeout": "Sessionstimeout",
+ "sessionTimeoutDesc": "Sessionslängd för Kom ihåg mig (sekunder)",
+ "metrics": "Mätvärden",
+ "metricsPassword": "Lösenord",
+ "metricsPasswordDesc": "Bearer-lösenord för endpointen för mätvärden (lösenord eller Argon2-hash)",
+ "json": "JSON",
+ "jsonDesc": "Sökväg för mätvärden i JSON-format",
+ "prometheus": "Prometheus",
+ "prometheusDesc": "Sökväg för Prometheus-mätvärden"
+ },
+ "config": {
+ "connection": "Anslutning",
+ "hostDesc": "Publikt värdnamn som klienterna ansluter till (ogiltigförklarar konfigurationen)",
+ "portDesc": "Publik UDP-port som klienterna ansluter till (ogiltigförklarar konfigurationen, du bör sannolikt även ändra gränssnittets port)",
+ "allowedIpsDesc": "Tillåtna IP-adresser som klienterna använder (global konfiguration)",
+ "dnsDesc": "DNS-server som klienterna använder (global konfiguration)",
+ "mtuDesc": "MTU som klienterna använder (endast för nya klienter)",
+ "persistentKeepaliveDesc": "Intervall i sekunder för att skicka keepalive-paket till servern. 0 = inaktiverat (endast för nya klienter)",
+ "suggest": "Föreslå",
+ "suggestDesc": "Välj en IP-adress eller ett värdnamn för värdfältet"
+ },
+ "interface": {
+ "cidrSuccess": "CIDR ändrades",
+ "device": "Enhet",
+ "deviceDesc": "Ethernet-enhet som WireGuard-trafiken ska vidarebefordras genom",
+ "routingTable": "Routingtabell",
+ "routingTableDesc": "Routingtabell för WireGuard-rutter. Ange auto, off eller ett tabellnummer.",
+ "mtuDesc": "MTU som WireGuard använder",
+ "portDesc": "UDP-port som WireGuard lyssnar på (du bör sannolikt även ändra porten under Konfiguration)",
+ "changeCidr": "Ändra CIDR",
+ "restart": "Starta om gränssnitt",
+ "restartDesc": "Starta om WireGuard-gränssnittet",
+ "restartWarn": "Är du säker på att du vill starta om gränssnittet? Alla klienter kopplas från.",
+ "restartSuccess": "Gränssnittet startades om",
+ "firewall": "Trafikfiltrering",
+ "firewallEnabled": "Aktivera brandvägg per klient",
+ "firewallEnabledDesc": "Begränsa klienttrafik till specifika mål-IP-adresser med iptables. När funktionen är aktiverad kan varje klient konfigureras med tillåtna destinationer."
+ },
+ "introText": "Välkommen till adminpanelen.\n\nHär kan du hantera allmänna inställningar, konfigurationen, gränssnittsinställningar och hooks.\n\nBörja genom att välja ett av avsnitten i sidofältet."
+ },
+ "zod": {
+ "generic": {
+ "required": "{field} krävs",
+ "validNumber": "{field} måste vara ett giltigt tal",
+ "validNumberRange": "{field} måste vara ett giltigt tal eller talintervall",
+ "validString": "{field} måste vara en giltig sträng",
+ "validBoolean": "{field} måste vara ett giltigt booleskt värde",
+ "validArray": "{field} måste vara en giltig array",
+ "stringMin": "{field} måste innehålla minst {min} tecken",
+ "stringMax": "{field} får innehålla högst {max} tecken",
+ "numberMin": "{field} måste vara minst {min}",
+ "numberMax": "{field} får vara högst {max}"
+ },
+ "client": {
+ "id": "Klient-ID",
+ "name": "Namn",
+ "expiresAt": "Går ut",
+ "address4": "IPv4-adress",
+ "address6": "IPv6-adress",
+ "serverAllowedIps": "Serverns tillåtna IP-adresser",
+ "firewallIps": "Tillåtna IP-adresser i brandväggen",
+ "firewallIpsInvalid": "Ogiltig IP-post för brandväggen. Se dokumentationen för syntax som stöds."
+ },
+ "user": {
+ "username": "Användarnamn",
+ "password": "Lösenord",
+ "remember": "Kom ihåg",
+ "name": "Namn",
+ "email": "E-post",
+ "emailInvalid": "E-postadressen måste vara giltig",
+ "passwordMatch": "Lösenorden måste matcha",
+ "totpEnable": "Aktivera TOTP",
+ "totpEnableTrue": "TOTP måste vara aktiverat",
+ "totpCode": "TOTP-kod"
+ },
+ "userConfig": {
+ "host": "Värd"
+ },
+ "general": {
+ "sessionTimeout": "Sessionstimeout",
+ "metricsEnabled": "Mätvärden",
+ "metricsPassword": "Lösenord för mätvärden"
+ },
+ "interface": {
+ "cidr": "CIDR",
+ "device": "Enhet",
+ "cidrValid": "CIDR måste vara giltigt",
+ "routingTable": "Routingtabellen måste vara auto, off eller ett tabellnummer"
+ },
+ "otl": "Engångslänk",
+ "stringMalformed": "Strängen har felaktigt format",
+ "body": "Innehållet måste vara ett giltigt objekt",
+ "hook": "Hook",
+ "enabled": "Aktiverad",
+ "mtu": "MTU",
+ "port": "Port",
+ "persistentKeepalive": "Persistent Keepalive",
+ "address": "IP-adress",
+ "dns": "DNS",
+ "allowedIps": "Tillåtna IP-adresser",
+ "file": "Fil"
+ },
+ "hooks": {
+ "preUp": "PreUp",
+ "postUp": "PostUp",
+ "preDown": "PreDown",
+ "postDown": "PostDown"
+ },
+ "copy": {
+ "notSupported": "Kopiering stöds inte",
+ "copied": "Kopierat!",
+ "failed": "Kopieringen misslyckades",
+ "copy": "Kopiera"
+ },
+ "awg": {
+ "jCLabel": "Antal skräppaket (Jc)",
+ "jCDescription": "Antal skräppaket som ska skickas (1–128, rekommenderat: 4–12)",
+ "jMinLabel": "Minsta storlek på skräppaket (Jmin)",
+ "jMinDescription": "Minsta storlek på skräppaket (0–1279*, rekommenderat: 8, måste vara < Jmax)",
+ "jMaxLabel": "Största storlek på skräppaket (Jmax)",
+ "jMaxDescription": "Största storlek på skräppaket (1–1280*, rekommenderat: 80, måste vara > Jmin)",
+ "s1Label": "Skräpstorlek för initieringspaket (S1)",
+ "s1Description": "Skräpstorlek för initieringspaket (0–1132[1280* - 148 = 1132], rekommenderat: 15–150, S1+56 ≠ S2)",
+ "s2Label": "Skräpstorlek för svarspaket (S2)",
+ "s2Description": "Skräpstorlek för svarspaket (0–1188[1280* - 92 = 1188], rekommenderat: 15–150)",
+ "s3Label": "Skräpstorlek för cookie-svarspaket (S3)",
+ "s3Description": "Skräpstorlek för cookie-svarspaket",
+ "s4Label": "Skräpstorlek för transportpaket (S4)",
+ "s4Description": "Skräpstorlek för transportpaket",
+ "h1Label": "Magisk header för initieringspaket (H1)",
+ "h1Description": "Headervärde eller intervall för initieringspaket (X eller X-Y, där X",
+ "i2Label": "Särskilt skräppaket 2 (I2)",
+ "i2Description": "Protokollefterliknande paket i hexformat: ",
+ "i3Label": "Särskilt skräppaket 3 (I3)",
+ "i3Description": "Protokollefterliknande paket i hexformat: ",
+ "i4Label": "Särskilt skräppaket 4 (I4)",
+ "i4Description": "Protokollefterliknande paket i hexformat: ",
+ "i5Label": "Särskilt skräppaket 5 (I5)",
+ "i5Description": "Protokollefterliknande paket i hexformat: ",
+ "mtuNote": "Värdena beror på MTU",
+ "obfuscationParameters": "Obfuskeringsparametrar för AmneziaWG"
+ }
+}
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json
index 00f5a7c5..3e28a70a 100644
--- a/src/i18n/locales/tr.json
+++ b/src/i18n/locales/tr.json
@@ -159,6 +159,9 @@
"sectionAdvanced": "Gelişmiş",
"noItems": "Öge yok",
"nullNoItems": "Öge yok. Genel yapılandırma kullanılıyor.",
+ "nullNotSet": "Ayarlanmadı",
+ "set": "Ayarla",
+ "unset": "Kaldır",
"add": "Ekle"
},
"admin": {
@@ -250,10 +253,12 @@
"cidr": "CIDR",
"device": "Aygıt",
"cidrValid": "Geçersiz CIDR",
- "routingTable": "Yönlendirme tablosu auto, off veya bir tablo numarası olmalıdır"
+ "routingTable": "Yönlendirme tablosu auto, off veya bir tablo numarası olmalıdır",
+ "headerProtectionJunkSize": "Header Protection Key ayarlandığında S1-S4 junk boyutları en az 12 olmalıdır"
},
"otl": "OTL (One Time Link)",
"stringMalformed": "Hatalı format",
+ "keyMalformed": "Anahtar, 32 baytlık base64 kodlu bir anahtar olmalıdır",
"body": "Body geçerli bir obje olmalıdır",
"hook": "Hook",
"enabled": "Aktif",
@@ -310,6 +315,25 @@
"i4Description": "Hex formatında protocol mimic paketi: ",
"i5Label": "Özel junk 5 (I5)",
"i5Description": "Hex formatında protocol mimic paketi: ",
+ "rangeNote": "Aşağıdaki parametreler tek bir sayı veya kapsayıcı bir aralık (0-65535) kabul eder, örneğin 30 veya 30-90",
+ "headerProtectionKeyLabel": "Header protection anahtarı",
+ "headerProtectionKeyDescription": "Paket başlıklarını şifrelemek için kullanılan 32 baytlık base64 anahtar. Her iki tarafta da aynı olmalıdır, bu yüzden her istemciye kopyalanır. S1-S4'ün en az 12 olmasını gerektirir",
+ "contentPaddingAdditionLabel": "İçerik dolgu ekleme",
+ "contentPaddingAdditionDescription": "Şifrelemeden önce transport paketlerine eklenen rastgele miktarda bayt",
+ "rekeyAfterTimeLabel": "Yeniden anahtarlama süresi",
+ "rekeyAfterTimeDescription": "Oturum yeniden müzakere edilmeden önce geçecek saniye (WireGuard varsayılanı: 120)",
+ "rekeyTimeoutLabel": "Yeniden anahtarlama zaman aşımı",
+ "rekeyTimeoutDescription": "Handshake yeniden denemeleri arasındaki saniye (WireGuard varsayılanı: 5)",
+ "rejectAfterTimeLabel": "Reddetme süresi",
+ "rejectAfterTimeDescription": "Saniye cinsinden oturum ömrü (WireGuard varsayılanı: 180)",
+ "keepaliveTimeoutLabel": "Keepalive zaman aşımı",
+ "keepaliveTimeoutDescription": "Keepalive gönderilmeden önce boşta geçecek saniye (WireGuard varsayılanı: 10)",
+ "maxHandshakeAttemptsLabel": "Maks handshake denemesi",
+ "maxHandshakeAttemptsDescription": "Vazgeçmeden önceki handshake denemesi sayısı (WireGuard varsayılanı: 18)",
+ "randomTrailersLabel": "Rastgele son ekler",
+ "randomTrailersDescription": "Handshake paketlerine rastgele miktarda bayt ekler. Her iki tarafta da aynı olmalıdır, bu yüzden her istemciye kopyalanır",
+ "disableCookiesLabel": "Cookie'leri devre dışı bırak",
+ "disableCookiesDescription": "Yük altındayken handshake'lere cookie mesajlarıyla yanıt verme. Yalnızca tünelin bu tarafını etkiler",
"mtuNote": "Değerler MTU'ya bağlıdır",
"obfuscationParameters": "AmneziaWG Obfuscation Ayarları"
}
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json
index 6c7371f7..5a002308 100644
--- a/src/i18n/locales/uk.json
+++ b/src/i18n/locales/uk.json
@@ -159,6 +159,9 @@
"sectionAdvanced": "Додатково",
"noItems": "Немає елементів",
"nullNoItems": "Немає елементів. Використовується глобальна конфігурація",
+ "nullNotSet": "Не встановлено",
+ "set": "Встановити",
+ "unset": "Скасувати встановлення",
"add": "Додати"
},
"admin": {
@@ -250,10 +253,12 @@
"cidr": "CIDR",
"device": "Пристрій",
"cidrValid": "CIDR має бути дійсним",
- "routingTable": "Таблиця маршрутизації має бути auto, off або номером таблиці"
+ "routingTable": "Таблиця маршрутизації має бути auto, off або номером таблиці",
+ "headerProtectionJunkSize": "Розміри сміття S1-S4 мають бути щонайменше 12, якщо встановлено ключ захисту заголовків"
},
"otl": "Одноразове посилання",
"stringMalformed": "Рядок має неправильний формат",
+ "keyMalformed": "Ключ має бути ключем довжиною 32 байти, закодованим у Base64",
"body": "Тіло має бути коректним об'єктом",
"hook": "Hook",
"enabled": "Увімкнено",
@@ -310,6 +315,25 @@
"i4Description": "Пакет-імітація протоколу у hex-форматі: ",
"i5Label": "Спеціальний сміттєвий пакет 5 (I5)",
"i5Description": "Пакет-імітація протоколу у hex-форматі: ",
+ "rangeNote": "Наведені нижче параметри приймають одне число або включний діапазон (0–65535), наприклад 30 або 30–90",
+ "headerProtectionKeyLabel": "Ключ захисту заголовків",
+ "headerProtectionKeyDescription": "Ключ Base64 довжиною 32 байти, який використовується для шифрування заголовків пакетів. Має збігатися з обох боків, тому копіюється до кожного клієнта. Потребує значень S1-S4 не менше 12",
+ "contentPaddingAdditionLabel": "Додавання доповнення до вмісту",
+ "contentPaddingAdditionDescription": "Випадкова кількість байтів, що додається до транспортних пакетів перед шифруванням",
+ "rekeyAfterTimeLabel": "Повторне створення ключа через",
+ "rekeyAfterTimeDescription": "Кількість секунд до повторного узгодження сеансу (типове значення WireGuard: 120)",
+ "rekeyTimeoutLabel": "Час очікування повторного створення ключа",
+ "rekeyTimeoutDescription": "Кількість секунд між повторними спробами рукостискання (типове значення WireGuard: 5)",
+ "rejectAfterTimeLabel": "Відхиляти після",
+ "rejectAfterTimeDescription": "Тривалість сеансу в секундах (типове значення WireGuard: 180)",
+ "keepaliveTimeoutLabel": "Час очікування Keepalive",
+ "keepaliveTimeoutDescription": "Кількість секунд бездіяльності перед надсиланням Keepalive (типове значення WireGuard: 10)",
+ "maxHandshakeAttemptsLabel": "Максимальна кількість спроб рукостискання",
+ "maxHandshakeAttemptsDescription": "Кількість спроб рукостискання перед припиненням спроб (типове значення WireGuard: 18)",
+ "randomTrailersLabel": "Випадкові кінцеві дані",
+ "randomTrailersDescription": "Додавати до пакетів рукостискання випадкову кількість байтів. Має збігатися з обох боків, тому копіюється до кожного клієнта",
+ "disableCookiesLabel": "Вимкнути cookie",
+ "disableCookiesDescription": "Не відповідати на рукостискання повідомленнями cookie під час високого навантаження. Впливає лише на цей бік тунелю",
"mtuNote": "Значення залежать від MTU",
"obfuscationParameters": "Параметри обфускації AmneziaWG"
}
diff --git a/src/nuxt.config.ts b/src/nuxt.config.ts
index 9216c99d..99f77568 100644
--- a/src/nuxt.config.ts
+++ b/src/nuxt.config.ts
@@ -148,6 +148,16 @@ export default defineNuxtConfig({
language: 'vi-VN',
name: 'Tiếng Việt',
},
+ {
+ code: 'sv',
+ language: 'sv-SE',
+ name: 'Svenska',
+ },
+ {
+ code: 'az',
+ language: 'az-AZ',
+ name: 'Azərbaycan',
+ },
],
defaultLocale: 'en',
vueI18n: './i18n.config.ts',
diff --git a/src/package.json b/src/package.json
index 45e97a38..2cbe6bc5 100644
--- a/src/package.json
+++ b/src/package.json
@@ -23,56 +23,56 @@
},
"dependencies": {
"@heroicons/vue": "^2.2.0",
- "@libsql/client": "^0.17.4",
+ "@libsql/client": "^0.18.0",
"@nuxtjs/color-mode": "^4.0.1",
"@nuxtjs/i18n": "^10.6.0",
"@nuxtjs/tailwindcss": "^6.14.0",
"@phc/format": "^1.0.0",
- "@pinia/nuxt": "^1.0.1",
+ "@pinia/nuxt": "^1.0.2",
"@tailwindcss/forms": "^0.5.11",
"@vueuse/core": "^14.4.0",
"@vueuse/nuxt": "^14.4.0",
- "apexcharts": "^6.8.0",
+ "apexcharts": "^7.5.1",
"argon2": "^0.45.1",
- "cidr-tools": "^13.0.0",
+ "cidr-tools": "^13.0.1",
"citty": "^0.2.2",
"consola": "^3.4.2",
"crc-32": "^1.2.2",
"drizzle-orm": "^0.45.2",
- "ip-bigint": "^9.0.8",
+ "ip-bigint": "^10.0.1",
"is-cidr": "^7.0.1",
"is-ip": "^5.0.1",
"js-sha256": "^1.0.0",
"nuxt": "^4.5.2",
- "obug": "^2.1.4",
- "openid-client": "^6.8.4",
- "otpauth": "^9.5.1",
- "pinia": "^4.0.2",
- "qr": "^0.6.0",
- "reka-ui": "^2.10.3",
+ "obug": "^3.0.0",
+ "openid-client": "^6.8.8",
+ "otpauth": "^9.5.2",
+ "pinia": "^4.0.3",
+ "qr": "^0.7.0",
+ "reka-ui": "^2.10.4",
"semver": "^7.8.5",
"tailwindcss": "^3.4.19",
"vue": "latest",
"vue3-apexcharts": "^1.11.1",
- "zod": "^4.4.3"
+ "zod": "^4.6.4"
},
"devDependencies": {
"@nuxt/eslint": "^1.17.0",
- "@nuxt/test-utils": "^4.1.0",
+ "@nuxt/test-utils": "^4.3.2",
"@types/phc__format": "^1.0.1",
"@types/semver": "^7.8.0",
- "@vitest/coverage-v8": "^4.1.10",
- "@vitest/ui": "^4.1.10",
+ "@vitest/coverage-v8": "^4.1.11",
+ "@vitest/ui": "^4.1.11",
"drizzle-kit": "^0.31.10",
"esbuild": "^0.28.2",
- "eslint": "^10.8.1",
+ "eslint": "^10.10.0",
"eslint-config-prettier": "^10.1.8",
"prettier": "^3.9.6",
"prettier-plugin-tailwindcss": "^0.8.1",
- "tsx": "^4.23.12",
+ "tsx": "^4.23.13",
"typescript": "^6.0.3",
- "vitest": "^4.1.10",
- "vue-tsc": "^3.3.9"
+ "vitest": "^4.1.11",
+ "vue-tsc": "^3.3.11"
},
- "packageManager": "pnpm@11.22.0"
+ "packageManager": "pnpm@12.4.1"
}
diff --git a/src/pnpm-lock.yaml b/src/pnpm-lock.yaml
index 2329859d..c65a263e 100644
--- a/src/pnpm-lock.yaml
+++ b/src/pnpm-lock.yaml
@@ -1,3 +1,161 @@
+---
+lockfileVersion: '9.0'
+
+importers:
+
+ .:
+ configDependencies: {}
+ packageManagerDependencies:
+ pnpm:
+ specifier: 12.4.1
+ version: 12.4.1
+
+packages:
+
+ '@pnpm/exe.android-arm64@12.4.1':
+ resolution: {integrity: sha512-/HwsqXMSmlOfgtV9+O0ratzjV6Vd/8n1hh4rGHpCGmDURvt52MwZxdbhyxP4K03ZfvgSDvotFPr8O+RzE5Eu8A==}
+ cpu: [arm64]
+ os: [android]
+
+ '@pnpm/exe.android-x64@12.4.1':
+ resolution: {integrity: sha512-+l74Qb4c2YjOzNKHXJLg+1wr8xHM1ckkUhnU5KRUK9TJqiiczt6yeTZqqzHIlJ8i6pAoj5V0OJevDRwnQKLgrQ==}
+ cpu: [x64]
+ os: [android]
+
+ '@pnpm/exe.darwin-arm64@12.4.1':
+ resolution: {integrity: sha512-6rkZkT3iGfaxknUdGHraqSWFvTa6N0ajAHluv9Ax0GRWs0sIcGNiFhDopv6xSZCsJZmG483aNS/b6UEDy3blfw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@pnpm/exe.darwin-x64@12.4.1':
+ resolution: {integrity: sha512-Vb1CHlR88HghC1qUxjxjs82zQSXnXacPD+btG2CmG8Q/hBU7Q0/b2YWJKSQqZXicunV5khFtfTlAwJddV9RkYA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@pnpm/exe.freebsd-x64@12.4.1':
+ resolution: {integrity: sha512-iT3iHz3Nl0Sxxj7UPOtZ/aQ81AFsQhjoeWMAlPkSRO04gsgDGAXv3UYxOFaesMWsfNxaGn0A+CITbuCHFF66FA==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@pnpm/exe.linux-arm64-musl@12.4.1':
+ resolution: {integrity: sha512-aBooZfNXM5f+OGUgCAMFWpE/kAhsWfvmqIyMtHy6zl3aNxyInWrcY/Saln/UElzo7lZWMC0Yktroxd/2J26lNQ==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-arm64@12.4.1':
+ resolution: {integrity: sha512-TlOdacTTP09BgcMvwWBFRsu8VAjfwqwnslBj+XSq1JFM3ck4f3k+1O/747EuctxZxs3/o785b6Q3s7Pd92Ptsg==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-ppc64@12.4.1':
+ resolution: {integrity: sha512-r/ab/MlIBo75oizUP5ITiziCCrnXz4SJwfErLQ+603AshB+Yq7xTMCoMtzTSCAMu6aaymIKkAFtZvd2J75Wq0w==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-riscv64@12.4.1':
+ resolution: {integrity: sha512-C/D1QWdKMiB8+wv/spl1rGITFUuqC+aI/fb6h8NB5sqxsOaGXeYc/g891oCuzggHn6SODk9p+I09hI76x/cMNw==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-s390x@12.4.1':
+ resolution: {integrity: sha512-nxz5zD4yXt94uzbStDk0QTPKW+aE92hH1b5tFXK9ctB1HE9Xcq1vjTiA2LsZMFC6p4gdu5OwQeFqYNAVGa6QlA==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-x64-musl@12.4.1':
+ resolution: {integrity: sha512-5AwgFdGhVUg2kIweYGfxzSLEHiIG77PQhZAkXC3TwofQHsu1Wr+TrV5/rNX2PopFnHRzuE581zoB8F6Wle32yg==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-x64@12.4.1':
+ resolution: {integrity: sha512-FJOZuuuQMhp0oLzBtcKkLXknBI92hfkmSnlKc47vfin4HrmfID5khY2lGekL9tCzk1cpR+HShEw/meFl+nHtzQ==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.win32-arm64@12.4.1':
+ resolution: {integrity: sha512-OO7eKBL9S+xk5hRy+JUUZSNJknGuGe3GEUffsrlC2LbqKF02g+VX1anGIzSbJDvkkdnpJhSlxF5AUz2JzJu2Jw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@pnpm/exe.win32-x64@12.4.1':
+ resolution: {integrity: sha512-x7gJHZgHo6hp354xCYA2NvoFzYJkHwovt2kVsUBK5EmXULLcP51JGMq09CX+5FRFJUZFKoXjLu3mZWmfP7o6PQ==}
+ cpu: [x64]
+ os: [win32]
+
+ pnpm@12.4.1:
+ resolution: {integrity: sha512-LoHjmdc/6DkNqyXgaqeIq3pZCCSNL1o3D4K0gRR6ano2e/gEj5pv22Rg8hpm8FQt7bi5TKLIcjWWdBkgsWVtTA==}
+ engines: {node: '>=18.*'}
+ hasBin: true
+
+snapshots:
+
+ '@pnpm/exe.android-arm64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.android-x64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.darwin-arm64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.darwin-x64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.freebsd-x64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-arm64-musl@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-arm64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-ppc64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-riscv64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-s390x@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-x64-musl@12.4.1':
+ optional: true
+
+ '@pnpm/exe.linux-x64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.win32-arm64@12.4.1':
+ optional: true
+
+ '@pnpm/exe.win32-x64@12.4.1':
+ optional: true
+
+ pnpm@12.4.1:
+ optionalDependencies:
+ '@pnpm/exe.android-arm64': 12.4.1
+ '@pnpm/exe.android-x64': 12.4.1
+ '@pnpm/exe.darwin-arm64': 12.4.1
+ '@pnpm/exe.darwin-x64': 12.4.1
+ '@pnpm/exe.freebsd-x64': 12.4.1
+ '@pnpm/exe.linux-arm64': 12.4.1
+ '@pnpm/exe.linux-arm64-musl': 12.4.1
+ '@pnpm/exe.linux-ppc64': 12.4.1
+ '@pnpm/exe.linux-riscv64': 12.4.1
+ '@pnpm/exe.linux-s390x': 12.4.1
+ '@pnpm/exe.linux-x64': 12.4.1
+ '@pnpm/exe.linux-x64-musl': 12.4.1
+ '@pnpm/exe.win32-arm64': 12.4.1
+ '@pnpm/exe.win32-x64': 12.4.1
+
+---
lockfileVersion: '9.0'
settings:
@@ -10,42 +168,42 @@ importers:
dependencies:
'@heroicons/vue':
specifier: ^2.2.0
- version: 2.2.0(vue@3.5.41(typescript@6.0.3))
+ version: 2.2.0(vue@3.5.43(typescript@6.0.3))
'@libsql/client':
- specifier: ^0.17.4
- version: 0.17.4
+ specifier: ^0.18.0
+ version: 0.18.0
'@nuxtjs/color-mode':
specifier: ^4.0.1
- version: 4.0.1(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
+ version: 4.0.1(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
'@nuxtjs/i18n':
specifier: ^10.6.0
- version: 10.6.0(@vue/compiler-dom@3.5.41)(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(esbuild@0.28.2)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.4)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup@4.62.4)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))
+ version: 10.6.0(@vue/compiler-dom@3.5.42)(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(esbuild@0.28.2)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.4)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup@4.63.1)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))
'@nuxtjs/tailwindcss':
specifier: ^6.14.0
- version: 6.14.0(magicast@0.5.4)(supports-color@10.2.2)(tsx@4.23.12)(yaml@2.9.0)
+ version: 6.14.0(magicast@0.5.4)(supports-color@10.2.2)(tsx@4.23.13)(yaml@2.9.0)
'@phc/format':
specifier: ^1.0.0
version: 1.0.0
'@pinia/nuxt':
- specifier: ^1.0.1
- version: 1.0.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
+ specifier: ^1.0.2
+ version: 1.0.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
'@tailwindcss/forms':
specifier: ^0.5.11
- version: 0.5.11(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0))
+ version: 0.5.11(tailwindcss@3.4.19(tsx@4.23.13)(yaml@2.9.0))
'@vueuse/core':
specifier: ^14.4.0
- version: 14.4.0(vue@3.5.41(typescript@6.0.3))
+ version: 14.4.0(vue@3.5.43(typescript@6.0.3))
'@vueuse/nuxt':
specifier: ^14.4.0
- version: 14.4.0(2b18b4a4d95dcdc94899147e03978a2f)
+ version: 14.4.0(d3e414f291a94191ad8ee9803f470127)
apexcharts:
- specifier: ^6.8.0
- version: 6.10.0
+ specifier: ^7.5.1
+ version: 7.5.1
argon2:
specifier: ^0.45.1
version: 0.45.1
cidr-tools:
- specifier: ^13.0.0
+ specifier: ^13.0.1
version: 13.0.1
citty:
specifier: ^0.2.2
@@ -58,10 +216,10 @@ importers:
version: 1.2.2
drizzle-orm:
specifier: ^0.45.2
- version: 0.45.2(@libsql/client@0.17.4)
+ version: 0.45.2(@libsql/client@0.18.0)
ip-bigint:
- specifier: ^9.0.8
- version: 9.0.8
+ specifier: ^10.0.1
+ version: 10.0.1
is-cidr:
specifier: ^7.0.1
version: 7.0.1
@@ -73,47 +231,47 @@ importers:
version: 1.0.0
nuxt:
specifier: ^4.5.2
- version: 4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.17.4)(@oxc-project/types@0.144.0)(@types/node@26.2.0)(@vue/compiler-sfc@3.5.41)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(drizzle-orm@0.45.2(@libsql/client@0.17.4))(esbuild@0.28.2)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.4)(rollup@4.62.4))(rollup@4.62.4)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.50.0)(tsx@4.23.12)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue-tsc@3.3.10(typescript@6.0.3))(yaml@2.9.0)
+ version: 4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.18.0)(@oxc-project/types@0.148.0)(@types/node@26.4.1)(@vue/compiler-sfc@3.5.43)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(drizzle-orm@0.45.2(@libsql/client@0.18.0))(esbuild@0.28.2)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.7)(rollup@4.63.1))(rollup@4.63.1)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.51.2)(tsx@4.23.13)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))(yaml@2.9.0)
obug:
- specifier: ^2.1.4
- version: 2.1.4
+ specifier: ^3.0.0
+ version: 3.0.0
openid-client:
- specifier: ^6.8.4
- version: 6.8.7
+ specifier: ^6.8.8
+ version: 6.8.8
otpauth:
- specifier: ^9.5.1
- version: 9.5.1
+ specifier: ^9.5.2
+ version: 9.5.2
pinia:
- specifier: ^4.0.2
- version: 4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3))
+ specifier: ^4.0.3
+ version: 4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3))
qr:
- specifier: ^0.6.0
- version: 0.6.0
+ specifier: ^0.7.0
+ version: 0.7.0
reka-ui:
- specifier: ^2.10.3
- version: 2.10.3(vue@3.5.41(typescript@6.0.3))
+ specifier: ^2.10.4
+ version: 2.10.4(vue@3.5.43(typescript@6.0.3))
semver:
specifier: ^7.8.5
version: 7.8.5
tailwindcss:
specifier: ^3.4.19
- version: 3.4.19(tsx@4.23.12)(yaml@2.9.0)
+ version: 3.4.19(tsx@4.23.13)(yaml@2.9.0)
vue:
specifier: latest
- version: 3.5.41(typescript@6.0.3)
+ version: 3.5.43(typescript@6.0.3)
vue3-apexcharts:
specifier: ^1.11.1
- version: 1.11.1(apexcharts@6.10.0)(vue@3.5.41(typescript@6.0.3))
+ version: 1.11.1(apexcharts@7.5.1)(vue@3.5.43(typescript@6.0.3))
zod:
- specifier: ^4.4.3
- version: 4.4.3
+ specifier: ^4.6.4
+ version: 4.6.5
devDependencies:
'@nuxt/eslint':
specifier: ^1.17.0
- version: 1.17.0(@typescript-eslint/utils@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(srvx@0.11.22)(supports-color@10.2.2)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ version: 1.17.0(@typescript-eslint/utils@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.43)(esbuild@0.28.2)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(srvx@0.11.22)(supports-color@10.2.2)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
'@nuxt/test-utils':
- specifier: ^4.1.0
- version: 4.1.0(@vitest/ui@4.1.11)(esbuild@0.28.2)(magicast@0.5.4)(rolldown@1.2.4)(rollup@4.62.4)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11)
+ specifier: ^4.3.2
+ version: 4.3.2(@vitest/ui@4.1.11)(esbuild@0.28.2)(magicast@0.5.4)(rolldown@1.2.7)(rollup@4.63.1)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vitest@4.1.11)
'@types/phc__format':
specifier: ^1.0.1
version: 1.0.1
@@ -121,10 +279,10 @@ importers:
specifier: ^7.8.0
version: 7.8.0
'@vitest/coverage-v8':
- specifier: ^4.1.10
+ specifier: ^4.1.11
version: 4.1.11(vitest@4.1.11)
'@vitest/ui':
- specifier: ^4.1.10
+ specifier: ^4.1.11
version: 4.1.11(vitest@4.1.11)
drizzle-kit:
specifier: ^0.31.10
@@ -133,11 +291,11 @@ importers:
specifier: ^0.28.2
version: 0.28.2
eslint:
- specifier: ^10.8.1
- version: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ specifier: ^10.10.0
+ version: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
eslint-config-prettier:
specifier: ^10.1.8
- version: 10.1.8(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
+ version: 10.1.8(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
prettier:
specifier: ^3.9.6
version: 3.9.6
@@ -145,22 +303,22 @@ importers:
specifier: ^0.8.1
version: 0.8.1(prettier@3.9.6)
tsx:
- specifier: ^4.23.12
- version: 4.23.12
+ specifier: ^4.23.13
+ version: 4.23.13
typescript:
specifier: ^6.0.3
version: 6.0.3
vitest:
- specifier: ^4.1.10
- version: 4.1.11(@types/node@26.2.0)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ specifier: ^4.1.11
+ version: 4.1.11(@types/node@26.4.1)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
vue-tsc:
- specifier: ^3.3.9
- version: 3.3.10(typescript@6.0.3)
+ specifier: ^3.3.11
+ version: 3.3.11(typescript@6.0.3)
packages:
- '@alloc/quick-lru@5.2.0':
- resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ '@alloc/quick-lru@5.3.0':
+ resolution: {integrity: sha512-U4+70Pc5ZS9osnCBCE5Jha/ciHM+Yp+CNMNC/7HvYbNRk1Ldd+f7qO65W5qfhu/TCv+/ozljlXXe9Nj8419DMA==}
engines: {node: '>=10'}
'@antfu/install-pkg@2.0.1':
@@ -188,10 +346,6 @@ packages:
resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==}
engines: {node: '>=6.9.0'}
- '@babel/generator@8.0.0':
- resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==}
- engines: {node: ^22.18.0 || >=24.11.0}
-
'@babel/helper-annotate-as-pure@7.29.7':
resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==}
engines: {node: '>=6.9.0'}
@@ -246,18 +400,10 @@ packages:
resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-string-parser@8.0.0':
- resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==}
- engines: {node: ^22.18.0 || >=24.11.0}
-
'@babel/helper-validator-identifier@7.29.7':
resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
engines: {node: '>=6.9.0'}
- '@babel/helper-validator-identifier@8.0.4':
- resolution: {integrity: sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==}
- engines: {node: ^22.18.0 || >=24.11.0}
-
'@babel/helper-validator-option@7.29.7':
resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==}
engines: {node: '>=6.9.0'}
@@ -271,11 +417,6 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
- '@babel/parser@8.0.4':
- resolution: {integrity: sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==}
- engines: {node: ^22.18.0 || >=24.11.0}
- hasBin: true
-
'@babel/plugin-syntax-jsx@7.29.7':
resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==}
engines: {node: '>=6.9.0'}
@@ -306,10 +447,6 @@ packages:
resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==}
engines: {node: '>=6.9.0'}
- '@babel/types@8.0.4':
- resolution: {integrity: sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==}
- engines: {node: ^22.18.0 || >=24.11.0}
-
'@bcoe/v8-coverage@1.0.2':
resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==}
engines: {node: '>=18'}
@@ -329,6 +466,12 @@ packages:
commander:
optional: true
+ '@cacheable/memory@2.2.0':
+ resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==}
+
+ '@cacheable/utils@2.5.0':
+ resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==}
+
'@clack/core@1.4.3':
resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==}
engines: {node: '>= 20.12.0'}
@@ -341,8 +484,8 @@ packages:
resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==}
engines: {node: '>=18.0.0'}
- '@colordx/core@5.5.0':
- resolution: {integrity: sha512-3PxTH8itZzltK0U9jTwVVnjLXvnDYuq3m+QXsHkENxWiPRh4WaoLcs1SQjqgZ55kS+QyirpH5BVwzP2gMVG6EQ==}
+ '@colordx/core@5.8.0':
+ resolution: {integrity: sha512-cG0QJAO6VkaRUlIb0zOzX9gfJgs1pjoOL9gZ/PK1kfvBs0GCkADu5oQh6gPxXgQnZ3gV575h+lQRC0NlMDTclA==}
'@csstools/selector-resolve-nested@3.1.0':
resolution: {integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==}
@@ -359,8 +502,8 @@ packages:
'@drizzle-team/brocli@0.10.2':
resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==}
- '@dxup/nuxt@0.5.7':
- resolution: {integrity: sha512-JLa4Xfr3s1ToCl4eSipyR+5eXeT7wyeqMRkKsSWXID04o8FdT0cSqKQxTuVNBk/UrW1mQIZ1Q3t4CAFFiV90Kw==}
+ '@dxup/nuxt@0.5.10':
+ resolution: {integrity: sha512-54Vehb7LmR7qYpC6KFwjDTSm6CB1CayBu+JXdHrPLrIjjr5xAgb43jvgOU+mnB+tsRh414fSsEy0QjBMKILQ8g==}
'@dxup/unimport@0.1.2':
resolution: {integrity: sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==}
@@ -856,8 +999,8 @@ packages:
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/compat@2.1.0':
- resolution: {integrity: sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==}
+ '@eslint/compat@2.1.1':
+ resolution: {integrity: sha512-rMcy8GSrwNzcISX/BlTDY/GLB4eCopEuy9woIls3To+15OLxykZrxxq+WUcylCPCQ6F4MujjBM1DX5V1aqI3Vw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
peerDependencies:
eslint: ^8.40 || 9 || 10
@@ -877,8 +1020,8 @@ packages:
resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- '@eslint/config-inspector@3.2.0':
- resolution: {integrity: sha512-kylJhcii8eDOiRFPANNUHOyDebBIOt+nqYXt8q6W9FbhYzFJAXjLzJz6KFNzY0WvIyOBKdbSQdwdPNrkMh05tg==}
+ '@eslint/config-inspector@3.4.0':
+ resolution: {integrity: sha512-8TXN2JiWBX2pzY+bb5uccWBIZ3C1mSSzyvYDBwHaorAq+GaGJax9/BtwdnqbvWviVHUN5vHBgUkg2gYyd+js7w==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
hasBin: true
peerDependencies:
@@ -888,8 +1031,8 @@ packages:
resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- '@eslint/css-tree@4.0.5':
- resolution: {integrity: sha512-iPmijIAq4hlIJB86PYmY/fcZORHtjphSqICDbwuw32A/JmkhZQ/K/6TjHE03zqf3n5yABpVcbRAMG8Mi9ojy8g==}
+ '@eslint/css-tree@4.1.0':
+ resolution: {integrity: sha512-cg0ohyrAG3swyGqt8t1K/OK97DqBw/ftDvlvyY1fmEst5B40UOmsimwLENq74z2dyw5CDM+3zJIW+CV2nFNDdA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/js@10.0.1':
@@ -905,8 +1048,8 @@ packages:
resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- '@eslint/plugin-kit@0.7.2':
- resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==}
+ '@eslint/plugin-kit@0.7.3':
+ resolution: {integrity: sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@floating-ui/core@1.8.0':
@@ -946,11 +1089,11 @@ packages:
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
engines: {node: '>=18.18'}
- '@internationalized/date@3.12.3':
- resolution: {integrity: sha512-fuLX+3ZKLsxI73y8b01EG/WjHb6gE6weCqlfawPO27kBWGMh9G1yH6Csv1uU7/cac9H2GHmOMt6CjmuQ1aia4Q==}
+ '@internationalized/date@3.12.4':
+ resolution: {integrity: sha512-M1dEn4c1U1HsSlaVR8upZtSqvXrTkHDfv18H01uCSJyjVLDxnBR38v/fMxecmlwXKR4i9HeZcmgQAPE6A+aGJQ==}
- '@internationalized/number@3.6.7':
- resolution: {integrity: sha512-3ji1fcrT+FPAK86UqEhB/psHixYo6niWPJtt7+qRaYFynt/BaJG8GhAPimtWUpEiVSTq8ZM8L5psMxGquiB/Vg==}
+ '@internationalized/number@3.6.8':
+ resolution: {integrity: sha512-8UmMFia46DUt+k97zKd9fKWXcWHR+k8ae3eYzILETuT2KbIvLyOfac7zesw+sJdRAAZ7Q9pM1Mk22aXp2LD0Ig==}
'@intlify/bundle-utils@11.2.5':
resolution: {integrity: sha512-gl7CGygRALtuT4H8n/PNC0hubg4rnctPoT04//GZNsTemvJw0Q7i6jSaq0PZHxnH0cdGqyowNXmW4FYILbahzg==}
@@ -964,28 +1107,28 @@ packages:
vue-i18n:
optional: true
- '@intlify/core-base@11.4.8':
- resolution: {integrity: sha512-A+Q7SKm5oEcy1E/cghqd7n/St4XjTqLhiiyDuieNcMrJcrHlkY5n0jp7Q9dD3txvVHzvsmBVV5M9wD5/s1zfzw==}
+ '@intlify/core-base@11.4.10':
+ resolution: {integrity: sha512-+yJ74JRWVJokdgG9zYNMyTSzeNV3O9T4vVxk8PvLFHmI+R/BYA//cITh7vhRK37hWLZ4/kTcKcUz1dlWOpypIg==}
engines: {node: '>= 22'}
- '@intlify/core@11.4.8':
- resolution: {integrity: sha512-TGFCWeunb0mmKWpX7UXRAS2enMtucTC+NG9dT+RMfxFDCAIvXF33Wb2yJUbeNczxER4f0uMt0b9g1MCsROfKyA==}
+ '@intlify/core@11.4.10':
+ resolution: {integrity: sha512-zQ/dUn7Sp7mXneQMAGp1k1h0vYDXqKWh9wQz7GCReRyx4r9kiZZOdlL/mEAexaUcph6D0gbVxHoknS+je1Em4w==}
engines: {node: '>= 22'}
- '@intlify/devtools-types@11.4.8':
- resolution: {integrity: sha512-MGpID+rlfzGUbNcnC20bm5NMSBHPrvx0atLTfv9dftn3kjXw1hGKDcIcwrO99tSrZEc2i+hczRL7ks8qXsHPkQ==}
+ '@intlify/devtools-types@11.4.10':
+ resolution: {integrity: sha512-xZxzZsAuu6/0zoLRVQWdpXWe5Kjl0LnWpjlQA3r9u9FbLYMhapqt7IwkgQyn0Tm2GUNAqhj9eZiUmYOrB024BQ==}
engines: {node: '>= 22'}
'@intlify/h3@0.7.4':
resolution: {integrity: sha512-BtL5+U3Dd9Qz6so+ArOMQWZ+nV21rOqqYUXnqwvW6J3VUXr66A9+9+vUFb/NAQvOU4kdfkO3c/9LMRGU9WZ8vw==}
engines: {node: '>= 20'}
- '@intlify/message-compiler@11.4.8':
- resolution: {integrity: sha512-vbzk17dYwduYiv52EK61+FDCyhfVg1uPUtPmiD/d45W99uJIcXywrweOBcHv7n9/iEqmXiMGT52bgJbZDQqK3w==}
+ '@intlify/message-compiler@11.4.10':
+ resolution: {integrity: sha512-oUB/scz2EJENXDiUJ7JjZffOrH8UIZ1BuZeHvonbi5fWLavLt04aivuk2OIByOZA0tsci1bkeeQRmwhb5M8Imw==}
engines: {node: '>= 22'}
- '@intlify/shared@11.4.8':
- resolution: {integrity: sha512-XbRgrv+XEuvDr7UCY55oibVrh+o4u+A0VB6nSL0F5Z8LcZxE/8j573LYG6bCrOigIcHdGpSNI7Rh5UpC5/B/eg==}
+ '@intlify/shared@11.4.10':
+ resolution: {integrity: sha512-FeImVdPeoSHTm3NBFFZHv0eRP9gQ3F4lj2puDBX5Kw7iiM1uJW6JTf39ian0K/17pbXCI3ef5i9RVsRrALqI6Q==}
engines: {node: '>= 22'}
'@intlify/unplugin-vue-i18n@11.2.5':
@@ -1054,12 +1197,21 @@ packages:
'@jridgewell/source-map@0.3.11':
resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
- '@jridgewell/sourcemap-codec@1.5.5':
- resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+ '@jridgewell/sourcemap-codec@1.6.0':
+ resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+ '@keyv/bigmap@1.3.1':
+ resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ keyv: ^5.6.0
+
+ '@keyv/serialize@1.1.1':
+ resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
+
'@koa/router@12.0.2':
resolution: {integrity: sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==}
engines: {node: '>= 12'}
@@ -1071,11 +1223,11 @@ packages:
'@kwsites/promise-deferred@1.1.1':
resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==}
- '@libsql/client@0.17.4':
- resolution: {integrity: sha512-lYayFWasDV78A+TjlEhr6ubb3odBV6OHjb+wdp8VQcyWWAEIjuwbCHaraEUS4m4yWoo0BvZo96It4VdzZRmRWw==}
+ '@libsql/client@0.18.0':
+ resolution: {integrity: sha512-zMCCo58vv7w27j7+cnt/GW+X6/Rih6cHZ86PKi0AxCMOqMfrVgG9OZ5lW2bDMJhSeOjsv2szH2nJF3A9l36UmA==}
- '@libsql/core@0.17.4':
- resolution: {integrity: sha512-LqF9gIvnJ38nmAH1y/ChizHqDO/MO1wLgA96XrraulEEbqXxLjleSH92YWTolbuJKgPUmGu4aJk9W3UnAcxLOQ==}
+ '@libsql/core@0.18.0':
+ resolution: {integrity: sha512-N8RR2CIpcgtbKZnXs2KVpw2lJQfinUj3I56e7qRDRpK18Hty0Rr8nr00VmFb4R/DsqOanPB/TaP3+QAQLZeXMg==}
'@libsql/darwin-arm64@0.5.29':
resolution: {integrity: sha512-K+2RIB1OGFPYQbfay48GakLhqf3ArcbHqPFu7EZiaUcRgFcdw8RoltsMyvbj5ix2fY0HV3Q3Ioa/ByvQdaSM0A==}
@@ -1138,6 +1290,14 @@ packages:
peerDependencies:
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
+ '@modelcontextprotocol/core@2.0.0':
+ resolution: {integrity: sha512-pJCEwGG7Lfr/+PQp9ZTwKXNeO5wzbfKL7H3MYpCorM4oFBoQrdjnBgEoqG+RjhsvS1FKrDbKux+M1HhlnGWqcA==}
+ engines: {node: '>=20'}
+
+ '@modelcontextprotocol/server@2.0.0':
+ resolution: {integrity: sha512-YhHWdHfpFMQfd0prsEnxKeS3Qz3ytIGmsS0sth4KDjnacIT7hxk6hXHkJ9KysxlkvTM+WZAtQbbcUhdoP4Hvtw==}
+ engines: {node: '>=20'}
+
'@napi-rs/lzma-linux-x64-gnu@1.5.1':
resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==}
engines: {node: ^22.20 || ^24.12 || >=25}
@@ -1155,8 +1315,8 @@ packages:
'@neon-rs/load@0.0.4':
resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==}
- '@noble/hashes@2.2.0':
- resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==}
+ '@noble/hashes@2.4.0':
+ resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==}
engines: {node: '>= 20.19.0'}
'@nodelib/fs.scandir@2.1.5':
@@ -1189,17 +1349,17 @@ packages:
peerDependencies:
vite: '>=6.0'
- '@nuxt/devtools-kit@3.4.1':
- resolution: {integrity: sha512-6ltPm2yUW8GvDdf3VJna7+flLi+ej7xRfSr+S4ovevKt/CuPf9EqYOn1jW7Kw/U1MXt/71zkn+/O2vu3G6O9Hg==}
+ '@nuxt/devtools-kit@3.4.2':
+ resolution: {integrity: sha512-TPPbmH9xrExagYxfCe6JgtbHmgchfgDdA656Yws18rn8I/oCvB+gcw3kTWBBp2sC9ipZPXsgbsW/yZnVnGNBiA==}
peerDependencies:
vite: '>=6.0'
- '@nuxt/devtools-wizard@3.4.1':
- resolution: {integrity: sha512-taGeuTnkHsZVjgD9r6NXvvHaBzB2j4mCgOmlmkz3ntsqgh1SJfmsD11Tmtl7FVAxJS8Wuvuzgt0GyTlADBW9Wg==}
+ '@nuxt/devtools-wizard@3.4.2':
+ resolution: {integrity: sha512-U2G8fw7KW1rdECyJDho5N14z8hSllpTk430KG1QPLjrv5w3pDksZ+YcpITd0u762Vw3gq3Arpg65Bk6U4ua6aQ==}
hasBin: true
- '@nuxt/devtools@3.4.1':
- resolution: {integrity: sha512-20zZs6k/zAdi+PM7s1BwxE3hanZ+R1OGi5DWCKPyzSnhUUeeNebvWNgec7Rwnx6iKLkJfK4WFIZ+FL2QurG/ZQ==}
+ '@nuxt/devtools@3.4.2':
+ resolution: {integrity: sha512-Nidg0/zB710cyK89ltTkv66hMfPlIPlKA+Yb67bIrAkNm5PoTwQ1goHdFWHIAGZ9nTadcVTzATwMwa56nvl/Wg==}
hasBin: true
peerDependencies:
'@vitejs/devtools': '*'
@@ -1262,15 +1422,15 @@ packages:
resolution: {integrity: sha512-h9g1kt9O2iU9nX6HDFu9gvwtpn+8oSJX0RSTWRBnEx/Pkz+WlOHtjuS0SbkTAXw5aT1+H1GysWVwNTjJfBY/0w==}
engines: {node: ^14.18.0 || >=16.10.0}
- '@nuxt/telemetry@2.8.0':
- resolution: {integrity: sha512-zAwXY24KYvpLTmiV+osagd2EHkfs5IF+7oDZYTQoit5r0kPlwaCNlzHp5I/wUAWT4LBw6lG8gZ6bWidAdv/erQ==}
+ '@nuxt/telemetry@2.9.1':
+ resolution: {integrity: sha512-WYQs6GvebU278YXhbGlLA8pUO3ox+juHAiKCB3SEH0lq2PDRwX465tHRtpVIqsHv+lGK/n99FC7qqyBt9+p3oQ==}
engines: {node: '>=18.12.0'}
hasBin: true
peerDependencies:
'@nuxt/kit': '>=3.0.0'
- '@nuxt/test-utils@4.1.0':
- resolution: {integrity: sha512-B0CipGKVVY5qbLMXJqYPYdalNzE9VFzybEAOqHGFHPDqv/8RFRe+/F3lJJigtLFroxaBDMMyrhLcmgKIXBv8og==}
+ '@nuxt/test-utils@4.3.2':
+ resolution: {integrity: sha512-RgBgYN/CyJYWdHzGA8+bznK7bfqpdCUTkA6WGylYuSdt51l6w/jbz/2PyGuGqFkta4H7KQifWNIeFVjW5x66tg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
'@cucumber/cucumber': '>=11.0.0'
@@ -1283,7 +1443,7 @@ packages:
happy-dom: '>=20.0.11'
jsdom: '>=27.4.0'
playwright-core: ^1.43.1
- vitest: ^4.0.2
+ vitest: ^4.0.2 || ^5.0.0
peerDependenciesMeta:
'@cucumber/cucumber':
optional: true
@@ -1468,8 +1628,8 @@ packages:
'@oxc-project/types@0.141.0':
resolution: {integrity: sha512-S4as7z0j0xQkXcJlyY5ehntwK8/wRkQb9Cyqw+J/N2rkWGQGK0SxD6X6DhQTc7qsxVTBxXbxZtBJh3mr3PtIzQ==}
- '@oxc-project/types@0.144.0':
- resolution: {integrity: sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==}
+ '@oxc-project/types@0.148.0':
+ resolution: {integrity: sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A==}
'@oxc-transform/binding-android-arm-eabi@0.141.0':
resolution: {integrity: sha512-FOdseb5KpV3JtkM+7TN4u3sW3aQkUSRy0bWWiKgT/qrIGqZHqzKEUpwaMybutsfwEglWBXuJgnrT9loWisPkrw==}
@@ -1629,92 +1789,98 @@ packages:
'@poppinss/exception@1.2.3':
resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==}
- '@rolldown/binding-android-arm64@1.2.4':
- resolution: {integrity: sha512-jHC2cnyKz5xU2fhECtFl8OZ83cYNt13GZQD+0uMJ/X3o+ijmd56okHhTUwxVSHPx1IRVIJEZ1/1pPzeLCU6XKA==}
+ '@rolldown/binding-android-arm-eabi@1.2.7':
+ resolution: {integrity: sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [android]
+
+ '@rolldown/binding-android-arm64@1.2.7':
+ resolution: {integrity: sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@rolldown/binding-darwin-arm64@1.2.4':
- resolution: {integrity: sha512-Dc5mPD8F5F/FS8i01syd7FTF6yB2fVthH/TRkjwJkzUK6EpoxHtqvZQP5Zwq80/5z19TWYHIg1KOHboCgVx/aQ==}
+ '@rolldown/binding-darwin-arm64@1.2.7':
+ resolution: {integrity: sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@rolldown/binding-darwin-x64@1.2.4':
- resolution: {integrity: sha512-fpDm4oBo6SqLvWUYCmFhdde3U9KH2fRNNMeAnAPAIwxRL345xutL0EtEUcuoxsoazdJGv/MuDBQHlCDrtbvqOg==}
+ '@rolldown/binding-darwin-x64@1.2.7':
+ resolution: {integrity: sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@rolldown/binding-freebsd-x64@1.2.4':
- resolution: {integrity: sha512-rSJoreDE/HoIzoaib6MTp5jQtCTdMHKIvItAKT/ImS6Y6Ww76oUaeMyp4Vc/fAgd/ehji068IxetHXAnqUwN9A==}
+ '@rolldown/binding-freebsd-x64@1.2.7':
+ resolution: {integrity: sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@rolldown/binding-linux-arm-gnueabihf@1.2.4':
- resolution: {integrity: sha512-/jm8OGHgn7oGaJu3i/qZI9spUGcJ+y/lk43ttQ/iO1tOd9NissG6o97bighBCiL+BKRngmcDuR6ikfwYdJmVuQ==}
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.7':
+ resolution: {integrity: sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@rolldown/binding-linux-arm64-gnu@1.2.4':
- resolution: {integrity: sha512-tIP06BeD9EqvECBrPZ+sqdPlYrT+aYaAiu1wYziVx5elRK/ftm33JxVDy2bXGbr6J0CrtirCkR87/X5a2euEng==}
+ '@rolldown/binding-linux-arm64-gnu@1.2.7':
+ resolution: {integrity: sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-arm64-musl@1.2.4':
- resolution: {integrity: sha512-Ql1Q0EQqVThvn9VAVlwNzsUvbSFtCMGjLpRRi4pk5i7NZZ4n5ISiLMjHYtus4VQ2PvkSw24zyaCVsiS+sXPj1w==}
+ '@rolldown/binding-linux-arm64-musl@1.2.7':
+ resolution: {integrity: sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rolldown/binding-linux-ppc64-gnu@1.2.4':
- resolution: {integrity: sha512-GjbjXD4XXfN19D0LZNbmiCBUoDiRACsYHr0yaIbbn8aFsXjHZifcYqu/W5Er5X2X990WjHXFrxarn5chzItorQ==}
+ '@rolldown/binding-linux-ppc64-gnu@1.2.7':
+ resolution: {integrity: sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-s390x-gnu@1.2.4':
- resolution: {integrity: sha512-p5WR0NOwaRmJ/B1b6IjEFLLivwEsf3PrdBIhRbhTCQisbo2SvHHpG4ELB/+FgQNnB88LTOF86upmJmbvZdQ2lw==}
+ '@rolldown/binding-linux-s390x-gnu@1.2.7':
+ resolution: {integrity: sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-gnu@1.2.4':
- resolution: {integrity: sha512-4/GyVjmhR+Tc6HLJvwc1sOhPqAZtySiSMesOZyX6JQ5XBxoTDEMKQzvo07NIK6nTon/SivlZqvhzvuVBNQhObQ==}
+ '@rolldown/binding-linux-x64-gnu@1.2.7':
+ resolution: {integrity: sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-musl@1.2.4':
- resolution: {integrity: sha512-l9eeLsCNvPpmSXUej0etw/J1eqV0Jj1D5G/xG6YTijmE6dkv6E2QezgWbTfQk63v952DPqrjOCoiqxq7Bw0YUQ==}
+ '@rolldown/binding-linux-x64-musl@1.2.7':
+ resolution: {integrity: sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rolldown/binding-openharmony-arm64@1.2.4':
- resolution: {integrity: sha512-e0F355MSTMm3+UOqtV3L24gFUp2N5m1f8L/7d56deik6va+AXdrt9F8LbzGpeWGWRbZEDq4m8NVnJDeBtf9DZg==}
+ '@rolldown/binding-openharmony-arm64@1.2.7':
+ resolution: {integrity: sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@rolldown/binding-win32-arm64-msvc@1.2.4':
- resolution: {integrity: sha512-AWLi0uBRYh6QlE7OKhiz+phZC0qwtij2QZmhmOdsLdFn64m7oMpooE9ICE3lhm9xMb4SpDo2WbHcxX1iFLFtqw==}
+ '@rolldown/binding-win32-arm64-msvc@1.2.7':
+ resolution: {integrity: sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@rolldown/binding-win32-x64-msvc@1.2.4':
- resolution: {integrity: sha512-UwSDJOg3dqCAejWdxclJjCsh3Qq4vLYMDxmyHqo1btz3stK2VqgwNd3mm5tuIwzSlGIQ/1H9Hr+Zn09mrezNqQ==}
+ '@rolldown/binding-win32-x64-msvc@1.2.7':
+ resolution: {integrity: sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -1803,141 +1969,141 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.62.4':
- resolution: {integrity: sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==}
+ '@rollup/rollup-android-arm-eabi@4.63.1':
+ resolution: {integrity: sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.62.4':
- resolution: {integrity: sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==}
+ '@rollup/rollup-android-arm64@4.63.1':
+ resolution: {integrity: sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.62.4':
- resolution: {integrity: sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==}
+ '@rollup/rollup-darwin-arm64@4.63.1':
+ resolution: {integrity: sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.62.4':
- resolution: {integrity: sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==}
+ '@rollup/rollup-darwin-x64@4.63.1':
+ resolution: {integrity: sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.62.4':
- resolution: {integrity: sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==}
+ '@rollup/rollup-freebsd-arm64@4.63.1':
+ resolution: {integrity: sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.62.4':
- resolution: {integrity: sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==}
+ '@rollup/rollup-freebsd-x64@4.63.1':
+ resolution: {integrity: sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.62.4':
- resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.63.1':
+ resolution: {integrity: sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm-musleabihf@4.62.4':
- resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==}
+ '@rollup/rollup-linux-arm-musleabihf@4.63.1':
+ resolution: {integrity: sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-arm64-gnu@4.62.4':
- resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==}
+ '@rollup/rollup-linux-arm64-gnu@4.63.1':
+ resolution: {integrity: sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm64-musl@4.62.4':
- resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==}
+ '@rollup/rollup-linux-arm64-musl@4.63.1':
+ resolution: {integrity: sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-loong64-gnu@4.62.4':
- resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==}
+ '@rollup/rollup-linux-loong64-gnu@4.63.1':
+ resolution: {integrity: sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ==}
cpu: [loong64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-loong64-musl@4.62.4':
- resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==}
+ '@rollup/rollup-linux-loong64-musl@4.63.1':
+ resolution: {integrity: sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA==}
cpu: [loong64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-ppc64-gnu@4.62.4':
- resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==}
+ '@rollup/rollup-linux-ppc64-gnu@4.63.1':
+ resolution: {integrity: sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-ppc64-musl@4.62.4':
- resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==}
+ '@rollup/rollup-linux-ppc64-musl@4.63.1':
+ resolution: {integrity: sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA==}
cpu: [ppc64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-riscv64-gnu@4.62.4':
- resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==}
+ '@rollup/rollup-linux-riscv64-gnu@4.63.1':
+ resolution: {integrity: sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-riscv64-musl@4.62.4':
- resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==}
+ '@rollup/rollup-linux-riscv64-musl@4.63.1':
+ resolution: {integrity: sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ==}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-s390x-gnu@4.62.4':
- resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==}
+ '@rollup/rollup-linux-s390x-gnu@4.63.1':
+ resolution: {integrity: sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A==}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-gnu@4.62.4':
- resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==}
+ '@rollup/rollup-linux-x64-gnu@4.63.1':
+ resolution: {integrity: sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-musl@4.62.4':
- resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==}
+ '@rollup/rollup-linux-x64-musl@4.63.1':
+ resolution: {integrity: sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rollup/rollup-openbsd-x64@4.62.4':
- resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==}
+ '@rollup/rollup-openbsd-x64@4.63.1':
+ resolution: {integrity: sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA==}
cpu: [x64]
os: [openbsd]
- '@rollup/rollup-openharmony-arm64@4.62.4':
- resolution: {integrity: sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==}
+ '@rollup/rollup-openharmony-arm64@4.63.1':
+ resolution: {integrity: sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.62.4':
- resolution: {integrity: sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==}
+ '@rollup/rollup-win32-arm64-msvc@4.63.1':
+ resolution: {integrity: sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.62.4':
- resolution: {integrity: sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==}
+ '@rollup/rollup-win32-ia32-msvc@4.63.1':
+ resolution: {integrity: sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.62.4':
- resolution: {integrity: sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==}
+ '@rollup/rollup-win32-x64-gnu@4.63.1':
+ resolution: {integrity: sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.62.4':
- resolution: {integrity: sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==}
+ '@rollup/rollup-win32-x64-msvc@4.63.1':
+ resolution: {integrity: sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w==}
cpu: [x64]
os: [win32]
@@ -1979,11 +2145,11 @@ packages:
peerDependencies:
tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1'
- '@tanstack/virtual-core@3.17.7':
- resolution: {integrity: sha512-bp+v10y65sp2H7WpWfIMyxTNfl8ZVfxFTLRjPIFRryi6FV/J33z4IS53WO4pTk36KlvJ4iLiQz+oaydDC1xbcA==}
+ '@tanstack/virtual-core@3.17.8':
+ resolution: {integrity: sha512-BfEvehNpOT75r5Ksc5xW6NZuXujTfb7nlSEyVu4XHG3gdxNg1KqXruWbDewXOUaUYIo4oRbSfkjIajz4MAT8tA==}
- '@tanstack/vue-virtual@3.13.35':
- resolution: {integrity: sha512-lOfSPvgPdlaH6Qy+CyIc3XpycitaSQ9GECndGpTuDiu+uDA1am+90yWXwzDSd/20ZM196ggWJLS+Qb6WjVd/OA==}
+ '@tanstack/vue-virtual@3.13.36':
+ resolution: {integrity: sha512-gKpExv4RbB9luVG+SucTXoqPZv/gzu/Yvz6BNO+8kpNxJ2x+I/ulryzl5W9BRciahZGp5Tls3Dp5XP1ztVGbMw==}
peerDependencies:
vue: ^2.7.0 || ^3.0.0
@@ -2002,14 +2168,11 @@ packages:
'@types/estree@1.0.9':
resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
- '@types/jsesc@2.5.1':
- resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==}
-
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
- '@types/node@26.2.0':
- resolution: {integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==}
+ '@types/node@26.4.1':
+ resolution: {integrity: sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==}
'@types/phc__format@1.0.1':
resolution: {integrity: sha512-hoAQFKcP3voXk/ZEl3jrvS63o/HYLszq4nA2mqjytaSEHEy3j3t0gSFtPLnfKtX34k/xfath7etOoGw5ukoqXQ==}
@@ -2026,75 +2189,75 @@ packages:
'@types/ws@8.18.1':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
- '@typescript-eslint/eslint-plugin@8.67.0':
- resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==}
+ '@typescript-eslint/eslint-plugin@8.69.0':
+ resolution: {integrity: sha512-t5jQTKPIgVW1PE6dR6H6Qz5gm8zjMlX5/2gRaOGd9eO6V7J+tQc6iWKukEe7dY8u9HyYasQ0yfF0/FSSTEO2gA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.67.0
+ '@typescript-eslint/parser': ^8.69.0
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/parser@8.67.0':
- resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==}
+ '@typescript-eslint/parser@8.69.0':
+ resolution: {integrity: sha512-l4b0DhWioGg6Gt2ebGlvfkFMOjRsauxtsnDRwUSRX1qHq3HdTfQHV8wW9zEXeciai6HfeaKOedQn2Zoofx3WBw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/project-service@8.67.0':
- resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==}
+ '@typescript-eslint/project-service@8.69.0':
+ resolution: {integrity: sha512-yi4obFrHMmnsesWehHbkg9zMA7Jt8cXT+mKM08G999pH1yT6nqgsHx7MYm0uY1wAj8CqiBXYRJ7WAT0QdQHQXg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/scope-manager@8.67.0':
- resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==}
+ '@typescript-eslint/scope-manager@8.69.0':
+ resolution: {integrity: sha512-ewfspqWvSxKSOaplqAUNbaSFO0eB6w1EtQ+esfYFRm3614Ty4uNtExkcbgd6nWsXphbqKyf9ZYdbZdv2xEoWEQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.67.0':
- resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==}
+ '@typescript-eslint/tsconfig-utils@8.69.0':
+ resolution: {integrity: sha512-xNqK7YTDZsLniQMV/4rpFR8Z5JlqeRvVjuG1YgF/mdPVH84HSD19L8CczMA0qg2RfwEV231GHH3VnToJDo4MfQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/type-utils@8.67.0':
- resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==}
+ '@typescript-eslint/type-utils@8.69.0':
+ resolution: {integrity: sha512-ZfoJAVg3JZndQEpEl9petVlxau3lRuElc4HRMuAlLCf8to04/iHz692RUSNmXKDjEuJmIL+KZ2/BsOcBc16dsA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/types@8.67.0':
- resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==}
+ '@typescript-eslint/types@8.69.0':
+ resolution: {integrity: sha512-K3VrubUPhlo9VDBS6QdI8YB5j7ClpqLRdefcz6PFrhnwicehBweqQ9Evhl4l+FYz0HdDmMqIiSX0aldGRYtDCA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.67.0':
- resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==}
+ '@typescript-eslint/typescript-estree@8.69.0':
+ resolution: {integrity: sha512-AdFkgqck3Vudb/kWnxlyafU/4aBhHrbQ9locP2N4psXTy5mOBg0SHJumnLvx7r6g1gV4DKvUFwV2nJZBoqOD8w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/utils@8.67.0':
- resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==}
+ '@typescript-eslint/utils@8.69.0':
+ resolution: {integrity: sha512-tUbx60BBqQa31kXF5MCsOOLL5E/WzUuxIn7YpAvq+eaUlqvk8/NXnXMBNAdLCr0icjkzem7iUA5QqWHe/hJ1aw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/visitor-keys@8.67.0':
- resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==}
+ '@typescript-eslint/visitor-keys@8.69.0':
+ resolution: {integrity: sha512-+rmdgPA+EXkNgKYvHvFfhrs35utXbwaC5PGpDquSXcoXQDKUA5UjV0LmTucG/4JXkM31BTu4TilHtrN8IVBe8w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@unhead/bundler@3.3.2':
- resolution: {integrity: sha512-FgddDfNva/2n/BPRsqNJVNJ26TVnO5ywqrWYeC8xXV4c1CLQRABDwmmyy7hEsKH1YXg9bDb8IkZzyNBkJ59LTQ==}
+ '@unhead/bundler@3.4.0':
+ resolution: {integrity: sha512-RnsCYynvDiUwmZ/U7TkFwFLr6yTRXVFJlZFj3ehi+m6M4f+GWL/O+6BTQzaHdz59zg2UHHejQvwuXvcL7dj0Dw==}
peerDependencies:
- '@unhead/cli': ^3.3.2
+ '@unhead/cli': ^3.4.0
'@vitejs/devtools-kit': ^0.4.1
esbuild: '>=0.17.0'
lightningcss: '>=1.20.0'
oxc-parser: '>=0.98.0'
rolldown: '>=1.0.0'
- unhead: ^3.3.2
+ unhead: ^3.4.0
vite: '>=6.4.2'
webpack: '>=5.0.0'
peerDependenciesMeta:
@@ -2115,8 +2278,8 @@ packages:
webpack:
optional: true
- '@unhead/vue@3.3.2':
- resolution: {integrity: sha512-WMmKtBxEzYrs2GBG3nuFFguuq8CdbQ6s7NX8TxBNev++WGh8otHa6KvmlMwNCawu+iH83aRWuCaxLpCKAuCDkQ==}
+ '@unhead/vue@3.4.0':
+ resolution: {integrity: sha512-fSnDS9d++bqR4t1z6+zFN7bQB5F0+5nwvE4yHW7BGRfEmssCP4fel0GprooUgoLkzx+FcAWMwVIakyaeErSRBA==}
peerDependencies:
vite: '>=6.4.2'
vue: '>=3.5.18'
@@ -2247,8 +2410,8 @@ packages:
cpu: [x64]
os: [win32]
- '@vercel/nft@1.10.2':
- resolution: {integrity: sha512-w+WyX5Ulmj4dtTZrxaulqrjaLZHSbnPzx75SJsTNYmotKsqn1JlLnDJa+lz5hn90HJofhl/2MAtw0mCrgM3qYw==}
+ '@vercel/nft@1.11.0':
+ resolution: {integrity: sha512-m1QFg+U+3yPOnP1xSYJ73UIRxLOXdts1JOhiOiyPYqEsALgrXFFINvgUaD6R6iNvaBFAjHllBCbkfx4FuOdpaA==}
engines: {node: '>=20'}
hasBin: true
@@ -2348,17 +2511,29 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@vue/compiler-core@3.5.41':
- resolution: {integrity: sha512-q0Xtv/F9w2YO/7htQhtiL+Ev2WCJbe5N2hc+XfgyKkEKqWpSxknmT8QOuGdEKNdjPq0c3F7rNpFkTo3Kfrm7pg==}
+ '@vue/compiler-core@3.5.42':
+ resolution: {integrity: sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==}
- '@vue/compiler-dom@3.5.41':
- resolution: {integrity: sha512-oKacVfNglLvGjnS6BXOlGL7EyG2h8X03pqXCjzotRZUaXGjbrTJUnVAQjrCqUnS+lyu31nwQjZY/d817GmCnfw==}
+ '@vue/compiler-core@3.5.43':
+ resolution: {integrity: sha512-zdiLhnbe1QQqgDT8xZMpNmyqZ3qlI+/Q/FHQco57Kwl/b05HhCzN6eVGN9QU9rbga4CrS0H5SYY8VGHZCt/1Hg==}
- '@vue/compiler-sfc@3.5.41':
- resolution: {integrity: sha512-XJhip7R2wy6vX3knCxdZN4KracFaZUef58s1KYewqluedHIJaPIVfXoYT7MF1F8nCvv6k8bWWxDC8opMkg1VTQ==}
+ '@vue/compiler-dom@3.5.42':
+ resolution: {integrity: sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA==}
- '@vue/compiler-ssr@3.5.41':
- resolution: {integrity: sha512-U3v5OejKEGqOI0Wy0+Sz7hGuIFZHA4LSXzrNM3IMIeDyJEBBfTpX26n3SDgToRpP2bLc9FfI2j/kSgcJ8Emq5A==}
+ '@vue/compiler-dom@3.5.43':
+ resolution: {integrity: sha512-PEZoAk3NQmsn/ejMzSOCyTYqwGqczrWm70PuhBKjjv1+TCoQAaO/zOqNwjV+honlNstT5ILxtc+8r8UUfj+iEQ==}
+
+ '@vue/compiler-sfc@3.5.42':
+ resolution: {integrity: sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw==}
+
+ '@vue/compiler-sfc@3.5.43':
+ resolution: {integrity: sha512-FCbrG3XNCRl+js3huuKx4IVHBLTvMkJhVepjbxSPu1gn4yWLaYtGNQdjJGZaMytXB6qb76qQDDmDSLy/vkmleQ==}
+
+ '@vue/compiler-ssr@3.5.42':
+ resolution: {integrity: sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA==}
+
+ '@vue/compiler-ssr@3.5.43':
+ resolution: {integrity: sha512-GF62orf7KiJX9RqrHNGrYBudsQGD0OhJ5nDs90O8UiDuS40+YMYomiXu6w6EuvtXuRDc3MSNis3EaaSKAVSWpg==}
'@vue/devtools-api@6.6.4':
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
@@ -2377,23 +2552,26 @@ packages:
'@vue/devtools-shared@8.2.1':
resolution: {integrity: sha512-Fkac7lUdGReh6pVOi3AYPRGe82LQqRmAfThW7RRligOAP0ZA/Z1z9XLHDM9dv34pV2HRc79DK8uKPeG2fLnA/g==}
- '@vue/language-core@3.3.10':
- resolution: {integrity: sha512-CR7ByBbgPHqhxrioKPOcZBqttaozzLNwtkCzXQ+uF8gLPHnUe03srPnGpdtHD3zp+bq5iyVkZ1WNx7W564RPwg==}
+ '@vue/language-core@3.3.11':
+ resolution: {integrity: sha512-QJmpliwAVpC/OxubIByPAhNzsQPRc8/gxlN2qnVzVfIMjMDz/9RnXRFoetjz5yEgXVXyp4LqhXq3V53PjmNzFw==}
- '@vue/reactivity@3.5.41':
- resolution: {integrity: sha512-rznsqKM0np0x18EjzF8x88MpEhdNsffbvFbckLL5+oUKz1BxAImEmO7J1ArRYSyo6aQaVoBDp7jEkT91OOxydA==}
+ '@vue/reactivity@3.5.43':
+ resolution: {integrity: sha512-G/c9GyOZNI2jVaaS6OX1EF1SSFSv7H0ERqNTl4+DTFMlZmB5eVAB53aLQNam/7NL2NPtaDD7RdVrzf8uJzMuOA==}
- '@vue/runtime-core@3.5.41':
- resolution: {integrity: sha512-Vcry58hiAKwGen9Z1jUZE0feFsNArPCMOImYI8el48A9Idf6DuQYD0U05zZIF2Iad1hGhPSvcbBbAOhNr55fhg==}
+ '@vue/runtime-core@3.5.43':
+ resolution: {integrity: sha512-hU6U6VnVhBGQDpvlnnDlIB8ZGJBiOcgk2lh/0InltHiz3D8oSkluvuvY+do1G2H3+udeKFsmaBlgVYP7gXQzEw==}
- '@vue/runtime-dom@3.5.41':
- resolution: {integrity: sha512-3vVBahVBS9+U6cmXBLyb8nE6/yYo4J/CGI9eVFs3KiMc0YHuudwKyShTD65jtJy/L9PUUxNAFu4cj4LiJ0UFbw==}
+ '@vue/runtime-dom@3.5.43':
+ resolution: {integrity: sha512-Bb2Jc0YjjJdMt1SJmb9b2L/IWd3I8lIT9x9eS/xvvP9CiVgna0ffua74xKRmt4/uSJ+0r4iN8ex1jrqkhQGWQw==}
- '@vue/server-renderer@3.5.41':
- resolution: {integrity: sha512-n6hx/pNFfbD6SuyeuMVkvqox8bwf/ET9JlA/kAz/imw8sw++wkqKe2mHX5KutjPpbKE4Z56yTHszoOjGMI9igQ==}
+ '@vue/server-renderer@3.5.43':
+ resolution: {integrity: sha512-l2Ygjv9NehV94PSBxNWsAHC0j/eIIKbn92mBuWXAPGLnn6HfJ6MH5ubsd+Nk0YoZ5FRuxWI1P2VSoh+dbPQhCQ==}
- '@vue/shared@3.5.41':
- resolution: {integrity: sha512-IOnwSCma8j+9xJT6b8H0dEYidC80NsYmNMlZxRsukYcSoGaDBohog5hDxzeUXdFeGWFA++vWvxqOmrr96VlqMA==}
+ '@vue/shared@3.5.42':
+ resolution: {integrity: sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==}
+
+ '@vue/shared@3.5.43':
+ resolution: {integrity: sha512-uksS7YGMR5NZyr4JNq0Rp+QyLns0ueaz20KwzIPW9R0LH1Vnt4E+XUM29PNseEbf1www2gOuhuDi5AKOIXag9Q==}
'@vueuse/core@14.4.0':
resolution: {integrity: sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==}
@@ -2478,11 +2656,11 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
- apex-commons@0.5.0:
- resolution: {integrity: sha512-xz83SgPREE1wGtoflvxjwJtcjzl5bKTz2/bDxWCZNL6QVjUNE47kMg/1Zqt0bSh6eOnmFCWlTDc3RU8o85N+wg==}
+ apex-commons@0.8.1:
+ resolution: {integrity: sha512-F7fqJVh0smeTu1d86uuRSNNZvaM/l11GNQMbu6oAiSvuXp+K8KCufg0oZTy2VQBEEipRLAdFqkHnphlVpTG0Gw==}
- apexcharts@6.10.0:
- resolution: {integrity: sha512-XkDW9pb5L5jrjox86Q20gR2w6YnU4hUpv+FjL1eKtYKQGtyTUSsnFeuUE8wVDz8hNNHbOEx7Sl9cjfCmhB3NVw==}
+ apexcharts@7.5.1:
+ resolution: {integrity: sha512-I+S/KSXKGwaCZx73CvAg7yLfM892NEZR2CG5UHkjGFjBq/LhesuglIGuaKn1fiGa5Z0voAyfFROLjWywZNyOEA==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
archiver-utils@5.0.2:
@@ -2536,8 +2714,8 @@ packages:
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
engines: {node: '>= 4.0.0'}
- autoprefixer@10.5.4:
- resolution: {integrity: sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==}
+ autoprefixer@10.5.5:
+ resolution: {integrity: sha512-uiRYvQYe/nNSzBJ7OUnd2/TZVsAdob3blml44teEpee9Cc1f4rGZFewO+JT3Wo8mgFOSzNqes4FHZn/Qz8WOuw==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
@@ -2558,16 +2736,16 @@ packages:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
- bare-events@2.9.1:
- resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==}
+ bare-events@2.9.2:
+ resolution: {integrity: sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==}
peerDependencies:
bare-abort-controller: '*'
peerDependenciesMeta:
bare-abort-controller:
optional: true
- bare-fs@4.8.0:
- resolution: {integrity: sha512-fM+MhCvdQhZ7NV6S95a07gPSqjIYKn6mFaXfx266wN3ajZGl/+1AzH+ubkXQ0fFZvOe2nk9VHkzdYkQE5zMV3Q==}
+ bare-fs@4.8.1:
+ resolution: {integrity: sha512-N1nnXdHZAOSstz0XiHikGS4HGMH4CnSwhqWdGQQMqqdvp4Jybm9sE3R1WVnpWVd4SFkc8ryPDBLViNLwiEqECg==}
engines: {bare: '>=1.28.0'}
peerDependencies:
bare-buffer: '*'
@@ -2575,11 +2753,11 @@ packages:
bare-buffer:
optional: true
- bare-path@3.1.1:
- resolution: {integrity: sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ==}
+ bare-path@3.1.2:
+ resolution: {integrity: sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw==}
- bare-stream@2.13.3:
- resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==}
+ bare-stream@2.13.4:
+ resolution: {integrity: sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA==}
peerDependencies:
bare-abort-controller: '*'
bare-buffer: '*'
@@ -2592,14 +2770,14 @@ packages:
bare-events:
optional: true
- bare-url@2.5.2:
- resolution: {integrity: sha512-L13PCJzKG8RGvx8V1/DdMi12ERhC3tprr7/8a94BxpmnRsFqxh5XZNdhtMxu5HPkRshYOOWRGY8lDP7ZhpG9Cg==}
+ bare-url@2.5.4:
+ resolution: {integrity: sha512-Gxa7UVWBr0/edU1b+TJhn/AZvMQUj9OGspvYsaTYQrAbZA4BOTZGL3LiZxvD+CeMlDH4juwD84+eTAp/bLYW5g==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- baseline-browser-mapping@2.11.14:
- resolution: {integrity: sha512-JyJ954WzuIR8/FFzX0o5krdSTrBAkcCSRfWSleRsIHSWV+cZe2FI1PKggVkFke1hBldRs+LRxUczzE9iPmgZww==}
+ baseline-browser-mapping@2.11.21:
+ resolution: {integrity: sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -2613,8 +2791,8 @@ packages:
birpc@2.9.0:
resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==}
- birpc@4.1.0:
- resolution: {integrity: sha512-O8L9vALWGqdEe0cG4HJckauw3WeJETlJnDRPUYpgwB7wrU43b/5NGMdVjdVcRo+4ROgd3ih2wha1glDe4HRVgw==}
+ birpc@4.2.0:
+ resolution: {integrity: sha512-KxgKcZPfrtzJDDALHPguGpGJUrzdgpymyiQQgzFjWreHMOpWrnFNVREr5J48x2DBh8ZVioscrV1SBkDipGiX+Q==}
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -2633,8 +2811,8 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- browserslist@4.28.8:
- resolution: {integrity: sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==}
+ browserslist@4.28.9:
+ resolution: {integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
@@ -2672,6 +2850,9 @@ packages:
resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==}
engines: {node: '>= 6.0.0'}
+ cacheable@2.5.0:
+ resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==}
+
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
@@ -2687,8 +2868,8 @@ packages:
caniuse-api@4.0.0:
resolution: {integrity: sha512-B0hQ1OLyJuHTQSOWXvwibWqM6DCoqJdvBA6X1S/53bd4XU7LJ1yurIPlrsouol3mw1jh9pGI4ivubSpmJeIqCA==}
- caniuse-lite@1.0.30001809:
- resolution: {integrity: sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==}
+ caniuse-lite@1.0.30001810:
+ resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==}
chai@6.2.2:
resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==}
@@ -2717,10 +2898,6 @@ packages:
resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==}
engines: {node: '>=8'}
- cidr-regex@7.0.1:
- resolution: {integrity: sha512-5gppzHz6kQy4wob+bAyk5FsqF7irqxi7V6o2qO/iL1pWbwxL4uTNZ9IHk/X4MKdDegjjWIz8uERyX5nIFITT4g==}
- engines: {node: '>=22'}
-
cidr-regex@7.1.0:
resolution: {integrity: sha512-BQ5X/OTeC6hrD7k8/rNY93etXfQ3mcjIiYOkYDrB5oThXyOrgoa/jgeQxVglQaDA7UrtEnSEpHBqpfuyriwXsQ==}
engines: {node: '>=22'}
@@ -2804,6 +2981,9 @@ packages:
confbox@0.2.4:
resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==}
+ confbox@0.3.1:
+ resolution: {integrity: sha512-cKUSoKa8YxFZZSmraVi7onONx3amu77ngK3kGpsYHDH7drPwCRkQE1RYMPlLRrMtnciRj274XNRxcHxnKmDSnA==}
+
consola@3.4.2:
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
engines: {node: ^14.18.0 || >=16.10.0}
@@ -2868,16 +3048,16 @@ packages:
crossws@0.3.5:
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
- crossws@0.4.10:
- resolution: {integrity: sha512-pz3oubH/dt12KjqsUB0IuXW4nwRDQ583iDsP4555Cpdqx0NoU7pGlWBcayyFI8f/l/idRpgjMEfwuOxSWJYlIA==}
+ crossws@0.4.12:
+ resolution: {integrity: sha512-aypfsr6t0uNvkqaZc6zvBfXzC6pLI0/sIulpkV6RwCVtZqG5ebBzv4weImKK0VNCj91Wl9F5j7p5WU4MNrybng==}
peerDependencies:
srvx: '>=0.11.5'
peerDependenciesMeta:
srvx:
optional: true
- css-select@5.2.2:
- resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==}
+ css-select@6.0.0:
+ resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==}
css-tree@2.2.1:
resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
@@ -2887,8 +3067,8 @@ packages:
resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
- css-what@6.2.2:
- resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
+ css-what@7.0.0:
+ resolution: {integrity: sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==}
engines: {node: '>= 6'}
cssesc@3.0.0:
@@ -2896,20 +3076,20 @@ packages:
engines: {node: '>=4'}
hasBin: true
- cssnano-preset-default@8.0.5:
- resolution: {integrity: sha512-R9O+oRNnKcVBf7GZZ7nfBcOiBZZwi3kR1HtKirBHel/gTtHLMHOCsL2H3QGy1161CPystJV4EiKniC7XyUKfcw==}
+ cssnano-preset-default@8.0.10:
+ resolution: {integrity: sha512-34uq3q7OXgmfxXn+MHTgIqysCLH7zRZZUMAwrBiO09F5/KLVD33iDFNRRUNYStKdj0SaAIUVr6Akao2Fpp0aVA==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- cssnano-utils@6.0.3:
- resolution: {integrity: sha512-HskzChO3gRkXBQSWg68DfwoVfptRUV2GvuiQBvt+C7mUw4VB0CvPjkC4iF4JSf7yW1/66Hsc6WJtqNqD5Ydt2Q==}
+ cssnano-utils@6.0.4:
+ resolution: {integrity: sha512-j1z2mW4MqtcGM4I8TxXAdOXUifp1DZ5/bZnyYnCpHlzQ/ilCj2voLxE0aqEKnBDA5hF6HahSY13JU8kyZ1s8Mg==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- cssnano@8.0.5:
- resolution: {integrity: sha512-Yigb8Apuqi/jWwii1XFmZwgAPZ2RHDUx/ANodBZsEQusYIFryChhwOQNKco0A7V6zgFqDDy3LqefGK6OnniGMA==}
+ cssnano@8.0.10:
+ resolution: {integrity: sha512-aMlBsvQW5g1b8vfPnkuy5Bk7g/jyRsf5eMpbhe4nKnePx+n2IrC0L6dFqnd3r4/OGNIYGEHfAt09oywi84fWKQ==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
@@ -2975,8 +3155,8 @@ packages:
resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
engines: {node: '>=18'}
- default-browser@5.5.0:
- resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
+ default-browser@5.5.1:
+ resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==}
engines: {node: '>=18'}
define-lazy-prop@3.0.0:
@@ -3020,21 +3200,18 @@ packages:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
- devalue@5.9.0:
- resolution: {integrity: sha512-RWrqdArjvPbsATEhOPUo6Wndc/iWnkWKlhIrdlF3zMMYo/c3CVtoaVAyLtWxz5h8nSlkHzxnzV2uLydPXmtF+A==}
+ devalue@5.9.2:
+ resolution: {integrity: sha512-po4PAY5c53tw5XMocSnf8A/5OHhbbUftpr93aEN6BBoAdntUmK7vu7wOATqvt7cXO7m1Cl4gMVn6p7n6n4mj0w==}
- devframe@0.8.2:
- resolution: {integrity: sha512-oodQXEQnrvufA1so/E058Z3SG3bk9AlUE5+NIAsyx5ZJH9P/oX6WMxjC0bs5PPwtKbS7pBHjxja2AD8EwGE8/Q==}
+ devframe@0.9.12:
+ resolution: {integrity: sha512-WXwohwmTPVesEQYDAIh41rZYry6BRsufEyr8f5EAPXKi3SYchAYVJJV5qjBv4jRtouyRh7Z96zfZiSE0YEfQaA==}
hasBin: true
peerDependencies:
'@modelcontextprotocol/client': ^2.0.0
- '@modelcontextprotocol/server': ^2.0.0
cac: ^7.0.0
peerDependenciesMeta:
'@modelcontextprotocol/client':
optional: true
- '@modelcontextprotocol/server':
- optional: true
cac:
optional: true
@@ -3178,8 +3355,8 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- electron-to-chromium@1.5.407:
- resolution: {integrity: sha512-4R8XgQOdfxexCd/u63lRm6wCHjECwI45MV9wxAs2ggtfWe2hwlo1ql97jKsju2IcJ+jFSTwBssyYoiWhh7mauQ==}
+ electron-to-chromium@1.5.422:
+ resolution: {integrity: sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==}
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -3223,9 +3400,6 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
- es-module-lexer@2.3.1:
- resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==}
-
es-module-lexer@2.3.2:
resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==}
@@ -3268,8 +3442,8 @@ packages:
engines: {node: '>=6.0'}
hasBin: true
- eslint-config-flat-gitignore@2.3.0:
- resolution: {integrity: sha512-bg4ZLGgoARg1naWfsINUUb/52Ksw/K22K+T16D38Y8v+/sGwwIYrGvH/JBjOin+RQtxxC9tzNNiy4shnGtGyyQ==}
+ eslint-config-flat-gitignore@2.4.0:
+ resolution: {integrity: sha512-JhYC+V7qEDiCDsbJcVP8fxNc62fk4+i91YLP/YvmVHlkaQ8Xo99olYN8MO5COdxl7onGlsrfZVONe5NYsZP1UA==}
peerDependencies:
eslint: ^9.5.0 || ^10.0.0
@@ -3321,8 +3495,8 @@ packages:
peerDependencies:
eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0
- eslint-plugin-regexp@3.2.0:
- resolution: {integrity: sha512-4yq47CnLxyfHFKJEo5kvNaiJ0aDtBxSJWk4M2LiamplUXdWxdlzDYqImb/ZVCp+2BqkQjBAmw4Xc07Q8SXVDZg==}
+ eslint-plugin-regexp@3.3.0:
+ resolution: {integrity: sha512-TT0JTQbW7CRKohntpGAsMdQ1K3MsmJK4gdAhKJtIwlJ0JvuYxauymFgJdvqxIY4lqNj0EuRZWVrymQtEdJYEFg==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
peerDependencies:
eslint: '>=9.38.0'
@@ -3374,8 +3548,8 @@ packages:
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- eslint@10.8.1:
- resolution: {integrity: sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==}
+ eslint@10.10.0:
+ resolution: {integrity: sha512-NPXn6r5zl4uET1DAVPaOwzX3rut4c0wcmw3dWJAfOsTM5+TogXo0DDjz8pwm/hL8cyVNpHqeK4JpN0NjnyFFNw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
hasBin: true
peerDependencies:
@@ -3482,8 +3656,8 @@ packages:
fast-wrap-ansi@0.2.2:
resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==}
- fastq@1.20.1:
- resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
+ fastq@1.20.3:
+ resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==}
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
@@ -3497,9 +3671,8 @@ packages:
fflate@0.8.3:
resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==}
- file-entry-cache@8.0.0:
- resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
- engines: {node: '>=16.0.0'}
+ file-entry-cache@11.1.5:
+ resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==}
file-uri-to-path@1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
@@ -3520,9 +3693,8 @@ packages:
resolution: {integrity: sha512-JGG8pvDi2C+JxidYdIwQDyS/CgcrIdh18cvgxcBge3wSHRQOrooMD3GlFBcmMJAN9M42SAZjDp5zv1dglJjwww==}
engines: {node: '>=20'}
- flat-cache@4.0.1:
- resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
- engines: {node: '>=16'}
+ flat-cache@6.1.23:
+ resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==}
flatted@3.4.4:
resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==}
@@ -3609,8 +3781,8 @@ packages:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
- get-tsconfig@4.14.2:
- resolution: {integrity: sha512-XpwZALwwl/BaKTAyC6+c5T8y6kCg2jk+XGqOVrKIQmW49pNypYLMRjCUXqa28tQgJlhS2RlzP7sc+Rx7W6qsfw==}
+ get-tsconfig@4.14.3:
+ resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==}
giget@3.3.1:
resolution: {integrity: sha512-r+mvuDjrjMpsdw46Kmeydb8bdHm7wOKw8wNBtTndkjbPjgAp5oUJUxRE76wZFknxIPokfWvep2qSXK37aXE6zg==}
@@ -3641,12 +3813,12 @@ packages:
resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==}
engines: {node: '>=18'}
- globals@17.11.0:
- resolution: {integrity: sha512-Z2I8hM+PbJDXQDq3Icgpzv+mPdwr68iZUU9d5WW4FuXfDUQfkZaZuvjMv42/5crNyw154+9+VWXbYrUgDXbxNw==}
+ globals@17.12.0:
+ resolution: {integrity: sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA==}
engines: {node: '>=18'}
- globby@16.2.3:
- resolution: {integrity: sha512-VZX7TV7jmd/pn71vdnLKtgwy1IWqc3KjI9x1/UtPkwoKk5fKrNLY30ltDe3cAM5xruIN7YuuaulFt133jRrKZg==}
+ globby@16.2.4:
+ resolution: {integrity: sha512-c8B/VNLmxRcmqqenRA9t+9IyOjf9+V6lTxPaUJLqOCONdQkWZ0ETYgX0qbtJqPsgCNusT9MZ5Jeidw8Eb9tn2g==}
engines: {node: '>=20'}
gopd@1.2.0:
@@ -3663,15 +3835,18 @@ packages:
h3@1.15.11:
resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==}
- h3@2.0.1-rc.26:
- resolution: {integrity: sha512-GDxlvDsKxgjRvG5UBRJYyGJTMWLV30CJ4cV+e7QCTgftDHihrvio1fVPbNembhEr6J4WNm8IWy3fookgyTweLw==}
+ h3@2.0.1-rc.31:
+ resolution: {integrity: sha512-AG7qZzF99a0BSYoXT3evJgIhwSIUKow7R+hwkLRZS06WJ9nbSb7QXUDgs1ByBjp6svTvl++N/GKA7I9YPz9cQQ==}
engines: {node: '>=20.11.1'}
hasBin: true
peerDependencies:
- crossws: ^0.4.9
+ crossws: ^0.4.12
+ ocache: '>=0.3.0'
peerDependenciesMeta:
crossws:
optional: true
+ ocache:
+ optional: true
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
@@ -3685,6 +3860,10 @@ packages:
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
+ hashery@1.5.1:
+ resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==}
+ engines: {node: '>=20'}
+
hasown@2.0.4:
resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==}
engines: {node: '>= 0.4'}
@@ -3695,6 +3874,12 @@ packages:
hookable@6.1.1:
resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==}
+ hookified@1.15.1:
+ resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==}
+
+ hookified@2.2.0:
+ resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==}
+
html-entities@2.6.0:
resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==}
@@ -3743,15 +3928,15 @@ packages:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
- ignore@7.0.6:
- resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==}
+ ignore@7.0.8:
+ resolution: {integrity: sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q==}
engines: {node: '>= 4'}
image-meta@0.2.2:
resolution: {integrity: sha512-3MOLanc3sb3LNGWQl1RlQlNWURE5g32aUphrDyFeCsxBTk08iE3VNe4CwsUZ0Qs1X+EfX0+r29Sxdpza4B+yRA==}
- impound@1.1.7:
- resolution: {integrity: sha512-v/7sJ+2BX17U5VV9J1H72ExlRtfGoieRpYZG9DTos6gtCbB65C1l0CPehXCXq9phYZn6viphV5XayyZFHi85zg==}
+ impound@1.2.0:
+ resolution: {integrity: sha512-hbFh2WURN+XQ364SbblzubhEEj/B3qZCe80l/EHXPWM6/kZP2mvOllxwRBBWNxe4gLbqXZL0fxOZwoDCSlJZQw==}
imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
@@ -3783,10 +3968,6 @@ packages:
resolution: {integrity: sha512-vXJrmSsmlZE7KIwKvBzmGESLqqLV//YbjdMmTFPmhGYhh2wB7K5o7U+qZbzePOGNkdwNdUWdWnjQ6QKKBiSx4w==}
engines: {node: '>=22'}
- ip-bigint@9.0.8:
- resolution: {integrity: sha512-DxVFaACbpbgORsUxhcfD7TOsUgeNmKUcoJDXps/Y3CjTJpfcVfFwNu6sXIL4Y1iI8SqiCOAEKvCtIUWFZx8Qvw==}
- engines: {node: '>=22'}
-
ip-regex@5.0.0:
resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -3928,11 +4109,11 @@ packages:
resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
hasBin: true
- jose@6.2.10:
- resolution: {integrity: sha512-iiW7J9qRFlGxvCOIBDBDxFePQSn7ZMAnrYGhrrOo6siO/MIqwfyilLR27pkfDgUk+raLuzADS8A3S/KLBisc0g==}
+ jose@6.2.12:
+ resolution: {integrity: sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==}
- js-base64@3.9.2:
- resolution: {integrity: sha512-6zayE8QlUdiweYI6cETD/XBSqFcoCUlufn/29PJR99r82x1yDnIprRca0YvAYpAW+ez0GuQkVBC6xG5QkD7OjA==}
+ js-base64@3.9.3:
+ resolution: {integrity: sha512-uwYQp+VJ38FVvtim6qNbit6e9uT6dwWQ4Y1+H9TxhW5hcHjpHwoxlR0nMpqUmIFOmu4VqMxwdJA88gIVuZJQ/g==}
js-sha256@1.0.0:
resolution: {integrity: sha512-Bqxf6ENUzYIMzuELCmRNrJOVbjKH1oMgbfYJBKVr/W1Xf9fazpahqCbb24v1pR7XV1isuqhM+w9KWpK7zCyUQw==}
@@ -3943,16 +4124,16 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- js-yaml@4.3.1:
- resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==}
+ js-yaml@4.3.2:
+ resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==}
hasBin: true
jsdoc-type-pratt-parser@8.0.0:
resolution: {integrity: sha512-uQu/fXVqVaMg6gM8/E5G5+eygVcZ1NV0Z51CvqhNa2bDWxvHMl484ETr6vph4oPyC+KUcbP/w2W2pewfCiR9aQ==}
engines: {node: '>=20.0.0'}
- jsdoc-type-pratt-parser@9.1.1:
- resolution: {integrity: sha512-kojSbQb9iQM2bk2PmHiKa3reG0U4v2gN9U8D8+eCQq+4KM5ZXBUyBVeF8KmR0RiwqyrW4+uVWYWTOLnpsavnkw==}
+ jsdoc-type-pratt-parser@9.2.1:
+ resolution: {integrity: sha512-V4Ww4EHnTcTLSOMoB0FsF72JhQvcAsriCm/LWnxJeGWoxIjEL2l9na11abQok5SYShq8m0Gl02el/xAbTCulvQ==}
engines: {node: ^22.22.2 || >=24.15.0}
jsesc@3.1.0:
@@ -3960,9 +4141,6 @@ packages:
engines: {node: '>=6'}
hasBin: true
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
json-schema-to-typescript-lite@15.0.0:
resolution: {integrity: sha512-5mMORSQm9oTLyjM4mWnyNBi2T042Fhg1/0gCIB6X8U/LVpM2A+Nmj2yEyArqVouDmFThDxpEXcnTgSrjkGJRFA==}
@@ -3988,8 +4166,8 @@ packages:
resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==}
engines: {node: '>= 0.6'}
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ keyv@5.6.0:
+ resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==}
kleur@4.1.5:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
@@ -4166,8 +4344,8 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- magic-string@1.2.0:
- resolution: {integrity: sha512-ptco+HFxTLgjafSLim2LojBSwfg5feBjd+SqyiwdGkzC38UPdZy3zgrHMI2CoTf5fJL38tbHMYWVzIH8BxGqJw==}
+ magic-string@1.2.3:
+ resolution: {integrity: sha512-Bpb0W2TbLKOZ7vJnOUnVRGq3WL2p+ISV29M6hYPL1AFCpyKZpdr5ytiXoTSSxRVhg8YW7f65+6gbG8WG6PCa/g==}
magicast@0.5.4:
resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==}
@@ -4190,8 +4368,8 @@ packages:
mdn-data@2.27.1:
resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==}
- mdn-data@2.29.0:
- resolution: {integrity: sha512-pVxQFCcaYUEAH853+v7yoI/qzhxXSq1bTb9obMYGYAN1c3Hen+XDCEvr296XhstrwlSTNgOR7mCSD4JPjbJe5A==}
+ mdn-data@2.34.0:
+ resolution: {integrity: sha512-OgIlLv0NxJKVW4GTSAoEgpRGd4F2XCqGinK0MsMlBCCS/Zcm2/LsbercNWNA7PeMMcjl75NnI97eqyo7zkdxWA==}
media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
@@ -4340,8 +4518,8 @@ packages:
node-mock-http@1.0.5:
resolution: {integrity: sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==}
- node-releases@2.0.53:
- resolution: {integrity: sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==}
+ node-releases@2.0.54:
+ resolution: {integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==}
engines: {node: '>=18'}
nopt@8.1.0:
@@ -4389,8 +4567,8 @@ packages:
engines: {node: '>=18'}
hasBin: true
- oauth4webapi@3.8.7:
- resolution: {integrity: sha512-4RxcKxXjuItDFZ20RRPf4YTw3kpeXJyCgJFxVzJ068A7PNJ18st2Dg90tlC1LkSDS0GecroagCLHYEIVUhCAkw==}
+ oauth4webapi@3.8.8:
+ resolution: {integrity: sha512-8N28E+a/oxfXWBgOMt+ZP/JUf/XR+IFbvkAEPP3gznXOMv9BpAAwiIj0TFNz3tGTPc0ZQ8zmWBNgN1nAys0gng==}
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
@@ -4406,16 +4584,17 @@ packages:
object-identity@0.2.3:
resolution: {integrity: sha512-2J8Joz2Tf7aaylhqFvIUJHNgpuGR38Hh75Voq9GzTbStBxJUaOtN0K1aOd3cV5qp+ij1pMqRbPrGCGMOyX303w==}
- obug@2.1.4:
- resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==}
+ obug@2.2.1:
+ resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==}
+ engines: {node: '>=12.20.0'}
+
+ obug@3.0.0:
+ resolution: {integrity: sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==}
engines: {node: '>=12.20.0'}
ofetch@1.5.1:
resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
- ofetch@2.0.0-alpha.3:
- resolution: {integrity: sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA==}
-
ohash@2.0.12:
resolution: {integrity: sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==}
@@ -4437,23 +4616,23 @@ packages:
only@0.0.2:
resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==}
- open@11.0.1:
- resolution: {integrity: sha512-NzwMUB6C1D0+Kd+9iMS/H4k+Ck3cTX6Ckyfr/gAGlmvSE1LUQZnEZvWBi4PYmMwH/S5SMeTXnE+9uAz8uF+pWw==}
+ open@11.0.2:
+ resolution: {integrity: sha512-RWqF+pBSkqecEvCKOn8QYhaNdRMJDZRIrlS/7rTDdLHaPcfXGCZ/h8zb413NfvdeAV0MR7T1yJcA34/q+CSm1Q==}
engines: {node: '>=20'}
open@7.4.2:
resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==}
engines: {node: '>=8'}
- openid-client@6.8.7:
- resolution: {integrity: sha512-gtKthNu7evSBvTdrrlHb4F3Fi9dcwlb5QaITlCs+9mfpvuOi0Q3qtBf5+iY4sEP8hy1qCoAdxBNPDcmZeVSDzQ==}
+ openid-client@6.8.8:
+ resolution: {integrity: sha512-ZsucJA5Ad04Uv7YN4ql+s4GXNmb9uAYQwyJTsJx7CH/MX3JZioLE2pVKi1SC+YrbSLA4Px3Gi30dMjgOZtb6pA==}
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
- otpauth@9.5.1:
- resolution: {integrity: sha512-fJmDAHc8wImfqqqOXIlBvT1dEKrZK0Cmb2VEgScpNTolCz0PHh6ExUZGv4sLtOsWNaHCQlD+rRqaPgnoxFoZjQ==}
+ otpauth@9.5.2:
+ resolution: {integrity: sha512-GQ5emWR/x1tcExT62IBT0UfO95wZzJZyxYOJOGVeQF47SYEN9vmh0vISvDZaNMuFJRG+IaWCKtfm+t9Bfoal6w==}
oxc-parser@0.141.0:
resolution: {integrity: sha512-uFkGGr1KMWd6aWv9UAqooYrN78trw8MWWmoPvgWokfBEUq1+eiIQ+qfj3wokhy0fxtZWZk+0dHoS7/yRTJtd6w==}
@@ -4568,14 +4747,10 @@ packages:
resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
engines: {node: '>=8.6'}
- picomatch@4.0.5:
- resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==}
+ picomatch@4.0.7:
+ resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
engines: {node: '>=12'}
- pify@2.3.0:
- resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
- engines: {node: '>=0.10.0'}
-
pinia@4.0.3:
resolution: {integrity: sha512-XMQqpvjgG7LMqVhhFUzKLT4KEbsYbfZZ0CZU9PgdFm1O2VKBmIkykL8+SfNhOaT7sR0wT6BEgKT0YNDYWgmVRA==}
peerDependencies:
@@ -4593,8 +4768,8 @@ packages:
pkg-types@1.3.1:
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
- pkg-types@2.3.1:
- resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==}
+ pkg-types@2.3.2:
+ resolution: {integrity: sha512-v0sVXzj7oPGysr543YYZLYbcJNJsKikSsp/fFzoxQ12ewY3ZZr7oCPC8y7OlmxfYB3QPvriXmuPD8KZggE1vqg==}
pluralize@8.0.0:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
@@ -4610,38 +4785,38 @@ packages:
peerDependencies:
postcss: ^8.4.38
- postcss-colormin@8.0.3:
- resolution: {integrity: sha512-kypgzYcOcrKsrAZyId3TMumHtIiwZxgK1h5B33S4RjQNV02RHKrXCWP8ndyx5S0R5mk4pkcIfJ95o3BwIN8r2Q==}
+ postcss-colormin@8.0.5:
+ resolution: {integrity: sha512-U/N+7tkHgHoD24NB6q9k9uFcRfVJRdzVSit0fM0T2L6fvnpUoTIAYgzkyjD56LHEoCoPNfkMcfTB47SW/lNegQ==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-convert-values@8.0.3:
- resolution: {integrity: sha512-14lU1u5MeX8oGQ4zMhiMYhFcav9ebgmjjxTYwk77pmZ5A9Rq8hr5X/XZaTfffvbIGMOoLK82YDsLxA+1hFGbbA==}
+ postcss-convert-values@8.0.4:
+ resolution: {integrity: sha512-ifBmAJBfpDymi7r/CqxYRJWlG+BLdVmusUC/kFPOqH/+TitdBeHA68CYqY79wXL+iQnqg6e4LGHA2Mte14X6Ig==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-discard-comments@8.0.3:
- resolution: {integrity: sha512-oDe4ITEfp1/113ebPi/ujyfWX2E9+vbHhY0dPnypgHwIgw8LBQ7MczmtAbccw8gUs+Zlmgt80qtTKS0t8eCi+Q==}
+ postcss-discard-comments@8.0.4:
+ resolution: {integrity: sha512-SU1uLYRQPKLJJmqEmqzu+Ze+9xDurBm7m/LOzXG/ANBAfAGLjbQF+oIyZnf3jV3F155q5rRMYXsoTNEJsPyHng==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-discard-duplicates@8.0.3:
- resolution: {integrity: sha512-6f6ZVBozciZ0nG7nurrHk+K2yNeBgEoOjZvj5JwFThK982tSPyOjtClbkTYgqwDuSFjBvtu5C9Iz/2QEPvUg+Q==}
+ postcss-discard-duplicates@8.0.4:
+ resolution: {integrity: sha512-/ugMYYTE+IpHpTmwz6/S8w+blCz9pZNroUgadTdlbPnHoLLWis9QvwmoyWui2mOgFzuRM6Me7AnoGU3i0Ua2ng==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-discard-empty@8.0.3:
- resolution: {integrity: sha512-IpqNmuH9djHODVELb5c4tC6274pxjEWqrpGtTu7BR8TtOz3beqTv7JjE9xSuGOacphh9XZbbyEebvfMxYC5PTA==}
+ postcss-discard-empty@8.0.5:
+ resolution: {integrity: sha512-im0QtfNFa6V3SGPrfqzrWYuhzSz1ztWORKsuhZHQbWdKMh0DiNj3pmqBnABbhdKjyeW6nZ1oZYGh4dMc3biyaw==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-discard-overridden@8.0.3:
- resolution: {integrity: sha512-G2Ksn7kkNsNlsYsgfVn0YFfcGewJTuc1KOENvoVtwu2bSEyR28+GaomozkV4DPUBbKF8Nvco/9rLyKkgf/TY6w==}
+ postcss-discard-overridden@8.0.4:
+ resolution: {integrity: sha512-NqupxmnSSfWPJJDYbQk1qXWRwr+lw4Kyp/LSOjqwTpy/vSwo34EVXYKywgemSWpgh39P7Cs/G+tqynbRlXoJhw==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
@@ -4676,38 +4851,38 @@ packages:
yaml:
optional: true
- postcss-merge-longhand@8.0.3:
- resolution: {integrity: sha512-/Byag1rLsEffmnidL+8HGwr0AsQWiaY2gpChEKwKP4+YcBtzz44rKVxAJLdhQtRLFrpGiBoLzCdCfH/ZTkozuA==}
+ postcss-merge-longhand@8.0.4:
+ resolution: {integrity: sha512-ammolHhMvuTz/L9YN/ge1SWbUDcD3Y9o2gXlo3S6H4MCJHheyVPwcI/LAnSuNT4gcUmSF9pNTXo7+3M/2MFPAQ==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-merge-rules@8.0.3:
- resolution: {integrity: sha512-gBnrjp2ebQyrBNDqxORirC6ZM6g4cHKglAwGf1JiuKmDPjUJbNM6WhxYMYkHf+hxysnZfq27+TtxGrYESv3GMQ==}
+ postcss-merge-rules@8.0.5:
+ resolution: {integrity: sha512-jz+QaKz4VhjsqTVsJMRuH+EvrX1F9l6kYFuF8g6geVxFoYnPEZN4G+zqCb6zhxOIcc2aeAo38XEl2pOIZi2gBw==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-minify-font-values@8.0.3:
- resolution: {integrity: sha512-kAXxTCIVub5LZvyKTr9AObrRxri0WtWpNVsG6R9NdBKHDHYu5WNAnZRntgOforsKeFeZRZvOOXnTqOANQeyzKg==}
+ postcss-minify-font-values@8.0.4:
+ resolution: {integrity: sha512-wZZgJ87U5WbQCEM0EOY/oM7M1a+sqW6vrOClGC9lNbsY0HYmbMFvFuukBn8PzF+ikKmaT0QB+uSAHTRLzMkD+A==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-minify-gradients@8.0.3:
- resolution: {integrity: sha512-0O9UDPjIB4OikREx/aOwPY3pco23txEpXpdTlzfoSrVQllNh5j9GaCkThA5ylsKcDWz5sunV3tFW9+zlHFWUww==}
+ postcss-minify-gradients@8.0.6:
+ resolution: {integrity: sha512-NsqlG34WSO44NOHVT6m6ZWpN80fK2l5Zt73PMDXBJKT6fO6GPnI0NBi6xIVFr/naej3ukVUlIFQGxb7JGaa9Zg==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-minify-params@8.0.3:
- resolution: {integrity: sha512-DuSZEJbWxUX7wvIkz6K4qN8zs5unI/MSg7gcH4AXXA3524OcI4BOBUhR8B8OIBIi9FfcBbfgHYlATVhMeDBXNg==}
+ postcss-minify-params@8.0.4:
+ resolution: {integrity: sha512-TDx9O/ni7KazRK32pVvoo3MjExyVxWE0949vB2XZ0oHnxdAtQFHa9oG21wWkvsOL3osjiOVejwDLe6a0d0EuSw==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-minify-selectors@8.0.4:
- resolution: {integrity: sha512-+rqBW9gYNLq2RNBwfVx2QdElj2cTiqbNwah+bw1XvyhCnRe4uFLNW2kny0VspFyYR7OGuVyWZaz2K4DbX5J9sw==}
+ postcss-minify-selectors@8.0.5:
+ resolution: {integrity: sha512-i+PlhVCaPa7xevjhpActH2PrP27kDNSuuFf/ZGk8YrIcd1pd3Mfcfiv8H7dbY1/vz7U+QparioAtJaFV+IEwQg==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
@@ -4724,74 +4899,74 @@ packages:
peerDependencies:
postcss: ^8.4
- postcss-normalize-charset@8.0.3:
- resolution: {integrity: sha512-losd0Uu4XVpiKN5tcGh32QxpB9t3S09PMQaW6I2GszKl9wOR0I34DY0a8ApO50jzfBC52lv8jPpkvh5ltbgajg==}
+ postcss-normalize-charset@8.0.5:
+ resolution: {integrity: sha512-l0L1rIe9YHbLaf4xfL2pkkQV3gq/QIy8D0bjsaHYdGVgR+eQk7IBp3dUdIKe6XuG7DzFiCwJn248nvAFAi5CjA==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-normalize-display-values@8.0.3:
- resolution: {integrity: sha512-IaCp/Rp7bg0e8Hv0Wc4G+niuuA61iGOSzhGBUeo6P6qyoumyFbOzYbYWZSkzMNsC4o2gfHAj3q2VbQfds8Huzw==}
+ postcss-normalize-display-values@8.0.4:
+ resolution: {integrity: sha512-F8DGtzelJDV6S5mhcugc+EJ8sXI+kFv2PBedkfMWqd8mvTE4qyy3kva6AQwjy2+L2lZ9TGTkSumdq+n3EhGeAw==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-normalize-positions@8.0.3:
- resolution: {integrity: sha512-OA/n9pI6W66Sv1vki0MLv/0QpDECV8i3UHwlXPVnv3XewsBjx310NQDV+ybMx2ZZQc/RHS7Uf8ES+oxLVhd0iA==}
+ postcss-normalize-positions@8.0.4:
+ resolution: {integrity: sha512-anOMhqe6Z0OP4jvchK1v1hIG08kO7rsp8uHrxT2+XaKp8wbvVcUO3QHUzRmQDazWUPtRzy1h2UlixyJenF42sg==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-normalize-repeat-style@8.0.3:
- resolution: {integrity: sha512-lMCbxiLBd7awGEoRM1WD02R08XpEGDHg3x7z9VSWnZibgSGHNJ+k7aheucuLBcxPAHWPudwc8O65sYD2FDx0Hg==}
+ postcss-normalize-repeat-style@8.0.4:
+ resolution: {integrity: sha512-vY8+k+/bFT7B8gzlHVye8FxBTMEpUAQxAgb4UYFAGGsKmXfwEvc7VPs+kpFNrTeqVKAvVh8+VVhZ+f3S4TWJPg==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-normalize-string@8.0.3:
- resolution: {integrity: sha512-F8jkemEEIGDjerUzTa5w18CQc4GfhpJdEk78LdtwOjLjG1DlaDZyCdec+PyxCHjSY7vsbULXhlk24vSA+eUtIg==}
+ postcss-normalize-string@8.0.4:
+ resolution: {integrity: sha512-dWnV1frIV1XUlSYzJudceAbQ7PGyho9EgVHQXMcAoog6Nwnet3G9rz8IXcCb0EF2eefmpYG9hDT9+yWJOxc5zw==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-normalize-timing-functions@8.0.3:
- resolution: {integrity: sha512-6MO4j7ySljCmhPKx6GLkIpDdV6nOhb5UaB8j/0i0EbfooH1NeVQG60Zt7qAQ9h21HUwV6kQDIbWGqU78DhPHtw==}
+ postcss-normalize-timing-functions@8.0.4:
+ resolution: {integrity: sha512-VANJsokAWdQ03ZJwmcdEKXJjVHRtMgalB/BgbCgN3CRTdbwB5TXlSDRmdShSCxpnZs8WLAm0mPa//p5o5D/ZTg==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-normalize-unicode@8.0.3:
- resolution: {integrity: sha512-gfMC9A0z8d1HrS792ZFIUMZeTysN/GrtQEiyV/aSJPBwqOOak9BTGTSUp1VHozNuEeQs4MUoO+fBQzDXpRX28A==}
+ postcss-normalize-unicode@8.0.4:
+ resolution: {integrity: sha512-SxVEoFdYed0bxxwZwAXnaAZ2lzNb5jtiQvYWyMIEqnGOzCuztWpVO8LvsqpOfUIacOb6oYaWi7WOAZR36OhYqw==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-normalize-url@8.0.3:
- resolution: {integrity: sha512-ksA0HgWATlnIzDaB9gFPslXxJkTa7aHZK3jWSbbyJdFJuRIY0BOL0eNMRrZNpe6//g4Af/iB00ETbT0cNmCzKQ==}
+ postcss-normalize-url@8.0.4:
+ resolution: {integrity: sha512-JKZW8KRHkLEYkUb/55n3knDUMZeyvxlTv7ZA82bcHiCjL81b0Yyf9fIUBAYKZ6ucDgKfCDM78xhXuteVlk/o9Q==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-normalize-whitespace@8.0.3:
- resolution: {integrity: sha512-Hz/IeeZXk1686EZtnCKKIkU8Mu+PGTxPhkuXnKxJZCD8lkVgD9blIhymu3I/itL4FoOyFTWzh7hQvIri8SbrXg==}
+ postcss-normalize-whitespace@8.0.5:
+ resolution: {integrity: sha512-xuFovful3vVIA9fWWmAL2pG1Qr95Udj2MrLgjU50C6r+Xnh3s6t2BN1xXQ8lnCOCAtzMvMpPWYlnAh4nSv5VEQ==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-ordered-values@8.0.3:
- resolution: {integrity: sha512-Sp62UbMrsCNcPvtnme1Kz+nNJK3tqCqRvGiKdL7ugYgu3/m8buMlFy3QO/BJ0dJQHHJP2u6CESrw4xhKFJTvvA==}
+ postcss-ordered-values@8.0.5:
+ resolution: {integrity: sha512-aDL7nPR7w1foUqo4rN6QY1Kr45+SYELnmUg5taZehh7FfFdxQmUjbuOOBuffIXjiHV45zqgFHCb4azsWW19jyw==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-reduce-initial@8.0.3:
- resolution: {integrity: sha512-z2cMLQtjr+gXd4QIg2O6c21xGsk1QV2HNKaiYVvxZYRrvyuAqPAHFfRSo+7zbGc/n7rilzEFkljJN5WihG99AQ==}
+ postcss-reduce-initial@8.0.5:
+ resolution: {integrity: sha512-Bh5d7zjH1Ai9LzJ1qULUZIaC18cniD+wA6gFlOPglMxJRC7meXbuPvpJ/zHQGg5QKwQgit++XQhDTiEIhCk8Ow==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-reduce-transforms@8.0.3:
- resolution: {integrity: sha512-MKebqhCviCaOlz9ZnlQxviw0R94q3POvxv3m2Xk1IEyBrk2lsNiKBJsuwXLWHWkQB3y+pQDE0FA26J4+NYhzLg==}
+ postcss-reduce-transforms@8.0.4:
+ resolution: {integrity: sha512-ZGU7/R0GmjE3x2mOGB0g9Ohx74X+JjYX62RB5IBYLOe6R0fuHGZ76HtTY2CdM5NE8Yey/ew5clEf8iZQnjDjWA==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
@@ -4800,18 +4975,18 @@ packages:
resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==}
engines: {node: '>=4'}
- postcss-selector-parser@7.1.5:
- resolution: {integrity: sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==}
+ postcss-selector-parser@7.1.6:
+ resolution: {integrity: sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==}
engines: {node: '>=4'}
- postcss-svgo@8.0.4:
- resolution: {integrity: sha512-cmxRK3zz5BLFO/r/crOHy4QosyNCHpyAG9fOjtOSAEKkajcAK5xyURRWcotPOXcz88VbzIrYJCWVAGjrX4GeJw==}
+ postcss-svgo@8.0.6:
+ resolution: {integrity: sha512-auQHNmduFFHzz1sWYM3sroW7IDMzxshlLjnwAALfkrAgPegHFats+jMK6BRCcdIulxPmqXFSQvgoAX4vw8I59g==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
- postcss-unique-selectors@8.0.3:
- resolution: {integrity: sha512-uKwlnCNyKmny7yFPOnQJAN82Er0WzGQbSlpZHTKTqlTQsvZF+skA4ANMHqKh+68jQYet6IotH3dtxs1VdyBdxw==}
+ postcss-unique-selectors@8.0.4:
+ resolution: {integrity: sha512-Sby0EtmD1mlvcZSWP5eXjxhxVgvXE5QVRzd+8NH0IbF+lYQIM57ybwAvJYYtI/fexMgCWcRnDETovjKOcLJb8w==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
@@ -4819,16 +4994,16 @@ packages:
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
- postcss@8.5.26:
- resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==}
+ postcss@8.5.28:
+ resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==}
engines: {node: ^10 || ^12 || >=14}
powershell-utils@0.1.0:
resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==}
engines: {node: '>=20'}
- powershell-utils@0.2.0:
- resolution: {integrity: sha512-ZlsFlG7MtSFCoc5xreOvBAozCJ6Pf06opgJjh9ONEv418xpZSAzNjstD36C6+JwOnfSqOW/9uDkqKjezTdxZhw==}
+ powershell-utils@0.2.1:
+ resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==}
engines: {node: '>=20'}
prelude-ls@1.2.1:
@@ -4895,8 +5070,8 @@ packages:
engines: {node: '>=14'}
hasBin: true
- pretty-bytes@7.1.1:
- resolution: {integrity: sha512-X+vn9z8nOFZQlxOLmfJ0iKDdMD7jYTsTW12OAlCpdoE3Igik6L37pugIZi+N3usuyp5McfgKPWi12q3zvHLeGQ==}
+ pretty-bytes@7.1.3:
+ resolution: {integrity: sha512-U2KZ675nqba6XSBppSjU2pRgc9Ffx9+uUtd/RTWYmOawVkZuUbBYuwdtFZQmLv+yMgQ2TQxWWuOpyNje67J9tg==}
engines: {node: '>=20'}
process-nextick-args@2.0.1:
@@ -4916,8 +5091,12 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
- qr@0.6.0:
- resolution: {integrity: sha512-P23VoX7SipHALdiIYG+D+LT/6n22dNKwV92FAb3d+Nlki/5WisSsfLt0UDFz2XEBtuwrECTznvu+chKKFCSYhA==}
+ qified@0.10.1:
+ resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==}
+ engines: {node: '>=20'}
+
+ qr@0.7.0:
+ resolution: {integrity: sha512-/VrrACmOAwZVipuRITwfEwOL5oAMEHH5PTmBWaGtlTom2Thxaa+rhmna4zU9PRN2uLw2wdccbkHOLGZb1Q9SdA==}
engines: {node: '>= 20.19.0'}
quansync@0.2.11:
@@ -4937,11 +5116,11 @@ packages:
resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==}
engines: {node: '>= 0.6'}
- rc9@3.0.1:
- resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==}
+ rc9@3.1.0:
+ resolution: {integrity: sha512-ufjkNVzbRHKcCOmTahZkmVsyc3W+MSk3jY03m+a7tGHkIsdVMG9l10/3HvFbWkkKzY5VFp3pkRsIo/UYgmFL7Q==}
- read-cache@1.0.0:
- resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+ read-cache@1.0.2:
+ resolution: {integrity: sha512-/peqiBB/n07gQGLsWaHho3WfvUyRscw0gYTsEFMhrIe/nWLkYaf5SbKYjGYqtRV3aPwykJgF2VEMo1ac4bnsGA==}
readable-stream@2.3.8:
resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
@@ -4985,8 +5164,8 @@ packages:
resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==}
hasBin: true
- reka-ui@2.10.3:
- resolution: {integrity: sha512-nJGZbwcha8AcP2wbnjodfzsciTKBqp1mIzepC9Pi2xDI/YK3++ej3vpJOSPyxqrkq1Oorj4K+BdJkbVCV6x6ag==}
+ reka-ui@2.10.4:
+ resolution: {integrity: sha512-kbS5GAbkHkYj0EVKAg5ZPEPndhBjeUFSa1Aq5m5ftQwyHnB1v5tw8X6fcwfKH/ry3StPXblMWM1DW82MVS71cw==}
peerDependencies:
vue: '>= 3.4.0'
@@ -5036,8 +5215,8 @@ packages:
rolldown:
optional: true
- rolldown@1.2.4:
- resolution: {integrity: sha512-rSr7irW0K7QRWzjdJXqZowkcRdDtjRduh43rBltnVKd0VFq839l1lJoDvGJb6gl7+4rTTCrPWu+YfujUL8Ug7w==}
+ rolldown@1.2.7:
+ resolution: {integrity: sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -5054,8 +5233,8 @@ packages:
rollup:
optional: true
- rollup@4.62.4:
- resolution: {integrity: sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==}
+ rollup@4.63.1:
+ resolution: {integrity: sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -5103,12 +5282,12 @@ packages:
resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==}
engines: {node: '>= 18'}
- serialize-javascript@7.1.0:
- resolution: {integrity: sha512-RNEqWOyhhUQYN9V1GfHwu9AR/g+NTciH6Z5u3/no6X3/w+04J2lVDL+svFQVXgXrEGBMG2puMVN3gq2SNGuTGw==}
+ serialize-javascript@7.1.1:
+ resolution: {integrity: sha512-k3CMsaIvvdSwm8oLB4MXSl0wH2/cwlH7xGcnRd2DaeRmBkbzYmyT8j0tsX60DwD1eRwHTpNpH8ljKu9oUT1MeQ==}
engines: {node: '>=20.0.0'}
- seroval@1.6.2:
- resolution: {integrity: sha512-mPT+SD2TrlB6wvte1KkYOYUkubaTbd6pZ/6Kk3C9nxzrHmCZyhxOO7XGAeL7f+yLKZglzGtM9odUVvg/EhO+vQ==}
+ seroval@1.6.4:
+ resolution: {integrity: sha512-LErWMNS2RRFdu2RMA5u/PA59/IWs0XsikyEXGQ2/36iEWFrdG0ABmg17E17cikrv76891kOAMq3TkTFXpwAHXw==}
engines: {node: '>=10'}
serve-placeholder@2.0.2:
@@ -5197,8 +5376,8 @@ packages:
engines: {node: '>=20.16.0'}
hasBin: true
- srvx@0.12.5:
- resolution: {integrity: sha512-IuvtDNQg5EIwv3c6dleyau7u8hCyGQ7D6+V/QM799Aud07z0wCUcurKLTRfyG33C8oUY+UWcVBFkfHMcbtmRLA==}
+ srvx@1.0.3:
+ resolution: {integrity: sha512-aOuk+yNJA61yA6eJJvQJxpJLIxz090hKMqDGzd35tGsvwaodi1RPuYSFUp5EINaJp7snjVwLkO2RXVMPZBYnnA==}
engines: {node: '>=20.16.0'}
hasBin: true
@@ -5223,8 +5402,8 @@ packages:
std-env@4.2.0:
resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==}
- streamx@2.28.0:
- resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==}
+ streamx@2.28.1:
+ resolution: {integrity: sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==}
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
@@ -5270,8 +5449,8 @@ packages:
structured-clone-es@2.0.1:
resolution: {integrity: sha512-10ZL5r77LhknxlP1FBiCW+VdnuWOEFLdSS2SKtjyEV+L4qP1hUEIMIZW94LC3jKxRmT/Dj7KkD1mqh/IY6lhKQ==}
- stylehacks@8.0.3:
- resolution: {integrity: sha512-cHciVnyMEuLOYt6AGCTyzRjEvBTvA+0H/QThOFgKTI9uuFK4RA34gLVEt/Uuz11rtSPvZHjMWLjTazF9pLMPog==}
+ stylehacks@8.0.4:
+ resolution: {integrity: sha512-irgZeyYBFVkb8k7yTRQ9No/bTniTGqzptGVMG1/Mj3N2YnI8nIozzY1pcok4i01NfrCSqvc0PdQB6O6kr6dJHw==}
engines: {node: ^22.11.0 || ^24.11.0 || >=26.0}
peerDependencies:
postcss: ^8.5.26
@@ -5301,8 +5480,8 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- svgo@4.0.2:
- resolution: {integrity: sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng==}
+ svgo@4.1.0:
+ resolution: {integrity: sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==}
engines: {node: '>=16'}
hasBin: true
@@ -5322,8 +5501,8 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
- tar-stream@3.2.0:
- resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==}
+ tar-stream@3.2.1:
+ resolution: {integrity: sha512-nqsEO8zLZJvrOMdEwkA0QdCLFbetHMn95Zqu4fKwX+hkaTWJPZZOrxx/PwtxoK0MMGQmBQNRW3CPs8IFYQz4cQ==}
tar@7.5.22:
resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==}
@@ -5332,8 +5511,8 @@ packages:
teex@1.0.1:
resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==}
- terser@5.50.0:
- resolution: {integrity: sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w==}
+ terser@5.51.2:
+ resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==}
engines: {node: '>=10'}
hasBin: true
@@ -5361,8 +5540,8 @@ packages:
resolution: {integrity: sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==}
engines: {node: ^16.14.0 || >= 17.3.0}
- tinyexec@1.3.0:
- resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==}
+ tinyexec@1.3.1:
+ resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==}
engines: {node: '>=18'}
tinyglobby@0.2.17:
@@ -5412,8 +5591,8 @@ packages:
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
engines: {node: '>=0.6.x'}
- tsx@4.23.12:
- resolution: {integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==}
+ tsx@4.23.13:
+ resolution: {integrity: sha512-BL5MGkRln6aDYhb0xbQlEAGw743BaZYWdbWtdJOBriYJboKgUUYCadFp2/FpBBZquBC/ezNBn7wMMPx7FDZUDw==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -5425,8 +5604,8 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
- type-fest@5.8.0:
- resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==}
+ type-fest@5.9.0:
+ resolution: {integrity: sha512-yANm3Jr3GiJ1qgJlxGAVxTOIcEOk1rhQHamlXtnrCK7EHP4HeM9OGxtMg/W7HFdrVzw/ZWJKGVIJusVH85sLtw==}
engines: {node: '>=20'}
type-is@1.6.18:
@@ -5453,8 +5632,8 @@ packages:
unctx@2.5.0:
resolution: {integrity: sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==}
- unctx@3.0.0:
- resolution: {integrity: sha512-DoXdZVeyi2jyEsn86i8MO5RTItm1kffUkH9/+DQORn3Q688AMOy2551CIl6AdGL2UpwD675wtbNOl75wIQN/uA==}
+ unctx@3.0.1:
+ resolution: {integrity: sha512-5RAt2etv7g362RXyd33R82gm9u/kbtQlpoaOs9Bgm4E32GRMJ0xjbZyvdxUTmiuHk3V1IQb1aUNrp5IWY+JaWw==}
peerDependencies:
magic-string: '>=0.30.21'
oxc-parser: '>=0.140.0'
@@ -5473,15 +5652,15 @@ packages:
undici-types@8.3.0:
resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
- undici@8.10.0:
- resolution: {integrity: sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==}
+ undici@8.10.2:
+ resolution: {integrity: sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==}
engines: {node: '>=22.19.0'}
unenv@2.0.0-rc.24:
resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
- unhead@3.3.2:
- resolution: {integrity: sha512-nys63ms9LcERQX4Z6UV5jrGDiHMhccKb8Jsm9Q7uCWGqYKSKNygiIGi0AsEBTDz5mmaS8J4yXva6U3qZg4FdBQ==}
+ unhead@3.4.0:
+ resolution: {integrity: sha512-OlgpyYjY+NkFyQCaMihg2uTFbbvyr5lZr6TokS68VdFTXJ5jo4JwFtGR8PwKy/wRpjbQYgKF7ZYO+pbRgxtSmw==}
peerDependencies:
vite: '>=6.4.2'
peerDependenciesMeta:
@@ -5632,8 +5811,8 @@ packages:
unwasm@0.5.3:
resolution: {integrity: sha512-keBgTSfp3r6+s9ZcSma+0chwxQdmLbB5+dAD9vjtB21UTMYuKAxHXCU1K2CbCtnP09EaWeRvACnXk0EJtUx+hw==}
- update-browserslist-db@1.3.1:
- resolution: {integrity: sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==}
+ update-browserslist-db@1.3.2:
+ resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
@@ -5717,13 +5896,13 @@ packages:
vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0
vue: ^3.5.0
- vite@8.2.1:
- resolution: {integrity: sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==}
+ vite@8.2.2:
+ resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0
- '@vitejs/devtools': ^0.4.0
+ '@vitejs/devtools': ^0.4.0 || ^0.5.0
esbuild: ^0.27.0 || ^0.28.0
jiti: '>=1.21.0'
less: ^4.0.0
@@ -5804,14 +5983,14 @@ packages:
jsdom:
optional: true
- vscode-uri@3.1.0:
- resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
+ vscode-uri@3.2.0:
+ resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==}
vue-bundle-renderer@2.3.2:
resolution: {integrity: sha512-BtazFw0lm3N/ZE4+tre2g8G+c5wolfizu+e5jxZAcao0gcy5KJei9Yopl1svDato2poeFldVLfmLMk57Sg8rLg==}
- vue-component-type-helpers@3.3.10:
- resolution: {integrity: sha512-t7IQivQ3oD4D01b7s7a9AWzHAcr3DGBIa/1jZREsFQJcFgSL92gqUkqNiHTYgzTt7QDuJa0I9wCeDwEtZICoBQ==}
+ vue-component-type-helpers@3.3.11:
+ resolution: {integrity: sha512-LwcxzeliO9fkQcpJG0PoX8X5kmAhKmH9wkpDLxNabwzkQ9Zeib2YVHwFV4pcWmMLfXVfjr/dSV+DaJ3cIPgSNA==}
vue-demi@0.14.10:
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
@@ -5833,14 +6012,14 @@ packages:
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- vue-i18n@11.4.8:
- resolution: {integrity: sha512-0ULeHP6Z9CGvAm67S77ZEp41cfGXIREGL8qfhos2BMgcQQewtQcDKuojt6jjasAD/S8GwfTp2ySPmDSpwvrCMQ==}
+ vue-i18n@11.4.10:
+ resolution: {integrity: sha512-Lp+BjOxqzOY87DS6Z8KrQrpiTr9IN/Lt4kZEilwyXG2Wrx+AcU6IVsAW92HNXtVcn1HFFPV6ty41p9e/qDpyvg==}
engines: {node: '>= 22'}
peerDependencies:
vue: ^3.0.0
- vue-router@5.2.0:
- resolution: {integrity: sha512-QAC5i0LEb1GLG0LXDQmHu8L7FX12j0KwU/JTKmLQUJMrn04gQdKP6Du+p0QwpHb3iy71vBlqnHQ8WAfOSAWhqw==}
+ vue-router@5.3.1:
+ resolution: {integrity: sha512-GDBZzgmILxA/kFnkFbJjQZdZ2QQbngnIMMuoUcjhZIfH1RGMaPjPwX5ASnV38qamuA9uhO0RDjSBHTDNG2uXyQ==}
peerDependencies:
'@pinia/colada': '>=0.21.2'
'@vue/compiler-sfc': ^3.5.34 || ^4.0.0
@@ -5857,8 +6036,8 @@ packages:
vite:
optional: true
- vue-tsc@3.3.10:
- resolution: {integrity: sha512-YaDVxcW+CGtaOt3pZahMG5jYPx0hsUTxyEoPOTSMebcGUXP9lIBabQ14vfKMORb2CqqK5CxsNo/d1d+4IQwiKg==}
+ vue-tsc@3.3.11:
+ resolution: {integrity: sha512-gOb0B9rtU2+f1dszwPqSH5kAieIF9ReeLhD3kSRNHv5WZZUQz/JdVXW0RTdqhNTMlQkqKzrTTviqKr/4FYZraQ==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
@@ -5869,8 +6048,8 @@ packages:
apexcharts: '>=5.10.0'
vue: '>=3.0.0'
- vue@3.5.41:
- resolution: {integrity: sha512-2laE0p+aK+/AOPG/XL/WepOs/GlK755LJ1XECi9kDUrz1FKNw8rb2Xzlw9JS1rqEV55nb0ttsKxVlTCcd+R5cg==}
+ vue@3.5.43:
+ resolution: {integrity: sha512-o5qZoksdnjIKvW1srZ3ab7pcDNYAerBjRe54D0LBLfRdCYFrSgBHVXokMas35czQc0//lmx4/tuY4ZNQ+Rf2Ng==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -6001,22 +6180,22 @@ packages:
resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==}
engines: {node: '>= 14'}
- zod@4.4.3:
- resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==}
+ zod@4.6.5:
+ resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==}
snapshots:
- '@alloc/quick-lru@5.2.0': {}
+ '@alloc/quick-lru@5.3.0': {}
'@antfu/install-pkg@2.0.1':
dependencies:
package-manager-detector: 1.8.0
- tinyexec: 1.3.0
+ tinyexec: 1.3.1
'@apidevtools/json-schema-ref-parser@14.2.1(@types/json-schema@7.0.15)':
dependencies:
'@types/json-schema': 7.0.15
- js-yaml: 4.3.1
+ js-yaml: 4.3.2
'@babel/code-frame@7.29.7':
dependencies:
@@ -6054,15 +6233,6 @@ snapshots:
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
- '@babel/generator@8.0.0':
- dependencies:
- '@babel/parser': 8.0.4
- '@babel/types': 8.0.4
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
- '@types/jsesc': 2.5.1
- jsesc: 3.1.0
-
'@babel/helper-annotate-as-pure@7.29.7':
dependencies:
'@babel/types': 7.29.8
@@ -6071,7 +6241,7 @@ snapshots:
dependencies:
'@babel/compat-data': 7.29.7
'@babel/helper-validator-option': 7.29.7
- browserslist: 4.28.8
+ browserslist: 4.28.9
lru-cache: 5.1.1
semver: 6.3.1
@@ -6137,12 +6307,8 @@ snapshots:
'@babel/helper-string-parser@7.29.7': {}
- '@babel/helper-string-parser@8.0.0': {}
-
'@babel/helper-validator-identifier@7.29.7': {}
- '@babel/helper-validator-identifier@8.0.4': {}
-
'@babel/helper-validator-option@7.29.7': {}
'@babel/helpers@7.29.7':
@@ -6154,10 +6320,6 @@ snapshots:
dependencies:
'@babel/types': 7.29.8
- '@babel/parser@8.0.4':
- dependencies:
- '@babel/types': 8.0.4
-
'@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
@@ -6202,11 +6364,6 @@ snapshots:
'@babel/helper-string-parser': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
- '@babel/types@8.0.4':
- dependencies:
- '@babel/helper-string-parser': 8.0.0
- '@babel/helper-validator-identifier': 8.0.4
-
'@bcoe/v8-coverage@1.0.2': {}
'@bomb.sh/tab@0.0.19(cac@7.0.0)(citty@0.2.2)':
@@ -6214,6 +6371,18 @@ snapshots:
cac: 7.0.0
citty: 0.2.2
+ '@cacheable/memory@2.2.0':
+ dependencies:
+ '@cacheable/utils': 2.5.0
+ '@keyv/bigmap': 1.3.1(keyv@5.6.0)
+ hookified: 1.15.1
+ keyv: 5.6.0
+
+ '@cacheable/utils@2.5.0':
+ dependencies:
+ hashery: 1.5.1
+ keyv: 5.6.0
+
'@clack/core@1.4.3':
dependencies:
fast-wrap-ansi: 0.2.2
@@ -6228,29 +6397,29 @@ snapshots:
'@cloudflare/kv-asset-handler@0.4.2': {}
- '@colordx/core@5.5.0': {}
+ '@colordx/core@5.8.0': {}
- '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.5)':
+ '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.6)':
dependencies:
- postcss-selector-parser: 7.1.5
+ postcss-selector-parser: 7.1.6
- '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.5)':
+ '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.6)':
dependencies:
- postcss-selector-parser: 7.1.5
+ postcss-selector-parser: 7.1.6
'@drizzle-team/brocli@0.10.2': {}
- '@dxup/nuxt@0.5.7(esbuild@0.28.2)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))':
+ '@dxup/nuxt@0.5.10(esbuild@0.28.2)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))':
dependencies:
'@dxup/unimport': 0.1.2
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- '@vue/compiler-dom': 3.5.41
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@vue/compiler-dom': 3.5.42
chokidar: 5.0.0
knitwork: 1.3.0
- magic-string: 1.2.0
+ magic-string: 1.2.3
pathe: 2.0.3
tinyglobby: 0.2.17
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
transitivePeerDependencies:
- '@farmfe/core'
- '@rspack/core'
@@ -6303,7 +6472,7 @@ snapshots:
'@es-joy/jsdoccomment@0.91.0':
dependencies:
'@types/estree': 1.0.9
- '@typescript-eslint/types': 8.67.0
+ '@typescript-eslint/types': 8.69.0
comment-parser: 1.4.7
esquery: 1.7.0
jsdoc-type-pratt-parser: 8.0.0
@@ -6318,7 +6487,7 @@ snapshots:
'@esbuild-kit/esm-loader@2.6.5':
dependencies:
'@esbuild-kit/core-utils': 3.3.2
- get-tsconfig: 4.14.2
+ get-tsconfig: 4.14.3
'@esbuild/aix-ppc64@0.25.12':
optional: true
@@ -6542,18 +6711,18 @@ snapshots:
'@esbuild/win32-x64@0.28.2':
optional: true
- '@eslint-community/eslint-utils@4.10.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))':
+ '@eslint-community/eslint-utils@4.10.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))':
dependencies:
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
- '@eslint/compat@2.1.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))':
+ '@eslint/compat@2.1.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))':
dependencies:
'@eslint/core': 1.2.1
optionalDependencies:
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
'@eslint/config-array@0.23.5(supports-color@10.2.2)':
dependencies:
@@ -6571,36 +6740,36 @@ snapshots:
dependencies:
'@eslint/core': 1.2.1
- '@eslint/config-inspector@3.2.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(srvx@0.11.22)':
+ '@eslint/config-inspector@3.4.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(srvx@0.11.22)':
dependencies:
ansis: 4.3.1
cac: 7.0.0
chokidar: 5.0.0
- devframe: 0.8.2(cac@7.0.0)(srvx@0.11.22)
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ devframe: 0.9.12(cac@7.0.0)(srvx@0.11.22)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
jiti: 2.7.0
tinyglobby: 0.2.17
transitivePeerDependencies:
- '@modelcontextprotocol/client'
- - '@modelcontextprotocol/server'
+ - ocache
- srvx
'@eslint/core@1.2.1':
dependencies:
'@types/json-schema': 7.0.15
- '@eslint/css-tree@4.0.5':
+ '@eslint/css-tree@4.1.0':
dependencies:
- mdn-data: 2.29.0
+ mdn-data: 2.34.0
source-map-js: 1.2.1
- '@eslint/js@10.0.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))':
+ '@eslint/js@10.0.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))':
optionalDependencies:
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
'@eslint/object-schema@3.0.5': {}
- '@eslint/plugin-kit@0.7.2':
+ '@eslint/plugin-kit@0.7.3':
dependencies:
'@eslint/core': 1.2.1
levn: 0.4.1
@@ -6616,18 +6785,18 @@ snapshots:
'@floating-ui/utils@0.2.12': {}
- '@floating-ui/vue@1.1.11(vue@3.5.41(typescript@6.0.3))':
+ '@floating-ui/vue@1.1.11(vue@3.5.43(typescript@6.0.3))':
dependencies:
'@floating-ui/dom': 1.8.0
'@floating-ui/utils': 0.2.12
- vue-demi: 0.14.10(vue@3.5.41(typescript@6.0.3))
+ vue-demi: 0.14.10(vue@3.5.43(typescript@6.0.3))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@heroicons/vue@2.2.0(vue@3.5.41(typescript@6.0.3))':
+ '@heroicons/vue@2.2.0(vue@3.5.43(typescript@6.0.3))':
dependencies:
- vue: 3.5.41(typescript@6.0.3)
+ vue: 3.5.43(typescript@6.0.3)
'@humanfs/core@0.19.2':
dependencies:
@@ -6645,18 +6814,18 @@ snapshots:
'@humanwhocodes/retry@0.4.3': {}
- '@internationalized/date@3.12.3':
+ '@internationalized/date@3.12.4':
dependencies:
'@swc/helpers': 0.5.23
- '@internationalized/number@3.6.7':
+ '@internationalized/number@3.6.8':
dependencies:
'@swc/helpers': 0.5.23
- '@intlify/bundle-utils@11.2.5(vue-i18n@11.4.8(vue@3.5.41(typescript@6.0.3)))':
+ '@intlify/bundle-utils@11.2.5(vue-i18n@11.4.10(vue@3.5.43(typescript@6.0.3)))':
dependencies:
- '@intlify/message-compiler': 11.4.8
- '@intlify/shared': 11.4.8
+ '@intlify/message-compiler': 11.4.10
+ '@intlify/shared': 11.4.10
acorn: 8.18.0
esbuild: 0.25.12
escodegen: 2.1.0
@@ -6665,54 +6834,54 @@ snapshots:
source-map-js: 1.2.1
yaml-eslint-parser: 1.3.2
optionalDependencies:
- vue-i18n: 11.4.8(vue@3.5.41(typescript@6.0.3))
+ vue-i18n: 11.4.10(vue@3.5.43(typescript@6.0.3))
- '@intlify/core-base@11.4.8':
+ '@intlify/core-base@11.4.10':
dependencies:
- '@intlify/devtools-types': 11.4.8
- '@intlify/message-compiler': 11.4.8
- '@intlify/shared': 11.4.8
+ '@intlify/devtools-types': 11.4.10
+ '@intlify/message-compiler': 11.4.10
+ '@intlify/shared': 11.4.10
- '@intlify/core@11.4.8':
+ '@intlify/core@11.4.10':
dependencies:
- '@intlify/core-base': 11.4.8
- '@intlify/shared': 11.4.8
+ '@intlify/core-base': 11.4.10
+ '@intlify/shared': 11.4.10
- '@intlify/devtools-types@11.4.8':
+ '@intlify/devtools-types@11.4.10':
dependencies:
- '@intlify/core-base': 11.4.8
- '@intlify/shared': 11.4.8
+ '@intlify/core-base': 11.4.10
+ '@intlify/shared': 11.4.10
'@intlify/h3@0.7.4':
dependencies:
- '@intlify/core': 11.4.8
+ '@intlify/core': 11.4.10
'@intlify/utils': 0.13.0
- '@intlify/message-compiler@11.4.8':
+ '@intlify/message-compiler@11.4.10':
dependencies:
- '@intlify/shared': 11.4.8
+ '@intlify/shared': 11.4.10
source-map-js: 1.2.1
- '@intlify/shared@11.4.8': {}
+ '@intlify/shared@11.4.10': {}
- '@intlify/unplugin-vue-i18n@11.2.5(@vue/compiler-dom@3.5.41)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(rollup@4.62.4)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.41(typescript@6.0.3)))(vue@3.5.41(typescript@6.0.3))':
+ '@intlify/unplugin-vue-i18n@11.2.5(@vue/compiler-dom@3.5.42)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.63.1)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue-i18n@11.4.10(vue@3.5.43(typescript@6.0.3)))(vue@3.5.43(typescript@6.0.3))':
dependencies:
- '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- '@intlify/bundle-utils': 11.2.5(vue-i18n@11.4.8(vue@3.5.41(typescript@6.0.3)))
- '@intlify/shared': 11.4.8
- '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.4.8)(@vue/compiler-dom@3.5.41)(vue-i18n@11.4.8(vue@3.5.41(typescript@6.0.3)))(vue@3.5.41(typescript@6.0.3))
- '@rollup/pluginutils': 5.4.0(rollup@4.62.4)
- '@typescript-eslint/scope-manager': 8.67.0
- '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ '@intlify/bundle-utils': 11.2.5(vue-i18n@11.4.10(vue@3.5.43(typescript@6.0.3)))
+ '@intlify/shared': 11.4.10
+ '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.4.10)(@vue/compiler-dom@3.5.42)(vue-i18n@11.4.10(vue@3.5.43(typescript@6.0.3)))(vue@3.5.43(typescript@6.0.3))
+ '@rollup/pluginutils': 5.4.0(rollup@4.63.1)
+ '@typescript-eslint/scope-manager': 8.69.0
+ '@typescript-eslint/typescript-estree': 8.69.0(supports-color@10.2.2)(typescript@6.0.3)
debug: 4.4.3(supports-color@10.2.2)
fast-glob: 3.3.3
pathe: 2.0.3
picocolors: 1.1.1
unplugin: 2.3.11
- vue: 3.5.41(typescript@6.0.3)
+ vue: 3.5.43(typescript@6.0.3)
optionalDependencies:
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
- vue-i18n: 11.4.8(vue@3.5.41(typescript@6.0.3))
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ vue-i18n: 11.4.10(vue@3.5.43(typescript@6.0.3))
transitivePeerDependencies:
- '@vue/compiler-dom'
- eslint
@@ -6724,14 +6893,14 @@ snapshots:
'@intlify/utils@0.14.1': {}
- '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.4.8)(@vue/compiler-dom@3.5.41)(vue-i18n@11.4.8(vue@3.5.41(typescript@6.0.3)))(vue@3.5.41(typescript@6.0.3))':
+ '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.4.10)(@vue/compiler-dom@3.5.42)(vue-i18n@11.4.10(vue@3.5.43(typescript@6.0.3)))(vue@3.5.43(typescript@6.0.3))':
dependencies:
'@babel/parser': 7.29.8
optionalDependencies:
- '@intlify/shared': 11.4.8
- '@vue/compiler-dom': 3.5.41
- vue: 3.5.41(typescript@6.0.3)
- vue-i18n: 11.4.8(vue@3.5.41(typescript@6.0.3))
+ '@intlify/shared': 11.4.10
+ '@vue/compiler-dom': 3.5.42
+ vue: 3.5.43(typescript@6.0.3)
+ vue-i18n: 11.4.10(vue@3.5.43(typescript@6.0.3))
'@ioredis/commands@1.10.0': {}
@@ -6750,7 +6919,7 @@ snapshots:
'@jridgewell/gen-mapping@0.3.13':
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/sourcemap-codec': 1.6.0
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/remapping@2.3.5':
@@ -6765,12 +6934,20 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
- '@jridgewell/sourcemap-codec@1.5.5': {}
+ '@jridgewell/sourcemap-codec@1.6.0': {}
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/sourcemap-codec': 1.6.0
+
+ '@keyv/bigmap@1.3.1(keyv@5.6.0)':
+ dependencies:
+ hashery: 1.5.1
+ hookified: 1.15.1
+ keyv: 5.6.0
+
+ '@keyv/serialize@1.1.1': {}
'@koa/router@12.0.2(supports-color@10.2.2)':
dependencies:
@@ -6790,20 +6967,20 @@ snapshots:
'@kwsites/promise-deferred@1.1.1': {}
- '@libsql/client@0.17.4':
+ '@libsql/client@0.18.0':
dependencies:
- '@libsql/core': 0.17.4
+ '@libsql/core': 0.18.0
'@libsql/hrana-client': 0.10.0
- js-base64: 3.9.2
+ js-base64: 3.9.3
libsql: 0.5.29
promise-limit: 2.7.0
transitivePeerDependencies:
- bufferutil
- utf-8-validate
- '@libsql/core@0.17.4':
+ '@libsql/core@0.18.0':
dependencies:
- js-base64: 3.9.2
+ js-base64: 3.9.3
'@libsql/darwin-arm64@0.5.29':
optional: true
@@ -6814,7 +6991,7 @@ snapshots:
'@libsql/hrana-client@0.10.0':
dependencies:
'@libsql/isomorphic-ws': 0.1.5
- js-base64: 3.9.2
+ js-base64: 3.9.3
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -6861,11 +7038,20 @@ snapshots:
- encoding
- supports-color
- '@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.62.4)':
+ '@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.63.1)':
dependencies:
- '@rollup/pluginutils': 5.4.0(rollup@4.62.4)
+ '@rollup/pluginutils': 5.4.0(rollup@4.63.1)
json5: 2.2.3
- rollup: 4.62.4
+ rollup: 4.63.1
+
+ '@modelcontextprotocol/core@2.0.0':
+ dependencies:
+ zod: 4.6.5
+
+ '@modelcontextprotocol/server@2.0.0':
+ dependencies:
+ '@modelcontextprotocol/core': 2.0.0
+ zod: 4.6.5
'@napi-rs/lzma-linux-x64-gnu@1.5.1':
optional: true
@@ -6886,7 +7072,7 @@ snapshots:
'@neon-rs/load@0.0.4': {}
- '@noble/hashes@2.2.0': {}
+ '@noble/hashes@2.4.0': {}
'@nodelib/fs.scandir@2.1.5':
dependencies:
@@ -6898,7 +7084,7 @@ snapshots:
'@nodelib/fs.walk@1.2.8':
dependencies:
'@nodelib/fs.scandir': 2.1.5
- fastq: 1.20.1
+ fastq: 1.20.3
'@nuxt/cli@3.37.0(@nuxt/schema@4.5.2)(cac@7.0.0)(magicast@0.5.4)(supports-color@10.2.2)':
dependencies:
@@ -6921,13 +7107,13 @@ snapshots:
ohash: 2.0.12
pathe: 2.0.3
perfect-debounce: 2.1.0
- pkg-types: 2.3.1
+ pkg-types: 2.3.2
scule: 1.3.0
semver: 7.8.5
srvx: 0.11.22
std-env: 4.2.0
tinyclip: 0.1.15
- tinyexec: 1.3.0
+ tinyexec: 1.3.1
ufo: 1.6.4
youch: 4.1.1
optionalDependencies:
@@ -6941,19 +7127,19 @@ snapshots:
'@nuxt/devalue@2.0.2': {}
- '@nuxt/devtools-kit@2.7.0(magicast@0.5.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))':
+ '@nuxt/devtools-kit@2.7.0(magicast@0.5.4)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))':
dependencies:
'@nuxt/kit': 3.21.11(magicast@0.5.4)
execa: 8.0.1
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
transitivePeerDependencies:
- magicast
- '@nuxt/devtools-kit@3.4.1(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))':
+ '@nuxt/devtools-kit@3.4.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
execa: 8.0.1
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
transitivePeerDependencies:
- magic-string
- magicast
@@ -6961,7 +7147,7 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/devtools-wizard@3.4.1':
+ '@nuxt/devtools-wizard@3.4.2':
dependencies:
'@clack/prompts': 1.7.0
consola: 3.4.2
@@ -6969,17 +7155,17 @@ snapshots:
execa: 8.0.1
magicast: 0.5.4
pathe: 2.0.3
- pkg-types: 2.3.1
+ pkg-types: 2.3.2
semver: 7.8.5
- '@nuxt/devtools@3.4.1(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(ioredis@5.11.1(supports-color@10.2.2))(magic-string@1.2.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(supports-color@10.2.2)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))':
+ '@nuxt/devtools@3.4.2(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(ioredis@5.11.1(supports-color@10.2.2))(magic-string@1.2.3)(oxc-parser@0.141.0)(rolldown@1.2.7)(supports-color@10.2.2)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))':
dependencies:
- '@nuxt/devtools-kit': 3.4.1(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- '@nuxt/devtools-wizard': 3.4.1
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- '@vue/devtools-core': 8.2.1(vue@3.5.41(typescript@6.0.3))
+ '@nuxt/devtools-kit': 3.4.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ '@nuxt/devtools-wizard': 3.4.2
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@vue/devtools-core': 8.2.1(vue@3.5.43(typescript@6.0.3))
'@vue/devtools-kit': 8.2.1
- birpc: 4.1.0
+ birpc: 4.2.0
consola: 3.4.2
destr: 2.0.5
error-stack-parser-es: 2.0.1
@@ -6996,16 +7182,16 @@ snapshots:
ohash: 2.0.12
pathe: 2.0.3
perfect-debounce: 2.1.0
- pkg-types: 2.3.1
+ pkg-types: 2.3.2
semver: 7.8.5
simple-git: 3.36.0(supports-color@10.2.2)
sirv: 3.0.2
structured-clone-es: 2.0.1
tinyglobby: 0.2.17
- unstorage: 1.17.5(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(ioredis@5.11.1(supports-color@10.2.2))
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
- vite-plugin-inspect: 11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- vite-plugin-vue-tracer: 1.5.0(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))
+ unstorage: 1.17.5(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(ioredis@5.11.1(supports-color@10.2.2))
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite-plugin-inspect: 11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ vite-plugin-vue-tracer: 1.5.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))
which: 6.0.1
ws: 8.21.3
transitivePeerDependencies:
@@ -7037,30 +7223,30 @@ snapshots:
- utf-8-validate
- vue
- '@nuxt/eslint-config@1.17.0(@typescript-eslint/utils@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.41)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ '@nuxt/eslint-config@1.17.0(@typescript-eslint/utils@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.43)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
'@antfu/install-pkg': 2.0.1
'@clack/prompts': 1.7.0
- '@eslint/js': 10.0.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- '@nuxt/eslint-plugin': 1.17.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- '@stylistic/eslint-plugin': 5.10.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- '@typescript-eslint/parser': 8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
- eslint-config-flat-gitignore: 2.3.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
+ '@eslint/js': 10.0.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ '@nuxt/eslint-plugin': 1.17.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@stylistic/eslint-plugin': 5.10.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ '@typescript-eslint/eslint-plugin': 8.69.0(@typescript-eslint/parser@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/parser': 8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
+ eslint-config-flat-gitignore: 2.4.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
eslint-flat-config-utils: 3.2.0
- eslint-merge-processors: 2.0.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- eslint-plugin-import-lite: 0.6.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- eslint-plugin-import-x: 4.17.1(@typescript-eslint/utils@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)
- eslint-plugin-jsdoc: 63.3.3(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)
- eslint-plugin-regexp: 3.2.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- eslint-plugin-unicorn: 73.0.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- eslint-plugin-vue: 10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)))(@typescript-eslint/parser@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(vue-eslint-parser@10.4.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2))
- eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.41)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- globals: 17.11.0
+ eslint-merge-processors: 2.0.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ eslint-plugin-import-lite: 0.6.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ eslint-plugin-import-x: 4.17.1(@typescript-eslint/utils@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)
+ eslint-plugin-jsdoc: 63.3.3(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)
+ eslint-plugin-regexp: 3.3.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ eslint-plugin-unicorn: 73.0.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ eslint-plugin-vue: 10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript-eslint/parser@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(vue-eslint-parser@10.4.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2))
+ eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.43)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ globals: 17.12.0
local-pkg: 1.2.1
pathe: 2.0.3
- vue-eslint-parser: 10.4.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)
+ vue-eslint-parser: 10.4.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)
transitivePeerDependencies:
- '@typescript-eslint/utils'
- '@vue/compiler-sfc'
@@ -7068,35 +7254,34 @@ snapshots:
- supports-color
- typescript
- '@nuxt/eslint-plugin@1.17.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ '@nuxt/eslint-plugin@1.17.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
- '@typescript-eslint/types': 8.67.0
- '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ '@typescript-eslint/types': 8.69.0
+ '@typescript-eslint/utils': 8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
- typescript
- '@nuxt/eslint@1.17.0(@typescript-eslint/utils@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(srvx@0.11.22)(supports-color@10.2.2)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))':
+ '@nuxt/eslint@1.17.0(@typescript-eslint/utils@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.43)(esbuild@0.28.2)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(srvx@0.11.22)(supports-color@10.2.2)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))':
dependencies:
- '@eslint/config-inspector': 3.2.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(srvx@0.11.22)
- '@nuxt/devtools-kit': 3.4.1(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- '@nuxt/eslint-config': 1.17.0(@typescript-eslint/utils@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.41)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- '@nuxt/eslint-plugin': 1.17.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
+ '@eslint/config-inspector': 3.4.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(srvx@0.11.22)
+ '@nuxt/devtools-kit': 3.4.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ '@nuxt/eslint-config': 1.17.0(@typescript-eslint/utils@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.43)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@nuxt/eslint-plugin': 1.17.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
chokidar: 5.0.0
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
eslint-flat-config-utils: 3.2.0
- eslint-typegen: 2.3.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
+ eslint-typegen: 2.3.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
find-up: 8.0.0
get-port-please: 3.2.0
mlly: 1.8.2
pathe: 2.0.3
- unimport: 6.4.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ unimport: 6.4.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
transitivePeerDependencies:
- '@farmfe/core'
- '@modelcontextprotocol/client'
- - '@modelcontextprotocol/server'
- '@rspack/core'
- '@typescript-eslint/utils'
- '@vue/compiler-sfc'
@@ -7106,6 +7291,7 @@ snapshots:
- eslint-plugin-format
- magic-string
- magicast
+ - ocache
- oxc-parser
- rolldown
- rollup
@@ -7125,15 +7311,15 @@ snapshots:
destr: 2.0.5
errx: 0.1.2
exsolve: 1.1.1
- ignore: 7.0.6
+ ignore: 7.0.8
jiti: 2.7.0
klona: 2.0.6
knitwork: 1.3.0
mlly: 1.8.2
ohash: 2.0.12
pathe: 2.0.3
- pkg-types: 2.3.1
- rc9: 3.0.1
+ pkg-types: 2.3.2
+ rc9: 3.1.0
scule: 1.3.0
semver: 7.8.5
tinyglobby: 0.2.17
@@ -7143,7 +7329,7 @@ snapshots:
transitivePeerDependencies:
- magicast
- '@nuxt/kit@4.5.2(magic-string@0.30.21)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))':
+ '@nuxt/kit@4.5.2(magic-string@0.30.21)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))':
dependencies:
c12: 3.3.4(magicast@0.5.4)
consola: 3.4.2
@@ -7151,19 +7337,19 @@ snapshots:
destr: 2.0.5
errx: 0.1.2
exsolve: 1.1.1
- ignore: 7.0.6
+ ignore: 7.0.8
jiti: 2.7.0
klona: 2.0.6
mlly: 1.8.2
nostics: 1.2.0
ohash: 2.0.12
pathe: 2.0.3
- pkg-types: 2.3.1
- rc9: 3.0.1
+ pkg-types: 2.3.2
+ rc9: 3.1.0
scule: 1.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
- unctx: 3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
untyped: 2.0.0
verkit: 0.3.2
transitivePeerDependencies:
@@ -7173,7 +7359,7 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/kit@4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))':
+ '@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))':
dependencies:
c12: 3.3.4(magicast@0.5.4)
consola: 3.4.2
@@ -7181,19 +7367,19 @@ snapshots:
destr: 2.0.5
errx: 0.1.2
exsolve: 1.1.1
- ignore: 7.0.6
+ ignore: 7.0.8
jiti: 2.7.0
klona: 2.0.6
mlly: 1.8.2
nostics: 1.2.0
ohash: 2.0.12
pathe: 2.0.3
- pkg-types: 2.3.1
- rc9: 3.0.1
+ pkg-types: 2.3.2
+ rc9: 3.1.0
scule: 1.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
- unctx: 3.0.0(magic-string@1.2.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@1.2.3)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
untyped: 2.0.0
verkit: 0.3.2
transitivePeerDependencies:
@@ -7203,35 +7389,35 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/nitro-server@4.5.2(ea1b3e8d6f65e045f8e04fc178cbf666)':
+ '@nuxt/nitro-server@4.5.2(53c38ddc10d08ab112f8efd352a551ca)':
dependencies:
'@nuxt/devalue': 2.0.2
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- '@unhead/vue': 3.3.2(@oxc-project/types@0.144.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))
- '@vue/shared': 3.5.41
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@unhead/vue': 3.4.0(@oxc-project/types@0.148.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))
+ '@vue/shared': 3.5.42
consola: 3.4.2
defu: 6.1.7
destr: 2.0.5
- devalue: 5.9.0
+ devalue: 5.9.2
errx: 0.1.2
escape-string-regexp: 5.0.0
exsolve: 1.1.1
h3: 1.15.11
- impound: 1.1.7(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ impound: 1.2.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
klona: 2.0.6
mocked-exports: 0.1.1
- nitropack: 2.13.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4))(oxc-parser@0.141.0)(rolldown@1.2.4)(srvx@0.11.22)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ nitropack: 2.13.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0))(oxc-parser@0.141.0)(rolldown@1.2.7)(srvx@0.11.22)(supports-color@10.2.2)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
nostics: 1.2.0
- nuxt: 4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.17.4)(@oxc-project/types@0.144.0)(@types/node@26.2.0)(@vue/compiler-sfc@3.5.41)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(drizzle-orm@0.45.2(@libsql/client@0.17.4))(esbuild@0.28.2)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.4)(rollup@4.62.4))(rollup@4.62.4)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.50.0)(tsx@4.23.12)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue-tsc@3.3.10(typescript@6.0.3))(yaml@2.9.0)
+ nuxt: 4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.18.0)(@oxc-project/types@0.148.0)(@types/node@26.4.1)(@vue/compiler-sfc@3.5.43)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(drizzle-orm@0.45.2(@libsql/client@0.18.0))(esbuild@0.28.2)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.7)(rollup@4.63.1))(rollup@4.63.1)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.51.2)(tsx@4.23.13)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))(yaml@2.9.0)
nypm: 0.6.9
ohash: 2.0.12
pathe: 2.0.3
rou3: 0.9.2
std-env: 4.2.0
ufo: 1.6.4
- unctx: 3.0.0(magic-string@1.2.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- unstorage: 1.17.5(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(ioredis@5.11.1(supports-color@10.2.2))
- vue: 3.5.41(typescript@6.0.3)
+ unctx: 3.0.1(magic-string@1.2.3)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ unstorage: 1.17.5(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(ioredis@5.11.1(supports-color@10.2.2))
+ vue: 3.5.43(typescript@6.0.3)
vue-bundle-renderer: 2.3.2
vue-devtools-stub: 0.1.0
optionalDependencies:
@@ -7291,26 +7477,25 @@ snapshots:
'@nuxt/schema@4.5.2':
dependencies:
- '@vue/shared': 3.5.41
+ '@vue/shared': 3.5.42
defu: 6.1.7
nostics: 1.2.0
pathe: 2.0.3
- pkg-types: 2.3.1
+ pkg-types: 2.3.2
std-env: 4.2.0
- '@nuxt/telemetry@2.8.0(@nuxt/kit@4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))))':
+ '@nuxt/telemetry@2.9.1(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
citty: 0.2.2
consola: 3.4.2
- ofetch: 2.0.0-alpha.3
- rc9: 3.0.1
+ rc9: 3.1.0
std-env: 4.2.0
- '@nuxt/test-utils@4.1.0(@vitest/ui@4.1.11)(esbuild@0.28.2)(magicast@0.5.4)(rolldown@1.2.4)(rollup@4.62.4)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11)':
+ '@nuxt/test-utils@4.3.2(@vitest/ui@4.1.11)(esbuild@0.28.2)(magicast@0.5.4)(rolldown@1.2.7)(rollup@4.63.1)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vitest@4.1.11)':
dependencies:
'@clack/prompts': 1.7.0
- '@nuxt/devtools-kit': 2.7.0(magicast@0.5.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ '@nuxt/devtools-kit': 2.7.0(magicast@0.5.4)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
'@nuxt/kit': 3.21.11(magicast@0.5.4)
c12: 3.3.4(magicast@0.5.4)
consola: 3.4.2
@@ -7322,7 +7507,7 @@ snapshots:
get-port-please: 3.2.0
h3: 1.15.11
local-pkg: 1.2.1
- magic-string: 1.2.0
+ magic-string: 1.2.3
node-fetch-native: 1.6.7
node-mock-http: 1.0.5
nypm: 0.6.9
@@ -7332,14 +7517,14 @@ snapshots:
radix3: 1.1.2
scule: 1.3.0
std-env: 4.2.0
- tinyexec: 1.3.0
+ tinyexec: 1.3.1
ufo: 1.6.4
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- vitest-environment-nuxt: 2.0.0(@vitest/ui@4.1.11)(esbuild@0.28.2)(magicast@0.5.4)(rolldown@1.2.4)(rollup@4.62.4)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11)
- vue: 3.5.41(typescript@6.0.3)
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ vitest-environment-nuxt: 2.0.0
+ vue: 3.5.43(typescript@6.0.3)
optionalDependencies:
'@vitest/ui': 4.1.11(vitest@4.1.11)
- vitest: 4.1.11(@types/node@26.2.0)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ vitest: 4.1.11(@types/node@26.4.1)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
transitivePeerDependencies:
- '@farmfe/core'
- '@rspack/core'
@@ -7353,14 +7538,14 @@ snapshots:
- vite
- webpack
- '@nuxt/vite-builder@4.5.2(67a159140f5abc3f4dfb6471ad3f3982)':
+ '@nuxt/vite-builder@4.5.2(4bee5a9e48d6ba36b588d43e9fbd0f2a)':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- '@vitejs/plugin-vue': 6.0.8(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))
- '@vitejs/plugin-vue-jsx': 5.1.6(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))
- autoprefixer: 10.5.4(postcss@8.5.26)
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@vitejs/plugin-vue': 6.0.8(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))
+ '@vitejs/plugin-vue-jsx': 5.1.6(supports-color@10.2.2)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))
+ autoprefixer: 10.5.5(postcss@8.5.28)
consola: 3.4.2
- cssnano: 8.0.5(postcss@8.5.26)
+ cssnano: 8.0.10(postcss@8.5.28)
defu: 6.1.7
escape-string-regexp: 5.0.0
exsolve: 1.1.1
@@ -7371,26 +7556,26 @@ snapshots:
knitwork: 1.3.0
mlly: 1.8.2
mocked-exports: 0.1.1
- nuxt: 4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.17.4)(@oxc-project/types@0.144.0)(@types/node@26.2.0)(@vue/compiler-sfc@3.5.41)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(drizzle-orm@0.45.2(@libsql/client@0.17.4))(esbuild@0.28.2)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.4)(rollup@4.62.4))(rollup@4.62.4)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.50.0)(tsx@4.23.12)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue-tsc@3.3.10(typescript@6.0.3))(yaml@2.9.0)
+ nuxt: 4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.18.0)(@oxc-project/types@0.148.0)(@types/node@26.4.1)(@vue/compiler-sfc@3.5.43)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(drizzle-orm@0.45.2(@libsql/client@0.18.0))(esbuild@0.28.2)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.7)(rollup@4.63.1))(rollup@4.63.1)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.51.2)(tsx@4.23.13)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))(yaml@2.9.0)
nypm: 0.6.9
pathe: 2.0.3
- pkg-types: 2.3.1
- postcss: 8.5.26
- rolldown-string: 0.3.1(rolldown@1.2.4)
- seroval: 1.6.2
+ pkg-types: 2.3.2
+ postcss: 8.5.28
+ rolldown-string: 0.3.1(rolldown@1.2.7)
+ seroval: 1.6.4
std-env: 4.2.0
ufo: 1.6.4
unenv: 2.0.0-rc.24
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
- vite-node: 6.0.0(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
- vite-plugin-checker: 0.14.5(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue-tsc@3.3.10(typescript@6.0.3))
- vue: 3.5.41(typescript@6.0.3)
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite-node: 6.0.0(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite-plugin-checker: 0.14.5(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))
+ vue: 3.5.43(typescript@6.0.3)
vue-bundle-renderer: 2.3.2
optionalDependencies:
'@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
- rolldown: 1.2.4
- rollup-plugin-visualizer: 7.1.1(rolldown@1.2.4)(rollup@4.62.4)
+ rolldown: 1.2.7
+ rollup-plugin-visualizer: 7.1.1(rolldown@1.2.7)(rollup@4.63.1)
transitivePeerDependencies:
- '@biomejs/biome'
- '@farmfe/core'
@@ -7422,12 +7607,12 @@ snapshots:
- webpack
- yaml
- '@nuxtjs/color-mode@4.0.1(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))':
+ '@nuxtjs/color-mode@4.0.1(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
exsolve: 1.1.1
pathe: 2.0.3
- pkg-types: 2.3.1
+ pkg-types: 2.3.2
semver: 7.8.5
transitivePeerDependencies:
- magic-string
@@ -7436,21 +7621,21 @@ snapshots:
- rolldown
- unplugin
- '@nuxtjs/i18n@10.6.0(@vue/compiler-dom@3.5.41)(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(esbuild@0.28.2)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.4)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup@4.62.4)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))':
+ '@nuxtjs/i18n@10.6.0(@vue/compiler-dom@3.5.42)(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(esbuild@0.28.2)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.4)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup@4.63.1)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))':
dependencies:
- '@intlify/core': 11.4.8
+ '@intlify/core': 11.4.10
'@intlify/h3': 0.7.4
- '@intlify/message-compiler': 11.4.8
- '@intlify/shared': 11.4.8
- '@intlify/unplugin-vue-i18n': 11.2.5(@vue/compiler-dom@3.5.41)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(rollup@4.62.4)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.41(typescript@6.0.3)))(vue@3.5.41(typescript@6.0.3))
+ '@intlify/message-compiler': 11.4.10
+ '@intlify/shared': 11.4.10
+ '@intlify/unplugin-vue-i18n': 11.2.5(@vue/compiler-dom@3.5.42)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.63.1)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue-i18n@11.4.10(vue@3.5.43(typescript@6.0.3)))(vue@3.5.43(typescript@6.0.3))
'@intlify/utils': 0.14.1
- '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.62.4)
- '@nuxt/kit': 4.5.2(magic-string@0.30.21)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- '@rollup/plugin-yaml': 4.1.2(rollup@4.62.4)
- '@vue/compiler-sfc': 3.5.41
+ '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.63.1)
+ '@nuxt/kit': 4.5.2(magic-string@0.30.21)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@rollup/plugin-yaml': 4.1.2(rollup@4.63.1)
+ '@vue/compiler-sfc': 3.5.42
confbox: 0.2.4
defu: 6.1.7
- devalue: 5.9.0
+ devalue: 5.9.2
h3: 1.15.11
knitwork: 1.3.0
magic-string: 0.30.21
@@ -7461,12 +7646,12 @@ snapshots:
oxc-walker: 0.7.0(oxc-parser@0.141.0)
pathe: 2.0.3
ufo: 1.6.4
- unhead: 3.3.2(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ unhead: 3.4.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
unrouting: 0.2.3
- unstorage: 1.17.5(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(ioredis@5.11.1(supports-color@10.2.2))
- vue-i18n: 11.4.8(vue@3.5.41(typescript@6.0.3))
- vue-router: 5.2.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))
+ unstorage: 1.17.5(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(ioredis@5.11.1(supports-color@10.2.2))
+ vue-i18n: 11.4.10(vue@3.5.43(typescript@6.0.3))
+ vue-router: 5.3.1(@vue/compiler-sfc@3.5.42)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -7506,10 +7691,10 @@ snapshots:
- vue
- webpack
- '@nuxtjs/tailwindcss@6.14.0(magicast@0.5.4)(supports-color@10.2.2)(tsx@4.23.12)(yaml@2.9.0)':
+ '@nuxtjs/tailwindcss@6.14.0(magicast@0.5.4)(supports-color@10.2.2)(tsx@4.23.13)(yaml@2.9.0)':
dependencies:
'@nuxt/kit': 3.21.11(magicast@0.5.4)
- autoprefixer: 10.5.4(postcss@8.5.26)
+ autoprefixer: 10.5.5(postcss@8.5.28)
c12: 3.3.4(magicast@0.5.4)
consola: 3.4.2
defu: 6.1.7
@@ -7517,11 +7702,11 @@ snapshots:
klona: 2.0.6
ohash: 2.0.12
pathe: 2.0.3
- pkg-types: 2.3.1
- postcss: 8.5.26
- postcss-nesting: 13.0.2(postcss@8.5.26)
- tailwind-config-viewer: 2.0.4(supports-color@10.2.2)(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0))
- tailwindcss: 3.4.19(tsx@4.23.12)(yaml@2.9.0)
+ pkg-types: 2.3.2
+ postcss: 8.5.28
+ postcss-nesting: 13.0.2(postcss@8.5.28)
+ tailwind-config-viewer: 2.0.4(supports-color@10.2.2)(tailwindcss@3.4.19(tsx@4.23.13)(yaml@2.9.0))
+ tailwindcss: 3.4.19(tsx@4.23.13)(yaml@2.9.0)
ufo: 1.6.4
unctx: 2.5.0
transitivePeerDependencies:
@@ -7596,7 +7781,7 @@ snapshots:
'@oxc-project/types@0.141.0': {}
- '@oxc-project/types@0.144.0': {}
+ '@oxc-project/types@0.148.0': {}
'@oxc-transform/binding-android-arm-eabi@0.141.0':
optional: true
@@ -7665,14 +7850,14 @@ snapshots:
'@parcel/watcher-wasm@2.6.0':
dependencies:
is-glob: 4.0.3
- picomatch: 4.0.5
+ picomatch: 4.0.7
'@phc/format@1.0.0': {}
- '@pinia/nuxt@1.0.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))':
+ '@pinia/nuxt@1.0.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3))
transitivePeerDependencies:
- magic-string
- magicast
@@ -7697,194 +7882,197 @@ snapshots:
'@poppinss/exception@1.2.3': {}
- '@rolldown/binding-android-arm64@1.2.4':
+ '@rolldown/binding-android-arm-eabi@1.2.7':
optional: true
- '@rolldown/binding-darwin-arm64@1.2.4':
+ '@rolldown/binding-android-arm64@1.2.7':
optional: true
- '@rolldown/binding-darwin-x64@1.2.4':
+ '@rolldown/binding-darwin-arm64@1.2.7':
optional: true
- '@rolldown/binding-freebsd-x64@1.2.4':
+ '@rolldown/binding-darwin-x64@1.2.7':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.2.4':
+ '@rolldown/binding-freebsd-x64@1.2.7':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.2.4':
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.7':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.2.4':
+ '@rolldown/binding-linux-arm64-gnu@1.2.7':
optional: true
- '@rolldown/binding-linux-ppc64-gnu@1.2.4':
+ '@rolldown/binding-linux-arm64-musl@1.2.7':
optional: true
- '@rolldown/binding-linux-s390x-gnu@1.2.4':
+ '@rolldown/binding-linux-ppc64-gnu@1.2.7':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.2.4':
+ '@rolldown/binding-linux-s390x-gnu@1.2.7':
optional: true
- '@rolldown/binding-linux-x64-musl@1.2.4':
+ '@rolldown/binding-linux-x64-gnu@1.2.7':
optional: true
- '@rolldown/binding-openharmony-arm64@1.2.4':
+ '@rolldown/binding-linux-x64-musl@1.2.7':
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.2.4':
+ '@rolldown/binding-openharmony-arm64@1.2.7':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.2.4':
+ '@rolldown/binding-win32-arm64-msvc@1.2.7':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@1.2.7':
optional: true
'@rolldown/pluginutils@1.0.1': {}
- '@rollup/plugin-alias@6.0.0(rollup@4.62.4)':
+ '@rollup/plugin-alias@6.0.0(rollup@4.63.1)':
optionalDependencies:
- rollup: 4.62.4
+ rollup: 4.63.1
- '@rollup/plugin-commonjs@29.0.3(rollup@4.62.4)':
+ '@rollup/plugin-commonjs@29.0.3(rollup@4.63.1)':
dependencies:
- '@rollup/pluginutils': 5.4.0(rollup@4.62.4)
+ '@rollup/pluginutils': 5.4.0(rollup@4.63.1)
commondir: 1.0.1
estree-walker: 2.0.2
- fdir: 6.5.0(picomatch@4.0.5)
+ fdir: 6.5.0(picomatch@4.0.7)
is-reference: 1.2.1
magic-string: 0.30.21
- picomatch: 4.0.5
+ picomatch: 4.0.7
optionalDependencies:
- rollup: 4.62.4
+ rollup: 4.63.1
- '@rollup/plugin-inject@5.0.5(rollup@4.62.4)':
+ '@rollup/plugin-inject@5.0.5(rollup@4.63.1)':
dependencies:
- '@rollup/pluginutils': 5.4.0(rollup@4.62.4)
+ '@rollup/pluginutils': 5.4.0(rollup@4.63.1)
estree-walker: 2.0.2
magic-string: 0.30.21
optionalDependencies:
- rollup: 4.62.4
+ rollup: 4.63.1
- '@rollup/plugin-json@6.1.0(rollup@4.62.4)':
+ '@rollup/plugin-json@6.1.0(rollup@4.63.1)':
dependencies:
- '@rollup/pluginutils': 5.4.0(rollup@4.62.4)
+ '@rollup/pluginutils': 5.4.0(rollup@4.63.1)
optionalDependencies:
- rollup: 4.62.4
+ rollup: 4.63.1
- '@rollup/plugin-node-resolve@16.0.3(rollup@4.62.4)':
+ '@rollup/plugin-node-resolve@16.0.3(rollup@4.63.1)':
dependencies:
- '@rollup/pluginutils': 5.4.0(rollup@4.62.4)
+ '@rollup/pluginutils': 5.4.0(rollup@4.63.1)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-module: 1.0.0
resolve: 1.22.12
optionalDependencies:
- rollup: 4.62.4
+ rollup: 4.63.1
- '@rollup/plugin-replace@6.0.3(rollup@4.62.4)':
+ '@rollup/plugin-replace@6.0.3(rollup@4.63.1)':
dependencies:
- '@rollup/pluginutils': 5.4.0(rollup@4.62.4)
+ '@rollup/pluginutils': 5.4.0(rollup@4.63.1)
magic-string: 0.30.21
optionalDependencies:
- rollup: 4.62.4
+ rollup: 4.63.1
- '@rollup/plugin-terser@1.0.0(rollup@4.62.4)':
+ '@rollup/plugin-terser@1.0.0(rollup@4.63.1)':
dependencies:
- serialize-javascript: 7.1.0
+ serialize-javascript: 7.1.1
smob: 1.6.2
- terser: 5.50.0
+ terser: 5.51.2
optionalDependencies:
- rollup: 4.62.4
+ rollup: 4.63.1
- '@rollup/plugin-yaml@4.1.2(rollup@4.62.4)':
+ '@rollup/plugin-yaml@4.1.2(rollup@4.63.1)':
dependencies:
- '@rollup/pluginutils': 5.4.0(rollup@4.62.4)
- js-yaml: 4.3.1
+ '@rollup/pluginutils': 5.4.0(rollup@4.63.1)
+ js-yaml: 4.3.2
tosource: 2.0.0-alpha.3
optionalDependencies:
- rollup: 4.62.4
+ rollup: 4.63.1
- '@rollup/pluginutils@5.4.0(rollup@4.62.4)':
+ '@rollup/pluginutils@5.4.0(rollup@4.63.1)':
dependencies:
'@types/estree': 1.0.9
estree-walker: 2.0.2
- picomatch: 4.0.5
+ picomatch: 4.0.7
optionalDependencies:
- rollup: 4.62.4
+ rollup: 4.63.1
- '@rollup/rollup-android-arm-eabi@4.62.4':
+ '@rollup/rollup-android-arm-eabi@4.63.1':
optional: true
- '@rollup/rollup-android-arm64@4.62.4':
+ '@rollup/rollup-android-arm64@4.63.1':
optional: true
- '@rollup/rollup-darwin-arm64@4.62.4':
+ '@rollup/rollup-darwin-arm64@4.63.1':
optional: true
- '@rollup/rollup-darwin-x64@4.62.4':
+ '@rollup/rollup-darwin-x64@4.63.1':
optional: true
- '@rollup/rollup-freebsd-arm64@4.62.4':
+ '@rollup/rollup-freebsd-arm64@4.63.1':
optional: true
- '@rollup/rollup-freebsd-x64@4.62.4':
+ '@rollup/rollup-freebsd-x64@4.63.1':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.62.4':
+ '@rollup/rollup-linux-arm-gnueabihf@4.63.1':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.62.4':
+ '@rollup/rollup-linux-arm-musleabihf@4.63.1':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.62.4':
+ '@rollup/rollup-linux-arm64-gnu@4.63.1':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.62.4':
+ '@rollup/rollup-linux-arm64-musl@4.63.1':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.62.4':
+ '@rollup/rollup-linux-loong64-gnu@4.63.1':
optional: true
- '@rollup/rollup-linux-loong64-musl@4.62.4':
+ '@rollup/rollup-linux-loong64-musl@4.63.1':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.62.4':
+ '@rollup/rollup-linux-ppc64-gnu@4.63.1':
optional: true
- '@rollup/rollup-linux-ppc64-musl@4.62.4':
+ '@rollup/rollup-linux-ppc64-musl@4.63.1':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.62.4':
+ '@rollup/rollup-linux-riscv64-gnu@4.63.1':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.62.4':
+ '@rollup/rollup-linux-riscv64-musl@4.63.1':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.62.4':
+ '@rollup/rollup-linux-s390x-gnu@4.63.1':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.62.4':
+ '@rollup/rollup-linux-x64-gnu@4.63.1':
optional: true
- '@rollup/rollup-linux-x64-musl@4.62.4':
+ '@rollup/rollup-linux-x64-musl@4.63.1':
optional: true
- '@rollup/rollup-openbsd-x64@4.62.4':
+ '@rollup/rollup-openbsd-x64@4.63.1':
optional: true
- '@rollup/rollup-openharmony-arm64@4.62.4':
+ '@rollup/rollup-openharmony-arm64@4.63.1':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.62.4':
+ '@rollup/rollup-win32-arm64-msvc@4.63.1':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.62.4':
+ '@rollup/rollup-win32-ia32-msvc@4.63.1':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.62.4':
+ '@rollup/rollup-win32-x64-gnu@4.63.1':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.62.4':
+ '@rollup/rollup-win32-x64-msvc@4.63.1':
optional: true
'@simple-git/args-pathspec@1.0.3': {}
@@ -7903,31 +8091,31 @@ snapshots:
'@standard-schema/spec@1.1.0': {}
- '@stylistic/eslint-plugin@5.10.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))':
+ '@stylistic/eslint-plugin@5.10.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))':
dependencies:
- '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- '@typescript-eslint/types': 8.67.0
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ '@typescript-eslint/types': 8.69.0
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
- picomatch: 4.0.5
+ picomatch: 4.0.7
'@swc/helpers@0.5.23':
dependencies:
tslib: 2.8.1
- '@tailwindcss/forms@0.5.11(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0))':
+ '@tailwindcss/forms@0.5.11(tailwindcss@3.4.19(tsx@4.23.13)(yaml@2.9.0))':
dependencies:
mini-svg-data-uri: 1.4.4
- tailwindcss: 3.4.19(tsx@4.23.12)(yaml@2.9.0)
+ tailwindcss: 3.4.19(tsx@4.23.13)(yaml@2.9.0)
- '@tanstack/virtual-core@3.17.7': {}
+ '@tanstack/virtual-core@3.17.8': {}
- '@tanstack/vue-virtual@3.13.35(vue@3.5.41(typescript@6.0.3))':
+ '@tanstack/vue-virtual@3.13.36(vue@3.5.43(typescript@6.0.3))':
dependencies:
- '@tanstack/virtual-core': 3.17.7
- vue: 3.5.41(typescript@6.0.3)
+ '@tanstack/virtual-core': 3.17.8
+ vue: 3.5.43(typescript@6.0.3)
'@tybys/wasm-util@0.10.3':
dependencies:
@@ -7945,17 +8133,15 @@ snapshots:
'@types/estree@1.0.9': {}
- '@types/jsesc@2.5.1': {}
-
'@types/json-schema@7.0.15': {}
- '@types/node@26.2.0':
+ '@types/node@26.4.1':
dependencies:
undici-types: 8.3.0
'@types/phc__format@1.0.1':
dependencies:
- '@types/node': 26.2.0
+ '@types/node': 26.4.1
'@types/resolve@1.20.2': {}
@@ -7965,74 +8151,74 @@ snapshots:
'@types/ws@8.18.1':
dependencies:
- '@types/node': 26.2.0
+ '@types/node': 26.4.1
- '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ '@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- '@typescript-eslint/scope-manager': 8.67.0
- '@typescript-eslint/type-utils': 8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- '@typescript-eslint/visitor-keys': 8.67.0
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
- ignore: 7.0.6
+ '@typescript-eslint/parser': 8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/scope-manager': 8.69.0
+ '@typescript-eslint/type-utils': 8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/visitor-keys': 8.69.0
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
+ ignore: 7.0.8
natural-compare: 1.4.0
ts-api-utils: 2.5.0(typescript@6.0.3)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ '@typescript-eslint/parser@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.67.0
- '@typescript-eslint/types': 8.67.0
- '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
- '@typescript-eslint/visitor-keys': 8.67.0
+ '@typescript-eslint/scope-manager': 8.69.0
+ '@typescript-eslint/types': 8.69.0
+ '@typescript-eslint/typescript-estree': 8.69.0(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/visitor-keys': 8.69.0
debug: 4.4.3(supports-color@10.2.2)
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.67.0(supports-color@10.2.2)(typescript@6.0.3)':
+ '@typescript-eslint/project-service@8.69.0(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3)
- '@typescript-eslint/types': 8.67.0
+ '@typescript-eslint/tsconfig-utils': 8.69.0(typescript@6.0.3)
+ '@typescript-eslint/types': 8.69.0
debug: 4.4.3(supports-color@10.2.2)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.67.0':
+ '@typescript-eslint/scope-manager@8.69.0':
dependencies:
- '@typescript-eslint/types': 8.67.0
- '@typescript-eslint/visitor-keys': 8.67.0
+ '@typescript-eslint/types': 8.69.0
+ '@typescript-eslint/visitor-keys': 8.69.0
- '@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)':
+ '@typescript-eslint/tsconfig-utils@8.69.0(typescript@6.0.3)':
dependencies:
typescript: 6.0.3
- '@typescript-eslint/type-utils@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ '@typescript-eslint/type-utils@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
- '@typescript-eslint/types': 8.67.0
- '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
- '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/types': 8.69.0
+ '@typescript-eslint/typescript-estree': 8.69.0(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
debug: 4.4.3(supports-color@10.2.2)
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
ts-api-utils: 2.5.0(typescript@6.0.3)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.67.0': {}
+ '@typescript-eslint/types@8.69.0': {}
- '@typescript-eslint/typescript-estree@8.67.0(supports-color@10.2.2)(typescript@6.0.3)':
+ '@typescript-eslint/typescript-estree@8.69.0(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
- '@typescript-eslint/project-service': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
- '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3)
- '@typescript-eslint/types': 8.67.0
- '@typescript-eslint/visitor-keys': 8.67.0
+ '@typescript-eslint/project-service': 8.69.0(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/tsconfig-utils': 8.69.0(typescript@6.0.3)
+ '@typescript-eslint/types': 8.69.0
+ '@typescript-eslint/visitor-keys': 8.69.0
debug: 4.4.3(supports-color@10.2.2)
minimatch: 10.2.6
semver: 7.8.5
@@ -8042,34 +8228,34 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
+ '@typescript-eslint/utils@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- '@typescript-eslint/scope-manager': 8.67.0
- '@typescript-eslint/types': 8.67.0
- '@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ '@typescript-eslint/scope-manager': 8.69.0
+ '@typescript-eslint/types': 8.69.0
+ '@typescript-eslint/typescript-estree': 8.69.0(supports-color@10.2.2)(typescript@6.0.3)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.67.0':
+ '@typescript-eslint/visitor-keys@8.69.0':
dependencies:
- '@typescript-eslint/types': 8.67.0
+ '@typescript-eslint/types': 8.69.0
eslint-visitor-keys: 5.0.1
- '@unhead/bundler@3.3.2(@oxc-project/types@0.144.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(unhead@3.3.2(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))':
+ '@unhead/bundler@3.4.0(@oxc-project/types@0.148.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(unhead@3.4.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))':
dependencies:
- magic-string: 1.2.0
- oxc-walker: 1.1.1(@oxc-project/types@0.144.0)(oxc-parser@0.141.0)(rolldown@1.2.4)
- unhead: 3.3.2(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ magic-string: 1.2.3
+ oxc-walker: 1.1.1(@oxc-project/types@0.148.0)(oxc-parser@0.141.0)(rolldown@1.2.7)
+ unhead: 3.4.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
optionalDependencies:
esbuild: 0.28.2
lightningcss: 1.33.0
oxc-parser: 0.141.0
- rolldown: 1.2.4
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ rolldown: 1.2.7
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
transitivePeerDependencies:
- '@farmfe/core'
- '@oxc-project/types'
@@ -8078,15 +8264,15 @@ snapshots:
- rollup
- unloader
- '@unhead/vue@3.3.2(@oxc-project/types@0.144.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))':
+ '@unhead/vue@3.4.0(@oxc-project/types@0.148.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))':
dependencies:
- '@unhead/bundler': 3.3.2(@oxc-project/types@0.144.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(unhead@3.3.2(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ '@unhead/bundler': 3.4.0(@oxc-project/types@0.148.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(unhead@3.4.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
hookable: 6.1.1
- unhead: 3.3.2(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- vue: 3.5.41(typescript@6.0.3)
+ unhead: 3.4.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ vue: 3.5.43(typescript@6.0.3)
optionalDependencies:
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
transitivePeerDependencies:
- '@farmfe/core'
- '@oxc-project/types'
@@ -8171,10 +8357,10 @@ snapshots:
'@unrs/resolver-binding-win32-x64-msvc@1.12.2':
optional: true
- '@vercel/nft@1.10.2(rollup@4.62.4)(supports-color@10.2.2)':
+ '@vercel/nft@1.11.0(rollup@4.63.1)(supports-color@10.2.2)':
dependencies:
'@mapbox/node-pre-gyp': 2.0.3(supports-color@10.2.2)
- '@rollup/pluginutils': 5.4.0(rollup@4.62.4)
+ '@rollup/pluginutils': 5.4.0(rollup@4.63.1)
acorn: 8.18.0
acorn-import-attributes: 1.9.5(acorn@8.18.0)
async-sema: 3.1.1
@@ -8183,30 +8369,30 @@ snapshots:
glob: 13.0.6
graceful-fs: 4.2.11
node-gyp-build: 4.8.4
- picomatch: 4.0.5
+ picomatch: 4.0.7
resolve-from: 5.0.0
transitivePeerDependencies:
- encoding
- rollup
- supports-color
- '@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))':
+ '@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))':
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
'@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
'@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
'@rolldown/pluginutils': 1.0.1
'@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
- vue: 3.5.41(typescript@6.0.3)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ vue: 3.5.43(typescript@6.0.3)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue@6.0.8(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))':
+ '@vitejs/plugin-vue@6.0.8(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))':
dependencies:
'@rolldown/pluginutils': 1.0.1
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
- vue: 3.5.41(typescript@6.0.3)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ vue: 3.5.43(typescript@6.0.3)
'@vitest/coverage-v8@4.1.11(vitest@4.1.11)':
dependencies:
@@ -8217,10 +8403,10 @@ snapshots:
istanbul-lib-report: 3.0.1
istanbul-reports: 3.2.0
magicast: 0.5.4
- obug: 2.1.4
+ obug: 2.2.1
std-env: 4.2.0
tinyrainbow: 3.1.1
- vitest: 4.1.11(@types/node@26.2.0)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ vitest: 4.1.11(@types/node@26.4.1)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
'@vitest/expect@4.1.11':
dependencies:
@@ -8231,13 +8417,13 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))':
+ '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.11
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
'@vitest/pretty-format@4.1.11':
dependencies:
@@ -8266,7 +8452,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.17
tinyrainbow: 3.1.1
- vitest: 4.1.11(@types/node@26.2.0)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ vitest: 4.1.11(@types/node@26.4.1)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
'@vitest/utils@4.1.11':
dependencies:
@@ -8284,19 +8470,19 @@ snapshots:
dependencies:
'@volar/language-core': 2.4.28
path-browserify: 1.0.1
- vscode-uri: 3.1.0
+ vscode-uri: 3.2.0
optionalDependencies:
typescript: 6.0.3
- '@vue-macros/common@3.1.4(vue@3.5.41(typescript@6.0.3))':
+ '@vue-macros/common@3.1.4(vue@3.5.43(typescript@6.0.3))':
dependencies:
- '@vue/compiler-sfc': 3.5.41
+ '@vue/compiler-sfc': 3.5.42
ast-kit: 2.2.0
local-pkg: 1.2.1
magic-string-ast: 1.0.3
unplugin-utils: 0.3.2
optionalDependencies:
- vue: 3.5.41(typescript@6.0.3)
+ vue: 3.5.43(typescript@6.0.3)
'@vue/babel-helper-vue-transform-on@2.0.1': {}
@@ -8310,7 +8496,7 @@ snapshots:
'@babel/types': 7.29.8
'@vue/babel-helper-vue-transform-on': 2.0.1
'@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
- '@vue/shared': 3.5.41
+ '@vue/shared': 3.5.42
optionalDependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
transitivePeerDependencies:
@@ -8323,39 +8509,69 @@ snapshots:
'@babel/helper-module-imports': 7.29.7(supports-color@10.2.2)
'@babel/helper-plugin-utils': 7.29.7
'@babel/parser': 7.29.8
- '@vue/compiler-sfc': 3.5.41
+ '@vue/compiler-sfc': 3.5.42
transitivePeerDependencies:
- supports-color
- '@vue/compiler-core@3.5.41':
+ '@vue/compiler-core@3.5.42':
dependencies:
'@babel/parser': 7.29.8
- '@vue/shared': 3.5.41
+ '@vue/shared': 3.5.42
entities: 7.0.1
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-dom@3.5.41':
- dependencies:
- '@vue/compiler-core': 3.5.41
- '@vue/shared': 3.5.41
-
- '@vue/compiler-sfc@3.5.41':
+ '@vue/compiler-core@3.5.43':
dependencies:
'@babel/parser': 7.29.8
- '@vue/compiler-core': 3.5.41
- '@vue/compiler-dom': 3.5.41
- '@vue/compiler-ssr': 3.5.41
- '@vue/shared': 3.5.41
+ '@vue/shared': 3.5.43
+ entities: 7.0.1
estree-walker: 2.0.2
- magic-string: 0.30.21
- postcss: 8.5.26
source-map-js: 1.2.1
- '@vue/compiler-ssr@3.5.41':
+ '@vue/compiler-dom@3.5.42':
dependencies:
- '@vue/compiler-dom': 3.5.41
- '@vue/shared': 3.5.41
+ '@vue/compiler-core': 3.5.42
+ '@vue/shared': 3.5.42
+
+ '@vue/compiler-dom@3.5.43':
+ dependencies:
+ '@vue/compiler-core': 3.5.43
+ '@vue/shared': 3.5.43
+
+ '@vue/compiler-sfc@3.5.42':
+ dependencies:
+ '@babel/parser': 7.29.8
+ '@vue/compiler-core': 3.5.42
+ '@vue/compiler-dom': 3.5.42
+ '@vue/compiler-ssr': 3.5.42
+ '@vue/shared': 3.5.42
+ estree-walker: 2.0.2
+ magic-string: 0.30.21
+ postcss: 8.5.28
+ source-map-js: 1.2.1
+
+ '@vue/compiler-sfc@3.5.43':
+ dependencies:
+ '@babel/parser': 7.29.8
+ '@vue/compiler-core': 3.5.43
+ '@vue/compiler-dom': 3.5.43
+ '@vue/compiler-ssr': 3.5.43
+ '@vue/shared': 3.5.43
+ estree-walker: 2.0.2
+ magic-string: 0.30.21
+ postcss: 8.5.28
+ source-map-js: 1.2.1
+
+ '@vue/compiler-ssr@3.5.42':
+ dependencies:
+ '@vue/compiler-dom': 3.5.42
+ '@vue/shared': 3.5.42
+
+ '@vue/compiler-ssr@3.5.43':
+ dependencies:
+ '@vue/compiler-dom': 3.5.43
+ '@vue/shared': 3.5.43
'@vue/devtools-api@6.6.4': {}
@@ -8363,11 +8579,11 @@ snapshots:
dependencies:
'@vue/devtools-kit': 8.2.1
- '@vue/devtools-core@8.2.1(vue@3.5.41(typescript@6.0.3))':
+ '@vue/devtools-core@8.2.1(vue@3.5.43(typescript@6.0.3))':
dependencies:
'@vue/devtools-kit': 8.2.1
'@vue/devtools-shared': 8.2.1
- vue: 3.5.41(typescript@6.0.3)
+ vue: 3.5.43(typescript@6.0.3)
'@vue/devtools-kit@8.2.1':
dependencies:
@@ -8378,57 +8594,59 @@ snapshots:
'@vue/devtools-shared@8.2.1': {}
- '@vue/language-core@3.3.10':
+ '@vue/language-core@3.3.11':
dependencies:
'@volar/language-core': 2.4.28
- '@vue/compiler-dom': 3.5.41
- '@vue/shared': 3.5.41
+ '@vue/compiler-dom': 3.5.42
+ '@vue/shared': 3.5.42
alien-signals: 3.2.1
muggle-string: 0.4.1
path-browserify: 1.0.1
- picomatch: 4.0.5
+ picomatch: 4.0.7
- '@vue/reactivity@3.5.41':
+ '@vue/reactivity@3.5.43':
dependencies:
- '@vue/shared': 3.5.41
+ '@vue/shared': 3.5.43
- '@vue/runtime-core@3.5.41':
+ '@vue/runtime-core@3.5.43':
dependencies:
- '@vue/reactivity': 3.5.41
- '@vue/shared': 3.5.41
+ '@vue/reactivity': 3.5.43
+ '@vue/shared': 3.5.43
- '@vue/runtime-dom@3.5.41':
+ '@vue/runtime-dom@3.5.43':
dependencies:
- '@vue/reactivity': 3.5.41
- '@vue/runtime-core': 3.5.41
- '@vue/shared': 3.5.41
+ '@vue/reactivity': 3.5.43
+ '@vue/runtime-core': 3.5.43
+ '@vue/shared': 3.5.43
csstype: 3.2.3
- '@vue/server-renderer@3.5.41':
+ '@vue/server-renderer@3.5.43':
dependencies:
- '@vue/compiler-ssr': 3.5.41
- '@vue/runtime-dom': 3.5.41
- '@vue/shared': 3.5.41
+ '@vue/compiler-ssr': 3.5.43
+ '@vue/runtime-dom': 3.5.43
+ '@vue/shared': 3.5.43
- '@vue/shared@3.5.41': {}
+ '@vue/shared@3.5.42': {}
- '@vueuse/core@14.4.0(vue@3.5.41(typescript@6.0.3))':
+ '@vue/shared@3.5.43': {}
+
+ '@vueuse/core@14.4.0(vue@3.5.43(typescript@6.0.3))':
dependencies:
'@types/web-bluetooth': 0.0.21
'@vueuse/metadata': 14.4.0
- '@vueuse/shared': 14.4.0(vue@3.5.41(typescript@6.0.3))
- vue: 3.5.41(typescript@6.0.3)
+ '@vueuse/shared': 14.4.0(vue@3.5.43(typescript@6.0.3))
+ vue: 3.5.43(typescript@6.0.3)
'@vueuse/metadata@14.4.0': {}
- '@vueuse/nuxt@14.4.0(2b18b4a4d95dcdc94899147e03978a2f)':
+ '@vueuse/nuxt@14.4.0(d3e414f291a94191ad8ee9803f470127)':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- '@vueuse/core': 14.4.0(vue@3.5.41(typescript@6.0.3))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@vueuse/core': 14.4.0(vue@3.5.43(typescript@6.0.3))
'@vueuse/metadata': 14.4.0
local-pkg: 1.2.1
- nuxt: 4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.17.4)(@oxc-project/types@0.144.0)(@types/node@26.2.0)(@vue/compiler-sfc@3.5.41)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(drizzle-orm@0.45.2(@libsql/client@0.17.4))(esbuild@0.28.2)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.4)(rollup@4.62.4))(rollup@4.62.4)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.50.0)(tsx@4.23.12)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue-tsc@3.3.10(typescript@6.0.3))(yaml@2.9.0)
- vue: 3.5.41(typescript@6.0.3)
+ nuxt: 4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.18.0)(@oxc-project/types@0.148.0)(@types/node@26.4.1)(@vue/compiler-sfc@3.5.43)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(drizzle-orm@0.45.2(@libsql/client@0.18.0))(esbuild@0.28.2)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.7)(rollup@4.63.1))(rollup@4.63.1)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.51.2)(tsx@4.23.13)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))(yaml@2.9.0)
+ vue: 3.5.43(typescript@6.0.3)
transitivePeerDependencies:
- magic-string
- magicast
@@ -8436,9 +8654,9 @@ snapshots:
- rolldown
- unplugin
- '@vueuse/shared@14.4.0(vue@3.5.41(typescript@6.0.3))':
+ '@vueuse/shared@14.4.0(vue@3.5.43(typescript@6.0.3))':
dependencies:
- vue: 3.5.41(typescript@6.0.3)
+ vue: 3.5.43(typescript@6.0.3)
abbrev@3.0.1: {}
@@ -8491,11 +8709,11 @@ snapshots:
normalize-path: 3.0.0
picomatch: 2.3.2
- apex-commons@0.5.0: {}
+ apex-commons@0.8.1: {}
- apexcharts@6.10.0:
+ apexcharts@7.5.1:
dependencies:
- apex-commons: 0.5.0
+ apex-commons: 0.8.1
archiver-utils@5.0.2:
dependencies:
@@ -8514,7 +8732,7 @@ snapshots:
buffer-crc32: 1.0.0
readable-stream: 4.7.0
readdir-glob: 1.1.3
- tar-stream: 3.2.0
+ tar-stream: 3.2.1
zip-stream: 6.0.1
transitivePeerDependencies:
- bare-abort-controller
@@ -8563,13 +8781,13 @@ snapshots:
at-least-node@1.0.0: {}
- autoprefixer@10.5.4(postcss@8.5.26):
+ autoprefixer@10.5.5(postcss@8.5.28):
dependencies:
- browserslist: 4.28.8
- caniuse-lite: 1.0.30001809
+ browserslist: 4.28.9
+ caniuse-lite: 1.0.30001810
fraction.js: 5.3.4
picocolors: 1.1.1
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
b4a@1.8.1: {}
@@ -8578,38 +8796,38 @@ snapshots:
balanced-match@4.0.4: {}
- bare-events@2.9.1: {}
+ bare-events@2.9.2: {}
- bare-fs@4.8.0:
+ bare-fs@4.8.1:
dependencies:
- bare-events: 2.9.1
- bare-path: 3.1.1
- bare-stream: 2.13.3(bare-events@2.9.1)
- bare-url: 2.5.2
+ bare-events: 2.9.2
+ bare-path: 3.1.2
+ bare-stream: 2.13.4(bare-events@2.9.2)
+ bare-url: 2.5.4
fast-fifo: 1.3.2
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
- bare-path@3.1.1: {}
+ bare-path@3.1.2: {}
- bare-stream@2.13.3(bare-events@2.9.1):
+ bare-stream@2.13.4(bare-events@2.9.2):
dependencies:
b4a: 1.8.1
- streamx: 2.28.0
+ streamx: 2.28.1
teex: 1.0.1
optionalDependencies:
- bare-events: 2.9.1
+ bare-events: 2.9.2
transitivePeerDependencies:
- react-native-b4a
- bare-url@2.5.2:
+ bare-url@2.5.4:
dependencies:
- bare-path: 3.1.1
+ bare-path: 3.1.2
base64-js@1.5.1: {}
- baseline-browser-mapping@2.11.14: {}
+ baseline-browser-mapping@2.11.21: {}
binary-extensions@2.3.0: {}
@@ -8619,7 +8837,7 @@ snapshots:
birpc@2.9.0: {}
- birpc@4.1.0: {}
+ birpc@4.2.0: {}
boolbase@1.0.0: {}
@@ -8640,13 +8858,13 @@ snapshots:
dependencies:
fill-range: 7.1.1
- browserslist@4.28.8:
+ browserslist@4.28.9:
dependencies:
- baseline-browser-mapping: 2.11.14
- caniuse-lite: 1.0.30001809
- electron-to-chromium: 1.5.407
- node-releases: 2.0.53
- update-browserslist-db: 1.3.1(browserslist@4.28.8)
+ baseline-browser-mapping: 2.11.21
+ caniuse-lite: 1.0.30001810
+ electron-to-chromium: 1.5.422
+ node-releases: 2.0.54
+ update-browserslist-db: 1.3.2(browserslist@4.28.9)
buffer-crc32@1.0.0: {}
@@ -8675,8 +8893,8 @@ snapshots:
ohash: 2.0.12
pathe: 2.0.3
perfect-debounce: 2.1.0
- pkg-types: 2.3.1
- rc9: 3.0.1
+ pkg-types: 2.3.2
+ rc9: 3.1.0
optionalDependencies:
magicast: 0.5.4
@@ -8687,6 +8905,14 @@ snapshots:
mime-types: 2.1.35
ylru: 1.4.0
+ cacheable@2.5.0:
+ dependencies:
+ '@cacheable/memory': 2.2.0
+ '@cacheable/utils': 2.5.0
+ hookified: 1.15.1
+ keyv: 5.6.0
+ qified: 0.10.1
+
call-bind-apply-helpers@1.0.2:
dependencies:
es-errors: 1.3.0
@@ -8701,10 +8927,10 @@ snapshots:
caniuse-api@4.0.0:
dependencies:
- browserslist: 4.28.8
- caniuse-lite: 1.0.30001809
+ browserslist: 4.28.9
+ caniuse-lite: 1.0.30001810
- caniuse-lite@1.0.30001809: {}
+ caniuse-lite@1.0.30001810: {}
chai@6.2.2: {}
@@ -8735,8 +8961,6 @@ snapshots:
ci-info@4.4.0: {}
- cidr-regex@7.0.1: {}
-
cidr-regex@7.1.0: {}
cidr-tools@13.0.1:
@@ -8806,6 +9030,8 @@ snapshots:
confbox@0.2.4: {}
+ confbox@0.3.1: {}
+
consola@3.4.2: {}
content-disposition@0.5.4:
@@ -8831,7 +9057,7 @@ snapshots:
core-js-compat@3.50.0:
dependencies:
- browserslist: 4.28.8
+ browserslist: 4.28.9
core-util-is@1.0.3: {}
@@ -8859,14 +9085,14 @@ snapshots:
dependencies:
uncrypto: 0.1.3
- crossws@0.4.10(srvx@0.11.22):
+ crossws@0.4.12(srvx@0.11.22):
optionalDependencies:
srvx: 0.11.22
- css-select@5.2.2:
+ css-select@6.0.0:
dependencies:
boolbase: 1.0.0
- css-what: 6.2.2
+ css-what: 7.0.0
domhandler: 5.0.3
domutils: 3.2.2
nth-check: 2.1.1
@@ -8881,52 +9107,52 @@ snapshots:
mdn-data: 2.27.1
source-map-js: 1.2.1
- css-what@6.2.2: {}
+ css-what@7.0.0: {}
cssesc@3.0.0: {}
- cssnano-preset-default@8.0.5(postcss@8.5.26):
+ cssnano-preset-default@8.0.10(postcss@8.5.28):
dependencies:
- browserslist: 4.28.8
- cssnano-utils: 6.0.3(postcss@8.5.26)
- postcss: 8.5.26
- postcss-calc: 10.1.1(postcss@8.5.26)
- postcss-colormin: 8.0.3(postcss@8.5.26)
- postcss-convert-values: 8.0.3(postcss@8.5.26)
- postcss-discard-comments: 8.0.3(postcss@8.5.26)
- postcss-discard-duplicates: 8.0.3(postcss@8.5.26)
- postcss-discard-empty: 8.0.3(postcss@8.5.26)
- postcss-discard-overridden: 8.0.3(postcss@8.5.26)
- postcss-merge-longhand: 8.0.3(postcss@8.5.26)
- postcss-merge-rules: 8.0.3(postcss@8.5.26)
- postcss-minify-font-values: 8.0.3(postcss@8.5.26)
- postcss-minify-gradients: 8.0.3(postcss@8.5.26)
- postcss-minify-params: 8.0.3(postcss@8.5.26)
- postcss-minify-selectors: 8.0.4(postcss@8.5.26)
- postcss-normalize-charset: 8.0.3(postcss@8.5.26)
- postcss-normalize-display-values: 8.0.3(postcss@8.5.26)
- postcss-normalize-positions: 8.0.3(postcss@8.5.26)
- postcss-normalize-repeat-style: 8.0.3(postcss@8.5.26)
- postcss-normalize-string: 8.0.3(postcss@8.5.26)
- postcss-normalize-timing-functions: 8.0.3(postcss@8.5.26)
- postcss-normalize-unicode: 8.0.3(postcss@8.5.26)
- postcss-normalize-url: 8.0.3(postcss@8.5.26)
- postcss-normalize-whitespace: 8.0.3(postcss@8.5.26)
- postcss-ordered-values: 8.0.3(postcss@8.5.26)
- postcss-reduce-initial: 8.0.3(postcss@8.5.26)
- postcss-reduce-transforms: 8.0.3(postcss@8.5.26)
- postcss-svgo: 8.0.4(postcss@8.5.26)
- postcss-unique-selectors: 8.0.3(postcss@8.5.26)
+ browserslist: 4.28.9
+ cssnano-utils: 6.0.4(postcss@8.5.28)
+ postcss: 8.5.28
+ postcss-calc: 10.1.1(postcss@8.5.28)
+ postcss-colormin: 8.0.5(postcss@8.5.28)
+ postcss-convert-values: 8.0.4(postcss@8.5.28)
+ postcss-discard-comments: 8.0.4(postcss@8.5.28)
+ postcss-discard-duplicates: 8.0.4(postcss@8.5.28)
+ postcss-discard-empty: 8.0.5(postcss@8.5.28)
+ postcss-discard-overridden: 8.0.4(postcss@8.5.28)
+ postcss-merge-longhand: 8.0.4(postcss@8.5.28)
+ postcss-merge-rules: 8.0.5(postcss@8.5.28)
+ postcss-minify-font-values: 8.0.4(postcss@8.5.28)
+ postcss-minify-gradients: 8.0.6(postcss@8.5.28)
+ postcss-minify-params: 8.0.4(postcss@8.5.28)
+ postcss-minify-selectors: 8.0.5(postcss@8.5.28)
+ postcss-normalize-charset: 8.0.5(postcss@8.5.28)
+ postcss-normalize-display-values: 8.0.4(postcss@8.5.28)
+ postcss-normalize-positions: 8.0.4(postcss@8.5.28)
+ postcss-normalize-repeat-style: 8.0.4(postcss@8.5.28)
+ postcss-normalize-string: 8.0.4(postcss@8.5.28)
+ postcss-normalize-timing-functions: 8.0.4(postcss@8.5.28)
+ postcss-normalize-unicode: 8.0.4(postcss@8.5.28)
+ postcss-normalize-url: 8.0.4(postcss@8.5.28)
+ postcss-normalize-whitespace: 8.0.5(postcss@8.5.28)
+ postcss-ordered-values: 8.0.5(postcss@8.5.28)
+ postcss-reduce-initial: 8.0.5(postcss@8.5.28)
+ postcss-reduce-transforms: 8.0.4(postcss@8.5.28)
+ postcss-svgo: 8.0.6(postcss@8.5.28)
+ postcss-unique-selectors: 8.0.4(postcss@8.5.28)
- cssnano-utils@6.0.3(postcss@8.5.26):
+ cssnano-utils@6.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
- cssnano@8.0.5(postcss@8.5.26):
+ cssnano@8.0.10(postcss@8.5.28):
dependencies:
- cssnano-preset-default: 8.0.5(postcss@8.5.26)
+ cssnano-preset-default: 8.0.10(postcss@8.5.28)
lilconfig: 3.1.3
- postcss: 8.5.26
+ postcss: 8.5.28
csso@5.0.5:
dependencies:
@@ -8934,10 +9160,10 @@ snapshots:
csstype@3.2.3: {}
- db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)):
+ db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)):
optionalDependencies:
- '@libsql/client': 0.17.4
- drizzle-orm: 0.45.2(@libsql/client@0.17.4)
+ '@libsql/client': 0.18.0
+ drizzle-orm: 0.45.2(@libsql/client@0.18.0)
debug@3.2.7(supports-color@10.2.2):
dependencies:
@@ -8959,7 +9185,7 @@ snapshots:
default-browser-id@5.0.1: {}
- default-browser@5.5.0:
+ default-browser@5.5.1:
dependencies:
bundle-name: 4.1.0
default-browser-id: 5.0.1
@@ -8986,15 +9212,15 @@ snapshots:
detect-libc@2.1.2: {}
- devalue@5.9.0: {}
+ devalue@5.9.2: {}
- devframe@0.8.2(cac@7.0.0)(srvx@0.11.22):
+ devframe@0.9.12(cac@7.0.0)(srvx@0.11.22):
dependencies:
+ '@modelcontextprotocol/server': 2.0.0
'@standard-schema/spec': 1.1.0
- birpc: 4.1.0
- crossws: 0.4.10(srvx@0.11.22)
- destr: 2.0.5
- h3: 2.0.1-rc.26(crossws@0.4.10(srvx@0.11.22))
+ birpc: 4.2.0
+ crossws: 0.4.12(srvx@0.11.22)
+ h3: 2.0.1-rc.31(crossws@0.4.12(srvx@0.11.22))
mrmime: 2.0.1
nostics: 1.2.0
pathe: 2.0.3
@@ -9002,6 +9228,7 @@ snapshots:
optionalDependencies:
cac: 7.0.0
transitivePeerDependencies:
+ - ocache
- srvx
didyoumean@1.2.2: {}
@@ -9030,7 +9257,7 @@ snapshots:
dot-prop@10.2.0:
dependencies:
- type-fest: 5.8.0
+ type-fest: 5.9.0
dotenv@17.4.2: {}
@@ -9039,11 +9266,11 @@ snapshots:
'@drizzle-team/brocli': 0.10.2
'@esbuild-kit/esm-loader': 2.6.5
esbuild: 0.25.12
- tsx: 4.23.12
+ tsx: 4.23.13
- drizzle-orm@0.45.2(@libsql/client@0.17.4):
+ drizzle-orm@0.45.2(@libsql/client@0.18.0):
optionalDependencies:
- '@libsql/client': 0.17.4
+ '@libsql/client': 0.18.0
dunder-proto@1.0.1:
dependencies:
@@ -9057,7 +9284,7 @@ snapshots:
ee-first@1.1.1: {}
- electron-to-chromium@1.5.407: {}
+ electron-to-chromium@1.5.422: {}
emoji-regex@10.6.0: {}
@@ -9083,8 +9310,6 @@ snapshots:
es-errors@1.3.0: {}
- es-module-lexer@2.3.1: {}
-
es-module-lexer@2.3.2: {}
es-object-atoms@1.1.2:
@@ -9190,14 +9415,14 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-config-flat-gitignore@2.3.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)):
+ eslint-config-flat-gitignore@2.4.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)):
dependencies:
- '@eslint/compat': 2.1.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ '@eslint/compat': 2.1.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
- eslint-config-prettier@10.1.8(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)):
+ eslint-config-prettier@10.1.8(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)):
dependencies:
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
eslint-flat-config-utils@3.2.0:
dependencies:
@@ -9206,25 +9431,25 @@ snapshots:
eslint-import-context@0.1.9(unrs-resolver@1.12.2):
dependencies:
- get-tsconfig: 4.14.2
+ get-tsconfig: 4.14.3
stable-hash-x: 0.2.0
optionalDependencies:
unrs-resolver: 1.12.2
- eslint-merge-processors@2.0.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)):
+ eslint-merge-processors@2.0.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)):
dependencies:
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
- eslint-plugin-import-lite@0.6.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)):
+ eslint-plugin-import-lite@0.6.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)):
dependencies:
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
- eslint-plugin-import-x@4.17.1(@typescript-eslint/utils@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2):
+ eslint-plugin-import-x@4.17.1(@typescript-eslint/utils@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2):
dependencies:
- '@typescript-eslint/types': 8.67.0
+ '@typescript-eslint/types': 8.69.0
comment-parser: 1.4.8
debug: 4.4.3(supports-color@10.2.2)
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
eslint-import-context: 0.1.9(unrs-resolver@1.12.2)
is-glob: 4.0.3
minimatch: 10.2.6
@@ -9232,11 +9457,11 @@ snapshots:
stable-hash-x: 0.2.0
unrs-resolver: 1.12.2
optionalDependencies:
- '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
transitivePeerDependencies:
- supports-color
- eslint-plugin-jsdoc@63.3.3(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2):
+ eslint-plugin-jsdoc@63.3.3(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2):
dependencies:
'@es-joy/jsdoccomment': 0.91.0
'@es-joy/resolve.exports': 1.2.0
@@ -9244,7 +9469,7 @@ snapshots:
comment-parser: 1.4.7
debug: 4.4.3(supports-color@10.2.2)
escape-string-regexp: 4.0.0
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
espree: 11.2.0
esquery: 1.7.0
html-entities: 2.6.0
@@ -9256,30 +9481,30 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-regexp@3.2.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)):
+ eslint-plugin-regexp@3.3.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)):
dependencies:
- '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
'@eslint-community/regexpp': 4.12.2
comment-parser: 1.4.8
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
- jsdoc-type-pratt-parser: 9.1.1
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
+ jsdoc-type-pratt-parser: 9.2.1
refa: 0.12.1
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
- eslint-plugin-unicorn@73.0.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)):
+ eslint-plugin-unicorn@73.0.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)):
dependencies:
- '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- '@eslint/css-tree': 4.0.5
- browserslist: 4.28.8
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ '@eslint/css-tree': 4.1.0
+ browserslist: 4.28.9
change-case: 5.4.4
ci-info: 4.4.0
core-js-compat: 3.50.0
detect-indent: 7.0.2
entities: 4.5.0
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
find-up-simple: 1.0.1
- globals: 17.11.0
+ globals: 17.12.0
indent-string: 5.0.0
is-builtin-module: 5.0.0
is-identifier: 1.1.0
@@ -9291,24 +9516,24 @@ snapshots:
strip-indent: 4.1.1
yaml: 2.9.0
- eslint-plugin-vue@10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)))(@typescript-eslint/parser@8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(vue-eslint-parser@10.4.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)):
+ eslint-plugin-vue@10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript-eslint/parser@8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(vue-eslint-parser@10.4.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)):
dependencies:
- '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
natural-compare: 1.4.0
nth-check: 2.1.1
- postcss-selector-parser: 7.1.5
+ postcss-selector-parser: 7.1.6
semver: 7.8.5
- vue-eslint-parser: 10.4.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)
+ vue-eslint-parser: 10.4.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)
xml-name-validator: 5.0.0
optionalDependencies:
- '@stylistic/eslint-plugin': 5.10.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
- '@typescript-eslint/parser': 8.67.0(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
+ '@stylistic/eslint-plugin': 5.10.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
+ '@typescript-eslint/parser': 8.69.0(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
- eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.41)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)):
+ eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.43)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)):
dependencies:
- '@vue/compiler-sfc': 3.5.41
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ '@vue/compiler-sfc': 3.5.43
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
eslint-scope@9.1.2:
dependencies:
@@ -9317,9 +9542,9 @@ snapshots:
esrecurse: 4.3.0
estraverse: 5.3.0
- eslint-typegen@2.3.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2)):
+ eslint-typegen@2.3.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2)):
dependencies:
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
json-schema-to-typescript-lite: 15.0.0
ohash: 2.0.12
@@ -9329,14 +9554,14 @@ snapshots:
eslint-visitor-keys@5.0.1: {}
- eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2):
+ eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2):
dependencies:
- '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))
'@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.5(supports-color@10.2.2)
'@eslint/config-helpers': 0.7.0
'@eslint/core': 1.2.1
- '@eslint/plugin-kit': 0.7.2
+ '@eslint/plugin-kit': 0.7.3
'@humanfs/node': 0.16.8
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
@@ -9351,7 +9576,7 @@ snapshots:
esquery: 1.7.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
- file-entry-cache: 8.0.0
+ file-entry-cache: 11.1.5
find-up: 5.0.0
glob-parent: 6.0.2
ignore: 5.3.2
@@ -9362,7 +9587,7 @@ snapshots:
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
- jiti: 1.21.7
+ jiti: 2.7.0
transitivePeerDependencies:
- supports-color
@@ -9410,7 +9635,7 @@ snapshots:
events-universal@1.0.1:
dependencies:
- bare-events: 2.9.1
+ bare-events: 2.9.2
transitivePeerDependencies:
- bare-abort-controller
@@ -9464,19 +9689,19 @@ snapshots:
dependencies:
fast-string-width: 3.0.2
- fastq@1.20.1:
+ fastq@1.20.3:
dependencies:
reusify: 1.1.0
- fdir@6.5.0(picomatch@4.0.5):
+ fdir@6.5.0(picomatch@4.0.7):
optionalDependencies:
- picomatch: 4.0.5
+ picomatch: 4.0.7
fflate@0.8.3: {}
- file-entry-cache@8.0.0:
+ file-entry-cache@11.1.5:
dependencies:
- flat-cache: 4.0.1
+ flat-cache: 6.1.23
file-uri-to-path@1.0.0: {}
@@ -9496,10 +9721,11 @@ snapshots:
locate-path: 8.0.0
unicorn-magic: 0.3.0
- flat-cache@4.0.1:
+ flat-cache@6.1.23:
dependencies:
+ cacheable: 2.5.0
flatted: 3.4.4
- keyv: 4.5.4
+ hookified: 1.15.1
flatted@3.4.4: {}
@@ -9572,7 +9798,7 @@ snapshots:
get-stream@8.0.1: {}
- get-tsconfig@4.14.2:
+ get-tsconfig@4.14.3:
dependencies:
resolve-pkg-maps: 1.0.0
@@ -9614,14 +9840,15 @@ snapshots:
dependencies:
ini: 4.1.1
- globals@17.11.0: {}
+ globals@17.12.0: {}
- globby@16.2.3:
+ globby@16.2.4:
dependencies:
'@sindresorhus/merge-streams': 4.0.0
fast-glob: 3.3.3
- ignore: 7.0.6
+ ignore: 7.0.8
is-path-inside: 4.0.0
+ micromatch: 4.0.8
slash: 5.1.0
unicorn-magic: 0.4.0
@@ -9645,12 +9872,12 @@ snapshots:
ufo: 1.6.4
uncrypto: 0.1.3
- h3@2.0.1-rc.26(crossws@0.4.10(srvx@0.11.22)):
+ h3@2.0.1-rc.31(crossws@0.4.12(srvx@0.11.22)):
dependencies:
rou3: 0.9.2
- srvx: 0.12.5
+ srvx: 1.0.3
optionalDependencies:
- crossws: 0.4.10(srvx@0.11.22)
+ crossws: 0.4.12(srvx@0.11.22)
has-flag@4.0.0: {}
@@ -9660,6 +9887,10 @@ snapshots:
dependencies:
has-symbols: 1.1.0
+ hashery@1.5.1:
+ dependencies:
+ hookified: 1.15.1
+
hasown@2.0.4:
dependencies:
function-bind: 1.1.2
@@ -9668,6 +9899,10 @@ snapshots:
hookable@6.1.1: {}
+ hookified@1.15.1: {}
+
+ hookified@2.2.0: {}
+
html-entities@2.6.0: {}
html-escaper@2.0.2: {}
@@ -9721,16 +9956,16 @@ snapshots:
ignore@5.3.2: {}
- ignore@7.0.6: {}
+ ignore@7.0.8: {}
image-meta@0.2.2: {}
- impound@1.1.7(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)):
+ impound@1.2.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
- es-module-lexer: 2.3.1
+ es-module-lexer: 2.3.2
pathe: 2.0.3
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
unplugin-utils: 0.3.2
transitivePeerDependencies:
- '@farmfe/core'
@@ -9774,8 +10009,6 @@ snapshots:
dependencies:
cidr-regex: 7.1.0
- ip-bigint@9.0.8: {}
-
ip-regex@5.0.0: {}
iron-webcrypto@1.2.1: {}
@@ -9790,7 +10023,7 @@ snapshots:
is-cidr@7.0.1:
dependencies:
- cidr-regex: 7.0.1
+ cidr-regex: 7.1.0
is-core-module@2.16.2:
dependencies:
@@ -9897,9 +10130,9 @@ snapshots:
jiti@2.7.0: {}
- jose@6.2.10: {}
+ jose@6.2.12: {}
- js-base64@3.9.2: {}
+ js-base64@3.9.3: {}
js-sha256@1.0.0: {}
@@ -9907,20 +10140,19 @@ snapshots:
js-tokens@4.0.0: {}
- js-yaml@4.3.1:
+ js-yaml@4.3.2:
dependencies:
argparse: 2.0.1
jsdoc-type-pratt-parser@8.0.0: {}
- jsdoc-type-pratt-parser@9.1.1:
+ jsdoc-type-pratt-parser@9.2.1:
dependencies:
'@types/estree': 1.0.9
+ '@types/node': 26.4.1
jsesc@3.1.0: {}
- json-buffer@3.0.1: {}
-
json-schema-to-typescript-lite@15.0.0:
dependencies:
'@apidevtools/json-schema-ref-parser': 14.2.1(@types/json-schema@7.0.15)
@@ -9949,9 +10181,9 @@ snapshots:
dependencies:
tsscmp: 1.0.6
- keyv@4.5.4:
+ keyv@5.6.0:
dependencies:
- json-buffer: 3.0.1
+ '@keyv/serialize': 1.1.1
kleur@4.1.5: {}
@@ -10096,7 +10328,7 @@ snapshots:
'@parcel/watcher-wasm': 2.6.0
citty: 0.2.2
consola: 3.4.2
- crossws: 0.4.10(srvx@0.11.22)
+ crossws: 0.4.12(srvx@0.11.22)
defu: 6.1.7
get-port-please: 3.2.0
h3: 1.15.11
@@ -10117,7 +10349,7 @@ snapshots:
local-pkg@1.2.1:
dependencies:
mlly: 1.8.2
- pkg-types: 2.3.1
+ pkg-types: 2.3.2
quansync: 0.2.11
locate-path@6.0.0:
@@ -10154,11 +10386,11 @@ snapshots:
magic-string@0.30.21:
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/sourcemap-codec': 1.6.0
- magic-string@1.2.0:
+ magic-string@1.2.3:
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/sourcemap-codec': 1.6.0
magicast@0.5.4:
dependencies:
@@ -10182,7 +10414,7 @@ snapshots:
mdn-data@2.27.1: {}
- mdn-data@2.29.0: {}
+ mdn-data@2.34.0: {}
media-typer@0.3.0: {}
@@ -10268,17 +10500,17 @@ snapshots:
negotiator@0.6.3: {}
- nitropack@2.13.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4))(oxc-parser@0.141.0)(rolldown@1.2.4)(srvx@0.11.22)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)):
+ nitropack@2.13.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0))(oxc-parser@0.141.0)(rolldown@1.2.7)(srvx@0.11.22)(supports-color@10.2.2)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
'@cloudflare/kv-asset-handler': 0.4.2
- '@rollup/plugin-alias': 6.0.0(rollup@4.62.4)
- '@rollup/plugin-commonjs': 29.0.3(rollup@4.62.4)
- '@rollup/plugin-inject': 5.0.5(rollup@4.62.4)
- '@rollup/plugin-json': 6.1.0(rollup@4.62.4)
- '@rollup/plugin-node-resolve': 16.0.3(rollup@4.62.4)
- '@rollup/plugin-replace': 6.0.3(rollup@4.62.4)
- '@rollup/plugin-terser': 1.0.0(rollup@4.62.4)
- '@vercel/nft': 1.10.2(rollup@4.62.4)(supports-color@10.2.2)
+ '@rollup/plugin-alias': 6.0.0(rollup@4.63.1)
+ '@rollup/plugin-commonjs': 29.0.3(rollup@4.63.1)
+ '@rollup/plugin-inject': 5.0.5(rollup@4.63.1)
+ '@rollup/plugin-json': 6.1.0(rollup@4.63.1)
+ '@rollup/plugin-node-resolve': 16.0.3(rollup@4.63.1)
+ '@rollup/plugin-replace': 6.0.3(rollup@4.63.1)
+ '@rollup/plugin-terser': 1.0.0(rollup@4.63.1)
+ '@vercel/nft': 1.11.0(rollup@4.63.1)(supports-color@10.2.2)
archiver: 7.0.1
c12: 3.3.4(magicast@0.5.4)
chokidar: 5.0.0
@@ -10289,7 +10521,7 @@ snapshots:
cookie-es: 2.0.1
croner: 10.0.1
crossws: 0.3.5
- db0: 0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4))
+ db0: 0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0))
defu: 6.1.7
destr: 2.0.5
dot-prop: 10.2.0
@@ -10297,7 +10529,7 @@ snapshots:
escape-string-regexp: 5.0.0
etag: 1.8.1
exsolve: 1.1.1
- globby: 16.2.3
+ globby: 16.2.4
gzip-size: 7.0.0
h3: 1.15.11
hookable: 5.5.3
@@ -10317,11 +10549,11 @@ snapshots:
ohash: 2.0.12
pathe: 2.0.3
perfect-debounce: 2.1.0
- pkg-types: 2.3.1
- pretty-bytes: 7.1.1
+ pkg-types: 2.3.2
+ pretty-bytes: 7.1.3
radix3: 1.1.2
- rollup: 4.62.4
- rollup-plugin-visualizer: 7.1.1(rolldown@1.2.4)(rollup@4.62.4)
+ rollup: 4.63.1
+ rollup-plugin-visualizer: 7.1.1(rolldown@1.2.7)(rollup@4.63.1)
scule: 1.3.0
semver: 7.8.5
serve-placeholder: 2.0.2
@@ -10333,9 +10565,9 @@ snapshots:
uncrypto: 0.1.3
unctx: 2.5.0
unenv: 2.0.0-rc.24
- unimport: 6.4.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ unimport: 6.4.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
unplugin-utils: 0.3.2
- unstorage: 1.17.5(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(ioredis@5.11.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(ioredis@5.11.1(supports-color@10.2.2))
untyped: 2.0.0
unwasm: 0.5.3
youch: 4.1.1
@@ -10394,7 +10626,7 @@ snapshots:
node-mock-http@1.0.5: {}
- node-releases@2.0.53: {}
+ node-releases@2.0.54: {}
nopt@8.1.0:
dependencies:
@@ -10419,35 +10651,35 @@ snapshots:
nuxt-define@1.0.0: {}
- nuxt@4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.17.4)(@oxc-project/types@0.144.0)(@types/node@26.2.0)(@vue/compiler-sfc@3.5.41)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(drizzle-orm@0.45.2(@libsql/client@0.17.4))(esbuild@0.28.2)(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.4)(rollup@4.62.4))(rollup@4.62.4)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.50.0)(tsx@4.23.12)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue-tsc@3.3.10(typescript@6.0.3))(yaml@2.9.0):
+ nuxt@4.5.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@libsql/client@0.18.0)(@oxc-project/types@0.148.0)(@types/node@26.4.1)(@vue/compiler-sfc@3.5.43)(cac@7.0.0)(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(drizzle-orm@0.45.2(@libsql/client@0.18.0))(esbuild@0.28.2)(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.4)(optionator@0.9.4)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.7)(rollup@4.63.1))(rollup@4.63.1)(srvx@0.11.22)(supports-color@10.2.2)(terser@5.51.2)(tsx@4.23.13)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3))(yaml@2.9.0):
dependencies:
- '@dxup/nuxt': 0.5.7(esbuild@0.28.2)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ '@dxup/nuxt': 0.5.10(esbuild@0.28.2)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
'@nuxt/cli': 3.37.0(@nuxt/schema@4.5.2)(cac@7.0.0)(magicast@0.5.4)(supports-color@10.2.2)
- '@nuxt/devtools': 3.4.1(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(ioredis@5.11.1(supports-color@10.2.2))(magic-string@1.2.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(supports-color@10.2.2)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- '@nuxt/nitro-server': 4.5.2(ea1b3e8d6f65e045f8e04fc178cbf666)
+ '@nuxt/devtools': 3.4.2(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(ioredis@5.11.1(supports-color@10.2.2))(magic-string@1.2.3)(oxc-parser@0.141.0)(rolldown@1.2.7)(supports-color@10.2.2)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/nitro-server': 4.5.2(53c38ddc10d08ab112f8efd352a551ca)
'@nuxt/schema': 4.5.2
- '@nuxt/telemetry': 2.8.0(@nuxt/kit@4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))))
- '@nuxt/vite-builder': 4.5.2(67a159140f5abc3f4dfb6471ad3f3982)
- '@unhead/vue': 3.3.2(@oxc-project/types@0.144.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))
- '@vue/shared': 3.5.41
+ '@nuxt/telemetry': 2.9.1(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))))
+ '@nuxt/vite-builder': 4.5.2(4bee5a9e48d6ba36b588d43e9fbd0f2a)
+ '@unhead/vue': 3.4.0(@oxc-project/types@0.148.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))
+ '@vue/shared': 3.5.42
chokidar: 5.0.0
compatx: 0.2.0
consola: 3.4.2
cookie-es: 3.1.1
defu: 6.1.7
- devalue: 5.9.0
+ devalue: 5.9.2
errx: 0.1.2
escape-string-regexp: 5.0.0
exsolve: 1.1.1
fnv1a-64: 0.1.2
hookable: 6.1.1
- ignore: 7.0.6
- impound: 1.1.7(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ ignore: 7.0.8
+ impound: 1.2.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
jiti: 2.7.0
klona: 2.0.6
knitwork: 1.3.0
- magic-string: 1.2.0
+ magic-string: 1.2.3
mlly: 1.8.2
nanotar: 0.3.0
nostics: 1.2.0
@@ -10456,13 +10688,13 @@ snapshots:
ofetch: 1.5.1
ohash: 2.0.12
on-change: 6.0.2
- oxc-walker: 1.1.1(@oxc-project/types@0.144.0)(oxc-parser@0.141.0)(rolldown@1.2.4)
+ oxc-walker: 1.1.1(@oxc-project/types@0.148.0)(oxc-parser@0.141.0)(rolldown@1.2.7)
pathe: 2.0.3
perfect-debounce: 2.1.0
- picomatch: 4.0.5
- pkg-types: 2.3.1
- rolldown: 1.2.4
- rolldown-string: 0.3.1(rolldown@1.2.4)
+ picomatch: 4.0.7
+ pkg-types: 2.3.2
+ rolldown: 1.2.7
+ rolldown-string: 0.3.1(rolldown@1.2.7)
rou3: 0.9.2
scule: 1.3.0
std-env: 4.2.0
@@ -10470,19 +10702,19 @@ snapshots:
ufo: 1.6.4
ultrahtml: 1.7.0
uncrypto: 0.1.3
- unctx: 3.0.0(magic-string@1.2.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
- undici: 8.10.0
- unhead: 3.3.2(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- unimport: 6.4.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ unctx: 3.0.1(magic-string@1.2.3)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
+ undici: 8.10.2
+ unhead: 3.4.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ unimport: 6.4.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
unrouting: 0.2.3
untyped: 2.0.0
verkit: 0.3.2
- vue: 3.5.41(typescript@6.0.3)
- vue-component-type-helpers: 3.3.10
- vue-router: 5.2.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))
+ vue: 3.5.43(typescript@6.0.3)
+ vue-component-type-helpers: 3.3.11
+ vue-router: 5.3.1(@vue/compiler-sfc@3.5.43)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3))
optionalDependencies:
- '@types/node': 26.2.0
+ '@types/node': 26.4.1
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -10564,9 +10796,9 @@ snapshots:
dependencies:
citty: 0.2.2
pathe: 2.0.3
- tinyexec: 1.3.0
+ tinyexec: 1.3.1
- oauth4webapi@3.8.7: {}
+ oauth4webapi@3.8.8: {}
object-assign@4.1.1: {}
@@ -10576,7 +10808,9 @@ snapshots:
object-identity@0.2.3: {}
- obug@2.1.4: {}
+ obug@2.2.1: {}
+
+ obug@3.0.0: {}
ofetch@1.5.1:
dependencies:
@@ -10584,8 +10818,6 @@ snapshots:
node-fetch-native: 1.6.7
ufo: 1.6.4
- ofetch@2.0.0-alpha.3: {}
-
ohash@2.0.12: {}
on-change@6.0.2: {}
@@ -10604,13 +10836,13 @@ snapshots:
only@0.0.2: {}
- open@11.0.1:
+ open@11.0.2:
dependencies:
- default-browser: 5.5.0
+ default-browser: 5.5.1
define-lazy-prop: 3.0.0
is-in-ssh: 1.0.0
is-inside-container: 1.0.0
- powershell-utils: 0.2.0
+ powershell-utils: 0.2.1
wsl-utils: 1.0.0
open@7.4.2:
@@ -10618,10 +10850,10 @@ snapshots:
is-docker: 2.2.1
is-wsl: 2.2.0
- openid-client@6.8.7:
+ openid-client@6.8.8:
dependencies:
- jose: 6.2.10
- oauth4webapi: 3.8.7
+ jose: 6.2.12
+ oauth4webapi: 3.8.8
optionator@0.9.4:
dependencies:
@@ -10632,9 +10864,9 @@ snapshots:
type-check: 0.4.0
word-wrap: 1.2.5
- otpauth@9.5.1:
+ otpauth@9.5.2:
dependencies:
- '@noble/hashes': 2.2.0
+ '@noble/hashes': 2.4.0
oxc-parser@0.141.0:
dependencies:
@@ -10689,11 +10921,11 @@ snapshots:
magic-regexp: 0.10.0
oxc-parser: 0.141.0
- oxc-walker@1.1.1(@oxc-project/types@0.144.0)(oxc-parser@0.141.0)(rolldown@1.2.4):
+ oxc-walker@1.1.1(@oxc-project/types@0.148.0)(oxc-parser@0.141.0)(rolldown@1.2.7):
optionalDependencies:
- '@oxc-project/types': 0.144.0
+ '@oxc-project/types': 0.148.0
oxc-parser: 0.141.0
- rolldown: 1.2.4
+ rolldown: 1.2.7
p-event@6.0.1:
dependencies:
@@ -10761,15 +10993,13 @@ snapshots:
picomatch@2.3.2: {}
- picomatch@4.0.5: {}
+ picomatch@4.0.7: {}
- pify@2.3.0: {}
-
- pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)):
+ pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)):
dependencies:
'@vue/devtools-api': 8.2.1
nostics: 1.2.0
- vue: 3.5.41(typescript@6.0.3)
+ vue: 3.5.43(typescript@6.0.3)
optionalDependencies:
typescript: 6.0.3
@@ -10781,9 +11011,9 @@ snapshots:
mlly: 1.8.2
pathe: 2.0.3
- pkg-types@2.3.1:
+ pkg-types@2.3.2:
dependencies:
- confbox: 0.2.4
+ confbox: 0.3.1
exsolve: 1.1.1
pathe: 2.0.3
@@ -10796,177 +11026,177 @@ snapshots:
transitivePeerDependencies:
- supports-color
- postcss-calc@10.1.1(postcss@8.5.26):
+ postcss-calc@10.1.1(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
- postcss-selector-parser: 7.1.5
+ postcss: 8.5.28
+ postcss-selector-parser: 7.1.6
postcss-value-parser: 4.2.0
- postcss-colormin@8.0.3(postcss@8.5.26):
+ postcss-colormin@8.0.5(postcss@8.5.28):
dependencies:
- '@colordx/core': 5.5.0
- browserslist: 4.28.8
+ '@colordx/core': 5.8.0
+ browserslist: 4.28.9
caniuse-api: 4.0.0
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-convert-values@8.0.3(postcss@8.5.26):
+ postcss-convert-values@8.0.4(postcss@8.5.28):
dependencies:
- browserslist: 4.28.8
- postcss: 8.5.26
+ browserslist: 4.28.9
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-discard-comments@8.0.3(postcss@8.5.26):
+ postcss-discard-comments@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
- postcss-selector-parser: 7.1.5
+ postcss: 8.5.28
+ postcss-selector-parser: 7.1.6
- postcss-discard-duplicates@8.0.3(postcss@8.5.26):
+ postcss-discard-duplicates@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
- postcss-discard-empty@8.0.3(postcss@8.5.26):
+ postcss-discard-empty@8.0.5(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
- postcss-discard-overridden@8.0.3(postcss@8.5.26):
+ postcss-discard-overridden@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
- postcss-import@15.1.0(postcss@8.5.26):
+ postcss-import@15.1.0(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- read-cache: 1.0.0
+ read-cache: 1.0.2
resolve: 1.22.12
- postcss-js@4.1.0(postcss@8.5.26):
+ postcss-js@4.1.0(postcss@8.5.28):
dependencies:
camelcase-css: 2.0.1
- postcss: 8.5.26
+ postcss: 8.5.28
- postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.12)(yaml@2.9.0):
+ postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.28)(tsx@4.23.13)(yaml@2.9.0):
dependencies:
lilconfig: 3.1.3
optionalDependencies:
jiti: 1.21.7
- postcss: 8.5.26
- tsx: 4.23.12
+ postcss: 8.5.28
+ tsx: 4.23.13
yaml: 2.9.0
- postcss-merge-longhand@8.0.3(postcss@8.5.26):
+ postcss-merge-longhand@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- stylehacks: 8.0.3(postcss@8.5.26)
+ stylehacks: 8.0.4(postcss@8.5.28)
- postcss-merge-rules@8.0.3(postcss@8.5.26):
+ postcss-merge-rules@8.0.5(postcss@8.5.28):
dependencies:
- browserslist: 4.28.8
+ browserslist: 4.28.9
caniuse-api: 4.0.0
- cssnano-utils: 6.0.3(postcss@8.5.26)
- postcss: 8.5.26
- postcss-selector-parser: 7.1.5
+ cssnano-utils: 6.0.4(postcss@8.5.28)
+ postcss: 8.5.28
+ postcss-selector-parser: 7.1.6
- postcss-minify-font-values@8.0.3(postcss@8.5.26):
+ postcss-minify-font-values@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-minify-gradients@8.0.3(postcss@8.5.26):
+ postcss-minify-gradients@8.0.6(postcss@8.5.28):
dependencies:
- '@colordx/core': 5.5.0
- cssnano-utils: 6.0.3(postcss@8.5.26)
- postcss: 8.5.26
+ '@colordx/core': 5.8.0
+ cssnano-utils: 6.0.4(postcss@8.5.28)
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-minify-params@8.0.3(postcss@8.5.26):
+ postcss-minify-params@8.0.4(postcss@8.5.28):
dependencies:
- browserslist: 4.28.8
- cssnano-utils: 6.0.3(postcss@8.5.26)
- postcss: 8.5.26
+ browserslist: 4.28.9
+ cssnano-utils: 6.0.4(postcss@8.5.28)
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-minify-selectors@8.0.4(postcss@8.5.26):
+ postcss-minify-selectors@8.0.5(postcss@8.5.28):
dependencies:
- browserslist: 4.28.8
+ browserslist: 4.28.9
caniuse-api: 4.0.0
cssesc: 3.0.0
- postcss: 8.5.26
- postcss-selector-parser: 7.1.5
+ postcss: 8.5.28
+ postcss-selector-parser: 7.1.6
- postcss-nested@6.2.0(postcss@8.5.26):
+ postcss-nested@6.2.0(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-selector-parser: 6.1.4
- postcss-nesting@13.0.2(postcss@8.5.26):
+ postcss-nesting@13.0.2(postcss@8.5.28):
dependencies:
- '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.5)
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.5)
- postcss: 8.5.26
- postcss-selector-parser: 7.1.5
+ '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.6)
+ '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.6)
+ postcss: 8.5.28
+ postcss-selector-parser: 7.1.6
- postcss-normalize-charset@8.0.3(postcss@8.5.26):
+ postcss-normalize-charset@8.0.5(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
- postcss-normalize-display-values@8.0.3(postcss@8.5.26):
+ postcss-normalize-display-values@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-normalize-positions@8.0.3(postcss@8.5.26):
+ postcss-normalize-positions@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-normalize-repeat-style@8.0.3(postcss@8.5.26):
+ postcss-normalize-repeat-style@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-normalize-string@8.0.3(postcss@8.5.26):
+ postcss-normalize-string@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-normalize-timing-functions@8.0.3(postcss@8.5.26):
+ postcss-normalize-timing-functions@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-normalize-unicode@8.0.3(postcss@8.5.26):
+ postcss-normalize-unicode@8.0.4(postcss@8.5.28):
dependencies:
- browserslist: 4.28.8
- postcss: 8.5.26
+ browserslist: 4.28.9
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-normalize-url@8.0.3(postcss@8.5.26):
+ postcss-normalize-url@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-normalize-whitespace@8.0.3(postcss@8.5.26):
+ postcss-normalize-whitespace@8.0.5(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-ordered-values@8.0.3(postcss@8.5.26):
+ postcss-ordered-values@8.0.5(postcss@8.5.28):
dependencies:
- cssnano-utils: 6.0.3(postcss@8.5.26)
- postcss: 8.5.26
+ cssnano-utils: 6.0.4(postcss@8.5.28)
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- postcss-reduce-initial@8.0.3(postcss@8.5.26):
+ postcss-reduce-initial@8.0.5(postcss@8.5.28):
dependencies:
- browserslist: 4.28.8
+ browserslist: 4.28.9
caniuse-api: 4.0.0
- postcss: 8.5.26
+ postcss: 8.5.28
- postcss-reduce-transforms@8.0.3(postcss@8.5.26):
+ postcss-reduce-transforms@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
postcss-selector-parser@6.1.4:
@@ -10974,25 +11204,25 @@ snapshots:
cssesc: 3.0.0
util-deprecate: 1.0.2
- postcss-selector-parser@7.1.5:
+ postcss-selector-parser@7.1.6:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
- postcss-svgo@8.0.4(postcss@8.5.26):
+ postcss-svgo@8.0.6(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
+ postcss: 8.5.28
postcss-value-parser: 4.2.0
- svgo: 4.0.2
+ svgo: 4.1.0
- postcss-unique-selectors@8.0.3(postcss@8.5.26):
+ postcss-unique-selectors@8.0.4(postcss@8.5.28):
dependencies:
- postcss: 8.5.26
- postcss-selector-parser: 7.1.5
+ postcss: 8.5.28
+ postcss-selector-parser: 7.1.6
postcss-value-parser@4.2.0: {}
- postcss@8.5.26:
+ postcss@8.5.28:
dependencies:
nanoid: 3.3.18
picocolors: 1.1.1
@@ -11000,7 +11230,7 @@ snapshots:
powershell-utils@0.1.0: {}
- powershell-utils@0.2.0: {}
+ powershell-utils@0.2.1: {}
prelude-ls@1.2.1: {}
@@ -11010,7 +11240,7 @@ snapshots:
prettier@3.9.6: {}
- pretty-bytes@7.1.1: {}
+ pretty-bytes@7.1.3: {}
process-nextick-args@2.0.1: {}
@@ -11026,7 +11256,11 @@ snapshots:
punycode@2.3.1: {}
- qr@0.6.0: {}
+ qified@0.10.1:
+ dependencies:
+ hookified: 2.2.0
+
+ qr@0.7.0: {}
quansync@0.2.11: {}
@@ -11038,14 +11272,12 @@ snapshots:
range-parser@1.3.0: {}
- rc9@3.0.1:
+ rc9@3.1.0:
dependencies:
defu: 6.1.7
destr: 2.0.5
- read-cache@1.0.0:
- dependencies:
- pify: 2.3.0
+ read-cache@1.0.2: {}
readable-stream@2.3.8:
dependencies:
@@ -11096,19 +11328,19 @@ snapshots:
dependencies:
jsesc: 3.1.0
- reka-ui@2.10.3(vue@3.5.41(typescript@6.0.3)):
+ reka-ui@2.10.4(vue@3.5.43(typescript@6.0.3)):
dependencies:
'@floating-ui/dom': 1.8.0
- '@floating-ui/vue': 1.1.11(vue@3.5.41(typescript@6.0.3))
- '@internationalized/date': 3.12.3
- '@internationalized/number': 3.6.7
- '@tanstack/vue-virtual': 3.13.35(vue@3.5.41(typescript@6.0.3))
- '@vueuse/core': 14.4.0(vue@3.5.41(typescript@6.0.3))
- '@vueuse/shared': 14.4.0(vue@3.5.41(typescript@6.0.3))
+ '@floating-ui/vue': 1.1.11(vue@3.5.43(typescript@6.0.3))
+ '@internationalized/date': 3.12.4
+ '@internationalized/number': 3.6.8
+ '@tanstack/vue-virtual': 3.13.36(vue@3.5.43(typescript@6.0.3))
+ '@vueuse/core': 14.4.0(vue@3.5.43(typescript@6.0.3))
+ '@vueuse/shared': 14.4.0(vue@3.5.43(typescript@6.0.3))
aria-hidden: 1.2.6
defu: 6.1.7
ohash: 2.0.12
- vue: 3.5.41(typescript@6.0.3)
+ vue: 3.5.43(typescript@6.0.3)
transitivePeerDependencies:
- '@vue/composition-api'
@@ -11142,72 +11374,73 @@ snapshots:
reusify@1.1.0: {}
- rolldown-string@0.3.1(rolldown@1.2.4):
+ rolldown-string@0.3.1(rolldown@1.2.7):
dependencies:
- magic-string: 1.2.0
+ magic-string: 1.2.3
optionalDependencies:
- rolldown: 1.2.4
+ rolldown: 1.2.7
- rolldown@1.2.4:
+ rolldown@1.2.7:
dependencies:
- '@oxc-project/types': 0.144.0
+ '@oxc-project/types': 0.148.0
'@rolldown/pluginutils': 1.0.1
optionalDependencies:
- '@rolldown/binding-android-arm64': 1.2.4
- '@rolldown/binding-darwin-arm64': 1.2.4
- '@rolldown/binding-darwin-x64': 1.2.4
- '@rolldown/binding-freebsd-x64': 1.2.4
- '@rolldown/binding-linux-arm-gnueabihf': 1.2.4
- '@rolldown/binding-linux-arm64-gnu': 1.2.4
- '@rolldown/binding-linux-arm64-musl': 1.2.4
- '@rolldown/binding-linux-ppc64-gnu': 1.2.4
- '@rolldown/binding-linux-s390x-gnu': 1.2.4
- '@rolldown/binding-linux-x64-gnu': 1.2.4
- '@rolldown/binding-linux-x64-musl': 1.2.4
- '@rolldown/binding-openharmony-arm64': 1.2.4
- '@rolldown/binding-win32-arm64-msvc': 1.2.4
- '@rolldown/binding-win32-x64-msvc': 1.2.4
+ '@rolldown/binding-android-arm-eabi': 1.2.7
+ '@rolldown/binding-android-arm64': 1.2.7
+ '@rolldown/binding-darwin-arm64': 1.2.7
+ '@rolldown/binding-darwin-x64': 1.2.7
+ '@rolldown/binding-freebsd-x64': 1.2.7
+ '@rolldown/binding-linux-arm-gnueabihf': 1.2.7
+ '@rolldown/binding-linux-arm64-gnu': 1.2.7
+ '@rolldown/binding-linux-arm64-musl': 1.2.7
+ '@rolldown/binding-linux-ppc64-gnu': 1.2.7
+ '@rolldown/binding-linux-s390x-gnu': 1.2.7
+ '@rolldown/binding-linux-x64-gnu': 1.2.7
+ '@rolldown/binding-linux-x64-musl': 1.2.7
+ '@rolldown/binding-openharmony-arm64': 1.2.7
+ '@rolldown/binding-win32-arm64-msvc': 1.2.7
+ '@rolldown/binding-win32-x64-msvc': 1.2.7
- rollup-plugin-visualizer@7.1.1(rolldown@1.2.4)(rollup@4.62.4):
+ rollup-plugin-visualizer@7.1.1(rolldown@1.2.7)(rollup@4.63.1):
dependencies:
- open: 11.0.1
- picomatch: 4.0.5
+ open: 11.0.2
+ picomatch: 4.0.7
source-map: 0.8.0
yargs: 18.1.0
optionalDependencies:
- rolldown: 1.2.4
- rollup: 4.62.4
+ rolldown: 1.2.7
+ rollup: 4.63.1
- rollup@4.62.4:
+ rollup@4.63.1:
dependencies:
'@types/estree': 1.0.9
optionalDependencies:
'@napi-rs/lzma-linux-x64-gnu': 1.5.1
- '@rollup/rollup-android-arm-eabi': 4.62.4
- '@rollup/rollup-android-arm64': 4.62.4
- '@rollup/rollup-darwin-arm64': 4.62.4
- '@rollup/rollup-darwin-x64': 4.62.4
- '@rollup/rollup-freebsd-arm64': 4.62.4
- '@rollup/rollup-freebsd-x64': 4.62.4
- '@rollup/rollup-linux-arm-gnueabihf': 4.62.4
- '@rollup/rollup-linux-arm-musleabihf': 4.62.4
- '@rollup/rollup-linux-arm64-gnu': 4.62.4
- '@rollup/rollup-linux-arm64-musl': 4.62.4
- '@rollup/rollup-linux-loong64-gnu': 4.62.4
- '@rollup/rollup-linux-loong64-musl': 4.62.4
- '@rollup/rollup-linux-ppc64-gnu': 4.62.4
- '@rollup/rollup-linux-ppc64-musl': 4.62.4
- '@rollup/rollup-linux-riscv64-gnu': 4.62.4
- '@rollup/rollup-linux-riscv64-musl': 4.62.4
- '@rollup/rollup-linux-s390x-gnu': 4.62.4
- '@rollup/rollup-linux-x64-gnu': 4.62.4
- '@rollup/rollup-linux-x64-musl': 4.62.4
- '@rollup/rollup-openbsd-x64': 4.62.4
- '@rollup/rollup-openharmony-arm64': 4.62.4
- '@rollup/rollup-win32-arm64-msvc': 4.62.4
- '@rollup/rollup-win32-ia32-msvc': 4.62.4
- '@rollup/rollup-win32-x64-gnu': 4.62.4
- '@rollup/rollup-win32-x64-msvc': 4.62.4
+ '@rollup/rollup-android-arm-eabi': 4.63.1
+ '@rollup/rollup-android-arm64': 4.63.1
+ '@rollup/rollup-darwin-arm64': 4.63.1
+ '@rollup/rollup-darwin-x64': 4.63.1
+ '@rollup/rollup-freebsd-arm64': 4.63.1
+ '@rollup/rollup-freebsd-x64': 4.63.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.63.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.63.1
+ '@rollup/rollup-linux-arm64-gnu': 4.63.1
+ '@rollup/rollup-linux-arm64-musl': 4.63.1
+ '@rollup/rollup-linux-loong64-gnu': 4.63.1
+ '@rollup/rollup-linux-loong64-musl': 4.63.1
+ '@rollup/rollup-linux-ppc64-gnu': 4.63.1
+ '@rollup/rollup-linux-ppc64-musl': 4.63.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.63.1
+ '@rollup/rollup-linux-riscv64-musl': 4.63.1
+ '@rollup/rollup-linux-s390x-gnu': 4.63.1
+ '@rollup/rollup-linux-x64-gnu': 4.63.1
+ '@rollup/rollup-linux-x64-musl': 4.63.1
+ '@rollup/rollup-openbsd-x64': 4.63.1
+ '@rollup/rollup-openharmony-arm64': 4.63.1
+ '@rollup/rollup-win32-arm64-msvc': 4.63.1
+ '@rollup/rollup-win32-ia32-msvc': 4.63.1
+ '@rollup/rollup-win32-x64-gnu': 4.63.1
+ '@rollup/rollup-win32-x64-msvc': 4.63.1
fsevents: 2.3.3
rou3@0.9.2: {}
@@ -11258,9 +11491,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- serialize-javascript@7.1.0: {}
+ serialize-javascript@7.1.1: {}
- seroval@1.6.2: {}
+ seroval@1.6.4: {}
serve-placeholder@2.0.2:
dependencies:
@@ -11339,7 +11572,7 @@ snapshots:
srvx@0.11.22: {}
- srvx@0.12.5: {}
+ srvx@1.0.3: {}
stable-hash-x@0.2.0: {}
@@ -11353,7 +11586,7 @@ snapshots:
std-env@4.2.0: {}
- streamx@2.28.0:
+ streamx@2.28.1:
dependencies:
events-universal: 1.0.1
fast-fifo: 1.3.2
@@ -11411,11 +11644,11 @@ snapshots:
structured-clone-es@2.0.1: {}
- stylehacks@8.0.3(postcss@8.5.26):
+ stylehacks@8.0.4(postcss@8.5.28):
dependencies:
- browserslist: 4.28.8
- postcss: 8.5.26
- postcss-selector-parser: 7.1.5
+ browserslist: 4.28.9
+ postcss: 8.5.28
+ postcss-selector-parser: 7.1.6
sucrase@3.35.1:
dependencies:
@@ -11447,19 +11680,19 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- svgo@4.0.2:
+ svgo@4.1.0:
dependencies:
commander: 11.1.0
- css-select: 5.2.2
+ css-select: 6.0.0
css-tree: 3.2.1
- css-what: 6.2.2
+ css-what: 7.0.0
csso: 5.0.5
picocolors: 1.1.1
sax: 1.6.1
tagged-tag@1.0.0: {}
- tailwind-config-viewer@2.0.4(supports-color@10.2.2)(tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0)):
+ tailwind-config-viewer@2.0.4(supports-color@10.2.2)(tailwindcss@3.4.19(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
'@koa/router': 12.0.2(supports-color@10.2.2)
commander: 6.2.1
@@ -11469,13 +11702,13 @@ snapshots:
open: 7.4.2
portfinder: 1.0.38(supports-color@10.2.2)
replace-in-file: 6.3.5
- tailwindcss: 3.4.19(tsx@4.23.12)(yaml@2.9.0)
+ tailwindcss: 3.4.19(tsx@4.23.13)(yaml@2.9.0)
transitivePeerDependencies:
- supports-color
- tailwindcss@3.4.19(tsx@4.23.12)(yaml@2.9.0):
+ tailwindcss@3.4.19(tsx@4.23.13)(yaml@2.9.0):
dependencies:
- '@alloc/quick-lru': 5.2.0
+ '@alloc/quick-lru': 5.3.0
arg: 5.0.2
chokidar: 3.6.0
didyoumean: 1.2.2
@@ -11489,11 +11722,11 @@ snapshots:
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.1.1
- postcss: 8.5.26
- postcss-import: 15.1.0(postcss@8.5.26)
- postcss-js: 4.1.0(postcss@8.5.26)
- postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.12)(yaml@2.9.0)
- postcss-nested: 6.2.0(postcss@8.5.26)
+ postcss: 8.5.28
+ postcss-import: 15.1.0(postcss@8.5.28)
+ postcss-js: 4.1.0(postcss@8.5.28)
+ postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.28)(tsx@4.23.13)(yaml@2.9.0)
+ postcss-nested: 6.2.0(postcss@8.5.28)
postcss-selector-parser: 6.1.4
resolve: 1.22.12
sucrase: 3.35.1
@@ -11501,12 +11734,12 @@ snapshots:
- tsx
- yaml
- tar-stream@3.2.0:
+ tar-stream@3.2.1:
dependencies:
b4a: 1.8.1
- bare-fs: 4.8.0
+ bare-fs: 4.8.1
fast-fifo: 1.3.2
- streamx: 2.28.0
+ streamx: 2.28.1
transitivePeerDependencies:
- bare-abort-controller
- bare-buffer
@@ -11522,12 +11755,12 @@ snapshots:
teex@1.0.1:
dependencies:
- streamx: 2.28.0
+ streamx: 2.28.1
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
- terser@5.50.0:
+ terser@5.51.2:
dependencies:
'@jridgewell/source-map': 0.3.11
acorn: 8.18.0
@@ -11558,12 +11791,12 @@ snapshots:
tinyclip@0.1.15: {}
- tinyexec@1.3.0: {}
+ tinyexec@1.3.1: {}
tinyglobby@0.2.17:
dependencies:
- fdir: 6.5.0(picomatch@4.0.5)
- picomatch: 4.0.5
+ fdir: 6.5.0(picomatch@4.0.7)
+ picomatch: 4.0.7
tinyrainbow@3.1.1: {}
@@ -11594,7 +11827,7 @@ snapshots:
tsscmp@1.0.6: {}
- tsx@4.23.12:
+ tsx@4.23.13:
dependencies:
esbuild: 0.28.2
optionalDependencies:
@@ -11606,7 +11839,7 @@ snapshots:
type-fest@4.41.0: {}
- type-fest@5.8.0:
+ type-fest@5.9.0:
dependencies:
tagged-tag: 1.0.0
@@ -11632,34 +11865,34 @@ snapshots:
magic-string: 0.30.21
unplugin: 2.3.11
- unctx@3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))):
+ unctx@3.0.1(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))):
optionalDependencies:
magic-string: 0.30.21
oxc-parser: 0.141.0
- rolldown: 1.2.4
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ rolldown: 1.2.7
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
- unctx@3.0.0(magic-string@1.2.0)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))):
+ unctx@3.0.1(magic-string@1.2.3)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))):
optionalDependencies:
- magic-string: 1.2.0
+ magic-string: 1.2.3
oxc-parser: 0.141.0
- rolldown: 1.2.4
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ rolldown: 1.2.7
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
undici-types@8.3.0: {}
- undici@8.10.0: {}
+ undici@8.10.2: {}
unenv@2.0.0-rc.24:
dependencies:
pathe: 2.0.3
- unhead@3.3.2(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)):
+ unhead@3.4.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
hookable: 6.1.1
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
optionalDependencies:
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
transitivePeerDependencies:
- '@farmfe/core'
- '@rspack/core'
@@ -11674,25 +11907,25 @@ snapshots:
unicorn-magic@0.4.0: {}
- unimport@6.4.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)):
+ unimport@6.4.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
acorn: 8.18.0
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
local-pkg: 1.2.1
- magic-string: 1.2.0
+ magic-string: 1.2.3
mlly: 1.8.2
pathe: 2.0.3
- picomatch: 4.0.5
- pkg-types: 2.3.1
+ picomatch: 4.0.7
+ pkg-types: 2.3.2
scule: 1.3.0
strip-literal: 4.0.0
tinyglobby: 0.2.17
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
unplugin-utils: 0.3.2
optionalDependencies:
oxc-parser: 0.141.0
- rolldown: 1.2.4
+ rolldown: 1.2.7
transitivePeerDependencies:
- '@farmfe/core'
- '@rspack/core'
@@ -11708,25 +11941,25 @@ snapshots:
unplugin-utils@0.3.2:
dependencies:
pathe: 2.0.3
- picomatch: 4.0.5
+ picomatch: 4.0.7
unplugin@2.3.11:
dependencies:
'@jridgewell/remapping': 2.3.5
acorn: 8.18.0
- picomatch: 4.0.5
+ picomatch: 4.0.7
webpack-virtual-modules: 0.6.2
- unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)):
+ unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
'@jridgewell/remapping': 2.3.5
- picomatch: 4.0.5
+ picomatch: 4.0.7
webpack-virtual-modules: 0.6.2
optionalDependencies:
esbuild: 0.28.2
- rolldown: 1.2.4
- rollup: 4.62.4
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ rolldown: 1.2.7
+ rollup: 4.63.1
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
unrouting@0.2.3:
dependencies:
@@ -11760,7 +11993,7 @@ snapshots:
'@unrs/resolver-binding-win32-ia32-msvc': 1.12.2
'@unrs/resolver-binding-win32-x64-msvc': 1.12.2
- unstorage@1.17.5(db0@0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4)))(ioredis@5.11.1(supports-color@10.2.2)):
+ unstorage@1.17.5(db0@0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0)))(ioredis@5.11.1(supports-color@10.2.2)):
dependencies:
anymatch: 3.1.3
chokidar: 5.0.0
@@ -11771,7 +12004,7 @@ snapshots:
ofetch: 1.5.1
ufo: 1.6.4
optionalDependencies:
- db0: 0.3.4(@libsql/client@0.17.4)(drizzle-orm@0.45.2(@libsql/client@0.17.4))
+ db0: 0.3.4(@libsql/client@0.18.0)(drizzle-orm@0.45.2(@libsql/client@0.18.0))
ioredis: 5.11.1(supports-color@10.2.2)
untun@0.2.2: {}
@@ -11791,11 +12024,11 @@ snapshots:
magic-string: 0.30.21
mlly: 1.8.2
pathe: 2.0.3
- pkg-types: 2.3.1
+ pkg-types: 2.3.2
- update-browserslist-db@1.3.1(browserslist@4.28.8):
+ update-browserslist-db@1.3.2(browserslist@4.28.9):
dependencies:
- browserslist: 4.28.8
+ browserslist: 4.28.9
escalade: 3.2.0
picocolors: 1.1.1
@@ -11811,23 +12044,23 @@ snapshots:
verkit@0.3.2: {}
- vite-dev-rpc@2.0.0(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)):
+ vite-dev-rpc@2.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
- birpc: 4.1.0
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
- vite-hot-client: 2.2.0(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ birpc: 4.2.0
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite-hot-client: 2.2.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
- vite-hot-client@2.2.0(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)):
+ vite-hot-client@2.2.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
- vite-node@6.0.0(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0):
+ vite-node@6.0.0(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0):
dependencies:
cac: 7.0.0
- es-module-lexer: 2.3.1
- obug: 2.1.4
+ es-module-lexer: 2.3.2
+ obug: 2.2.1
pathe: 2.0.3
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
transitivePeerDependencies:
- '@types/node'
- '@vitejs/devtools'
@@ -11842,110 +12075,71 @@ snapshots:
- tsx
- yaml
- vite-plugin-checker@0.14.5(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue-tsc@3.3.10(typescript@6.0.3)):
+ vite-plugin-checker@0.14.5(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@6.0.3)):
dependencies:
'@babel/code-frame': 7.29.7
chokidar: 5.0.0
npm-run-path: 6.0.0
picocolors: 1.1.1
- picomatch: 4.0.5
+ picomatch: 4.0.7
proper-lockfile: 4.1.2
tiny-invariant: 1.3.3
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
optionalDependencies:
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
optionator: 0.9.4
typescript: 6.0.3
- vue-tsc: 3.3.10(typescript@6.0.3)
+ vue-tsc: 3.3.11(typescript@6.0.3)
- vite-plugin-inspect@11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)):
+ vite-plugin-inspect@11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
ansis: 4.3.1
error-stack-parser-es: 1.0.5
- obug: 2.1.4
+ obug: 2.2.1
ohash: 2.0.12
- open: 11.0.1
+ open: 11.0.2
perfect-debounce: 2.1.0
sirv: 3.0.2
unplugin-utils: 0.3.2
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
- vite-dev-rpc: 2.0.0(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite-dev-rpc: 2.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
optionalDependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.2.0)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.4)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(oxc-parser@0.141.0)(rolldown@1.2.7)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)))
- vite-plugin-vue-tracer@1.5.0(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3)):
+ vite-plugin-vue-tracer@1.5.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3)):
dependencies:
estree-walker: 3.0.3
exsolve: 1.1.1
- magic-string: 1.2.0
+ magic-string: 1.2.3
pathe: 2.0.3
source-map-js: 1.2.1
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
- vue: 3.5.41(typescript@6.0.3)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ vue: 3.5.43(typescript@6.0.3)
- vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0):
+ vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0):
dependencies:
lightningcss: 1.33.0
- picomatch: 4.0.5
- postcss: 8.5.26
- rolldown: 1.2.4
+ picomatch: 4.0.7
+ postcss: 8.5.28
+ rolldown: 1.2.7
tinyglobby: 0.2.17
optionalDependencies:
- '@types/node': 26.2.0
- esbuild: 0.28.2
- fsevents: 2.3.3
- jiti: 1.21.7
- terser: 5.50.0
- tsx: 4.23.12
- yaml: 2.9.0
-
- vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0):
- dependencies:
- lightningcss: 1.33.0
- picomatch: 4.0.5
- postcss: 8.5.26
- rolldown: 1.2.4
- tinyglobby: 0.2.17
- optionalDependencies:
- '@types/node': 26.2.0
+ '@types/node': 26.4.1
esbuild: 0.28.2
fsevents: 2.3.3
jiti: 2.7.0
- terser: 5.50.0
- tsx: 4.23.12
+ terser: 5.51.2
+ tsx: 4.23.13
yaml: 2.9.0
- vitest-environment-nuxt@2.0.0(@vitest/ui@4.1.11)(esbuild@0.28.2)(magicast@0.5.4)(rolldown@1.2.4)(rollup@4.62.4)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11):
+ vitest-environment-nuxt@2.0.0:
dependencies:
- '@nuxt/test-utils': 4.1.0(@vitest/ui@4.1.11)(esbuild@0.28.2)(magicast@0.5.4)(rolldown@1.2.4)(rollup@4.62.4)(typescript@6.0.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vitest@4.1.11)
- transitivePeerDependencies:
- - '@cucumber/cucumber'
- - '@farmfe/core'
- - '@jest/globals'
- - '@playwright/test'
- - '@rspack/core'
- - '@testing-library/vue'
- - '@vitest/ui'
- - '@vue/test-utils'
- - bun-types-no-globals
- - esbuild
- - h3-next
- - happy-dom
- - jsdom
- - magicast
- - playwright-core
- - rolldown
- - rollup
- - typescript
- - unloader
- - vite
- - vitest
- - webpack
+ '@nuxt/test-utils': 4.3.2(@vitest/ui@4.1.11)(esbuild@0.28.2)(magicast@0.5.4)(rolldown@1.2.7)(rollup@4.63.1)(typescript@6.0.3)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vitest@4.1.11)
- vitest@4.1.11(@types/node@26.2.0)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)):
+ vitest@4.1.11(@types/node@26.4.1)(@vitest/coverage-v8@4.1.11)(@vitest/ui@4.1.11)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.11
'@vitest/runner': 4.1.11
'@vitest/snapshot': 4.1.11
@@ -11954,41 +12148,41 @@ snapshots:
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
- obug: 2.1.4
+ obug: 2.2.1
pathe: 2.0.3
- picomatch: 4.0.5
+ picomatch: 4.0.7
std-env: 4.2.0
tinybench: 2.9.0
- tinyexec: 1.3.0
+ tinyexec: 1.3.1
tinyglobby: 0.2.17
tinyrainbow: 3.1.1
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
- '@types/node': 26.2.0
+ '@types/node': 26.4.1
'@vitest/coverage-v8': 4.1.11(vitest@4.1.11)
'@vitest/ui': 4.1.11(vitest@4.1.11)
transitivePeerDependencies:
- msw
- vscode-uri@3.1.0: {}
+ vscode-uri@3.2.0: {}
vue-bundle-renderer@2.3.2:
dependencies:
ufo: 1.6.4
- vue-component-type-helpers@3.3.10: {}
+ vue-component-type-helpers@3.3.11: {}
- vue-demi@0.14.10(vue@3.5.41(typescript@6.0.3)):
+ vue-demi@0.14.10(vue@3.5.43(typescript@6.0.3)):
dependencies:
- vue: 3.5.41(typescript@6.0.3)
+ vue: 3.5.43(typescript@6.0.3)
vue-devtools-stub@0.1.0: {}
- vue-eslint-parser@10.4.1(eslint@10.8.1(jiti@1.21.7)(supports-color@10.2.2))(supports-color@10.2.2):
+ vue-eslint-parser@10.4.1(eslint@10.10.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2):
dependencies:
debug: 4.4.3(supports-color@10.2.2)
- eslint: 10.8.1(jiti@1.21.7)(supports-color@10.2.2)
+ eslint: 10.10.0(jiti@2.7.0)(supports-color@10.2.2)
eslint-scope: 9.1.2
eslint-visitor-keys: 5.0.1
espree: 11.2.0
@@ -11997,39 +12191,37 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue-i18n@11.4.8(vue@3.5.41(typescript@6.0.3)):
+ vue-i18n@11.4.10(vue@3.5.43(typescript@6.0.3)):
dependencies:
- '@intlify/core-base': 11.4.8
- '@intlify/devtools-types': 11.4.8
- '@intlify/shared': 11.4.8
+ '@intlify/core-base': 11.4.10
+ '@intlify/devtools-types': 11.4.10
+ '@intlify/shared': 11.4.10
'@vue/devtools-api': 6.6.4
- vue: 3.5.41(typescript@6.0.3)
+ vue: 3.5.43(typescript@6.0.3)
- vue-router@5.2.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3)))(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3)):
+ vue-router@5.3.1(@vue/compiler-sfc@3.5.42)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3)):
dependencies:
- '@babel/generator': 8.0.0
- '@vue-macros/common': 3.1.4(vue@3.5.41(typescript@6.0.3))
+ '@vue-macros/common': 3.1.4(vue@3.5.43(typescript@6.0.3))
'@vue/devtools-api': 8.2.1
ast-walker-scope: 0.9.0
chokidar: 5.0.0
- json5: 2.2.3
+ confbox: 0.2.4
local-pkg: 1.2.1
magic-string: 0.30.21
mlly: 1.8.2
muggle-string: 0.4.1
nostics: 1.2.0
pathe: 2.0.3
- picomatch: 4.0.5
+ picomatch: 4.0.7
scule: 1.3.0
tinyglobby: 0.2.17
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.4)(rollup@4.62.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
unplugin-utils: 0.3.2
- vue: 3.5.41(typescript@6.0.3)
- yaml: 2.9.0
+ vue: 3.5.43(typescript@6.0.3)
optionalDependencies:
- '@vue/compiler-sfc': 3.5.41
- pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.41(typescript@6.0.3))
- vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@1.21.7)(terser@5.50.0)(tsx@4.23.12)(yaml@2.9.0)
+ '@vue/compiler-sfc': 3.5.42
+ pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3))
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
transitivePeerDependencies:
- '@farmfe/core'
- '@rspack/core'
@@ -12040,24 +12232,57 @@ snapshots:
- unloader
- webpack
- vue-tsc@3.3.10(typescript@6.0.3):
+ vue-router@5.3.1(@vue/compiler-sfc@3.5.43)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3)))(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.43(typescript@6.0.3)):
+ dependencies:
+ '@vue-macros/common': 3.1.4(vue@3.5.43(typescript@6.0.3))
+ '@vue/devtools-api': 8.2.1
+ ast-walker-scope: 0.9.0
+ chokidar: 5.0.0
+ confbox: 0.2.4
+ local-pkg: 1.2.1
+ magic-string: 0.30.21
+ mlly: 1.8.2
+ muggle-string: 0.4.1
+ nostics: 1.2.0
+ pathe: 2.0.3
+ picomatch: 4.0.7
+ scule: 1.3.0
+ tinyglobby: 0.2.17
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin-utils: 0.3.2
+ vue: 3.5.43(typescript@6.0.3)
+ optionalDependencies:
+ '@vue/compiler-sfc': 3.5.43
+ pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.43(typescript@6.0.3))
+ vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(tsx@4.23.13)(yaml@2.9.0)
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - rolldown
+ - rollup
+ - unloader
+ - webpack
+
+ vue-tsc@3.3.11(typescript@6.0.3):
dependencies:
'@volar/typescript': 2.4.28(typescript@6.0.3)
- '@vue/language-core': 3.3.10
+ '@vue/language-core': 3.3.11
typescript: 6.0.3
- vue3-apexcharts@1.11.1(apexcharts@6.10.0)(vue@3.5.41(typescript@6.0.3)):
+ vue3-apexcharts@1.11.1(apexcharts@7.5.1)(vue@3.5.43(typescript@6.0.3)):
dependencies:
- apexcharts: 6.10.0
- vue: 3.5.41(typescript@6.0.3)
+ apexcharts: 7.5.1
+ vue: 3.5.43(typescript@6.0.3)
- vue@3.5.41(typescript@6.0.3):
+ vue@3.5.43(typescript@6.0.3):
dependencies:
- '@vue/compiler-dom': 3.5.41
- '@vue/compiler-sfc': 3.5.41
- '@vue/runtime-dom': 3.5.41
- '@vue/server-renderer': 3.5.41
- '@vue/shared': 3.5.41
+ '@vue/compiler-dom': 3.5.43
+ '@vue/compiler-sfc': 3.5.43
+ '@vue/runtime-dom': 3.5.43
+ '@vue/server-renderer': 3.5.43
+ '@vue/shared': 3.5.43
optionalDependencies:
typescript: 6.0.3
@@ -12177,4 +12402,4 @@ snapshots:
compress-commons: 6.0.2
readable-stream: 4.7.0
- zod@4.4.3: {}
+ zod@4.6.5: {}
diff --git a/src/server/api/admin/ip-info.get.ts b/src/server/api/admin/ip-info.get.ts
index b558c6f4..95cc7bfb 100644
--- a/src/server/api/admin/ip-info.get.ts
+++ b/src/server/api/admin/ip-info.get.ts
@@ -1,7 +1,9 @@
+import Database from '#server/utils/Database';
import { definePermissionEventHandler } from '#server/utils/handler';
-import { cachedGetIpInformation } from '#server/utils/ip';
+import { getIpInformation } from '#server/utils/ip';
export default definePermissionEventHandler('admin', 'any', async () => {
- const result = await cachedGetIpInformation();
+ const wgInterface = await Database.interfaces.get();
+ const result = await getIpInformation(wgInterface.name);
return result;
});
diff --git a/src/server/api/auth/password.post.ts b/src/server/api/auth/password.post.ts
index 90c8fddc..33296c1a 100644
--- a/src/server/api/auth/password.post.ts
+++ b/src/server/api/auth/password.post.ts
@@ -2,6 +2,7 @@ import { createError, defineEventHandler, readValidatedBody } from 'h3';
import Database from '#server/utils/Database';
import { SERVER_DEBUG, WG_ENV } from '#server/utils/config';
+import { logSecurityEvent } from '#server/utils/securityLogger';
import { useWGSession } from '#server/utils/session';
import { assertUnreachable, validateZod } from '#server/utils/types';
import { UserLoginSchema } from '#db/repositories/user/types';
@@ -28,6 +29,7 @@ export default defineEventHandler(async (event) => {
if (!result.success) {
switch (result.error) {
case 'INCORRECT_CREDENTIALS':
+ logSecurityEvent(event, 'password', username);
throw createError({
statusCode: 401,
statusMessage: 'Invalid username or password',
diff --git a/src/server/api/auth/verify-2fa.post.ts b/src/server/api/auth/verify-2fa.post.ts
index c0d40532..db3a4fba 100644
--- a/src/server/api/auth/verify-2fa.post.ts
+++ b/src/server/api/auth/verify-2fa.post.ts
@@ -1,6 +1,7 @@
import { createError, defineEventHandler, readValidatedBody } from 'h3';
import Database from '#server/utils/Database';
+import { logSecurityEvent } from '#server/utils/securityLogger';
import { useWGSession } from '#server/utils/session';
import { assertUnreachable, validateZod } from '#server/utils/types';
import { Verify2faSchema } from '#db/repositories/user/types';
@@ -34,6 +35,7 @@ export default defineEventHandler(async (event) => {
switch (totpStatus) {
case 'INVALID_TOTP_CODE':
+ logSecurityEvent(event, '2fa');
return { status: 'INVALID_TOTP_CODE' as const };
case 'USER_DISABLED':
throw createError({
diff --git a/src/server/api/client/[clientId]/index.get.ts b/src/server/api/client/[clientId]/index.get.ts
index 87428de2..b672f2d1 100644
--- a/src/server/api/client/[clientId]/index.get.ts
+++ b/src/server/api/client/[clientId]/index.get.ts
@@ -15,7 +15,7 @@ export default definePermissionEventHandler(
validateZod(ClientGetSchema, event)
);
- const result = await Database.clients.get(clientId);
+ const result = await Database.clients.getPublic(clientId);
checkPermissions(result);
if (!result) {
diff --git a/src/server/api/setup/4.get.ts b/src/server/api/setup/4.get.ts
index 154c059c..e63a0405 100644
--- a/src/server/api/setup/4.get.ts
+++ b/src/server/api/setup/4.get.ts
@@ -1,7 +1,9 @@
+import Database from '#server/utils/Database';
import { defineSetupEventHandler } from '#server/utils/handler';
-import { cachedGetIpInformation } from '#server/utils/ip';
+import { getIpInformation } from '#server/utils/ip';
export default defineSetupEventHandler(4, async () => {
- const result = await cachedGetIpInformation();
+ const wgInterface = await Database.interfaces.get();
+ const result = await getIpInformation(wgInterface.name);
return result;
});
diff --git a/src/server/database/migrations/0008_thin_patch.sql b/src/server/database/migrations/0008_thin_patch.sql
new file mode 100644
index 00000000..f16a0f04
--- /dev/null
+++ b/src/server/database/migrations/0008_thin_patch.sql
@@ -0,0 +1,16 @@
+ALTER TABLE `clients_table` ADD `content_padding_addition` text;--> statement-breakpoint
+ALTER TABLE `clients_table` ADD `rekey_after_time` text;--> statement-breakpoint
+ALTER TABLE `clients_table` ADD `rekey_timeout` text;--> statement-breakpoint
+ALTER TABLE `clients_table` ADD `reject_after_time` text;--> statement-breakpoint
+ALTER TABLE `clients_table` ADD `keepalive_timeout` text;--> statement-breakpoint
+ALTER TABLE `clients_table` ADD `max_handshake_attempts` text;--> statement-breakpoint
+ALTER TABLE `clients_table` ADD `disable_cookies` integer;--> statement-breakpoint
+ALTER TABLE `interfaces_table` ADD `header_protection_key` text;--> statement-breakpoint
+ALTER TABLE `interfaces_table` ADD `content_padding_addition` text;--> statement-breakpoint
+ALTER TABLE `interfaces_table` ADD `rekey_after_time` text;--> statement-breakpoint
+ALTER TABLE `interfaces_table` ADD `rekey_timeout` text;--> statement-breakpoint
+ALTER TABLE `interfaces_table` ADD `reject_after_time` text;--> statement-breakpoint
+ALTER TABLE `interfaces_table` ADD `keepalive_timeout` text;--> statement-breakpoint
+ALTER TABLE `interfaces_table` ADD `max_handshake_attempts` text;--> statement-breakpoint
+ALTER TABLE `interfaces_table` ADD `random_trailers` integer;--> statement-breakpoint
+ALTER TABLE `interfaces_table` ADD `disable_cookies` integer;
\ No newline at end of file
diff --git a/src/server/database/migrations/0009_dusty_prodigy.sql b/src/server/database/migrations/0009_dusty_prodigy.sql
new file mode 100644
index 00000000..c6d1f8b4
--- /dev/null
+++ b/src/server/database/migrations/0009_dusty_prodigy.sql
@@ -0,0 +1,5 @@
+UPDATE `hooks_table` SET
+ `pre_up` = replace(`pre_up`, 'wg0', '{{interface}}'),
+ `post_up` = replace(`post_up`, 'wg0', '{{interface}}'),
+ `pre_down` = replace(`pre_down`, 'wg0', '{{interface}}'),
+ `post_down` = replace(`post_down`, 'wg0', '{{interface}}');
diff --git a/src/server/database/migrations/meta/0008_snapshot.json b/src/server/database/migrations/meta/0008_snapshot.json
new file mode 100644
index 00000000..4bd4a7f6
--- /dev/null
+++ b/src/server/database/migrations/meta/0008_snapshot.json
@@ -0,0 +1,1144 @@
+{
+ "version": "6",
+ "dialect": "sqlite",
+ "id": "885a870f-9dc1-4d97-941e-d3d718b02d74",
+ "prevId": "6d5a5bde-368b-45cb-b73a-9f4324210d73",
+ "tables": {
+ "clients_table": {
+ "name": "clients_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "interface_id": {
+ "name": "interface_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "ipv4_address": {
+ "name": "ipv4_address",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "ipv6_address": {
+ "name": "ipv6_address",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "pre_up": {
+ "name": "pre_up",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "''"
+ },
+ "post_up": {
+ "name": "post_up",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "''"
+ },
+ "pre_down": {
+ "name": "pre_down",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "''"
+ },
+ "post_down": {
+ "name": "post_down",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "''"
+ },
+ "private_key": {
+ "name": "private_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "pre_shared_key": {
+ "name": "pre_shared_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "allowed_ips": {
+ "name": "allowed_ips",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "server_allowed_ips": {
+ "name": "server_allowed_ips",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "firewall_ips": {
+ "name": "firewall_ips",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "persistent_keepalive": {
+ "name": "persistent_keepalive",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "mtu": {
+ "name": "mtu",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "j_c": {
+ "name": "j_c",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "j_min": {
+ "name": "j_min",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "j_max": {
+ "name": "j_max",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i1": {
+ "name": "i1",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i2": {
+ "name": "i2",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i3": {
+ "name": "i3",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i4": {
+ "name": "i4",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i5": {
+ "name": "i5",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "content_padding_addition": {
+ "name": "content_padding_addition",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "rekey_after_time": {
+ "name": "rekey_after_time",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "rekey_timeout": {
+ "name": "rekey_timeout",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "reject_after_time": {
+ "name": "reject_after_time",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "keepalive_timeout": {
+ "name": "keepalive_timeout",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "max_handshake_attempts": {
+ "name": "max_handshake_attempts",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "disable_cookies": {
+ "name": "disable_cookies",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "dns": {
+ "name": "dns",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "server_endpoint": {
+ "name": "server_endpoint",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "enabled": {
+ "name": "enabled",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {
+ "clients_table_ipv4_address_unique": {
+ "name": "clients_table_ipv4_address_unique",
+ "columns": [
+ "ipv4_address"
+ ],
+ "isUnique": true
+ },
+ "clients_table_ipv6_address_unique": {
+ "name": "clients_table_ipv6_address_unique",
+ "columns": [
+ "ipv6_address"
+ ],
+ "isUnique": true
+ },
+ "public_key_interface_unique": {
+ "name": "public_key_interface_unique",
+ "columns": [
+ "public_key",
+ "interface_id"
+ ],
+ "isUnique": true
+ }
+ },
+ "foreignKeys": {
+ "clients_table_user_id_users_table_id_fk": {
+ "name": "clients_table_user_id_users_table_id_fk",
+ "tableFrom": "clients_table",
+ "tableTo": "users_table",
+ "columnsFrom": [
+ "user_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "restrict",
+ "onUpdate": "cascade"
+ },
+ "clients_table_interface_id_interfaces_table_name_fk": {
+ "name": "clients_table_interface_id_interfaces_table_name_fk",
+ "tableFrom": "clients_table",
+ "tableTo": "interfaces_table",
+ "columnsFrom": [
+ "interface_id"
+ ],
+ "columnsTo": [
+ "name"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "general_table": {
+ "name": "general_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false,
+ "default": 1
+ },
+ "setup_step": {
+ "name": "setup_step",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "session_password": {
+ "name": "session_password",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "session_timeout": {
+ "name": "session_timeout",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "metrics_prometheus": {
+ "name": "metrics_prometheus",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "metrics_json": {
+ "name": "metrics_json",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "metrics_password": {
+ "name": "metrics_password",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "hooks_table": {
+ "name": "hooks_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "text",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "pre_up": {
+ "name": "pre_up",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "post_up": {
+ "name": "post_up",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "pre_down": {
+ "name": "pre_down",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "post_down": {
+ "name": "post_down",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "hooks_table_id_interfaces_table_name_fk": {
+ "name": "hooks_table_id_interfaces_table_name_fk",
+ "tableFrom": "hooks_table",
+ "tableTo": "interfaces_table",
+ "columnsFrom": [
+ "id"
+ ],
+ "columnsTo": [
+ "name"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "interfaces_table": {
+ "name": "interfaces_table",
+ "columns": {
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "device": {
+ "name": "device",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "port": {
+ "name": "port",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "private_key": {
+ "name": "private_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "ipv4_cidr": {
+ "name": "ipv4_cidr",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "ipv6_cidr": {
+ "name": "ipv6_cidr",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "mtu": {
+ "name": "mtu",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "routing_table": {
+ "name": "routing_table",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'auto'"
+ },
+ "j_c": {
+ "name": "j_c",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 7
+ },
+ "j_min": {
+ "name": "j_min",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 10
+ },
+ "j_max": {
+ "name": "j_max",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 1000
+ },
+ "s1": {
+ "name": "s1",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 128
+ },
+ "s2": {
+ "name": "s2",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 56
+ },
+ "s3": {
+ "name": "s3",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "s4": {
+ "name": "s4",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "h1": {
+ "name": "h1",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "h2": {
+ "name": "h2",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "h3": {
+ "name": "h3",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "h4": {
+ "name": "h4",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i1": {
+ "name": "i1",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i2": {
+ "name": "i2",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i3": {
+ "name": "i3",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i4": {
+ "name": "i4",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i5": {
+ "name": "i5",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "header_protection_key": {
+ "name": "header_protection_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "content_padding_addition": {
+ "name": "content_padding_addition",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "rekey_after_time": {
+ "name": "rekey_after_time",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "rekey_timeout": {
+ "name": "rekey_timeout",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "reject_after_time": {
+ "name": "reject_after_time",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "keepalive_timeout": {
+ "name": "keepalive_timeout",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "max_handshake_attempts": {
+ "name": "max_handshake_attempts",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "random_trailers": {
+ "name": "random_trailers",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "disable_cookies": {
+ "name": "disable_cookies",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "enabled": {
+ "name": "enabled",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "firewall_enabled": {
+ "name": "firewall_enabled",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {
+ "interfaces_table_port_unique": {
+ "name": "interfaces_table_port_unique",
+ "columns": [
+ "port"
+ ],
+ "isUnique": true
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "one_time_links_table": {
+ "name": "one_time_links_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "one_time_link": {
+ "name": "one_time_link",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {
+ "one_time_links_table_one_time_link_unique": {
+ "name": "one_time_links_table_one_time_link_unique",
+ "columns": [
+ "one_time_link"
+ ],
+ "isUnique": true
+ }
+ },
+ "foreignKeys": {
+ "one_time_links_table_id_clients_table_id_fk": {
+ "name": "one_time_links_table_id_clients_table_id_fk",
+ "tableFrom": "one_time_links_table",
+ "tableTo": "clients_table",
+ "columnsFrom": [
+ "id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "users_table": {
+ "name": "users_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": true
+ },
+ "username": {
+ "name": "username",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "password": {
+ "name": "password",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "email": {
+ "name": "email",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "role": {
+ "name": "role",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "totp_key": {
+ "name": "totp_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "totp_verified": {
+ "name": "totp_verified",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "enabled": {
+ "name": "enabled",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "oauth_provider": {
+ "name": "oauth_provider",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "oauth_id": {
+ "name": "oauth_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {
+ "users_table_username_unique": {
+ "name": "users_table_username_unique",
+ "columns": [
+ "username"
+ ],
+ "isUnique": true
+ },
+ "users_table_email_unique": {
+ "name": "users_table_email_unique",
+ "columns": [
+ "email"
+ ],
+ "isUnique": true
+ },
+ "oauth_provider_id_unique": {
+ "name": "oauth_provider_id_unique",
+ "columns": [
+ "oauth_provider",
+ "oauth_id"
+ ],
+ "isUnique": true
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "user_configs_table": {
+ "name": "user_configs_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "text",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_mtu": {
+ "name": "default_mtu",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_persistent_keepalive": {
+ "name": "default_persistent_keepalive",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_dns": {
+ "name": "default_dns",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_allowed_ips": {
+ "name": "default_allowed_ips",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_j_c": {
+ "name": "default_j_c",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 7
+ },
+ "default_j_min": {
+ "name": "default_j_min",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 10
+ },
+ "default_j_max": {
+ "name": "default_j_max",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 1000
+ },
+ "default_i1": {
+ "name": "default_i1",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "default_i2": {
+ "name": "default_i2",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "default_i3": {
+ "name": "default_i3",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "default_i4": {
+ "name": "default_i4",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "default_i5": {
+ "name": "default_i5",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "host": {
+ "name": "host",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "port": {
+ "name": "port",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "user_configs_table_id_interfaces_table_name_fk": {
+ "name": "user_configs_table_id_interfaces_table_name_fk",
+ "tableFrom": "user_configs_table",
+ "tableTo": "interfaces_table",
+ "columnsFrom": [
+ "id"
+ ],
+ "columnsTo": [
+ "name"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ }
+ },
+ "views": {},
+ "enums": {},
+ "_meta": {
+ "schemas": {},
+ "tables": {},
+ "columns": {}
+ },
+ "internal": {
+ "indexes": {}
+ }
+}
\ No newline at end of file
diff --git a/src/server/database/migrations/meta/0009_snapshot.json b/src/server/database/migrations/meta/0009_snapshot.json
new file mode 100644
index 00000000..b34488c5
--- /dev/null
+++ b/src/server/database/migrations/meta/0009_snapshot.json
@@ -0,0 +1,1144 @@
+{
+ "id": "209191ca-75c3-4821-93f5-255119b9a351",
+ "prevId": "885a870f-9dc1-4d97-941e-d3d718b02d74",
+ "version": "6",
+ "dialect": "sqlite",
+ "tables": {
+ "clients_table": {
+ "name": "clients_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "interface_id": {
+ "name": "interface_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "ipv4_address": {
+ "name": "ipv4_address",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "ipv6_address": {
+ "name": "ipv6_address",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "pre_up": {
+ "name": "pre_up",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "''"
+ },
+ "post_up": {
+ "name": "post_up",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "''"
+ },
+ "pre_down": {
+ "name": "pre_down",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "''"
+ },
+ "post_down": {
+ "name": "post_down",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "''"
+ },
+ "private_key": {
+ "name": "private_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "pre_shared_key": {
+ "name": "pre_shared_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "allowed_ips": {
+ "name": "allowed_ips",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "server_allowed_ips": {
+ "name": "server_allowed_ips",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "firewall_ips": {
+ "name": "firewall_ips",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "persistent_keepalive": {
+ "name": "persistent_keepalive",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "mtu": {
+ "name": "mtu",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "j_c": {
+ "name": "j_c",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "j_min": {
+ "name": "j_min",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "j_max": {
+ "name": "j_max",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i1": {
+ "name": "i1",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i2": {
+ "name": "i2",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i3": {
+ "name": "i3",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i4": {
+ "name": "i4",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i5": {
+ "name": "i5",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "content_padding_addition": {
+ "name": "content_padding_addition",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "rekey_after_time": {
+ "name": "rekey_after_time",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "rekey_timeout": {
+ "name": "rekey_timeout",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "reject_after_time": {
+ "name": "reject_after_time",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "keepalive_timeout": {
+ "name": "keepalive_timeout",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "max_handshake_attempts": {
+ "name": "max_handshake_attempts",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "disable_cookies": {
+ "name": "disable_cookies",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "dns": {
+ "name": "dns",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "server_endpoint": {
+ "name": "server_endpoint",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "enabled": {
+ "name": "enabled",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {
+ "clients_table_ipv4_address_unique": {
+ "name": "clients_table_ipv4_address_unique",
+ "columns": [
+ "ipv4_address"
+ ],
+ "isUnique": true
+ },
+ "clients_table_ipv6_address_unique": {
+ "name": "clients_table_ipv6_address_unique",
+ "columns": [
+ "ipv6_address"
+ ],
+ "isUnique": true
+ },
+ "public_key_interface_unique": {
+ "name": "public_key_interface_unique",
+ "columns": [
+ "public_key",
+ "interface_id"
+ ],
+ "isUnique": true
+ }
+ },
+ "foreignKeys": {
+ "clients_table_user_id_users_table_id_fk": {
+ "name": "clients_table_user_id_users_table_id_fk",
+ "tableFrom": "clients_table",
+ "columnsFrom": [
+ "user_id"
+ ],
+ "tableTo": "users_table",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "cascade",
+ "onDelete": "restrict"
+ },
+ "clients_table_interface_id_interfaces_table_name_fk": {
+ "name": "clients_table_interface_id_interfaces_table_name_fk",
+ "tableFrom": "clients_table",
+ "columnsFrom": [
+ "interface_id"
+ ],
+ "tableTo": "interfaces_table",
+ "columnsTo": [
+ "name"
+ ],
+ "onUpdate": "cascade",
+ "onDelete": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "general_table": {
+ "name": "general_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false,
+ "default": 1
+ },
+ "setup_step": {
+ "name": "setup_step",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "session_password": {
+ "name": "session_password",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "session_timeout": {
+ "name": "session_timeout",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "metrics_prometheus": {
+ "name": "metrics_prometheus",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "metrics_json": {
+ "name": "metrics_json",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "metrics_password": {
+ "name": "metrics_password",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "hooks_table": {
+ "name": "hooks_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "text",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "pre_up": {
+ "name": "pre_up",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "post_up": {
+ "name": "post_up",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "pre_down": {
+ "name": "pre_down",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "post_down": {
+ "name": "post_down",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "hooks_table_id_interfaces_table_name_fk": {
+ "name": "hooks_table_id_interfaces_table_name_fk",
+ "tableFrom": "hooks_table",
+ "columnsFrom": [
+ "id"
+ ],
+ "tableTo": "interfaces_table",
+ "columnsTo": [
+ "name"
+ ],
+ "onUpdate": "cascade",
+ "onDelete": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "interfaces_table": {
+ "name": "interfaces_table",
+ "columns": {
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "device": {
+ "name": "device",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "port": {
+ "name": "port",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "private_key": {
+ "name": "private_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "ipv4_cidr": {
+ "name": "ipv4_cidr",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "ipv6_cidr": {
+ "name": "ipv6_cidr",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "mtu": {
+ "name": "mtu",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "routing_table": {
+ "name": "routing_table",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'auto'"
+ },
+ "j_c": {
+ "name": "j_c",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 7
+ },
+ "j_min": {
+ "name": "j_min",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 10
+ },
+ "j_max": {
+ "name": "j_max",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 1000
+ },
+ "s1": {
+ "name": "s1",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 128
+ },
+ "s2": {
+ "name": "s2",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 56
+ },
+ "s3": {
+ "name": "s3",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "s4": {
+ "name": "s4",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "h1": {
+ "name": "h1",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "h2": {
+ "name": "h2",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "h3": {
+ "name": "h3",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "h4": {
+ "name": "h4",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i1": {
+ "name": "i1",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i2": {
+ "name": "i2",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i3": {
+ "name": "i3",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i4": {
+ "name": "i4",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "i5": {
+ "name": "i5",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "header_protection_key": {
+ "name": "header_protection_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "content_padding_addition": {
+ "name": "content_padding_addition",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "rekey_after_time": {
+ "name": "rekey_after_time",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "rekey_timeout": {
+ "name": "rekey_timeout",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "reject_after_time": {
+ "name": "reject_after_time",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "keepalive_timeout": {
+ "name": "keepalive_timeout",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "max_handshake_attempts": {
+ "name": "max_handshake_attempts",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "random_trailers": {
+ "name": "random_trailers",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "disable_cookies": {
+ "name": "disable_cookies",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "enabled": {
+ "name": "enabled",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "firewall_enabled": {
+ "name": "firewall_enabled",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {
+ "interfaces_table_port_unique": {
+ "name": "interfaces_table_port_unique",
+ "columns": [
+ "port"
+ ],
+ "isUnique": true
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "one_time_links_table": {
+ "name": "one_time_links_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "one_time_link": {
+ "name": "one_time_link",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {
+ "one_time_links_table_one_time_link_unique": {
+ "name": "one_time_links_table_one_time_link_unique",
+ "columns": [
+ "one_time_link"
+ ],
+ "isUnique": true
+ }
+ },
+ "foreignKeys": {
+ "one_time_links_table_id_clients_table_id_fk": {
+ "name": "one_time_links_table_id_clients_table_id_fk",
+ "tableFrom": "one_time_links_table",
+ "columnsFrom": [
+ "id"
+ ],
+ "tableTo": "clients_table",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "cascade",
+ "onDelete": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "users_table": {
+ "name": "users_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": true
+ },
+ "username": {
+ "name": "username",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "password": {
+ "name": "password",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "email": {
+ "name": "email",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "role": {
+ "name": "role",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "totp_key": {
+ "name": "totp_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "totp_verified": {
+ "name": "totp_verified",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "enabled": {
+ "name": "enabled",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "oauth_provider": {
+ "name": "oauth_provider",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "oauth_id": {
+ "name": "oauth_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {
+ "users_table_username_unique": {
+ "name": "users_table_username_unique",
+ "columns": [
+ "username"
+ ],
+ "isUnique": true
+ },
+ "users_table_email_unique": {
+ "name": "users_table_email_unique",
+ "columns": [
+ "email"
+ ],
+ "isUnique": true
+ },
+ "oauth_provider_id_unique": {
+ "name": "oauth_provider_id_unique",
+ "columns": [
+ "oauth_provider",
+ "oauth_id"
+ ],
+ "isUnique": true
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ },
+ "user_configs_table": {
+ "name": "user_configs_table",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "text",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_mtu": {
+ "name": "default_mtu",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_persistent_keepalive": {
+ "name": "default_persistent_keepalive",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_dns": {
+ "name": "default_dns",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_allowed_ips": {
+ "name": "default_allowed_ips",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "default_j_c": {
+ "name": "default_j_c",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 7
+ },
+ "default_j_min": {
+ "name": "default_j_min",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 10
+ },
+ "default_j_max": {
+ "name": "default_j_max",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": 1000
+ },
+ "default_i1": {
+ "name": "default_i1",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "default_i2": {
+ "name": "default_i2",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "default_i3": {
+ "name": "default_i3",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "default_i4": {
+ "name": "default_i4",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "default_i5": {
+ "name": "default_i5",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "host": {
+ "name": "host",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "port": {
+ "name": "port",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "(CURRENT_TIMESTAMP)"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "user_configs_table_id_interfaces_table_name_fk": {
+ "name": "user_configs_table_id_interfaces_table_name_fk",
+ "tableFrom": "user_configs_table",
+ "columnsFrom": [
+ "id"
+ ],
+ "tableTo": "interfaces_table",
+ "columnsTo": [
+ "name"
+ ],
+ "onUpdate": "cascade",
+ "onDelete": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "checkConstraints": {}
+ }
+ },
+ "views": {},
+ "enums": {},
+ "_meta": {
+ "columns": {},
+ "schemas": {},
+ "tables": {}
+ },
+ "internal": {
+ "indexes": {}
+ }
+}
\ No newline at end of file
diff --git a/src/server/database/migrations/meta/_journal.json b/src/server/database/migrations/meta/_journal.json
index 9bdc1db0..fd5a5501 100644
--- a/src/server/database/migrations/meta/_journal.json
+++ b/src/server/database/migrations/meta/_journal.json
@@ -57,6 +57,20 @@
"when": 1785630544322,
"tag": "0007_blushing_electro",
"breakpoints": true
+ },
+ {
+ "idx": 8,
+ "version": "6",
+ "when": 1788760134302,
+ "tag": "0008_thin_patch",
+ "breakpoints": true
+ },
+ {
+ "idx": 9,
+ "version": "6",
+ "when": 1790082534310,
+ "tag": "0009_dusty_prodigy",
+ "breakpoints": true
}
]
}
\ No newline at end of file
diff --git a/src/server/database/repositories/client/schema.ts b/src/server/database/repositories/client/schema.ts
index eb3a707e..ff82525b 100644
--- a/src/server/database/repositories/client/schema.ts
+++ b/src/server/database/repositories/client/schema.ts
@@ -52,6 +52,15 @@ export const client = sqliteTable(
i3: text(),
i4: text(),
i5: text(),
+ // HeaderProtectionKey and RandomTrailers have to match the interface and
+ // are therefore only configurable on the server
+ contentPaddingAddition: text('content_padding_addition'),
+ rekeyAfterTime: text('rekey_after_time'),
+ rekeyTimeout: text('rekey_timeout'),
+ rejectAfterTime: text('reject_after_time'),
+ keepaliveTimeout: text('keepalive_timeout'),
+ maxHandshakeAttempts: text('max_handshake_attempts'),
+ disableCookies: int('disable_cookies', { mode: 'boolean' }),
dns: text({ mode: 'json' }).$type(),
serverEndpoint: text('server_endpoint'),
enabled: int({ mode: 'boolean' }).notNull(),
diff --git a/src/server/database/repositories/client/service.ts b/src/server/database/repositories/client/service.ts
index 8eb3a380..52def4ea 100644
--- a/src/server/database/repositories/client/service.ts
+++ b/src/server/database/repositories/client/service.ts
@@ -9,6 +9,7 @@ import type {
UpdateClientType,
} from './types';
+import { WG_ENV } from '#server/utils/config';
import Database from '#server/utils/Database';
import { nextIP } from '#server/utils/ip';
import type { ID } from '#server/utils/types';
@@ -28,6 +29,15 @@ function createPreparedStatement(db: DBType) {
findById: db.query.client
.findFirst({ where: eq(client.id, sql.placeholder('id')) })
.prepare(),
+ findByIdPublic: db.query.client
+ .findFirst({
+ where: eq(client.id, sql.placeholder('id')),
+ columns: {
+ privateKey: false,
+ preSharedKey: false,
+ },
+ })
+ .prepare(),
toggle: db
.update(client)
.set({ enabled: sql.placeholder('enabled') as never as boolean })
@@ -149,10 +159,20 @@ export class ClientService {
}));
}
+ /**
+ * Includes WireGuard secrets. JSON API responses should use {@link getPublic}.
+ */
get(id: ID) {
return this.#statements.findById.execute({ id });
}
+ /**
+ * Returns one client without sensitive data
+ */
+ getPublic(id: ID) {
+ return this.#statements.findByIdPublic.execute({ id });
+ }
+
async create({ name, expiresAt }: ClientCreateType) {
const privateKey = await wg.generatePrivateKey();
const publicKey = await wg.getPublicKey(privateKey);
@@ -162,7 +182,7 @@ export class ClientService {
const clients = await tx.query.client.findMany().execute();
const clientInterface = await tx.query.wgInterface
.findFirst({
- where: eq(wgInterface.name, 'wg0'),
+ where: eq(wgInterface.name, WG_ENV.WG_INTERFACE),
})
.execute();
@@ -191,7 +211,7 @@ export class ClientService {
name,
// TODO: properly assign user id
userId: 1,
- interfaceId: 'wg0',
+ interfaceId: WG_ENV.WG_INTERFACE,
expiresAt,
privateKey,
publicKey,
@@ -236,7 +256,7 @@ export class ClientService {
return this.#db.transaction(async (tx) => {
const clientInterface = await tx.query.wgInterface
.findFirst({
- where: eq(wgInterface.name, 'wg0'),
+ where: eq(wgInterface.name, WG_ENV.WG_INTERFACE),
})
.execute();
@@ -272,7 +292,7 @@ export class ClientService {
.values({
name,
userId: 1,
- interfaceId: 'wg0',
+ interfaceId: WG_ENV.WG_INTERFACE,
privateKey,
publicKey,
preSharedKey,
diff --git a/src/server/database/repositories/client/types.ts b/src/server/database/repositories/client/types.ts
index 1060d676..7ad6ba33 100644
--- a/src/server/database/repositories/client/types.ts
+++ b/src/server/database/repositories/client/types.ts
@@ -7,6 +7,7 @@ import type { client } from './schema';
import {
AddressSchema,
AllowedIpsSchema,
+ AwgRangeSchema,
DnsSchema,
EnabledSchema,
FirewallIpsSchema,
@@ -109,6 +110,13 @@ export const ClientUpdateSchema = schemaForType()(
i3: ISchema,
i4: ISchema,
i5: ISchema,
+ contentPaddingAddition: AwgRangeSchema,
+ rekeyAfterTime: AwgRangeSchema,
+ rekeyTimeout: AwgRangeSchema,
+ rejectAfterTime: AwgRangeSchema,
+ keepaliveTimeout: AwgRangeSchema,
+ maxHandshakeAttempts: AwgRangeSchema,
+ disableCookies: z.boolean().nullable(),
persistentKeepalive: PersistentKeepaliveSchema,
serverEndpoint: AddressSchema.nullable(),
dns: DnsSchema.nullable(),
diff --git a/src/server/database/repositories/hooks/service.ts b/src/server/database/repositories/hooks/service.ts
index 41af78b8..6a48f464 100644
--- a/src/server/database/repositories/hooks/service.ts
+++ b/src/server/database/repositories/hooks/service.ts
@@ -3,6 +3,7 @@ import { eq, sql } from 'drizzle-orm';
import { hooks } from './schema';
import type { HooksUpdateType } from './types';
+import { WG_ENV } from '#server/utils/config';
import type { DBType } from '#db/sqlite';
function createPreparedStatement(db: DBType) {
@@ -23,7 +24,9 @@ export class HooksService {
}
async get() {
- const hooks = await this.#statements.get.execute({ interface: 'wg0' });
+ const hooks = await this.#statements.get.execute({
+ interface: WG_ENV.WG_INTERFACE,
+ });
if (!hooks) {
throw new Error('Hooks not found');
}
@@ -34,7 +37,7 @@ export class HooksService {
return this.#db
.update(hooks)
.set(data)
- .where(eq(hooks.id, 'wg0'))
+ .where(eq(hooks.id, WG_ENV.WG_INTERFACE))
.execute();
}
}
diff --git a/src/server/database/repositories/interface/schema.ts b/src/server/database/repositories/interface/schema.ts
index 0ce4e9b1..7ffa6141 100644
--- a/src/server/database/repositories/interface/schema.ts
+++ b/src/server/database/repositories/interface/schema.ts
@@ -31,6 +31,15 @@ export const wgInterface = sqliteTable('interfaces_table', {
i3: text(),
i4: text(),
i5: text(),
+ headerProtectionKey: text('header_protection_key'),
+ contentPaddingAddition: text('content_padding_addition'),
+ rekeyAfterTime: text('rekey_after_time'),
+ rekeyTimeout: text('rekey_timeout'),
+ rejectAfterTime: text('reject_after_time'),
+ keepaliveTimeout: text('keepalive_timeout'),
+ maxHandshakeAttempts: text('max_handshake_attempts'),
+ randomTrailers: int('random_trailers', { mode: 'boolean' }),
+ disableCookies: int('disable_cookies', { mode: 'boolean' }),
// does nothing yet
enabled: int({ mode: 'boolean' }).notNull(),
// Enable per-client firewall filtering via iptables
diff --git a/src/server/database/repositories/interface/service.ts b/src/server/database/repositories/interface/service.ts
index 7100835d..5dcb79e9 100644
--- a/src/server/database/repositories/interface/service.ts
+++ b/src/server/database/repositories/interface/service.ts
@@ -4,6 +4,7 @@ import { parseCidr } from 'cidr-tools';
import { wgInterface } from './schema';
import type { InterfaceCidrUpdateType, InterfaceUpdateType } from './types';
+import { WG_ENV } from '#server/utils/config';
import { nextIPFromUsedAddresses } from '#server/utils/ip';
import { client as clientSchema } from '#db/schema';
import type { DBType } from '#db/sqlite';
@@ -42,7 +43,7 @@ export class InterfaceService {
async get() {
const wgInterface = await this.#statements.get.execute({
- interface: 'wg0',
+ interface: WG_ENV.WG_INTERFACE,
});
if (!wgInterface) {
throw new Error('Interface not found');
@@ -52,7 +53,7 @@ export class InterfaceService {
updateKeyPair(privateKey: string, publicKey: string) {
return this.#statements.updateKeyPair.execute({
- interface: 'wg0',
+ interface: WG_ENV.WG_INTERFACE,
privateKey,
publicKey,
});
@@ -62,13 +63,13 @@ export class InterfaceService {
return this.#db
.update(wgInterface)
.set(data)
- .where(eq(wgInterface.name, 'wg0'))
+ .where(eq(wgInterface.name, WG_ENV.WG_INTERFACE))
.execute();
}
setFirewallEnabled(firewallEnabled: boolean) {
return this.#statements.setFirewallEnabled.execute({
- interface: 'wg0',
+ interface: WG_ENV.WG_INTERFACE,
firewallEnabled,
});
}
@@ -77,7 +78,7 @@ export class InterfaceService {
return this.#db.transaction(async (tx) => {
const oldCidr = await tx.query.wgInterface
.findFirst({
- where: eq(wgInterface.name, 'wg0'),
+ where: eq(wgInterface.name, WG_ENV.WG_INTERFACE),
columns: { ipv4Cidr: true, ipv6Cidr: true },
})
.execute();
@@ -89,7 +90,7 @@ export class InterfaceService {
await tx
.update(wgInterface)
.set(data)
- .where(eq(wgInterface.name, 'wg0'))
+ .where(eq(wgInterface.name, WG_ENV.WG_INTERFACE))
.execute();
const clients = await tx.query.client.findMany().execute();
diff --git a/src/server/database/repositories/interface/types.ts b/src/server/database/repositories/interface/types.ts
index f63e9b08..87eeda9e 100644
--- a/src/server/database/repositories/interface/types.ts
+++ b/src/server/database/repositories/interface/types.ts
@@ -5,12 +5,14 @@ import isCidr from 'is-cidr';
import type { wgInterface } from './schema';
import {
+ AwgRangeSchema,
EnabledSchema,
HSchema,
ISchema,
JcSchema,
JmaxSchema,
JminSchema,
+ KeySchema,
MtuSchema,
PortSchema,
RoutingTableSchema,
@@ -29,7 +31,13 @@ export type InterfaceCreateType = Omit<
export type InterfaceUpdateType = Omit<
InterfaceCreateType,
- 'name' | 'createdAt' | 'updatedAt' | 'privateKey' | 'publicKey'
+ | 'name'
+ | 'createdAt'
+ | 'updatedAt'
+ | 'privateKey'
+ | 'publicKey'
+ | 'ipv4Cidr'
+ | 'ipv6Cidr'
>;
const device = z
@@ -37,39 +45,79 @@ const device = z
.min(1, t('zod.interface.device'))
.pipe(safeStringRefine);
-const cidr = z
+const cidr4 = z
.string({ message: t('zod.interface.cidr') })
.min(1, { message: t('zod.interface.cidr') })
- .refine((value) => isCidr(value), { message: t('zod.interface.cidrValid') })
+ .refine((value) => isCidr.v4(value), {
+ message: t('zod.interface.cidrValid'),
+ })
.pipe(safeStringRefine);
-export const InterfaceUpdateSchema = schemaForType()(
- z.object({
- ipv4Cidr: cidr,
- ipv6Cidr: cidr,
- mtu: MtuSchema,
- routingTable: RoutingTableSchema,
- jC: JcSchema,
- jMin: JminSchema,
- jMax: JmaxSchema,
- s1: SSchema,
- s2: SSchema,
- s3: SSchema,
- s4: SSchema,
- h1: HSchema,
- h2: HSchema,
- h3: HSchema,
- h4: HSchema,
- i1: ISchema,
- i2: ISchema,
- i3: ISchema,
- i4: ISchema,
- i5: ISchema,
- port: PortSchema,
- device: device,
- enabled: EnabledSchema,
- firewallEnabled: EnabledSchema,
+const cidr6 = z
+ .string({ message: t('zod.interface.cidr') })
+ .min(1, { message: t('zod.interface.cidr') })
+ .refine((value) => isCidr.v6(value), {
+ message: t('zod.interface.cidrValid'),
})
+ .pipe(safeStringRefine);
+
+/**
+ * Header protection uses the first 12 bytes of every junk prefix as the nonce
+ * for its cipher, so all four junk sizes have to be at least that large.
+ */
+const HEADER_PROTECTION_MIN_JUNK_SIZE = 12;
+
+export const InterfaceUpdateSchema = schemaForType()(
+ z
+ .object({
+ device: device,
+ port: PortSchema,
+ mtu: MtuSchema,
+ routingTable: RoutingTableSchema,
+ jC: JcSchema,
+ jMin: JminSchema,
+ jMax: JmaxSchema,
+ s1: SSchema,
+ s2: SSchema,
+ s3: SSchema,
+ s4: SSchema,
+ h1: HSchema,
+ h2: HSchema,
+ h3: HSchema,
+ h4: HSchema,
+ i1: ISchema,
+ i2: ISchema,
+ i3: ISchema,
+ i4: ISchema,
+ i5: ISchema,
+ headerProtectionKey: KeySchema,
+ contentPaddingAddition: AwgRangeSchema,
+ rekeyAfterTime: AwgRangeSchema,
+ rekeyTimeout: AwgRangeSchema,
+ rejectAfterTime: AwgRangeSchema,
+ keepaliveTimeout: AwgRangeSchema,
+ maxHandshakeAttempts: AwgRangeSchema,
+ randomTrailers: z.boolean().nullable(),
+ disableCookies: z.boolean().nullable(),
+
+ enabled: EnabledSchema,
+ firewallEnabled: EnabledSchema,
+ })
+ .superRefine((data, ctx) => {
+ if (data.headerProtectionKey === null) return;
+
+ for (const junk of ['s1', 's2', 's3', 's4'] as const) {
+ const size = data[junk];
+
+ if (size === null || size < HEADER_PROTECTION_MIN_JUNK_SIZE) {
+ ctx.addIssue({
+ code: 'custom',
+ path: [junk],
+ message: t('zod.interface.headerProtectionJunkSize'),
+ });
+ }
+ }
+ })
);
export type InterfaceCidrUpdateType = {
@@ -80,7 +128,7 @@ export type InterfaceCidrUpdateType = {
export const InterfaceCidrUpdateSchema =
schemaForType()(
z.object({
- ipv4Cidr: cidr,
- ipv6Cidr: cidr,
+ ipv4Cidr: cidr4,
+ ipv6Cidr: cidr6,
})
);
diff --git a/src/server/database/repositories/userConfig/service.ts b/src/server/database/repositories/userConfig/service.ts
index db18c8d0..bda53932 100644
--- a/src/server/database/repositories/userConfig/service.ts
+++ b/src/server/database/repositories/userConfig/service.ts
@@ -3,6 +3,7 @@ import { eq, sql } from 'drizzle-orm';
import { userConfig } from './schema';
import type { UserConfigUpdateType } from './types';
+import { WG_ENV } from '#server/utils/config';
import { wgInterface } from '#db/schema';
import type { DBType } from '#db/sqlite';
@@ -24,7 +25,9 @@ export class UserConfigService {
}
async get() {
- const userConfig = await this.#statements.get.execute({ interface: 'wg0' });
+ const userConfig = await this.#statements.get.execute({
+ interface: WG_ENV.WG_INTERFACE,
+ });
if (!userConfig) {
throw new Error('User config not found');
@@ -33,8 +36,6 @@ export class UserConfigService {
return userConfig;
}
- // TODO: wrap ipv6 host in square brackets
-
/**
* sets host of user config
*
@@ -45,13 +46,13 @@ export class UserConfigService {
await tx
.update(userConfig)
.set({ host, port })
- .where(eq(userConfig.id, 'wg0'))
+ .where(eq(userConfig.id, WG_ENV.WG_INTERFACE))
.execute();
await tx
.update(wgInterface)
.set({ port })
- .where(eq(wgInterface.name, 'wg0'))
+ .where(eq(wgInterface.name, WG_ENV.WG_INTERFACE))
.execute();
});
}
@@ -60,7 +61,7 @@ export class UserConfigService {
return this.#db
.update(userConfig)
.set(data)
- .where(eq(userConfig.id, 'wg0'))
+ .where(eq(userConfig.id, WG_ENV.WG_INTERFACE))
.execute();
}
}
diff --git a/src/server/database/sqlite.ts b/src/server/database/sqlite.ts
index 59469ccc..f5a01e54 100644
--- a/src/server/database/sqlite.ts
+++ b/src/server/database/sqlite.ts
@@ -21,6 +21,7 @@ const db = drizzle({ client, schema });
export async function connect() {
await migrate();
+ await renameInterface(db);
const dbService = new DBService(db);
if (WG_INITIAL_ENV.ENABLED) {
@@ -122,16 +123,38 @@ async function initialSetup(db: DBServiceType) {
}
}
+// Renames the interface to the one specified in `WG_INTERFACE` then hooks, users, and clients via `ON UPDATE CASCADE`
+async function renameInterface(db: DBType) {
+ const wgInterface = await db.query.wgInterface.findFirst();
+
+ if (!wgInterface) {
+ throw new Error('Interface not found');
+ }
+
+ if (wgInterface.name === WG_ENV.WG_INTERFACE) {
+ return;
+ }
+
+ DB_DEBUG(
+ `Renaming Interface ${wgInterface.name} to ${WG_ENV.WG_INTERFACE}...`
+ );
+ await db
+ .update(schema.wgInterface)
+ .set({ name: WG_ENV.WG_INTERFACE })
+ .where(eq(schema.wgInterface.name, wgInterface.name))
+ .execute();
+}
+
async function disableIpv6(db: DBType) {
// This should match the initial value migration
const postUpMatch =
- ' ip6tables -t nat -A POSTROUTING -s {{ipv6Cidr}} -o {{device}} -j MASQUERADE; ip6tables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -A FORWARD -o wg0 -j ACCEPT;';
+ ' ip6tables -t nat -A POSTROUTING -s {{ipv6Cidr}} -o {{device}} -j MASQUERADE; ip6tables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -A FORWARD -i {{interface}} -j ACCEPT; ip6tables -A FORWARD -o {{interface}} -j ACCEPT;';
const postDownMatch =
- ' ip6tables -t nat -D POSTROUTING -s {{ipv6Cidr}} -o {{device}} -j MASQUERADE; ip6tables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -D FORWARD -o wg0 -j ACCEPT;';
+ ' ip6tables -t nat -D POSTROUTING -s {{ipv6Cidr}} -o {{device}} -j MASQUERADE; ip6tables -D INPUT -p udp -m udp --dport {{port}} -j ACCEPT; ip6tables -D FORWARD -i {{interface}} -j ACCEPT; ip6tables -D FORWARD -o {{interface}} -j ACCEPT;';
await db.transaction(async (tx) => {
const hooks = await tx.query.hooks.findFirst({
- where: eq(schema.hooks.id, 'wg0'),
+ where: eq(schema.hooks.id, WG_ENV.WG_INTERFACE),
});
if (!hooks) {
@@ -146,7 +169,7 @@ async function disableIpv6(db: DBType) {
postUp: hooks.postUp.replace(postUpMatch, ''),
postDown: hooks.postDown.replace(postDownMatch, ''),
})
- .where(eq(schema.hooks.id, 'wg0'))
+ .where(eq(schema.hooks.id, WG_ENV.WG_INTERFACE))
.execute();
} else {
DB_DEBUG('IPv6 Post Up hooks already disabled, skipping...');
@@ -159,7 +182,7 @@ async function disableIpv6(db: DBType) {
postUp: hooks.postUp.replace(postUpMatch, ''),
postDown: hooks.postDown.replace(postDownMatch, ''),
})
- .where(eq(schema.hooks.id, 'wg0'))
+ .where(eq(schema.hooks.id, WG_ENV.WG_INTERFACE))
.execute();
} else {
DB_DEBUG('IPv6 Post Down hooks already disabled, skipping...');
diff --git a/src/server/routes/cnf/[oneTimeLink].ts b/src/server/routes/cnf/[oneTimeLink].ts
index a75b691d..0185ccf1 100644
--- a/src/server/routes/cnf/[oneTimeLink].ts
+++ b/src/server/routes/cnf/[oneTimeLink].ts
@@ -7,6 +7,7 @@ import {
import Database from '#server/utils/Database';
import WireGuard from '#server/utils/WireGuard';
+import { logSecurityEvent } from '#server/utils/securityLogger';
import { validateZod } from '#server/utils/types';
import { OneTimeLinkGetSchema } from '#db/repositories/oneTimeLink/types';
@@ -18,6 +19,7 @@ export default defineEventHandler(async (event) => {
const otl = await Database.oneTimeLinks.getByOtl(oneTimeLink);
if (!otl) {
+ logSecurityEvent(event, 'one-time-link');
throw createError({
statusCode: 404,
statusMessage: 'Invalid One Time Link',
diff --git a/src/server/routes/metrics/prometheus.get.ts b/src/server/routes/metrics/prometheus.get.ts
index 9da7bee1..a79247f1 100644
--- a/src/server/routes/metrics/prometheus.get.ts
+++ b/src/server/routes/metrics/prometheus.get.ts
@@ -19,6 +19,7 @@ async function getPrometheusResponse() {
const wireguardSentBytes = [];
const wireguardReceivedBytes = [];
const wireguardLatestHandshakeSeconds = [];
+ const wireguardEndpointInfo = [];
for (const client of clients) {
if (client.enabled === true) {
wireguardEnabledPeersCount++;
@@ -46,6 +47,17 @@ async function getPrometheusResponse() {
wireguardLatestHandshakeSeconds.push(
`wireguard_latest_handshake_seconds{${id}} ${client.latestHandshakeAt ? (Date.now() - client.latestHandshakeAt.getTime()) / 1000 : 0}`
);
+
+ if (client.endpoint) {
+ const endpointId = formatPrometheusLabels({
+ interface: wgInterface.name,
+ name: client.name,
+ endpoint: client.endpoint,
+ });
+ wireguardEndpointInfo.push(
+ `wireguard_peer_endpoint_info{${endpointId}} 1`
+ );
+ }
}
const id = formatPrometheusLabels({ interface: wgInterface.name });
@@ -75,6 +87,10 @@ async function getPrometheusResponse() {
'# TYPE wireguard_latest_handshake_seconds gauge',
`${wireguardLatestHandshakeSeconds.join('\n')}`,
'',
+ '# HELP wireguard_peer_endpoint_info Current endpoint (IP:port) of a connected peer',
+ '# TYPE wireguard_peer_endpoint_info gauge',
+ `${wireguardEndpointInfo.join('\n')}`,
+ '',
];
return returnText.join('\n');
diff --git a/src/server/utils/Database.ts b/src/server/utils/Database.ts
index 7231d1c0..4da7c708 100644
--- a/src/server/utils/Database.ts
+++ b/src/server/utils/Database.ts
@@ -18,9 +18,9 @@ const nullObject = new Proxy(
let provider = nullObject as never as DBServiceType;
connect()
- .then((db) => {
+ .then(async (db) => {
provider = db;
- WireGuard.Startup();
+ await WireGuard.Startup();
})
.catch((err) => {
console.log('Failed to connect to Database:', err);
diff --git a/src/server/utils/awg.ts b/src/server/utils/awg.ts
new file mode 100644
index 00000000..8335f0f8
--- /dev/null
+++ b/src/server/utils/awg.ts
@@ -0,0 +1,154 @@
+import type { ClientType } from '#db/repositories/client/types';
+import type { InterfaceType } from '#db/repositories/interface/types';
+
+/**
+ * A parameter written as `Key = value` into the `[Interface]` section of a
+ * configuration file. `null` means "not set" and is left out entirely.
+ */
+type AwgParameters = Record;
+
+type AwgInterface = Pick<
+ InterfaceType,
+ | 'jC'
+ | 'jMin'
+ | 'jMax'
+ | 's1'
+ | 's2'
+ | 's3'
+ | 's4'
+ | 'h1'
+ | 'h2'
+ | 'h3'
+ | 'h4'
+ | 'i1'
+ | 'i2'
+ | 'i3'
+ | 'i4'
+ | 'i5'
+ | 'headerProtectionKey'
+ | 'contentPaddingAddition'
+ | 'rekeyAfterTime'
+ | 'rekeyTimeout'
+ | 'rejectAfterTime'
+ | 'keepaliveTimeout'
+ | 'maxHandshakeAttempts'
+ | 'randomTrailers'
+ | 'disableCookies'
+>;
+
+type AwgClient = Pick<
+ ClientType,
+ | 'jC'
+ | 'jMin'
+ | 'jMax'
+ | 'i1'
+ | 'i2'
+ | 'i3'
+ | 'i4'
+ | 'i5'
+ | 'contentPaddingAddition'
+ | 'rekeyAfterTime'
+ | 'rekeyTimeout'
+ | 'rejectAfterTime'
+ | 'keepaliveTimeout'
+ | 'maxHandshakeAttempts'
+ | 'disableCookies'
+>;
+
+/**
+ * amneziawg-tools parses booleans with `parse_bool`, which only accepts
+ * `on`, `off` or a plain number - not `true` / `false`.
+ */
+function formatBoolean(value: boolean) {
+ return value ? 'on' : 'off';
+}
+
+export function buildAwgLines(parameters: AwgParameters) {
+ const lines: string[] = [];
+
+ for (const [key, value] of Object.entries(parameters)) {
+ if (typeof value === 'boolean') {
+ lines.push(`${key} = ${formatBoolean(value)}`);
+ continue;
+ }
+
+ if (!value) continue;
+
+ lines.push(`${key} = ${value}`);
+ }
+
+ return lines;
+}
+
+/** Obfuscation parameters for the server's own interface */
+export function interfaceAwgParameters(
+ wgInterface: AwgInterface
+): AwgParameters {
+ return {
+ Jc: wgInterface.jC,
+ Jmin: wgInterface.jMin,
+ Jmax: wgInterface.jMax,
+ S1: wgInterface.s1,
+ S2: wgInterface.s2,
+ S3: wgInterface.s3,
+ S4: wgInterface.s4,
+ H1: wgInterface.h1,
+ H2: wgInterface.h2,
+ H3: wgInterface.h3,
+ H4: wgInterface.h4,
+ I1: wgInterface.i1,
+ I2: wgInterface.i2,
+ I3: wgInterface.i3,
+ I4: wgInterface.i4,
+ I5: wgInterface.i5,
+ HeaderProtectionKey: wgInterface.headerProtectionKey,
+ ContentPaddingAddition: wgInterface.contentPaddingAddition,
+ RekeyAfterTime: wgInterface.rekeyAfterTime,
+ RekeyTimeout: wgInterface.rekeyTimeout,
+ RejectAfterTime: wgInterface.rejectAfterTime,
+ KeepaliveTimeout: wgInterface.keepaliveTimeout,
+ MaxHandshakeAttempts: wgInterface.maxHandshakeAttempts,
+ RandomTrailers: wgInterface.randomTrailers,
+ DisableCookies: wgInterface.disableCookies,
+ };
+}
+
+/**
+ * Obfuscation parameters for a client's interface.
+ *
+ * S1-S4, H1-H4, HeaderProtectionKey and RandomTrailers have to be identical on
+ * both ends of the tunnel and are therefore copied from the server, everything
+ * else may differ per client.
+ */
+export function clientAwgParameters(
+ wgInterface: AwgInterface,
+ client: AwgClient
+): AwgParameters {
+ return {
+ Jc: client.jC,
+ Jmin: client.jMin,
+ Jmax: client.jMax,
+ S1: wgInterface.s1,
+ S2: wgInterface.s2,
+ S3: wgInterface.s3,
+ S4: wgInterface.s4,
+ H1: wgInterface.h1,
+ H2: wgInterface.h2,
+ H3: wgInterface.h3,
+ H4: wgInterface.h4,
+ I1: client.i1,
+ I2: client.i2,
+ I3: client.i3,
+ I4: client.i4,
+ I5: client.i5,
+ HeaderProtectionKey: wgInterface.headerProtectionKey,
+ ContentPaddingAddition: client.contentPaddingAddition,
+ RekeyAfterTime: client.rekeyAfterTime,
+ RekeyTimeout: client.rekeyTimeout,
+ RejectAfterTime: client.rejectAfterTime,
+ KeepaliveTimeout: client.keepaliveTimeout,
+ MaxHandshakeAttempts: client.maxHandshakeAttempts,
+ RandomTrailers: wgInterface.randomTrailers,
+ DisableCookies: client.disableCookies,
+ };
+}
diff --git a/src/server/utils/config.ts b/src/server/utils/config.ts
index 94f2f280..dfd8c043 100644
--- a/src/server/utils/config.ts
+++ b/src/server/utils/config.ts
@@ -2,6 +2,7 @@ import { createDebug } from 'obug';
import packageJson from '@@/package.json';
import { exec } from '#server/utils/cmd';
+import { parseInterfaceName } from '#server/utils/interfaceName';
import { parseTrustedProxies } from '#server/utils/trustedProxy';
import {
OAUTH_PROVIDERS,
@@ -50,6 +51,8 @@ export const WG_ENV = {
PORT: assertEnv('PORT'),
/** If IPv6 should be disabled */
DISABLE_IPV6: process.env.DISABLE_IPV6 === 'true',
+ /** Name of the WireGuard interface */
+ WG_INTERFACE: parseInterfaceName(process.env.WG_INTERFACE),
WG_EXECUTABLE: await detectAwg(),
DISABLE_VERSION_CHECK: process.env.DISABLE_VERSION_CHECK === 'true',
/** List of enabled and configured OAuth providers */
diff --git a/src/server/utils/endpoint.ts b/src/server/utils/endpoint.ts
new file mode 100644
index 00000000..9db12c93
--- /dev/null
+++ b/src/server/utils/endpoint.ts
@@ -0,0 +1,15 @@
+import { isIPv6 } from 'is-ip';
+
+/**
+ * WireGuard Endpoint host:port. IPv6 hosts need brackets.
+ */
+export function formatEndpoint(host: string, port: number): string {
+ const bare =
+ host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
+
+ if (isIPv6(bare)) {
+ return `[${bare}]:${port}`;
+ }
+
+ return `${bare}:${port}`;
+}
diff --git a/src/server/utils/firewall.ts b/src/server/utils/firewall.ts
index ef7998c6..26c94343 100644
--- a/src/server/utils/firewall.ts
+++ b/src/server/utils/firewall.ts
@@ -9,6 +9,14 @@ import type { UserConfigType } from '#db/repositories/userConfig/types';
const FW_DEBUG = createDebug('Firewall');
const CHAIN_NAME = 'WG_CLIENTS';
+/**
+ * Tie chains to a specific interface
+ * Prevents instances in the same network namespace from wiping each other's rules
+ */
+function chainName(interfaceName: string) {
+ return `${CHAIN_NAME}_${interfaceName}`;
+}
+
// Mutex to prevent concurrent rule rebuilds
let rebuildInProgress = false;
let rebuildQueued = false;
@@ -131,6 +139,7 @@ function parseFirewallEntry(entry: string): ParsedEntry {
* Generate iptables rule arguments for a single firewall entry
*/
function generateRuleArgs(
+ interfaceName: string,
clientIp: string,
entry: ParsedEntry,
comment?: string,
@@ -138,7 +147,7 @@ function generateRuleArgs(
): string[] {
const rules: string[] = [];
const commentArg = comment ? ` -m comment --comment "${comment}"` : '';
- const baseArgs = `-${action} ${CHAIN_NAME} -s ${clientIp} -d ${entry.ip}`;
+ const baseArgs = `-${action} ${chainName(interfaceName)} -s ${clientIp} -d ${entry.ip}`;
if (entry.port) {
// Port-specific rules
@@ -165,24 +174,25 @@ export const firewall = {
* Initialize the custom chain if it doesn't exist
*/
async initChain(interfaceName: string, enableIpv6: boolean): Promise {
+ const chain = chainName(interfaceName);
FW_DEBUG(
- `Initializing firewall chain ${CHAIN_NAME} for interface ${interfaceName}`
+ `Initializing firewall chain ${chain} for interface ${interfaceName}`
);
// Create chain if not exists (iptables returns error if exists, so we ignore)
- await exec(`iptables -N ${CHAIN_NAME} 2>/dev/null || true`);
+ await exec(`iptables -N ${chain} 2>/dev/null || true`);
if (enableIpv6) {
- await exec(`ip6tables -N ${CHAIN_NAME} 2>/dev/null || true`);
+ await exec(`ip6tables -N ${chain} 2>/dev/null || true`);
}
// Ensure chain is referenced from FORWARD (if not already)
// Insert at position 1 to process before generic ACCEPT rules
await exec(
- `iptables -C FORWARD -i ${interfaceName} -j ${CHAIN_NAME} 2>/dev/null || iptables -I FORWARD 1 -i ${interfaceName} -j ${CHAIN_NAME}`
+ `iptables -C FORWARD -i ${interfaceName} -j ${chain} 2>/dev/null || iptables -I FORWARD 1 -i ${interfaceName} -j ${chain}`
);
if (enableIpv6) {
await exec(
- `ip6tables -C FORWARD -i ${interfaceName} -j ${CHAIN_NAME} 2>/dev/null || ip6tables -I FORWARD 1 -i ${interfaceName} -j ${CHAIN_NAME}`
+ `ip6tables -C FORWARD -i ${interfaceName} -j ${chain} 2>/dev/null || ip6tables -I FORWARD 1 -i ${interfaceName} -j ${chain}`
);
}
},
@@ -190,11 +200,12 @@ export const firewall = {
/**
* Flush all rules in the custom chain
*/
- async flushChain(enableIpv6: boolean): Promise {
- FW_DEBUG(`Flushing firewall chain ${CHAIN_NAME}`);
- await exec(`iptables -F ${CHAIN_NAME} 2>/dev/null || true`);
+ async flushChain(interfaceName: string, enableIpv6: boolean): Promise {
+ const chain = chainName(interfaceName);
+ FW_DEBUG(`Flushing firewall chain ${chain}`);
+ await exec(`iptables -F ${chain} 2>/dev/null || true`);
if (enableIpv6) {
- await exec(`ip6tables -F ${CHAIN_NAME} 2>/dev/null || true`);
+ await exec(`ip6tables -F ${chain} 2>/dev/null || true`);
}
},
@@ -202,6 +213,7 @@ export const firewall = {
* Apply firewall rules for a single client
*/
async applyClientRules(
+ interfaceName: string,
client: FirewallClient,
defaultAllowedIps: string[],
enableIpv6: boolean
@@ -226,13 +238,23 @@ export const firewall = {
if (destIsIpv6) {
if (enableIpv6) {
- const rules = generateRuleArgs(client.ipv6Address, parsed, comment);
+ const rules = generateRuleArgs(
+ interfaceName,
+ client.ipv6Address,
+ parsed,
+ comment
+ );
for (const rule of rules) {
await exec(`ip6tables ${rule}`);
}
}
} else {
- const rules = generateRuleArgs(client.ipv4Address, parsed, comment);
+ const rules = generateRuleArgs(
+ interfaceName,
+ client.ipv4Address,
+ parsed,
+ comment
+ );
for (const rule of rules) {
await exec(`iptables ${rule}`);
}
@@ -271,12 +293,13 @@ export const firewall = {
await this.initChain(wgInterface.name, enableIpv6);
// Flush existing rules
- await this.flushChain(enableIpv6);
+ await this.flushChain(wgInterface.name, enableIpv6);
// Apply rules for each enabled client
for (const client of clients) {
if (!client.enabled) continue;
await this.applyClientRules(
+ wgInterface.name,
client,
userConfig.defaultAllowedIps,
enableIpv6
@@ -284,9 +307,10 @@ export const firewall = {
}
// Add final DROP for any traffic not explicitly allowed
- await exec(`iptables -A ${CHAIN_NAME} -j DROP`);
+ const chain = chainName(wgInterface.name);
+ await exec(`iptables -A ${chain} -j DROP`);
if (enableIpv6) {
- await exec(`ip6tables -A ${CHAIN_NAME} -j DROP`);
+ await exec(`ip6tables -A ${chain} -j DROP`);
}
FW_DEBUG('Firewall rules rebuilt successfully');
@@ -309,24 +333,33 @@ export const firewall = {
interfaceName: string,
enableIpv6: boolean
): Promise {
+ const chain = chainName(interfaceName);
FW_DEBUG(`Removing firewall filtering for interface ${interfaceName}`);
// Remove jump rules from FORWARD chain
+ // This disconnects the interface from the old shared chain, but it won't delete the chain itself.
+ // Other wg-easy instances on the same host may still rely on it.
+ await exec(
+ `iptables -D FORWARD -i ${interfaceName} -j ${chain} 2>/dev/null || true`
+ );
await exec(
`iptables -D FORWARD -i ${interfaceName} -j ${CHAIN_NAME} 2>/dev/null || true`
);
if (enableIpv6) {
+ await exec(
+ `ip6tables -D FORWARD -i ${interfaceName} -j ${chain} 2>/dev/null || true`
+ );
await exec(
`ip6tables -D FORWARD -i ${interfaceName} -j ${CHAIN_NAME} 2>/dev/null || true`
);
}
// Flush and delete the chain
- await exec(`iptables -F ${CHAIN_NAME} 2>/dev/null || true`);
- await exec(`iptables -X ${CHAIN_NAME} 2>/dev/null || true`);
+ await exec(`iptables -F ${chain} 2>/dev/null || true`);
+ await exec(`iptables -X ${chain} 2>/dev/null || true`);
if (enableIpv6) {
- await exec(`ip6tables -F ${CHAIN_NAME} 2>/dev/null || true`);
- await exec(`ip6tables -X ${CHAIN_NAME} 2>/dev/null || true`);
+ await exec(`ip6tables -F ${chain} 2>/dev/null || true`);
+ await exec(`ip6tables -X ${chain} 2>/dev/null || true`);
}
},
diff --git a/src/server/utils/interfaceName.ts b/src/server/utils/interfaceName.ts
new file mode 100644
index 00000000..2f1739f3
--- /dev/null
+++ b/src/server/utils/interfaceName.ts
@@ -0,0 +1,21 @@
+/**
+ * Default interface name
+ */
+const DEFAULT_INTERFACE_NAME = 'wg0';
+
+/**
+ * `wg-quick` compliant interface naming
+ */
+const INTERFACE_NAME_REGEX = /^[a-zA-Z0-9_=+.-]{1,15}$/;
+
+export function parseInterfaceName(value: string | undefined): string {
+ if (!value) {
+ return DEFAULT_INTERFACE_NAME;
+ }
+
+ if (!INTERFACE_NAME_REGEX.test(value)) {
+ throw new Error(`Invalid interface name: ${value}`);
+ }
+
+ return value;
+}
diff --git a/src/server/utils/ip.ts b/src/server/utils/ip.ts
index 480519a8..11bfefff 100644
--- a/src/server/utils/ip.ts
+++ b/src/server/utils/ip.ts
@@ -96,7 +96,7 @@ async function getReverseDns(ip: string) {
}
}
-function getPrivateInformation() {
+function getPrivateInformation(interfaceName: string) {
const interfaces = networkInterfaces();
const interfaceNames = Object.keys(interfaces);
@@ -104,7 +104,7 @@ function getPrivateInformation() {
const obj: Record = {};
for (const name of interfaceNames) {
- if (name === 'wg0') {
+ if (name === interfaceName) {
continue;
}
@@ -132,10 +132,10 @@ function getPrivateInformation() {
return obj;
}
-async function getIpInformation() {
+export async function getIpInformation(interfaceName: string) {
const results = [];
- const publicInfo = await getPublicInformation();
+ const publicInfo = await cachedGetPublicInformation();
if (publicInfo.ipv4) {
results.push({
value: publicInfo.ipv4,
@@ -155,7 +155,7 @@ async function getIpInformation() {
});
}
- const privateInfo = getPrivateInformation();
+ const privateInfo = getPrivateInformation(interfaceName);
for (const [name, { ipv4, ipv6 }] of Object.entries(privateInfo)) {
for (const ip of ipv4) {
results.push({
@@ -175,9 +175,9 @@ async function getIpInformation() {
}
/**
- * Fetch IP Information
+ * Fetch public IP Information
* @cache Response is cached for 15 min
*/
-export const cachedGetIpInformation = cacheFunction(getIpInformation, {
+const cachedGetPublicInformation = cacheFunction(getPublicInformation, {
expiry: 15 * 60 * 1000,
});
diff --git a/src/server/utils/securityLogger.ts b/src/server/utils/securityLogger.ts
new file mode 100644
index 00000000..36c53ee2
--- /dev/null
+++ b/src/server/utils/securityLogger.ts
@@ -0,0 +1,17 @@
+import type { H3Event } from 'h3';
+
+import { WG_ENV } from '#server/utils/config';
+import { getTrustedRequestIP } from '#server/utils/trustedProxy';
+
+type SecurityEvent = 'password' | '2fa' | 'one-time-link';
+
+export function logSecurityEvent(
+ event: H3Event,
+ type: SecurityEvent,
+ username?: string
+) {
+ const user = username ? ` username=${JSON.stringify(username)}` : '';
+ const ip = getTrustedRequestIP(event, WG_ENV.TRUSTED_PROXIES) ?? 'unknown';
+
+ console.warn(`Security failure: type=${type}${user} ip=${ip}`);
+}
diff --git a/src/server/utils/template.ts b/src/server/utils/template.ts
index c3f1b0d9..22679737 100644
--- a/src/server/utils/template.ts
+++ b/src/server/utils/template.ts
@@ -19,6 +19,7 @@ export function removeNewlines(templ: string) {
* - ipv4Cidr: IPv4 CIDR
* - ipv6Cidr: IPv6 CIDR
* - device: Network device
+ * - interface: WireGuard interface
* - port: Port number
* - uiPort: UI port number
*/
@@ -27,6 +28,7 @@ export function iptablesTemplate(templ: string, wgInterface: InterfaceType) {
ipv4Cidr: wgInterface.ipv4Cidr,
ipv6Cidr: wgInterface.ipv6Cidr,
device: wgInterface.device,
+ interface: wgInterface.name,
port: wgInterface.port.toString(),
uiPort: WG_ENV.PORT,
});
diff --git a/src/server/utils/trustedProxy.ts b/src/server/utils/trustedProxy.ts
index 6c195b5d..52de4d9e 100644
--- a/src/server/utils/trustedProxy.ts
+++ b/src/server/utils/trustedProxy.ts
@@ -61,6 +61,15 @@ export function getTrustedRequestURL(
});
}
+export function getTrustedRequestIP(
+ event: H3Event,
+ trustedProxies: readonly string[]
+): string | undefined {
+ return getRequestIP(event, {
+ xForwardedFor: isRequestFromTrustedProxy(event, trustedProxies),
+ });
+}
+
function isRequestFromTrustedProxy(
event: H3Event,
trustedProxies: readonly string[]
diff --git a/src/server/utils/types.ts b/src/server/utils/types.ts
index 5c6bf55b..979c6b08 100644
--- a/src/server/utils/types.ts
+++ b/src/server/utils/types.ts
@@ -46,38 +46,87 @@ export const JmaxSchema = z.number().max(1280).nullable();
export const SSchema = z.number().max(1132).nullable();
+const RANGE_REGEX = /^(\d+)(?:-(\d+))?$/;
+
+function parseRange(value: string) {
+ const match = RANGE_REGEX.exec(value);
+ if (!match) return null;
+
+ const lower = Number(match[1]);
+ const upper = match[2] === undefined ? lower : Number(match[2]);
+
+ if (!Number.isSafeInteger(lower) || !Number.isSafeInteger(upper)) return null;
+
+ return { lower, upper };
+}
+
+/**
+ * AmneziaWG accepts either a single number or an inclusive `lower-upper` range
+ * for several parameters (see `u32_range_from_string` / `u16_range_from_string`
+ * in amneziawg-tools). Values outside of `[min, max]` are silently truncated by
+ * the parser, so they are rejected here instead.
+ */
+function rangeSchema(min: number, max: number) {
+ return z
+ .string()
+ .transform((v) => v.replace(/\s+/g, ''))
+ .refine(
+ (v) => {
+ const range = parseRange(v);
+ if (!range) return false;
+
+ return (
+ range.lower >= min && range.upper <= max && range.lower <= range.upper
+ );
+ },
+ {
+ message: t('zod.generic.validNumberRange'),
+ }
+ )
+ .transform((v) => {
+ const range = parseRange(v);
+ // cannot happen, the refine above already rejected unparsable values
+ if (!range) return v;
+
+ return range.lower === range.upper
+ ? `${range.lower}`
+ : `${range.lower}-${range.upper}`;
+ })
+ .nullable();
+}
+
const H_MIN = 5;
const H_MAX = 2 ** 31 - 1;
-export const HSchema = z
+/** H1-H4 packet header types, parsed as a uint32 range */
+export const HSchema = rangeSchema(H_MIN, H_MAX);
+
+/**
+ * AmneziaWG 3.0+ parameters that are parsed as a uint16 range:
+ * ContentPaddingAddition, RekeyAfterTime, RekeyTimeout, RejectAfterTime,
+ * KeepaliveTimeout and MaxHandshakeAttempts.
+ */
+export const AwgRangeSchema = rangeSchema(0, 65535);
+
+/** Length of a WireGuard key in bytes */
+const KEY_LENGTH = 32;
+
+/**
+ * A 32 byte key in canonical base64, the same format WireGuard uses for its
+ * own keys. Used by the AmneziaWG 3.0+ `HeaderProtectionKey` parameter.
+ */
+export const KeySchema = z
.string()
- .transform((v) => v.replace(/\s+/g, ''))
+ .pipe(safeStringRefine)
+ .pipe(controlStringRefine)
.refine(
(v) => {
- if (!v) return false;
+ const key = Buffer.from(v, 'base64');
- if (!/^\d+(-\d+)?$/.test(v)) return false;
-
- if (!v.includes('-')) {
- const num = Number(v);
- return num >= H_MIN && num <= H_MAX;
- }
-
- const [min, max] = v.split('-').map(Number);
- return min && max && min >= H_MIN && max <= H_MAX && min <= max;
-
- return false;
+ return key.length === KEY_LENGTH && key.toString('base64') === v;
},
- {
- message: t('zod.generic.validNumberRange'),
- }
+ { message: t('zod.keyMalformed') }
)
- .transform((v) => {
- if (!v.includes('-')) return `${Number(v)}`;
-
- const [min, max] = v.split('-').map(Number);
- return min === max ? `${min}` : `${min}-${max}`;
- })
.nullable();
export const ISchema = z
diff --git a/src/server/utils/wgHelper.ts b/src/server/utils/wgHelper.ts
index b67bcb73..7f2a07ef 100644
--- a/src/server/utils/wgHelper.ts
+++ b/src/server/utils/wgHelper.ts
@@ -1,9 +1,15 @@
import { parseCidr } from 'cidr-tools';
import { stringifyIp } from 'ip-bigint';
+import {
+ buildAwgLines,
+ clientAwgParameters,
+ interfaceAwgParameters,
+} from '#server/utils/awg';
import { removeNewlines, iptablesTemplate } from '#server/utils/template';
import { exec } from '#server/utils/cmd';
import { WG_ENV } from '#server/utils/config';
+import { formatEndpoint } from '#server/utils/endpoint';
import type { ClientType } from '#db/repositories/client/types';
import type { InterfaceType } from '#db/repositories/interface/types';
import type { UserConfigType } from '#db/repositories/userConfig/types';
@@ -58,34 +64,10 @@ AllowedIPs = ${allowedIps.join(', ')}${extraLines.length ? `\n${extraLines.join(
`${ipv4Addr}/${cidr4.prefix}` +
(enableIpv6 ? `, ${ipv6Addr}/${cidr6.prefix}` : '');
- let awgLines: string[] = [];
-
- if (wgExecutable === 'awg') {
- const parameters = {
- Jc: wgInterface.jC,
- Jmin: wgInterface.jMin,
- Jmax: wgInterface.jMax,
- S1: wgInterface.s1,
- S2: wgInterface.s2,
- S3: wgInterface.s3,
- S4: wgInterface.s4,
- H1: wgInterface.h1,
- H2: wgInterface.h2,
- H3: wgInterface.h3,
- H4: wgInterface.h4,
- I1: wgInterface.i1,
- I2: wgInterface.i2,
- I3: wgInterface.i3,
- I4: wgInterface.i4,
- I5: wgInterface.i5,
- } as const;
-
- awgLines = Object.entries(parameters)
- .filter(([_, value]) => !!value)
- .map(([key, value]) => `${key} = ${value}`);
- }
-
- const extraLines = [...awgLines].filter((v) => v !== null);
+ const extraLines =
+ wgExecutable === 'awg'
+ ? buildAwgLines(interfaceAwgParameters(wgInterface))
+ : [];
return `# Note: Do not edit this file directly.
# Your changes will be overwritten!
@@ -127,32 +109,10 @@ PostDown = ${iptablesTemplate(hooks.postDown, wgInterface)}`;
const dnsLine =
dnsServers.length > 0 ? `DNS = ${dnsServers.join(', ')}` : null;
- let awgLines: string[] = [];
-
- if (wgExecutable === 'awg') {
- const parameters = {
- Jc: client.jC,
- Jmin: client.jMin,
- Jmax: client.jMax,
- S1: wgInterface.s1,
- S2: wgInterface.s2,
- S3: wgInterface.s3,
- S4: wgInterface.s4,
- H1: wgInterface.h1,
- H2: wgInterface.h2,
- H3: wgInterface.h3,
- H4: wgInterface.h4,
- I1: client.i1,
- I2: client.i2,
- I3: client.i3,
- I4: client.i4,
- I5: client.i5,
- } as const;
-
- awgLines = Object.entries(parameters)
- .filter(([_, value]) => !!value)
- .map(([key, value]) => `${key} = ${value}`);
- }
+ const awgLines =
+ wgExecutable === 'awg'
+ ? buildAwgLines(clientAwgParameters(wgInterface, client))
+ : [];
const extraLines = [dnsLine, ...hookLines, ...awgLines].filter(
(v) => v !== null
@@ -168,7 +128,7 @@ PublicKey = ${wgInterface.publicKey}
PresharedKey = ${client.preSharedKey}
AllowedIPs = ${(client.allowedIps ?? userConfig.defaultAllowedIps).join(', ')}
PersistentKeepalive = ${client.persistentKeepalive}
-Endpoint = ${userConfig.host}:${userConfig.port}`;
+Endpoint = ${formatEndpoint(userConfig.host, userConfig.port)}`;
},
generatePrivateKey: () => {
diff --git a/src/test/unit/awg.spec.ts b/src/test/unit/awg.spec.ts
new file mode 100644
index 00000000..b6ac3828
--- /dev/null
+++ b/src/test/unit/awg.spec.ts
@@ -0,0 +1,222 @@
+import { describe, expect, test } from 'vitest';
+
+import {
+ buildAwgLines,
+ clientAwgParameters,
+ interfaceAwgParameters,
+} from '#server/utils/awg';
+import { InterfaceUpdateSchema } from '#db/repositories/interface/types';
+import { AwgRangeSchema, HSchema, KeySchema } from '#server/utils/types';
+
+/** Any valid 32 byte base64 key, generated with `wg genkey` */
+const KEY = 'JPJ2DWzJbwrRkY6cPbZaJasL6bHQOM6J2Ollx4D/OHU=';
+
+const wgInterface = {
+ jC: 7,
+ jMin: 10,
+ jMax: 1000,
+ s1: 128,
+ s2: 56,
+ s3: null,
+ s4: null,
+ h1: '5',
+ h2: null,
+ h3: null,
+ h4: null,
+ i1: null,
+ i2: null,
+ i3: null,
+ i4: null,
+ i5: null,
+ headerProtectionKey: null,
+ contentPaddingAddition: null,
+ rekeyAfterTime: null,
+ rekeyTimeout: null,
+ rejectAfterTime: null,
+ keepaliveTimeout: null,
+ maxHandshakeAttempts: null,
+ randomTrailers: null,
+ disableCookies: null,
+};
+
+const client = {
+ jC: null,
+ jMin: null,
+ jMax: null,
+ i1: null,
+ i2: null,
+ i3: null,
+ i4: null,
+ i5: null,
+ contentPaddingAddition: null,
+ rekeyAfterTime: null,
+ rekeyTimeout: null,
+ rejectAfterTime: null,
+ keepaliveTimeout: null,
+ maxHandshakeAttempts: null,
+ disableCookies: null,
+};
+
+describe('AmneziaWG config lines', () => {
+ test('leaves out parameters that are not set', () => {
+ expect(buildAwgLines({ Jc: null, Jmin: null })).toEqual([]);
+ });
+
+ test('writes booleans as on/off, not true/false', () => {
+ expect(
+ buildAwgLines({ RandomTrailers: true, DisableCookies: false })
+ ).toEqual(['RandomTrailers = on', 'DisableCookies = off']);
+ });
+
+ test('keeps ranges verbatim', () => {
+ expect(buildAwgLines({ RekeyAfterTime: '90-150' })).toEqual([
+ 'RekeyAfterTime = 90-150',
+ ]);
+ });
+
+ test('builds the interface parameters', () => {
+ expect(
+ buildAwgLines(
+ interfaceAwgParameters({
+ ...wgInterface,
+ headerProtectionKey: KEY,
+ maxHandshakeAttempts: '5',
+ randomTrailers: true,
+ disableCookies: false,
+ })
+ )
+ ).toEqual([
+ 'Jc = 7',
+ 'Jmin = 10',
+ 'Jmax = 1000',
+ 'S1 = 128',
+ 'S2 = 56',
+ 'H1 = 5',
+ `HeaderProtectionKey = ${KEY}`,
+ 'MaxHandshakeAttempts = 5',
+ 'RandomTrailers = on',
+ 'DisableCookies = off',
+ ]);
+ });
+
+ test('copies parameters that must match from the interface to the client', () => {
+ const lines = buildAwgLines(
+ clientAwgParameters(
+ { ...wgInterface, headerProtectionKey: KEY, randomTrailers: true },
+ { ...client, rekeyTimeout: '4-8', disableCookies: true }
+ )
+ );
+
+ expect(lines).toContain(`HeaderProtectionKey = ${KEY}`);
+ expect(lines).toContain('RandomTrailers = on');
+ expect(lines).toContain('S1 = 128');
+ expect(lines).toContain('H1 = 5');
+ expect(lines).toContain('RekeyTimeout = 4-8');
+ expect(lines).toContain('DisableCookies = on');
+ });
+
+ test('does not inherit per-client parameters from the interface', () => {
+ const lines = buildAwgLines(
+ clientAwgParameters(
+ { ...wgInterface, jC: 7, maxHandshakeAttempts: '9' },
+ client
+ )
+ );
+
+ expect(lines).not.toContain('Jc = 7');
+ expect(lines).not.toContain('MaxHandshakeAttempts = 9');
+ });
+});
+
+describe('AwgRangeSchema', () => {
+ test('accepts a single number and an inclusive range', () => {
+ expect(AwgRangeSchema.parse('30')).toBe('30');
+ expect(AwgRangeSchema.parse('30-90')).toBe('30-90');
+ expect(AwgRangeSchema.parse(' 30 - 90 ')).toBe('30-90');
+ expect(AwgRangeSchema.parse('0')).toBe('0');
+ expect(AwgRangeSchema.parse(null)).toBeNull();
+ });
+
+ test('collapses a range with identical bounds', () => {
+ expect(AwgRangeSchema.parse('30-30')).toBe('30');
+ });
+
+ test('rejects values the awg parser would truncate or refuse', () => {
+ expect(() => AwgRangeSchema.parse('65536')).toThrow();
+ expect(() => AwgRangeSchema.parse('90-30')).toThrow();
+ expect(() => AwgRangeSchema.parse('-5')).toThrow();
+ expect(() => AwgRangeSchema.parse('1-2-3')).toThrow();
+ expect(() => AwgRangeSchema.parse('abc')).toThrow();
+ expect(() => AwgRangeSchema.parse('')).toThrow();
+ });
+
+ test('does not change the H1-H4 bounds', () => {
+ expect(HSchema.parse('5')).toBe('5');
+ expect(() => HSchema.parse('4')).toThrow();
+ expect(HSchema.parse('5-2147483647')).toBe('5-2147483647');
+ expect(() => HSchema.parse('5-2147483648')).toThrow();
+ });
+});
+
+describe('KeySchema', () => {
+ test('accepts a 32 byte base64 key', () => {
+ expect(KeySchema.parse(KEY)).toBe(KEY);
+ expect(KeySchema.parse(null)).toBeNull();
+ });
+
+ test('rejects keys of the wrong length or encoding', () => {
+ expect(() => KeySchema.parse('too-short')).toThrow();
+ expect(() => KeySchema.parse(KEY.slice(0, -1))).toThrow();
+ expect(() => KeySchema.parse(`${KEY}${KEY}`)).toThrow();
+ // non canonical: the trailing bits of the last character are not zero
+ expect(() => KeySchema.parse(`${KEY.slice(0, 42)}B=`)).toThrow();
+ });
+
+ test('rejects newlines that would inject extra config lines', () => {
+ expect(() =>
+ KeySchema.parse(`${KEY}\nPostUp = touch /tmp/pwned`)
+ ).toThrow();
+ });
+});
+
+describe('InterfaceUpdateSchema', () => {
+ const base = {
+ ipv4Cidr: '10.8.0.0/24',
+ ipv6Cidr: 'fdcc:ad94:bacf:61a3::/64',
+ mtu: 1420,
+ routingTable: 'auto',
+ ...wgInterface,
+ port: 51820,
+ device: 'eth0',
+ enabled: true,
+ firewallEnabled: false,
+ };
+
+ test('accepts an interface without header protection', () => {
+ expect(() => InterfaceUpdateSchema.parse(base)).not.toThrow();
+ });
+
+ test('requires S1-S4 to be at least 12 when a key is set', () => {
+ const result = InterfaceUpdateSchema.safeParse({
+ ...base,
+ headerProtectionKey: KEY,
+ });
+
+ expect(result.success).toBe(false);
+ expect(result.error?.issues.map((issue) => issue.path[0])).toEqual([
+ 's3',
+ 's4',
+ ]);
+ });
+
+ test('accepts header protection with large enough junk sizes', () => {
+ expect(() =>
+ InterfaceUpdateSchema.parse({
+ ...base,
+ headerProtectionKey: KEY,
+ s3: 12,
+ s4: 40,
+ })
+ ).not.toThrow();
+ });
+});
diff --git a/src/test/unit/endpoint.spec.ts b/src/test/unit/endpoint.spec.ts
new file mode 100644
index 00000000..c3c6b91f
--- /dev/null
+++ b/src/test/unit/endpoint.spec.ts
@@ -0,0 +1,17 @@
+import { describe, expect, test } from 'vitest';
+
+import { formatEndpoint } from '#server/utils/endpoint';
+
+describe('formatEndpoint', () => {
+ test('keeps IPv4 and hostnames unbracketed', () => {
+ expect(formatEndpoint('203.0.113.10', 51820)).toBe('203.0.113.10:51820');
+ expect(formatEndpoint('vpn.example.com', 51820)).toBe(
+ 'vpn.example.com:51820'
+ );
+ });
+
+ test('wraps IPv6 hosts in brackets', () => {
+ expect(formatEndpoint('2001:db8::1', 51820)).toBe('[2001:db8::1]:51820');
+ expect(formatEndpoint('[2001:db8::1]', 51820)).toBe('[2001:db8::1]:51820');
+ });
+});
diff --git a/src/test/unit/firewall.spec.ts b/src/test/unit/firewall.spec.ts
index 53710112..0dea0567 100644
--- a/src/test/unit/firewall.spec.ts
+++ b/src/test/unit/firewall.spec.ts
@@ -18,7 +18,7 @@ describe('firewall', () => {
describe('IPv4-only chain management', () => {
test('does not invoke ip6tables when initializing and flushing', async () => {
await firewall.initChain('wg0', false);
- await firewall.flushChain(false);
+ await firewall.flushChain('wg0', false);
expect(execMock).toHaveBeenCalledWith(
expect.stringContaining('iptables -C FORWARD -i wg0')
@@ -40,6 +40,30 @@ describe('firewall', () => {
});
});
+ describe('interface scoped chains', () => {
+ test('uses one chain per interface', async () => {
+ await firewall.initChain('wg1', false);
+
+ expect(execMock).toHaveBeenCalledWith(
+ expect.stringContaining('iptables -N WG_CLIENTS_wg1')
+ );
+ expect(execMock).not.toHaveBeenCalledWith(
+ expect.stringContaining('iptables -N WG_CLIENTS ')
+ );
+ });
+
+ test('stops referencing the legacy chain when removing filtering', async () => {
+ await firewall.removeFiltering('wg1', false);
+
+ expect(execMock).toHaveBeenCalledWith(
+ expect.stringContaining('iptables -D FORWARD -i wg1 -j WG_CLIENTS ')
+ );
+ expect(execMock).toHaveBeenCalledWith(
+ expect.stringContaining('iptables -X WG_CLIENTS_wg1')
+ );
+ });
+ });
+
describe('isValidFirewallEntry', () => {
test('invalid ips', () => {
expect(() => typesTestExports.FirewallIpEntrySchema.parse('')).toThrow();
@@ -290,41 +314,43 @@ describe('firewall', () => {
describe('generateRuleArgs', () => {
test('includes comment when provided', () => {
const rules = firewallTestExports.generateRuleArgs(
+ 'wg0',
'10.8.0.2',
{ ip: '10.0.0.1' },
'client 1: test'
);
expect(rules).toEqual([
- '-A WG_CLIENTS -s 10.8.0.2 -d 10.0.0.1 -m comment --comment "client 1: test" -j ACCEPT',
+ '-A WG_CLIENTS_wg0 -s 10.8.0.2 -d 10.0.0.1 -m comment --comment "client 1: test" -j ACCEPT',
]);
});
test('omits comment when not provided', () => {
- const rulesTcp = firewallTestExports.generateRuleArgs('10.8.0.2', {
+ const rulesTcp = firewallTestExports.generateRuleArgs('wg0', '10.8.0.2', {
ip: '10.0.0.1',
port: 80,
proto: 'tcp',
});
expect(rulesTcp).toEqual([
- '-A WG_CLIENTS -s 10.8.0.2 -d 10.0.0.1 -p tcp --dport 80 -j ACCEPT',
+ '-A WG_CLIENTS_wg0 -s 10.8.0.2 -d 10.0.0.1 -p tcp --dport 80 -j ACCEPT',
]);
- const rulesUdp = firewallTestExports.generateRuleArgs('10.8.0.2', {
+ const rulesUdp = firewallTestExports.generateRuleArgs('wg0', '10.8.0.2', {
ip: '10.0.0.1',
port: 80,
proto: 'udp',
});
expect(rulesUdp).toEqual([
- '-A WG_CLIENTS -s 10.8.0.2 -d 10.0.0.1 -p udp --dport 80 -j ACCEPT',
+ '-A WG_CLIENTS_wg0 -s 10.8.0.2 -d 10.0.0.1 -p udp --dport 80 -j ACCEPT',
]);
});
test('comment with port generates two rules for both proto', () => {
const rules = firewallTestExports.generateRuleArgs(
+ 'wg0',
'10.8.0.2',
{ ip: '10.0.0.1', port: 443, proto: 'both' },
'client 2: phone'
);
expect(rules).toEqual([
- '-A WG_CLIENTS -s 10.8.0.2 -d 10.0.0.1 -p tcp --dport 443 -m comment --comment "client 2: phone" -j ACCEPT',
- '-A WG_CLIENTS -s 10.8.0.2 -d 10.0.0.1 -p udp --dport 443 -m comment --comment "client 2: phone" -j ACCEPT',
+ '-A WG_CLIENTS_wg0 -s 10.8.0.2 -d 10.0.0.1 -p tcp --dport 443 -m comment --comment "client 2: phone" -j ACCEPT',
+ '-A WG_CLIENTS_wg0 -s 10.8.0.2 -d 10.0.0.1 -p udp --dport 443 -m comment --comment "client 2: phone" -j ACCEPT',
]);
});
});
diff --git a/src/test/unit/interfaceName.spec.ts b/src/test/unit/interfaceName.spec.ts
new file mode 100644
index 00000000..0c1a0765
--- /dev/null
+++ b/src/test/unit/interfaceName.spec.ts
@@ -0,0 +1,25 @@
+import { describe, expect, test } from 'vitest';
+
+import { parseInterfaceName } from '#server/utils/interfaceName';
+
+describe('parseInterfaceName', () => {
+ test('returns the default interface when a custom name is not specified', () => {
+ expect(parseInterfaceName(undefined)).toBe('wg0');
+ expect(parseInterfaceName('')).toBe('wg0');
+ });
+
+ test('accepts names compliant with wg-quick', () => {
+ expect(parseInterfaceName('wg1')).toBe('wg1');
+ expect(parseInterfaceName('wg-home')).toBe('wg-home');
+ expect(parseInterfaceName('a'.repeat(15))).toBe('a'.repeat(15));
+ });
+
+ test('rejects invalid names', () => {
+ expect(() => parseInterfaceName('wg 0')).toThrow(
+ 'Invalid interface name: wg 0'
+ );
+ expect(() => parseInterfaceName('wg0; id')).toThrow();
+ expect(() => parseInterfaceName('wg/0')).toThrow();
+ expect(() => parseInterfaceName('a'.repeat(16))).toThrow();
+ });
+});
diff --git a/src/test/unit/trustedProxy.spec.ts b/src/test/unit/trustedProxy.spec.ts
index 108c4f1d..f0c33a60 100644
--- a/src/test/unit/trustedProxy.spec.ts
+++ b/src/test/unit/trustedProxy.spec.ts
@@ -4,6 +4,7 @@ import { createEvent, type H3Event } from 'h3';
import { describe, expect, test } from 'vitest';
import {
+ getTrustedRequestIP,
getTrustedRequestHost,
getTrustedRequestURL,
parseTrustedProxies,
@@ -35,9 +36,11 @@ describe('trusted request helpers', () => {
const event = createTestEvent('192.0.2.10', {
host: 'wg-easy:51821',
'x-forwarded-host': 'vpn.example.com',
+ 'x-forwarded-for': '198.51.100.25',
'x-forwarded-proto': 'https',
});
+ expect(getTrustedRequestIP(event, ['10.0.0.0/8'])).toBe('192.0.2.10');
expect(getTrustedRequestHost(event, ['10.0.0.0/8'])).toBe('wg-easy:51821');
expect(getTrustedRequestURL(event, ['10.0.0.0/8']).origin).toBe(
'http://wg-easy:51821'
@@ -50,9 +53,11 @@ describe('trusted request helpers', () => {
const event = createTestEvent('10.0.0.2', {
host: 'wg-easy:51821',
'x-forwarded-host': 'vpn.example.com:8443, wg-easy:51821',
+ 'x-forwarded-for': '198.51.100.25',
'x-forwarded-proto': 'HTTPS, http',
});
+ expect(getTrustedRequestIP(event, ['10.0.0.0/8'])).toBe('198.51.100.25');
expect(getTrustedRequestHost(event, ['10.0.0.0/8'])).toBe(
'vpn.example.com:8443'
);
@@ -64,10 +69,16 @@ describe('trusted request helpers', () => {
);
expect(event.node.req.headers['x-forwarded-proto']).toBe('HTTPS, http');
});
+
+ test('returns undefined when no request address is available', () => {
+ const event = createTestEvent(undefined, {});
+
+ expect(getTrustedRequestIP(event, ['10.0.0.0/8'])).toBeUndefined();
+ });
});
function createTestEvent(
- remoteAddress: string,
+ remoteAddress: string | undefined,
headers: IncomingMessage['headers']
): H3Event {
const request = {
diff --git a/src/vitest.config.ts b/src/vitest.config.ts
index 3a37baa0..894dcf0f 100644
--- a/src/vitest.config.ts
+++ b/src/vitest.config.ts
@@ -9,6 +9,9 @@ export default defineConfig({
resolve: {
alias: {
'#server': fileURLToPath(new URL('./server', import.meta.url)),
+ '#db': fileURLToPath(
+ new URL('./server/database/', import.meta.url)
+ ),
},
},
test: {