Browse Source

Feat docs (#1814)

* improve docs and formatting

* lint in ci

avoid using bundled prettier from vscode extension

* fix action, typos

* remove header

* remove unused deps
pull/1819/head
Bernd Storath 1 week ago
committed by GitHub
parent
commit
1cfe6404b2
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 23
      .editorconfig
  2. 27
      .github/workflows/lint.yml
  3. 1
      .gitignore
  4. 3
      .vscode/extensions.json
  5. 5
      .vscode/settings.json
  6. 2
      README.md
  7. 5
      docs/.prettierrc.json
  8. 5
      docs/content/advanced/api.md
  9. 18
      docs/content/advanced/metrics/prometheus.md
  10. 14
      docs/content/examples/tutorials/auto-updates.md
  11. 21
      docs/content/examples/tutorials/basic-installation.md
  12. 12
      docs/content/examples/tutorials/podman-nft.md
  13. 29
      docs/content/examples/tutorials/reverse-proxyless.md
  14. 146
      docs/content/examples/tutorials/traefik.md
  15. 60
      docs/content/faq.md
  16. 46
      docs/content/getting-started.md
  17. 23
      docs/content/guides/2fa.md
  18. 5
      docs/content/guides/account.md
  19. 47
      docs/content/guides/clients.md
  20. 5
      docs/content/guides/login.md
  21. 2
      docs/content/index.md
  22. 146
      docs/mkdocs.yml
  23. 8
      package.json
  24. 17
      pnpm-lock.yaml
  25. 4
      src/package.json
  26. 265
      src/pnpm-lock.yaml

23
.editorconfig

@ -1,23 +0,0 @@
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
# The JSON files contain newlines inconsistently
[*.json]
insert_final_newline = ignore
# Minified JavaScript files shouldn't be changed
[**.min.js]
indent_style = ignore
insert_final_newline = ignore
[*.md]
trim_trailing_whitespace = false

27
.github/workflows/lint.yml

@ -7,9 +7,36 @@ on:
pull_request: pull_request:
jobs: jobs:
docs:
name: Check Docs
runs-on: ubuntu-latest
if: github.repository_owner == 'wg-easy'
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
run_install: false
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "lts/*"
check-latest: true
cache: "pnpm"
- name: Check docs formatting
run: |
pnpm install
pnpm format:check:docs
lint: lint:
name: Lint name: Lint
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: docs
if: github.repository_owner == 'wg-easy' if: github.repository_owner == 'wg-easy'
strategy: strategy:

1
.gitignore

@ -1,2 +1,3 @@
.DS_Store .DS_Store
*.swp *.swp
node_modules

3
.vscode/extensions.json

@ -9,6 +9,7 @@
"yoavbls.pretty-ts-errors", "yoavbls.pretty-ts-errors",
"bradlc.vscode-tailwindcss", "bradlc.vscode-tailwindcss",
"vue.volar", "vue.volar",
"lokalise.i18n-ally" "lokalise.i18n-ally",
"DavidAnson.vscode-markdownlint"
] ]
} }

5
.vscode/settings.json

@ -18,6 +18,11 @@
"[json]": { "[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode" "editor.defaultFormatter": "esbenp.prettier-vscode"
}, },
"[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 4,
"editor.useTabStops": false
},
"typescript.tsdk": "./src/node_modules/typescript/lib", "typescript.tsdk": "./src/node_modules/typescript/lib",
"i18n-ally.enabledFrameworks": ["vue"], "i18n-ally.enabledFrameworks": ["vue"],
"i18n-ally.localesPaths": ["src/i18n/locales"], "i18n-ally.localesPaths": ["src/i18n/locales"],

2
README.md

@ -81,7 +81,7 @@ The easiest way to run WireGuard Easy is with Docker Compose.
Just download [`docker-compose.yml`](docker-compose.yml) and execute `sudo docker compose up -d`. Just download [`docker-compose.yml`](docker-compose.yml) and execute `sudo docker compose up -d`.
Now setup a reverse proxy to be able to access the Web UI from the internet. Now setup a reverse proxy to be able to access the Web UI securely from the internet.
If you want to access the Web UI over HTTP, change the env var `INSECURE` to `true`. This is not recommended. Only use this for testing If you want to access the Web UI over HTTP, change the env var `INSECURE` to `true`. This is not recommended. Only use this for testing

5
docs/.prettierrc.json

@ -0,0 +1,5 @@
{
"tabWidth": 4,
"semi": true,
"singleQuote": true
}

5
docs/content/advanced/api.md

@ -2,6 +2,11 @@
title: API title: API
--- ---
/// warning | Breaking Changes
This API is not yet stable and may change in the future. The API is currently in development and is subject to change without notice. The API is not yet documented, but we will add documentation as the API stabilizes.
///
You can use the API to interact with the application programmatically. The API is available at `/api` and supports both GET and POST requests. The API is designed to be simple and easy to use, with a focus on providing a consistent interface for all endpoints. You can use the API to interact with the application programmatically. The API is available at `/api` and supports both GET and POST requests. The API is designed to be simple and easy to use, with a focus on providing a consistent interface for all endpoints.
There is no documentation for the API yet, but this will be added as the underlying library supports it. There is no documentation for the API yet, but this will be added as the underlying library supports it.

18
docs/content/advanced/metrics/prometheus.md

@ -16,15 +16,15 @@ You need to add a scrape config to your Prometheus configuration file. Here is a
```yaml ```yaml
scrape_configs: scrape_configs:
- job_name: "wg-easy" - job_name: 'wg-easy'
scrape_interval: 30s scrape_interval: 30s
metrics_path: /metrics/prometheus metrics_path: /metrics/prometheus
static_configs: static_configs:
- targets: - targets:
- "localhost:51821" - 'localhost:51821'
authorization: authorization:
type: Bearer type: Bearer
credentials: "SuperSecurePassword" credentials: 'SuperSecurePassword'
``` ```
## Grafana Dashboard ## Grafana Dashboard

14
docs/content/examples/tutorials/auto-updates.md

@ -19,13 +19,13 @@ File: `/etc/docker/containers/watchtower/docker-compose.yml`
```yaml ```yaml
services: services:
watchtower: watchtower:
image: containrrr/watchtower:latest image: containrrr/watchtower:latest
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
env_file: env_file:
- watchtower.env - watchtower.env
restart: unless-stopped restart: unless-stopped
``` ```
File: `/etc/docker/containers/watchtower/watchtower.env` File: `/etc/docker/containers/watchtower/watchtower.env`

21
docs/content/examples/tutorials/basic-installation.md

@ -19,22 +19,22 @@ Follow the Docs here: <https://docs.docker.com/engine/install/> and install Dock
1. Create a directory for the configuration files (you can choose any directory you like): 1. Create a directory for the configuration files (you can choose any directory you like):
```shell ```shell
sudo mkdir -p /etc/docker/containers/wg-easy sudo mkdir -p /etc/docker/containers/wg-easy
``` ```
2. Download docker compose file 2. Download docker compose file
```shell ```shell
sudo curl -o /etc/docker/containers/wg-easy/docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml sudo curl -o /etc/docker/containers/wg-easy/docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml
``` ```
3. Start `wg-easy` 3. Start `wg-easy`
```shell ```shell
cd /etc/docker/containers/wg-easy cd /etc/docker/containers/wg-easy
sudo docker-compose up -d sudo docker-compose up -d
``` ```
## Setup Firewall ## Setup Firewall
@ -48,6 +48,7 @@ These ports can be changed, so if you change them you have to update your firewa
- To setup traefik follow the instructions here: [Traefik](./traefik.md) - To setup traefik follow the instructions here: [Traefik](./traefik.md)
- To setup caddy follow the instructions here: [Caddy](./caddy.md) - To setup caddy follow the instructions here: [Caddy](./caddy.md)
- If you do not want to use a reverse proxy follow the instructions here: [No Reverse Proxy](./reverse-proxyless.md)
## Update `wg-easy` ## Update `wg-easy`

12
docs/content/examples/tutorials/podman-nft.md

@ -87,15 +87,15 @@ In the Admin Panel of your WireGuard server, go to the `Hooks` tab and add the f
1. PostUp 1. PostUp
```shell ```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; 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;
``` ```
2. PostDown 2. PostDown
```shell ```shell
nft delete table inet wg_table nft delete table inet wg_table
``` ```
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. 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.

29
docs/content/examples/tutorials/reverse-proxyless.md

@ -0,0 +1,29 @@
---
title: No Reverse Proxy
---
/// warning | Insecure
This is insecure. You should use a reverse proxy to secure the connection.
Only use this method if you know what you are doing.
///
If you only allow access to the web UI from your local network, you can skip the reverse proxy setup. This is not recommended, but it is possible.
## Setup
- Edit the `docker-compose.yml` file and uncomment `environment` and `INSECURE`
- Set `INSECURE` to `true` to allow access to the web UI over a non-secure connection.
- The `docker-compose.yml` file should look something like this:
```yaml
environment:
- INSECURE=true
```
- Save the file and restart `wg-easy`.
- Make sure that the Web UI is not accessible from outside your local network.

146
docs/content/examples/tutorials/traefik.md

@ -20,25 +20,25 @@ File: `/etc/docker/containers/traefik/docker-compose.yml`
```yaml ```yaml
services: services:
traefik: traefik:
image: traefik:3.3 image: traefik:3.3
container_name: traefik container_name: traefik
restart: unless-stopped restart: unless-stopped
ports: ports:
- "80:80" - '80:80'
- "443:443/tcp" - '443:443/tcp'
- "443:443/udp" - '443:443/udp'
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- /etc/docker/volumes/traefik/traefik.yml:/traefik.yml:ro - /etc/docker/volumes/traefik/traefik.yml:/traefik.yml:ro
- /etc/docker/volumes/traefik/traefik_dynamic.yml:/traefik_dynamic.yml:ro - /etc/docker/volumes/traefik/traefik_dynamic.yml:/traefik_dynamic.yml:ro
- /etc/docker/volumes/traefik/acme.json:/acme.json - /etc/docker/volumes/traefik/acme.json:/acme.json
networks: networks:
- traefik - traefik
networks: networks:
traefik: traefik:
external: true external: true
``` ```
## Create traefik.yml ## Create traefik.yml
@ -47,47 +47,47 @@ File: `/etc/docker/volumes/traefik/traefik.yml`
```yaml ```yaml
log: log:
level: INFO level: INFO
entryPoints: entryPoints:
web: web:
address: ":80/tcp" address: ':80/tcp'
http: http:
redirections: redirections:
entryPoint: entryPoint:
to: websecure to: websecure
scheme: https scheme: https
websecure: websecure:
address: ":443/tcp" address: ':443/tcp'
http: http:
middlewares: middlewares:
- compress@file - compress@file
- hsts@file - hsts@file
tls: tls:
certResolver: letsencrypt certResolver: letsencrypt
http3: {} http3: {}
api: api:
dashboard: true dashboard: true
certificatesResolvers: certificatesResolvers:
letsencrypt: letsencrypt:
acme: acme:
email: [email protected]$ email: [email protected]$
storage: acme.json storage: acme.json
httpChallenge: httpChallenge:
entryPoint: web entryPoint: web
providers: providers:
docker: docker:
watch: true watch: true
network: traefik network: traefik
exposedByDefault: false exposedByDefault: false
file: file:
filename: traefik_dynamic.yml filename: traefik_dynamic.yml
serversTransport: serversTransport:
insecureSkipVerify: true insecureSkipVerify: true
``` ```
## Create traefik_dynamic.yml ## Create traefik_dynamic.yml
@ -96,33 +96,33 @@ File: `/etc/docker/volumes/traefik/traefik_dynamic.yml`
```yaml ```yaml
http: http:
middlewares: middlewares:
services: services:
basicAuth: basicAuth:
users: users:
- "$username$:$password$" - '$username$:$password$'
compress: compress:
compress: {} compress: {}
hsts: hsts:
headers: headers:
stsSeconds: 2592000 stsSeconds: 2592000
routers: routers:
api: api:
rule: Host(`traefik.$example.com$`) rule: Host(`traefik.$example.com$`)
entrypoints: entrypoints:
- websecure - websecure
middlewares: middlewares:
- services - services
service: api@internal service: api@internal
tls: tls:
options: options:
default: default:
cipherSuites: cipherSuites:
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
sniStrict: true sniStrict: true
``` ```
## Create acme.json ## Create acme.json

60
docs/content/faq.md

@ -1,7 +1,7 @@
--- ---
title: FAQ title: FAQ
hide: hide:
- navigation - navigation
--- ---
Here are some frequently asked questions or errors about `wg-easy`. If you have a question that is not answered here, please feel free to open a discussion on GitHub. Here are some frequently asked questions or errors about `wg-easy`. If you have a question that is not answered here, please feel free to open a discussion on GitHub.
@ -14,15 +14,15 @@ To resolve this issue, you can try the following steps:
1. **Load the WireGuard kernel module**: If the WireGuard kernel module is not loaded, you can load it manually by running: 1. **Load the WireGuard kernel module**: If the WireGuard kernel module is not loaded, you can load it manually by running:
```bash ```bash
sudo modprobe wireguard sudo modprobe wireguard
``` ```
2. **Load the WireGuard kernel module on boot**: If you want to ensure that the WireGuard kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file: 2. **Load the WireGuard kernel module on boot**: If you want to ensure that the WireGuard kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file:
```bash ```bash
echo "wireguard" | sudo tee -a /etc/modules echo "wireguard" | sudo tee -a /etc/modules
``` ```
## can't initialize iptables table `nat': Table does not exist (do you need to insmod?) ## can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
@ -32,15 +32,15 @@ To resolve this issue, you can try the following steps:
1. **Load the `nat` kernel module**: If the `nat` kernel module is not loaded, you can load it manually by running: 1. **Load the `nat` kernel module**: If the `nat` kernel module is not loaded, you can load it manually by running:
```bash ```bash
sudo modprobe iptable_nat sudo modprobe iptable_nat
``` ```
2. **Load the `nat` kernel module on boot**: If you want to ensure that the `nat` kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file: 2. **Load the `nat` kernel module on boot**: If you want to ensure that the `nat` kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file:
```bash ```bash
echo "iptable_nat" | sudo tee -a /etc/modules echo "iptable_nat" | sudo tee -a /etc/modules
``` ```
## can't initialize ip6tables table `nat': Table does not exist (do you need to insmod?) ## can't initialize ip6tables table `nat': Table does not exist (do you need to insmod?)
@ -50,15 +50,15 @@ To resolve this issue, you can try the following steps:
1. **Load the `nat` kernel module**: If the `nat` kernel module is not loaded, you can load it manually by running: 1. **Load the `nat` kernel module**: If the `nat` kernel module is not loaded, you can load it manually by running:
```bash ```bash
sudo modprobe ip6table_nat sudo modprobe ip6table_nat
``` ```
2. **Load the `nat` kernel module on boot**: If you want to ensure that the `nat` kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file: 2. **Load the `nat` kernel module on boot**: If you want to ensure that the `nat` kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file:
```bash ```bash
echo "ip6table_nat" | sudo tee -a /etc/modules echo "ip6table_nat" | sudo tee -a /etc/modules
``` ```
## can't initialize iptables table `filter': Permission denied ## can't initialize iptables table `filter': Permission denied
@ -68,15 +68,15 @@ To resolve this issue, you can try the following steps:
1. **Load the `filter` kernel module**: If the `filter` kernel module is not loaded, you can load it manually by running: 1. **Load the `filter` kernel module**: If the `filter` kernel module is not loaded, you can load it manually by running:
```bash ```bash
sudo modprobe iptable_filter sudo modprobe iptable_filter
``` ```
2. **Load the `filter` kernel module on boot**: If you want to ensure that the `filter` kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file: 2. **Load the `filter` kernel module on boot**: If you want to ensure that the `filter` kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file:
```bash ```bash
echo "iptable_filter" | sudo tee -a /etc/modules echo "iptable_filter" | sudo tee -a /etc/modules
``` ```
## can't initialize ip6tables table `filter': Permission denied ## can't initialize ip6tables table `filter': Permission denied
@ -86,12 +86,12 @@ To resolve this issue, you can try the following steps:
1. **Load the `filter` kernel module**: If the `filter` kernel module is not loaded, you can load it manually by running: 1. **Load the `filter` kernel module**: If the `filter` kernel module is not loaded, you can load it manually by running:
```bash ```bash
sudo modprobe ip6table_filter sudo modprobe ip6table_filter
``` ```
2. **Load the `filter` kernel module on boot**: If you want to ensure that the `filter` kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file: 2. **Load the `filter` kernel module on boot**: If you want to ensure that the `filter` kernel module is loaded automatically on boot, you can add it to the `/etc/modules` file:
```bash ```bash
echo "ip6table_filter" | sudo tee -a /etc/modules echo "ip6table_filter" | sudo tee -a /etc/modules
``` ```

46
docs/content/getting-started.md

@ -1,7 +1,7 @@
--- ---
title: Getting Started title: Getting Started
hide: hide:
- navigation - navigation
--- ---
This page explains how to get started with `wg-easy`. The guide uses Docker Compose as a reference. In our examples, we mount the named volume `etc_wireguard` to `/etc/wireguard` inside the container. This page explains how to get started with `wg-easy`. The guide uses Docker Compose as a reference. In our examples, we mount the named volume `etc_wireguard` to `/etc/wireguard` inside the container.
@ -43,54 +43,30 @@ All workflows are using the tagging convention listed below. It is subsequently
| tag | Type | Example | Description | | tag | Type | Example | Description |
| ------------- | ---------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | | ------------- | ---------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `15` | latest minor for that major tag | `ghcr.io/wg-easy/wg-easy:15` | latest features for specific major versions, no breaking changes | | `15` | latest minor for that major tag | `ghcr.io/wg-easy/wg-easy:15` | latest features for specific major versions, no breaking changes, recommended |
| `latest` | latest tag | `ghcr.io/wg-easy/wg-easy:latest` or `ghcr.io/wg-easy/wg-easy` | stable as possible get bug fixes quickly when needed, see Releases for more information. | | `latest` | latest tag | `ghcr.io/wg-easy/wg-easy:latest` or `ghcr.io/wg-easy/wg-easy` | points to latest release, can include breaking changes |
| `15.0` | latest patch for that minor tag | `ghcr.io/wg-easy/wg-easy:15.0` | latest patches for specific minor version | | `15.0` | latest patch for that minor tag | `ghcr.io/wg-easy/wg-easy:15.0` | latest patches for specific minor version |
| `15.0.0` | specific tag | `ghcr.io/wg-easy/wg-easy:15.0.0` | specific release, don't use this as this will not get updated | | `15.0.0` | specific tag | `ghcr.io/wg-easy/wg-easy:15.0.0` | specific release, no updates |
| `nightly` | [`master`](https://github.com/wg-easy/wg-easy/tree/master) | `ghcr.io/wg-easy/wg-easy:nightly` | mostly unstable gets frequent package and code updates, deployed against [`master`](https://github.com/wg-easy/wg-easy/tree/master). | | `nightly` | [`master`](https://github.com/wg-easy/wg-easy/tree/master) | `ghcr.io/wg-easy/wg-easy:nightly` | mostly unstable gets frequent package and code updates, deployed against [`master`](https://github.com/wg-easy/wg-easy/tree/master). |
| `development` | pull requests | `ghcr.io/wg-easy/wg-easy:development` | used for development, testing code from PRs before landing into [`master`](https://github.com/wg-easy/wg-easy/tree/master). | | `development` | pull requests | `ghcr.io/wg-easy/wg-easy:development` | used for development, testing code from PRs before landing into [`master`](https://github.com/wg-easy/wg-easy/tree/master). |
<!-- ref: major version -->
When publishing a tag we follow the [Semantic Versioning][semver] specification. The `latest` tag is always pointing to the latest stable release. If you want to avoid breaking changes, use the major version tag (e.g. `15`). When publishing a tag we follow the [Semantic Versioning][semver] specification. The `latest` tag is always pointing to the latest stable release. If you want to avoid breaking changes, use the major version tag (e.g. `15`).
[github-ci]: https://github.com/wg-easy/wg-easy/actions [github-ci]: https://github.com/wg-easy/wg-easy/actions
[ghcr-image]: https://github.com/wg-easy/wg-easy/pkgs/container/wg-easy [ghcr-image]: https://github.com/wg-easy/wg-easy/pkgs/container/wg-easy
[semver]: https://semver.org/ [semver]: https://semver.org/
### Get All Files ### Follow tutorials
Issue the following command to acquire the necessary file:
```shell
wget "https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml"
```
### Start the Container
To start the container, issue the following command:
```shell
sudo docker compose up -d
```
### Configuration Steps - [Basic Installation with Docker Compose (Recommended)](./examples/tutorials/basic-installation.md)
- [Simple Installation with Docker Run](./examples/tutorials/docker-run.md)
- [Advanced Installation with Podman](./examples/tutorials/podman-nft.md)
Now follow the setup process in your web browser /// danger | Use the Correct Commands For Stopping and Starting `wg-easy`
### Stopping the Container
To stop the container, issue the following command:
```shell
sudo docker compose down
```
/// danger | Using the Correct Commands For Stopping and Starting `wg-easy`
**Use `sudo docker compose up / down`, not `sudo docker compose start / stop`**. Otherwise, the container is not properly destroyed and you may experience problems during startup because of inconsistent state. **Use `sudo docker compose up / down`, not `sudo docker compose start / stop`**. Otherwise, the container is not properly destroyed and you may experience problems during startup because of inconsistent state.
/// ///
**That's it! It really is that easy**. **That's it! It really is that easy**.
If you need more help you can read the [Basic Installation Tutorial][basic-installation].
[basic-installation]: ./examples/tutorials/basic-installation.md

23
docs/content/guides/2fa.md

@ -2,4 +2,25 @@
title: 2FA title: 2FA
--- ---
TODO The user can enable 2FA from the Account page. The Account page is accessible from the dropdown menu in the top right corner of the application.
## Enable TOTP
- **Enable Two Factor Authentication**: Enable TOTP for the user.
## Configure TOTP
A QR code will be displayed. Scan the QR code with your TOTP application (e.g., Google Authenticator, Authy, etc.) to add the account.
To verify that the TOTP key is working, the user must enter the TOTP code generated by the TOTP application.
- **TOTP Key**: The TOTP key for the user. This key is used to generate the TOTP code.
- **TOTP Code**: The current TOTP code for the user. This code is used to verify the TOTP key.
- **Enable Two Factor Authentication**: Enable TOTP for the user.
## Disable TOTP
To disable TOTP, the user must enter the current password.
- **Current Password**: The current password of the user.
- **Disable Two Factor Authentication**: Disable TOTP for the user.

5
docs/content/guides/account.md

@ -1,5 +0,0 @@
---
title: Edit Account
---
TODO

47
docs/content/guides/clients.md

@ -2,4 +2,49 @@
title: Edit Client title: Edit Client
--- ---
TODO ## General
- **Name**: The name of the client.
- **Enabled**: Whether the client can connect to the VPN.
- **Expire Date**: The date the client will be disabled.
## Address
- **IPv4**: The IPv4 address of the client.
- **IPv6**: The IPv6 address of the client.
## Allowed IPs
Which IPs will be routed through the VPN.
This will not prevent the user from modifying it locally and accessing IP ranges that they should not be able to access.
Use firewall rules to prevent access to IP ranges that the user should not be able to access.
## Server Allowed IPs
Which IPs will be routed to the client.
## DNS
The DNS server that the client will use.
## Advanced
- **MTU**: The maximum transmission unit for the client.
- **Persistent Keepalive**: The interval for sending keepalive packets to the server.
## Hooks
This can only be used for clients that use `wg-quick`. Setting this will throw a error when importing the config on other clients.
- **PreUp**: Commands to run before the interface is brought up.
- **PostUp**: Commands to run after the interface is brought up.
- **PreDown**: Commands to run before the interface is brought down.
- **PostDown**: Commands to run after the interface is brought down.
## Actions
- **Save**: Save the changes made in the form.
- **Revert**: Revert the changes made in the form.
- **Delete**: Delete the client.

5
docs/content/guides/login.md

@ -1,5 +0,0 @@
---
title: Login
---
TODO

2
docs/content/index.md

@ -1,7 +1,7 @@
--- ---
title: Home title: Home
hide: hide:
- navigation - navigation
--- ---
# Welcome to the Documentation for `wg-easy` # Welcome to the Documentation for `wg-easy`

146
docs/mkdocs.yml

@ -1,87 +1,87 @@
site_name: "wg-easy" site_name: 'wg-easy'
site_description: "The easiest way to run WireGuard VPN + Web-based Admin UI." site_description: 'The easiest way to run WireGuard VPN + Web-based Admin UI.'
site_author: "WireGuard Easy" site_author: 'WireGuard Easy'
copyright: > copyright: >
<p> <p>
&copy <a href="https://github.com/wg-easy"><em>Wireguard Easy</em></a><br/> &copy <a href="https://github.com/wg-easy"><em>Wireguard Easy</em></a><br/>
<span>This project is licensed under AGPL-3.0-only.</span><br/> <span>This project is licensed under AGPL-3.0-only.</span><br/>
<span>This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Jason A. Donenfeld, ZX2C4 or Edge Security</span><br/> <span>This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Jason A. Donenfeld, ZX2C4 or Edge Security</span><br/>
<span>"WireGuard" and the "WireGuard" logo are registered trademarks of Jason A. Donenfeld</span> <span>"WireGuard" and the "WireGuard" logo are registered trademarks of Jason A. Donenfeld</span>
</p> </p>
repo_url: https://github.com/wg-easy/wg-easy repo_url: https://github.com/wg-easy/wg-easy
repo_name: wg-easy repo_name: wg-easy
edit_uri: "edit/master/docs/content" edit_uri: 'edit/master/docs/content'
docs_dir: "content/" docs_dir: 'content/'
site_url: https://wg-easy.github.io/wg-easy site_url: https://wg-easy.github.io/wg-easy
theme: theme:
name: material name: material
favicon: assets/logo/favicon.png favicon: assets/logo/favicon.png
logo: assets/logo/logo.png logo: assets/logo/logo.png
icon: icon:
repo: fontawesome/brands/github repo: fontawesome/brands/github
features: features:
- navigation.tabs - navigation.tabs
- navigation.top - navigation.top
- navigation.expand - navigation.expand
- navigation.instant - navigation.instant
- content.action.edit - content.action.edit
- content.action.view - content.action.view
- content.code.annotate - content.code.annotate
palette: palette:
# Light mode # Light mode
- media: "(prefers-color-scheme: light)" - media: '(prefers-color-scheme: light)'
scheme: default scheme: default
primary: grey primary: grey
accent: red accent: red
toggle: toggle:
icon: material/weather-night icon: material/weather-night
name: Switch to dark mode name: Switch to dark mode
# Dark mode # Dark mode
- media: "(prefers-color-scheme: dark)" - media: '(prefers-color-scheme: dark)'
scheme: slate scheme: slate
primary: grey primary: grey
accent: red accent: red
toggle: toggle:
icon: material/weather-sunny icon: material/weather-sunny
name: Switch to light mode name: Switch to light mode
extra: extra:
version: version:
provider: mike provider: mike
markdown_extensions: markdown_extensions:
- toc: - toc:
anchorlink: true anchorlink: true
- abbr - abbr
- attr_list - attr_list
- pymdownx.blocks.admonition: - pymdownx.blocks.admonition:
types: types:
- danger - danger
- note - note
- info - info
- question - question
- warning - warning
- pymdownx.details - pymdownx.details
- pymdownx.superfences: - pymdownx.superfences:
custom_fences: custom_fences:
- name: mermaid - name: mermaid
class: mermaid class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format format: !!python/name:pymdownx.superfences.fence_code_format
- pymdownx.tabbed: - pymdownx.tabbed:
alternate_style: true alternate_style: true
slugify: !!python/object/apply:pymdownx.slugs.slugify slugify: !!python/object/apply:pymdownx.slugs.slugify
kwds: kwds:
case: lower case: lower
- pymdownx.tasklist: - pymdownx.tasklist:
custom_checkbox: true custom_checkbox: true
- pymdownx.magiclink - pymdownx.magiclink
- pymdownx.inlinehilite - pymdownx.inlinehilite
- pymdownx.tilde - pymdownx.tilde
- pymdownx.emoji: - pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg emoji_generator: !!python/name:material.extensions.emoji.to_svg

8
package.json

@ -5,7 +5,11 @@
"dev": "docker compose -f docker-compose.dev.yml up --build", "dev": "docker compose -f docker-compose.dev.yml up --build",
"build": "docker build -t wg-easy .", "build": "docker build -t wg-easy .",
"docs:preview": "docker run --rm -it -p 8080:8080 -v ./docs:/docs squidfunk/mkdocs-material serve -a 0.0.0.0:8080", "docs:preview": "docker run --rm -it -p 8080:8080 -v ./docs:/docs squidfunk/mkdocs-material serve -a 0.0.0.0:8080",
"scripts:version": "bash scripts/version.sh" "scripts:version": "bash scripts/version.sh",
"format:check:docs": "prettier --check docs"
}, },
"packageManager": "[email protected]" "devDependencies": {
"prettier": "^3.5.3"
},
"packageManager": "[email protected]"
} }

17
pnpm-lock.yaml

@ -6,4 +6,19 @@ settings:
importers: importers:
.: {} .:
devDependencies:
prettier:
specifier: ^3.5.3
version: 3.5.3
packages:
[email protected]:
resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
engines: {node: '>=14'}
hasBin: true
snapshots:
[email protected]: {}

4
src/package.json

@ -20,7 +20,7 @@
"dependencies": { "dependencies": {
"@eschricht/nuxt-color-mode": "^1.1.5", "@eschricht/nuxt-color-mode": "^1.1.5",
"@heroicons/vue": "^2.2.0", "@heroicons/vue": "^2.2.0",
"@libsql/client": "^0.15.3", "@libsql/client": "^0.15.4",
"@nuxtjs/i18n": "^9.5.3", "@nuxtjs/i18n": "^9.5.3",
"@nuxtjs/tailwindcss": "^6.13.2", "@nuxtjs/tailwindcss": "^6.13.2",
"@phc/format": "^1.0.0", "@phc/format": "^1.0.0",
@ -61,5 +61,5 @@
"typescript": "^5.8.3", "typescript": "^5.8.3",
"vue-tsc": "^2.2.8" "vue-tsc": "^2.2.8"
}, },
"packageManager": "[email protected].0" "packageManager": "[email protected].1"
} }

265
src/pnpm-lock.yaml

@ -15,8 +15,8 @@ importers:
specifier: ^2.2.0 specifier: ^2.2.0
version: 2.2.0([email protected]([email protected])) version: 2.2.0([email protected]([email protected]))
'@libsql/client': '@libsql/client':
specifier: ^0.15.3 specifier: ^0.15.4
version: 0.15.3 version: 0.15.4
'@nuxtjs/i18n': '@nuxtjs/i18n':
specifier: ^9.5.3 specifier: ^9.5.3
version: 9.5.3(@vue/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected]([email protected])) version: 9.5.3(@vue/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected]([email protected]))
@ -49,7 +49,7 @@ importers:
version: 4.4.0 version: 4.4.0
drizzle-orm: drizzle-orm:
specifier: ^0.41.0 specifier: ^0.41.0
version: 0.41.0(@libsql/[email protected].3)([email protected]) version: 0.41.0(@libsql/[email protected].4)([email protected])
ip-bigint: ip-bigint:
specifier: ^8.2.1 specifier: ^8.2.1
version: 8.2.1 version: 8.2.1
@ -64,7 +64,7 @@ importers:
version: 0.11.0 version: 0.11.0
nuxt: nuxt:
specifier: ^3.16.2 specifier: ^3.16.2
version: 3.16.2(@libsql/[email protected].3)(@parcel/[email protected])(@types/[email protected])([email protected](@libsql/[email protected])([email protected](@libsql/[email protected])([email protected])))([email protected](@libsql/[email protected])([email protected]))([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))([email protected]) version: 3.16.2(@libsql/[email protected].4)(@parcel/[email protected])(@types/[email protected])([email protected](@libsql/[email protected])([email protected](@libsql/[email protected])([email protected])))([email protected](@libsql/[email protected])([email protected]))([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))([email protected])
otpauth: otpauth:
specifier: ^9.4.0 specifier: ^9.4.0
version: 9.4.0 version: 9.4.0
@ -949,19 +949,19 @@ packages:
'@kwsites/[email protected]': '@kwsites/[email protected]':
resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==}
'@libsql/[email protected].3': '@libsql/[email protected].4':
resolution: {integrity: sha512-JtJdpfwJFg059ZeFXs7uf7PeRczQcw7kD8rV2qAeKlWvc+oBSZKT4bLajo3n2o/HrLp9IvpKHee5xm9fDLzu+g==} resolution: {integrity: sha512-m8a7giWlhLdfKVIZFd3UlBptWTS+H0toSOL09BxbqzBeFHwuVC+5ewyi4LMBxoy2TLNQGE4lO8cwpsTWmu695w==}
'@libsql/[email protected].3': '@libsql/[email protected].4':
resolution: {integrity: sha512-q5l+h0vtXbn1gTfpkau4P946IutaaiRzpfPX9lJzEOWu2Pt1n9BtbIWpDYLk8A5t81xXWlZvvCe9GgE61tgFrw==} resolution: {integrity: sha512-NMvh6xnn3vrcd7DNehj0HiJcRWB2a8hHhJUTkOBej3Pf3KB21HOmdOUjXxJ5pGbjWXh4ezQBmHtF5ozFhocXaA==}
'@libsql/[email protected].5': '@libsql/[email protected].6':
resolution: {integrity: sha512-PEWL5G+VYZjJSE1ljqJccc1L37l6FR/SyGpgFAs96vqevTBUFQ20p5ytvHhy4PmA9TuB+6GcoFq/UOjYcaw2Sg==} resolution: {integrity: sha512-N0lt/I6xCTW6zE3J1I0/YH+TFnoMeZyeSorfLWg1wQi6QrB2PQ3je4R/bGViaU1uMEXaCc5OyI3GrrXJIDOLWg==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@libsql/[email protected].5': '@libsql/[email protected].6':
resolution: {integrity: sha512-cw298nZ/fn3KXuP/nC4gxkboBvw+QAB8yR+UrlZyoOGa3lk9bJNRbkJKj/Kw8s4nbPF+wx6mDWF1rTN8ey7mnQ==} resolution: {integrity: sha512-v8YYImGB3klHvLViWAqsmgYuG32iO+Mt52VSfuqM5m8KzI2XQ2CRxKdBGYnLI9D3Q1T7upYGuHVTSoK3GpKoXQ==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@ -975,28 +975,28 @@ packages:
'@libsql/[email protected]': '@libsql/[email protected]':
resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==}
'@libsql/[email protected].5': '@libsql/[email protected].6':
resolution: {integrity: sha512-OCT6u5m3X8uuSaJtvrrJ1k4EjZADUs4whRSelKKgGLho0H47G86YkhbqXbmMN9GEREpUcgVkA0HfxQzrglQTjQ==} resolution: {integrity: sha512-2SdnSd/Tg+l5qN4yuc7Fh9Uvy/TakL8RiBJMSZEQkFta4FBk9H/Cp49SF9YRx9g2jItTlzOGJ+PAfnkU5HbabA==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@libsql/[email protected].5': '@libsql/[email protected].6':
resolution: {integrity: sha512-tyRvTLuPkZvdHhxKIxJ+f6WPZEO47xHQUnXRPOcxVa66FCDRPn2fbrCWhXGhWFVSNEuYx54U5pd3pjOvZNeJoQ==} resolution: {integrity: sha512-DhfDtTWksAGXe70fA4cyhJHGYBB2BpLnF9EB1Rli2ACHrQbgWFHCiSrSg91tk4UVCVRDZ91KkXqU5bWL16Kwcg==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@libsql/[email protected].5': '@libsql/[email protected].6':
resolution: {integrity: sha512-ZJVLNPlF+g/7yINmE89ldi5RmQy7YTqnJzmKyP2CDjdJ7QgslESbnMSvhNfPJ1S7fsRQw2SUYp6Is5hw9FP8Hg==} resolution: {integrity: sha512-lB6zcJw0u+Y3d2rN4ruxJtqxq9UjtzsoA+naJFmYEiDcls1p6OZQ+0OphO5qzTuet/MwbmiHrda/Kk15brBQBw==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@libsql/[email protected].5': '@libsql/[email protected].6':
resolution: {integrity: sha512-SYefkMu7vCBFAjNTysT9a8BJgVsCp8Jl7ehfkZLLYnbXz04qCdKK5Q3Z94AXPvClGXWKsha7AOR8zofQYhbGdg==} resolution: {integrity: sha512-gNbiJg0GGhKZSCTiRpbd9cD2/xT1Nj8bnXra+5ZvPYxiIaphE9xy3ELPIZjGIzBLX9dnn5E920K2tIOrBMRVBw==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@libsql/[email protected].5': '@libsql/[email protected].6':
resolution: {integrity: sha512-w6G7aONV7gVPAtAs7jUxMJBHYURyYx0FNNG+G/oPgGxTrgYJ7cPW1gOp+7SjzPUBCJJrKVf7VJkRjmJLr6RORw==} resolution: {integrity: sha512-8PtI2LrcacvFvzGOkm1CFCGWR5Y5eJDliAlZUEv7BTSAWf07FIVi21mEAyB9VG5y3VpWtY0f+6JYblrwqgqD3A==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -1365,8 +1365,8 @@ packages:
resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
'@pkgr/[email protected].2': '@pkgr/[email protected].3':
resolution: {integrity: sha512-25L86MyPvnlQoX2MTIV2OiUcb6vJ6aRbFa9pbwByn95INKD5mFH2smgjDhq+fwJoqAgvgbdJLj6Tz7V9X5CFAQ==} resolution: {integrity: sha512-yMV8bb9prWI21N6FsrnPCbhoYb8UUvYCDGoSvPHBloVC095Ef2ker43hzXkJ6TpJPw53S8FeFYkARa7GGIGwxg==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
'@polka/[email protected]': '@polka/[email protected]':
@ -1668,51 +1668,51 @@ packages:
'@types/[email protected]': '@types/[email protected]':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
'@typescript-eslint/eslint-plugin@8.29.1': '@typescript-eslint/eslint-plugin@8.30.1':
resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==} resolution: {integrity: sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/parser@8.29.1': '@typescript-eslint/parser@8.30.1':
resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==} resolution: {integrity: sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/scope-manager@8.29.1': '@typescript-eslint/scope-manager@8.30.1':
resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==} resolution: {integrity: sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/type-utils@8.29.1': '@typescript-eslint/type-utils@8.30.1':
resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==} resolution: {integrity: sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/types@8.29.1': '@typescript-eslint/types@8.30.1':
resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==} resolution: {integrity: sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.29.1': '@typescript-eslint/typescript-estree@8.30.1':
resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==} resolution: {integrity: sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/utils@8.29.1': '@typescript-eslint/utils@8.30.1':
resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==} resolution: {integrity: sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/visitor-keys@8.29.1': '@typescript-eslint/visitor-keys@8.30.1':
resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==} resolution: {integrity: sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@unhead/[email protected]': '@unhead/[email protected]':
@ -2620,8 +2620,8 @@ packages:
[email protected]: [email protected]:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
[email protected]6: [email protected]7:
resolution: {integrity: sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==} resolution: {integrity: sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==}
[email protected]: [email protected]:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@ -3001,8 +3001,8 @@ packages:
[email protected]: [email protected]:
resolution: {integrity: sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==} resolution: {integrity: sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==}
git-url-parse@16.0.1: [email protected].0:
resolution: {integrity: sha512-mcD36GrhAzX5JVOsIO52qNpgRyFzYWRbU1VSRFCvJt1IJvqfvH427wWw/CFqkWvjVPtdG5VTx4MKUeC5GeFPDQ==} resolution: {integrity: sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw==}
[email protected]: [email protected]:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@ -3408,9 +3408,8 @@ packages:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
[email protected]: [email protected]:
resolution: {integrity: sha512-TEFJ1X6lP0yDZIUYznlvQnzdajQ7TEPAAw1C9AvFiDp4OSBiH//yj3VHbYQSFkeHtFvL+6O4waOWQM1LA5Qggw==} resolution: {integrity: sha512-k0qHpyU47iWBplT4IJKEcMgUbms8jl9cNGE6aqsdOYmSJjtZIaYkn8f4ku5DzxRHpk1+o4FK7ZwGVCExYboZqQ==}
cpu: [x64, arm64, wasm32]
os: [darwin, linux, win32] os: [darwin, linux, win32]
[email protected]: [email protected]:
@ -3740,8 +3739,8 @@ packages:
[email protected]: [email protected]:
resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==}
[email protected].0: [email protected].1:
resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} resolution: {integrity: sha512-zy1wx4+P3PfhXSEPJNtZmJXfhkkIaxU1VauWIrDZw1O7uJRDRJtKr9n3Ic4NgbA16KyOxOXO2ng9gYwCdXuSXA==}
engines: {node: '>=18'} engines: {node: '>=18'}
[email protected]: [email protected]:
@ -3804,8 +3803,8 @@ packages:
resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
parse-path@7.0.2: parse-path@7.1.0:
resolution: {integrity: sha512-env5u88RpqhTX1OGbWCkZuueRhmK8qFXwyGyTWuC/Vz4a+eUIHM/CCq5L1YtmdQeKBVh+CtZdH0WiY4axuySfg==} resolution: {integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==}
[email protected]: [email protected]:
resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==} resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==}
@ -3899,8 +3898,8 @@ packages:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'} engines: {node: '>=4'}
[email protected]5: [email protected]6:
resolution: {integrity: sha512-73JaFg4NwYNAufDtS5FsFu/PdM49ahJrO1i44aCRsDWju1z5wuGDaqyFUQWR6aJoK2JPDWlaYYAGFNIGTSUHSw==} resolution: {integrity: sha512-gMKUzCoP+feA7t45moaSx7UniU7PgGN3hA8acAB+3Qn7/js0/lJ07fYZlxt9riE9S3myyxDCyAFzSrLlta0c9g==}
engines: {node: '>= 10.12'} engines: {node: '>= 10.12'}
[email protected]: [email protected]:
@ -5607,7 +5606,7 @@ snapshots:
h3: 1.15.1 h3: 1.15.1
mlly: 1.7.4 mlly: 1.7.4
mrmime: 2.0.1 mrmime: 2.0.1
open: 10.1.0 open: 10.1.1
tinyglobby: 0.2.12 tinyglobby: 0.2.12
ws: 8.18.1 ws: 8.18.1
transitivePeerDependencies: transitivePeerDependencies:
@ -5741,8 +5740,8 @@ snapshots:
'@intlify/shared': 11.1.3 '@intlify/shared': 11.1.3
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/[email protected])(@vue/[email protected])([email protected]([email protected]([email protected])))([email protected]([email protected])) '@intlify/vue-i18n-extensions': 8.0.0(@intlify/[email protected])(@vue/[email protected])([email protected]([email protected]([email protected])))([email protected]([email protected]))
'@rollup/pluginutils': 5.1.4([email protected]) '@rollup/pluginutils': 5.1.4([email protected])
'@typescript-eslint/scope-manager': 8.29.1 '@typescript-eslint/scope-manager': 8.30.1
'@typescript-eslint/typescript-estree': 8.29.1([email protected]) '@typescript-eslint/typescript-estree': 8.30.1([email protected])
debug: 4.4.0 debug: 4.4.0
fast-glob: 3.3.3 fast-glob: 3.3.3
js-yaml: 4.1.0 js-yaml: 4.1.0
@ -5829,25 +5828,25 @@ snapshots:
'@kwsites/[email protected]': {} '@kwsites/[email protected]': {}
'@libsql/[email protected].3': '@libsql/[email protected].4':
dependencies: dependencies:
'@libsql/core': 0.15.3 '@libsql/core': 0.15.4
'@libsql/hrana-client': 0.7.0 '@libsql/hrana-client': 0.7.0
js-base64: 3.7.7 js-base64: 3.7.7
libsql: 0.5.5 libsql: 0.5.6
promise-limit: 2.7.0 promise-limit: 2.7.0
transitivePeerDependencies: transitivePeerDependencies:
- bufferutil - bufferutil
- utf-8-validate - utf-8-validate
'@libsql/[email protected].3': '@libsql/[email protected].4':
dependencies: dependencies:
js-base64: 3.7.7 js-base64: 3.7.7
'@libsql/[email protected].5': '@libsql/[email protected].6':
optional: true optional: true
'@libsql/[email protected].5': '@libsql/[email protected].6':
optional: true optional: true
'@libsql/[email protected]': '@libsql/[email protected]':
@ -5870,19 +5869,19 @@ snapshots:
- bufferutil - bufferutil
- utf-8-validate - utf-8-validate
'@libsql/[email protected].5': '@libsql/[email protected].6':
optional: true optional: true
'@libsql/[email protected].5': '@libsql/[email protected].6':
optional: true optional: true
'@libsql/[email protected].5': '@libsql/[email protected].6':
optional: true optional: true
'@libsql/[email protected].5': '@libsql/[email protected].6':
optional: true optional: true
'@libsql/[email protected].5': '@libsql/[email protected].6':
optional: true optional: true
'@mapbox/[email protected]': '@mapbox/[email protected]':
@ -6044,8 +6043,8 @@ snapshots:
'@eslint/js': 9.24.0 '@eslint/js': 9.24.0
'@nuxt/eslint-plugin': 1.3.0([email protected]([email protected]))([email protected]) '@nuxt/eslint-plugin': 1.3.0([email protected]([email protected]))([email protected])
'@stylistic/eslint-plugin': 4.2.0([email protected]([email protected]))([email protected]) '@stylistic/eslint-plugin': 4.2.0([email protected]([email protected]))([email protected])
'@typescript-eslint/eslint-plugin': 8.29.1(@typescript-eslint/[email protected].1([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected]) '@typescript-eslint/eslint-plugin': 8.30.1(@typescript-eslint/[email protected].1([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])
'@typescript-eslint/parser': 8.29.1([email protected]([email protected]))([email protected]) '@typescript-eslint/parser': 8.30.1([email protected]([email protected]))([email protected])
eslint: 9.24.0([email protected]) eslint: 9.24.0([email protected])
eslint-config-flat-gitignore: 2.1.0([email protected]([email protected])) eslint-config-flat-gitignore: 2.1.0([email protected]([email protected]))
eslint-flat-config-utils: 2.0.1 eslint-flat-config-utils: 2.0.1
@ -6067,8 +6066,8 @@ snapshots:
'@nuxt/[email protected]([email protected]([email protected]))([email protected])': '@nuxt/[email protected]([email protected]([email protected]))([email protected])':
dependencies: dependencies:
'@typescript-eslint/types': 8.29.1 '@typescript-eslint/types': 8.30.1
'@typescript-eslint/utils': 8.29.1([email protected]([email protected]))([email protected]) '@typescript-eslint/utils': 8.30.1([email protected]([email protected]))([email protected])
eslint: 9.24.0([email protected]) eslint: 9.24.0([email protected])
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -6141,7 +6140,7 @@ snapshots:
consola: 3.4.2 consola: 3.4.2
destr: 2.0.5 destr: 2.0.5
dotenv: 16.5.0 dotenv: 16.5.0
git-url-parse: 16.0.1 git-url-parse: 16.1.0
is-docker: 3.0.0 is-docker: 3.0.0
ofetch: 1.4.1 ofetch: 1.4.1
package-manager-detector: 1.1.0 package-manager-detector: 1.1.0
@ -6423,7 +6422,7 @@ snapshots:
'@pkgr/[email protected]': {} '@pkgr/[email protected]': {}
'@pkgr/[email protected].2': {} '@pkgr/[email protected].3': {}
'@polka/[email protected]': {} '@polka/[email protected]': {}
@ -6578,7 +6577,7 @@ snapshots:
'@stylistic/[email protected]([email protected]([email protected]))([email protected])': '@stylistic/[email protected]([email protected]([email protected]))([email protected])':
dependencies: dependencies:
'@typescript-eslint/utils': 8.29.1([email protected]([email protected]))([email protected]) '@typescript-eslint/utils': 8.30.1([email protected]([email protected]))([email protected])
eslint: 9.24.0([email protected]) eslint: 9.24.0([email protected])
eslint-visitor-keys: 4.2.0 eslint-visitor-keys: 4.2.0
espree: 10.3.0 espree: 10.3.0
@ -6664,14 +6663,14 @@ snapshots:
dependencies: dependencies:
'@types/node': 22.14.1 '@types/node': 22.14.1
'@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/[email protected].1([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])': '@typescript-eslint/eslint-plugin@8.30.1(@typescript-eslint/[email protected].1([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])':
dependencies: dependencies:
'@eslint-community/regexpp': 4.12.1 '@eslint-community/regexpp': 4.12.1
'@typescript-eslint/parser': 8.29.1([email protected]([email protected]))([email protected]) '@typescript-eslint/parser': 8.30.1([email protected]([email protected]))([email protected])
'@typescript-eslint/scope-manager': 8.29.1 '@typescript-eslint/scope-manager': 8.30.1
'@typescript-eslint/type-utils': 8.29.1([email protected]([email protected]))([email protected]) '@typescript-eslint/type-utils': 8.30.1([email protected]([email protected]))([email protected])
'@typescript-eslint/utils': 8.29.1([email protected]([email protected]))([email protected]) '@typescript-eslint/utils': 8.30.1([email protected]([email protected]))([email protected])
'@typescript-eslint/visitor-keys': 8.29.1 '@typescript-eslint/visitor-keys': 8.30.1
eslint: 9.24.0([email protected]) eslint: 9.24.0([email protected])
graphemer: 1.4.0 graphemer: 1.4.0
ignore: 5.3.2 ignore: 5.3.2
@ -6681,27 +6680,27 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/parser@8.29.1([email protected]([email protected]))([email protected])': '@typescript-eslint/parser@8.30.1([email protected]([email protected]))([email protected])':
dependencies: dependencies:
'@typescript-eslint/scope-manager': 8.29.1 '@typescript-eslint/scope-manager': 8.30.1
'@typescript-eslint/types': 8.29.1 '@typescript-eslint/types': 8.30.1
'@typescript-eslint/typescript-estree': 8.29.1([email protected]) '@typescript-eslint/typescript-estree': 8.30.1([email protected])
'@typescript-eslint/visitor-keys': 8.29.1 '@typescript-eslint/visitor-keys': 8.30.1
debug: 4.4.0 debug: 4.4.0
eslint: 9.24.0([email protected]) eslint: 9.24.0([email protected])
typescript: 5.8.3 typescript: 5.8.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/scope-manager@8.29.1': '@typescript-eslint/scope-manager@8.30.1':
dependencies: dependencies:
'@typescript-eslint/types': 8.29.1 '@typescript-eslint/types': 8.30.1
'@typescript-eslint/visitor-keys': 8.29.1 '@typescript-eslint/visitor-keys': 8.30.1
'@typescript-eslint/type-utils@8.29.1([email protected]([email protected]))([email protected])': '@typescript-eslint/type-utils@8.30.1([email protected]([email protected]))([email protected])':
dependencies: dependencies:
'@typescript-eslint/typescript-estree': 8.29.1([email protected]) '@typescript-eslint/typescript-estree': 8.30.1([email protected])
'@typescript-eslint/utils': 8.29.1([email protected]([email protected]))([email protected]) '@typescript-eslint/utils': 8.30.1([email protected]([email protected]))([email protected])
debug: 4.4.0 debug: 4.4.0
eslint: 9.24.0([email protected]) eslint: 9.24.0([email protected])
ts-api-utils: 2.1.0([email protected]) ts-api-utils: 2.1.0([email protected])
@ -6709,12 +6708,12 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/types@8.29.1': {} '@typescript-eslint/types@8.30.1': {}
'@typescript-eslint/typescript-estree@8.29.1([email protected])': '@typescript-eslint/typescript-estree@8.30.1([email protected])':
dependencies: dependencies:
'@typescript-eslint/types': 8.29.1 '@typescript-eslint/types': 8.30.1
'@typescript-eslint/visitor-keys': 8.29.1 '@typescript-eslint/visitor-keys': 8.30.1
debug: 4.4.0 debug: 4.4.0
fast-glob: 3.3.3 fast-glob: 3.3.3
is-glob: 4.0.3 is-glob: 4.0.3
@ -6725,20 +6724,20 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/utils@8.29.1([email protected]([email protected]))([email protected])': '@typescript-eslint/utils@8.30.1([email protected]([email protected]))([email protected])':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.6.0([email protected]([email protected])) '@eslint-community/eslint-utils': 4.6.0([email protected]([email protected]))
'@typescript-eslint/scope-manager': 8.29.1 '@typescript-eslint/scope-manager': 8.30.1
'@typescript-eslint/types': 8.29.1 '@typescript-eslint/types': 8.30.1
'@typescript-eslint/typescript-estree': 8.29.1([email protected]) '@typescript-eslint/typescript-estree': 8.30.1([email protected])
eslint: 9.24.0([email protected]) eslint: 9.24.0([email protected])
typescript: 5.8.3 typescript: 5.8.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/visitor-keys@8.29.1': '@typescript-eslint/visitor-keys@8.30.1':
dependencies: dependencies:
'@typescript-eslint/types': 8.29.1 '@typescript-eslint/types': 8.30.1
eslint-visitor-keys: 4.2.0 eslint-visitor-keys: 4.2.0
'@unhead/[email protected]([email protected]([email protected]))': '@unhead/[email protected]([email protected]([email protected]))':
@ -7167,7 +7166,7 @@ snapshots:
[email protected]: [email protected]:
dependencies: dependencies:
caniuse-lite: 1.0.30001713 caniuse-lite: 1.0.30001713
electron-to-chromium: 1.5.136 electron-to-chromium: 1.5.137
node-releases: 2.0.19 node-releases: 2.0.19
update-browserslist-db: 1.1.3([email protected]) update-browserslist-db: 1.1.3([email protected])
@ -7467,10 +7466,10 @@ snapshots:
[email protected]: {} [email protected]: {}
[email protected](@libsql/[email protected].3)([email protected](@libsql/[email protected])([email protected])): [email protected](@libsql/[email protected].4)([email protected](@libsql/[email protected])([email protected])):
optionalDependencies: optionalDependencies:
'@libsql/client': 0.15.3 '@libsql/client': 0.15.4
drizzle-orm: 0.41.0(@libsql/[email protected].3)([email protected]) drizzle-orm: 0.41.0(@libsql/[email protected].4)([email protected])
[email protected]: {} [email protected]: {}
@ -7565,9 +7564,9 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
[email protected](@libsql/[email protected].3)([email protected]): [email protected](@libsql/[email protected].4)([email protected]):
optionalDependencies: optionalDependencies:
'@libsql/client': 0.15.3 '@libsql/client': 0.15.4
gel: 2.0.2 gel: 2.0.2
[email protected]: [email protected]:
@ -7582,7 +7581,7 @@ snapshots:
[email protected]: {} [email protected]: {}
[email protected]6: {} [email protected]7: {}
[email protected]: {} [email protected]: {}
@ -7746,9 +7745,9 @@ snapshots:
[email protected]([email protected]([email protected]))([email protected]): [email protected]([email protected]([email protected]))([email protected]):
dependencies: dependencies:
'@pkgr/core': 0.2.2 '@pkgr/core': 0.2.3
'@types/doctrine': 0.0.9 '@types/doctrine': 0.0.9
'@typescript-eslint/utils': 8.29.1([email protected]([email protected]))([email protected]) '@typescript-eslint/utils': 8.30.1([email protected]([email protected]))([email protected])
debug: 4.4.0 debug: 4.4.0
doctrine: 3.0.0 doctrine: 3.0.0
eslint: 9.24.0([email protected]) eslint: 9.24.0([email protected])
@ -8094,7 +8093,7 @@ snapshots:
is-ssh: 1.4.1 is-ssh: 1.4.1
parse-url: 9.2.0 parse-url: 9.2.0
git-url-parse@16.0.1: [email protected].0:
dependencies: dependencies:
git-up: 8.1.1 git-up: 8.1.1
@ -8516,18 +8515,18 @@ snapshots:
prelude-ls: 1.2.1 prelude-ls: 1.2.1
type-check: 0.4.0 type-check: 0.4.0
[email protected].5: [email protected].6:
dependencies: dependencies:
'@neon-rs/load': 0.0.4 '@neon-rs/load': 0.0.4
detect-libc: 2.0.2 detect-libc: 2.0.2
optionalDependencies: optionalDependencies:
'@libsql/darwin-arm64': 0.5.5 '@libsql/darwin-arm64': 0.5.6
'@libsql/darwin-x64': 0.5.5 '@libsql/darwin-x64': 0.5.6
'@libsql/linux-arm64-gnu': 0.5.5 '@libsql/linux-arm64-gnu': 0.5.6
'@libsql/linux-arm64-musl': 0.5.5 '@libsql/linux-arm64-musl': 0.5.6
'@libsql/linux-x64-gnu': 0.5.5 '@libsql/linux-x64-gnu': 0.5.6
'@libsql/linux-x64-musl': 0.5.5 '@libsql/linux-x64-musl': 0.5.6
'@libsql/win32-x64-msvc': 0.5.5 '@libsql/win32-x64-msvc': 0.5.6
[email protected]: {} [email protected]: {}
@ -8700,7 +8699,7 @@ snapshots:
[email protected]: {} [email protected]: {}
[email protected](@libsql/[email protected].3)([email protected](@libsql/[email protected])([email protected])): [email protected](@libsql/[email protected].4)([email protected](@libsql/[email protected])([email protected])):
dependencies: dependencies:
'@cloudflare/kv-asset-handler': 0.4.0 '@cloudflare/kv-asset-handler': 0.4.0
'@netlify/functions': 3.0.4 '@netlify/functions': 3.0.4
@ -8722,7 +8721,7 @@ snapshots:
cookie-es: 2.0.0 cookie-es: 2.0.0
croner: 9.0.0 croner: 9.0.0
crossws: 0.3.4 crossws: 0.3.4
db0: 0.3.1(@libsql/[email protected].3)([email protected](@libsql/[email protected])([email protected])) db0: 0.3.1(@libsql/[email protected].4)([email protected](@libsql/[email protected])([email protected]))
defu: 6.1.4 defu: 6.1.4
destr: 2.0.5 destr: 2.0.5
dot-prop: 9.0.0 dot-prop: 9.0.0
@ -8768,7 +8767,7 @@ snapshots:
unenv: 2.0.0-rc.15 unenv: 2.0.0-rc.15
unimport: 5.0.0 unimport: 5.0.0
unplugin-utils: 0.2.4 unplugin-utils: 0.2.4
unstorage: 1.15.0([email protected](@libsql/[email protected].3)([email protected](@libsql/[email protected])([email protected])))([email protected]) unstorage: 1.15.0([email protected](@libsql/[email protected].4)([email protected](@libsql/[email protected])([email protected])))([email protected])
untyped: 2.0.0 untyped: 2.0.0
unwasm: 0.3.9 unwasm: 0.3.9
youch: 4.1.0-beta.7 youch: 4.1.0-beta.7
@ -8853,7 +8852,7 @@ snapshots:
dependencies: dependencies:
boolbase: 1.0.0 boolbase: 1.0.0
[email protected](@libsql/[email protected].3)(@parcel/[email protected])(@types/[email protected])([email protected](@libsql/[email protected])([email protected](@libsql/[email protected])([email protected])))([email protected](@libsql/[email protected])([email protected]))([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))([email protected]): [email protected](@libsql/[email protected].4)(@parcel/[email protected])(@types/[email protected])([email protected](@libsql/[email protected])([email protected](@libsql/[email protected])([email protected])))([email protected](@libsql/[email protected])([email protected]))([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))([email protected]):
dependencies: dependencies:
'@nuxt/cli': 3.24.1([email protected]) '@nuxt/cli': 3.24.1([email protected])
'@nuxt/devalue': 2.0.2 '@nuxt/devalue': 2.0.2
@ -8890,7 +8889,7 @@ snapshots:
mlly: 1.7.4 mlly: 1.7.4
mocked-exports: 0.1.1 mocked-exports: 0.1.1
nanotar: 0.2.0 nanotar: 0.2.0
nitropack: 2.11.9(@libsql/[email protected].3)([email protected](@libsql/[email protected])([email protected])) nitropack: 2.11.9(@libsql/[email protected].4)([email protected](@libsql/[email protected])([email protected]))
nypm: 0.6.0 nypm: 0.6.0
ofetch: 1.4.1 ofetch: 1.4.1
ohash: 2.0.11 ohash: 2.0.11
@ -8912,7 +8911,7 @@ snapshots:
unimport: 4.2.0 unimport: 4.2.0
unplugin: 2.3.2 unplugin: 2.3.2
unplugin-vue-router: 0.12.0([email protected]([email protected]([email protected])))([email protected]([email protected])) unplugin-vue-router: 0.12.0([email protected]([email protected]([email protected])))([email protected]([email protected]))
unstorage: 1.15.0([email protected](@libsql/[email protected].3)([email protected](@libsql/[email protected])([email protected])))([email protected]) unstorage: 1.15.0([email protected](@libsql/[email protected].4)([email protected](@libsql/[email protected])([email protected])))([email protected])
untyped: 2.0.0 untyped: 2.0.0
vue: 3.5.13([email protected]) vue: 3.5.13([email protected])
vue-bundle-renderer: 2.1.1 vue-bundle-renderer: 2.1.1
@ -9010,7 +9009,7 @@ snapshots:
[email protected]: {} [email protected]: {}
[email protected].0: [email protected].1:
dependencies: dependencies:
default-browser: 5.2.1 default-browser: 5.2.1
define-lazy-prop: 3.0.0 define-lazy-prop: 3.0.0
@ -9110,14 +9109,14 @@ snapshots:
index-to-position: 1.1.0 index-to-position: 1.1.0
type-fest: 4.39.1 type-fest: 4.39.1
parse-path@7.0.2: parse-path@7.1.0:
dependencies: dependencies:
protocols: 2.0.2 protocols: 2.0.2
[email protected]: [email protected]:
dependencies: dependencies:
'@types/parse-path': 7.0.3 '@types/parse-path': 7.0.3
parse-path: 7.0.2 parse-path: 7.1.0
[email protected]: {} [email protected]: {}
@ -9181,7 +9180,7 @@ snapshots:
[email protected]: {} [email protected]: {}
[email protected]5: [email protected]6:
dependencies: dependencies:
async: 3.2.6 async: 3.2.6
debug: 4.4.0 debug: 4.4.0
@ -9825,7 +9824,7 @@ snapshots:
koa: 2.16.1 koa: 2.16.1
koa-static: 5.0.0 koa-static: 5.0.0
open: 7.4.2 open: 7.4.2
portfinder: 1.0.35 portfinder: 1.0.36
replace-in-file: 6.3.5 replace-in-file: 6.3.5
tailwindcss: 3.4.17 tailwindcss: 3.4.17
transitivePeerDependencies: transitivePeerDependencies:
@ -10070,7 +10069,7 @@ snapshots:
'@unrs/resolver-binding-win32-ia32-msvc': 1.5.0 '@unrs/resolver-binding-win32-ia32-msvc': 1.5.0
'@unrs/resolver-binding-win32-x64-msvc': 1.5.0 '@unrs/resolver-binding-win32-x64-msvc': 1.5.0
[email protected]([email protected](@libsql/[email protected].3)([email protected](@libsql/[email protected])([email protected])))([email protected]): [email protected]([email protected](@libsql/[email protected].4)([email protected](@libsql/[email protected])([email protected])))([email protected]):
dependencies: dependencies:
anymatch: 3.1.3 anymatch: 3.1.3
chokidar: 4.0.3 chokidar: 4.0.3
@ -10081,7 +10080,7 @@ snapshots:
ofetch: 1.4.1 ofetch: 1.4.1
ufo: 1.6.1 ufo: 1.6.1
optionalDependencies: optionalDependencies:
db0: 0.3.1(@libsql/[email protected].3)([email protected](@libsql/[email protected])([email protected])) db0: 0.3.1(@libsql/[email protected].4)([email protected](@libsql/[email protected])([email protected]))
ioredis: 5.6.1 ioredis: 5.6.1
[email protected]: [email protected]:
@ -10187,7 +10186,7 @@ snapshots:
debug: 4.4.0 debug: 4.4.0
error-stack-parser-es: 1.0.5 error-stack-parser-es: 1.0.5
ohash: 2.0.11 ohash: 2.0.11
open: 10.1.0 open: 10.1.1
perfect-debounce: 1.0.0 perfect-debounce: 1.0.0
sirv: 3.0.1 sirv: 3.0.1
unplugin-utils: 0.2.4 unplugin-utils: 0.2.4

Loading…
Cancel
Save