Browse Source

Feat: Cli (#1818)

* add cli

* fix lint

* add docs, include cli packages

* fix docs, username instead of name
pull/1819/head
Bernd Storath 2 weeks ago
committed by GitHub
parent
commit
84ed7b299f
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 3
      Dockerfile
  2. 1
      Dockerfile.dev
  3. 9
      README.md
  4. 2
      docker-compose.dev.yml
  5. 20
      docs/content/faq.md
  6. 43
      docs/content/guides/cli.md
  7. 3
      package.json
  8. 25
      src/cli/build.js
  9. 5
      src/cli/cli.sh
  10. 92
      src/cli/index.ts
  11. 6
      src/nuxt.config.ts
  12. 10
      src/package.json
  13. 113
      src/pnpm-lock.yaml
  14. 2
      src/server/utils/password.ts

3
Dockerfile

@ -27,6 +27,9 @@ COPY --from=build /app/.output /app
COPY --from=build /app/server/database/migrations /app/server/database/migrations
# libsql
RUN cd /app/server && npm install --no-save libsql
# cli
COPY --from=build /app/cli/cli.sh /usr/local/bin/cli
RUN chmod +x /usr/local/bin/cli
# Install Linux packages
RUN apk add --no-cache \

1
Dockerfile.dev

@ -36,3 +36,4 @@ RUN pnpm install
# Copy Project
COPY src ./
ENTRYPOINT [ "pnpm", "run" ]

9
README.md

@ -116,6 +116,15 @@ If you add something that should be auto-importable and VSCode complains, run:
```shell
cd src
pnpm install
cd ..
```
### Test Cli
This starts the cli with docker
```shell
pnpm cli:dev
```
## License

2
docker-compose.dev.yml

@ -2,7 +2,7 @@ services:
wg-easy:
build:
dockerfile: ./Dockerfile.dev
command: pnpm run dev
command: dev
volumes:
- ./src/:/app/
- temp:/app/.nuxt/

20
docs/content/faq.md

@ -14,13 +14,13 @@ 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:
```bash
```shell
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:
```bash
```shell
echo "wireguard" | sudo tee -a /etc/modules
```
@ -32,13 +32,13 @@ 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:
```bash
```shell
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:
```bash
```shell
echo "iptable_nat" | sudo tee -a /etc/modules
```
@ -50,13 +50,13 @@ 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:
```bash
```shell
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:
```bash
```shell
echo "ip6table_nat" | sudo tee -a /etc/modules
```
@ -68,13 +68,13 @@ 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:
```bash
```shell
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:
```bash
```shell
echo "iptable_filter" | sudo tee -a /etc/modules
```
@ -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:
```bash
```shell
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:
```bash
```shell
echo "ip6table_filter" | sudo tee -a /etc/modules
```

43
docs/content/guides/cli.md

@ -0,0 +1,43 @@
---
title: CLI
---
If you want to use the CLI, you can run it with
### Docker Compose
```shell
cd /etc/docker/containers/wg-easy
docker compose exec -it wg-easy cli
```
### Docker Run
```shell
docker run --rm -it \
-v ~/.wg-easy:/etc/wireguard \
ghcr.io/wg-easy/wg-easy:15 \
cli
```
### Reset Password
If you want to reset the password for the admin user, you can run the following command:
#### By Prompt
```shell
cd /etc/docker/containers/wg-easy
docker compose exec -it wg-easy cli db:admin:reset
```
You are asked to provide the new password
#### By Argument
```shell
cd /etc/docker/containers/wg-easy
docker compose exec -it wg-easy cli db:admin:reset --password <new_password>
```
This will reset the password for the admin user to the new password you provided. If you include special characters in the password, make sure to escape them properly.

3
package.json

@ -2,7 +2,8 @@
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "docker compose -f docker-compose.dev.yml up --build",
"dev": "docker compose -f docker-compose.dev.yml up wg-easy --build",
"cli:dev": "docker compose -f docker-compose.dev.yml run --build --rm -it wg-easy cli:dev",
"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",
"scripts:version": "bash scripts/version.sh",

25
src/cli/build.js

@ -0,0 +1,25 @@
// @ts-check
import { fileURLToPath } from 'node:url';
import esbuild from 'esbuild';
esbuild.build({
entryPoints: [fileURLToPath(new URL('./index.ts', import.meta.url))],
bundle: true,
outfile: fileURLToPath(new URL('../.output/server/cli.mjs', import.meta.url)),
platform: 'node',
format: 'esm',
plugins: [
{
name: 'make-all-packages-external',
setup(build) {
let filter = /^[^./]|^\.[^./]|^\.\.[^/]/; // Must not start with "/" or "./" or "../"
build.onResolve({ filter }, (args) => ({
path: args.path,
external: true,
}));
},
},
],
logLevel: 'info',
});

5
src/cli/cli.sh

@ -0,0 +1,5 @@
#!/bin/sh
set -e
node /app/server/cli.mjs "$@"

92
src/cli/index.ts

@ -0,0 +1,92 @@
#!/usr/bin/env node
// ! Auto Imports are not supported in this file
import { drizzle } from 'drizzle-orm/libsql';
import { createClient } from '@libsql/client';
import { defineCommand, runMain } from 'citty';
import { consola } from 'consola';
import { eq } from 'drizzle-orm';
import packageJson from '../package.json';
import * as schema from '../server/database/schema';
import { hashPassword } from '../server/utils/password';
const client = createClient({ url: 'file:/etc/wireguard/wg-easy.db' });
const db = drizzle({ client, schema });
const dbAdminReset = defineCommand({
meta: {
name: 'db:admin:reset',
description: 'Reset the admin user',
},
args: {
password: {
type: 'string',
description: 'New password for the admin user',
required: false,
},
},
async run(ctx) {
let password = ctx.args.password || undefined;
if (!password) {
password = await consola.prompt('Please enter a new password:', {
type: 'text',
});
}
if (!password) {
consola.error('Password is required');
return;
}
if (password.length < 12) {
consola.error('Password must be at least 12 characters long');
return;
}
console.info('Setting new password for admin user...');
const hash = await hashPassword(password);
const user = await db.transaction(async (tx) => {
const user = await tx
.select()
.from(schema.user)
.where(eq(schema.user.id, 1))
.get();
if (!user) {
consola.error('Admin user not found');
return;
}
await tx
.update(schema.user)
.set({
password: hash,
})
.where(eq(schema.user.id, 1));
return user;
});
if (!user) {
consola.error('Failed to update admin user');
return;
}
consola.success(
`Successfully updated admin user ${user.id} (${user.username})`
);
},
});
const main = defineCommand({
meta: {
name: 'wg-easy',
version: packageJson.version,
description: 'Command Line Interface',
},
subCommands: {
'db:admin:reset': dbAdminReset,
},
});
runMain(main);

6
src/nuxt.config.ts

@ -41,6 +41,9 @@ export default defineNuxtConfig({
detectBrowserLanguage: {
useCookie: true,
},
bundle: {
optimizeTranslationDirective: false,
},
},
nitro: {
esbuild: {
@ -52,6 +55,9 @@ export default defineNuxtConfig({
alias: {
'#db': fileURLToPath(new URL('./server/database/', import.meta.url)),
},
externals: {
traceInclude: [fileURLToPath(new URL('./cli/index.ts', import.meta.url))],
},
},
alias: {
// for typecheck reasons (https://github.com/nuxt/cli/issues/323)

10
src/package.json

@ -5,7 +5,7 @@
"private": true,
"type": "module",
"scripts": {
"build": "nuxt build",
"build": "nuxt build && pnpm cli:build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
@ -15,7 +15,9 @@
"format:check": "prettier . --check",
"typecheck": "nuxt typecheck",
"check:all": "pnpm typecheck && pnpm lint && pnpm format:check && pnpm build",
"db:generate": "drizzle-kit generate"
"db:generate": "drizzle-kit generate",
"cli:build": "node cli/build.js",
"cli:dev": "tsx cli/index.ts"
},
"dependencies": {
"@eschricht/nuxt-color-mode": "^1.1.5",
@ -29,6 +31,8 @@
"apexcharts": "^4.5.0",
"argon2": "^0.41.1",
"cidr-tools": "^11.0.3",
"citty": "^0.1.6",
"consola": "^3.4.2",
"crc-32": "^1.2.2",
"debug": "^4.4.0",
"drizzle-orm": "^0.41.0",
@ -54,10 +58,12 @@
"@types/phc__format": "^1.0.1",
"@types/semver": "^7.7.0",
"drizzle-kit": "^0.30.6",
"esbuild": "^0.25.2",
"eslint": "^9.24.0",
"eslint-config-prettier": "^10.1.2",
"prettier": "^3.5.3",
"prettier-plugin-tailwindcss": "^0.6.11",
"tsx": "^4.19.3",
"typescript": "^5.8.3",
"vue-tsc": "^2.2.8"
},

113
src/pnpm-lock.yaml

@ -41,6 +41,12 @@ importers:
cidr-tools:
specifier: ^11.0.3
version: 11.0.3
citty:
specifier: ^0.1.6
version: 0.1.6
consola:
specifier: ^3.4.2
version: 3.4.2
crc-32:
specifier: ^1.2.2
version: 1.2.2
@ -64,7 +70,7 @@ importers:
version: 0.11.0
nuxt:
specifier: ^3.16.2
version: 3.16.2(@libsql/[email protected])(@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])(@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])(t[email protected])(t[email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))([email protected])
otpauth:
specifier: ^9.4.0
version: 9.4.0
@ -98,7 +104,7 @@ importers:
devDependencies:
'@nuxt/eslint':
specifier: 1.3.0
version: 1.3.0(@vue/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
version: 1.3.0(@vue/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
'@types/debug':
specifier: ^4.1.12
version: 4.1.12
@ -111,6 +117,9 @@ importers:
drizzle-kit:
specifier: ^0.30.6
version: 0.30.6
esbuild:
specifier: ^0.25.2
version: 0.25.2
eslint:
specifier: ^9.24.0
version: 9.24.0([email protected])
@ -123,6 +132,9 @@ importers:
prettier-plugin-tailwindcss:
specifier: ^0.6.11
version: 0.6.11([email protected])
tsx:
specifier: ^4.19.3
version: 4.19.3
typescript:
specifier: ^5.8.3
version: 5.8.3
@ -4658,6 +4670,11 @@ packages:
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
engines: {node: '>=0.6.x'}
[email protected]:
resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==}
engines: {node: '>=18.0.0'}
hasBin: true
[email protected]:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@ -5975,12 +5992,12 @@ snapshots:
'@nuxt/[email protected]': {}
'@nuxt/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))':
'@nuxt/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))':
dependencies:
'@nuxt/kit': 3.16.2([email protected])
'@nuxt/schema': 3.16.2
execa: 8.0.1
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
transitivePeerDependencies:
- magicast
@ -5995,12 +6012,12 @@ snapshots:
prompts: 2.4.2
semver: 7.7.1
'@nuxt/[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))':
'@nuxt/[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))':
dependencies:
'@nuxt/devtools-kit': 2.4.0([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
'@nuxt/devtools-kit': 2.4.0([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
'@nuxt/devtools-wizard': 2.4.0
'@nuxt/kit': 3.16.2([email protected])
'@vue/devtools-core': 7.7.2([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
'@vue/devtools-core': 7.7.2([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
'@vue/devtools-kit': 7.7.2
birpc: 2.3.0
consola: 3.4.2
@ -6025,9 +6042,9 @@ snapshots:
sirv: 3.0.1
structured-clone-es: 1.0.0
tinyglobby: 0.2.12
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite-plugin-inspect: 11.0.0(@nuxt/[email protected]([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
vite-plugin-vue-tracer: 0.1.3([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
vite-plugin-inspect: 11.0.0(@nuxt/[email protected]([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
vite-plugin-vue-tracer: 0.1.3([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
which: 5.0.0
ws: 8.18.1
transitivePeerDependencies:
@ -6073,10 +6090,10 @@ snapshots:
- supports-color
- typescript
'@nuxt/[email protected](@vue/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))':
'@nuxt/[email protected](@vue/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))':
dependencies:
'@eslint/config-inspector': 1.0.2([email protected]([email protected]))
'@nuxt/devtools-kit': 2.4.0([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
'@nuxt/devtools-kit': 2.4.0([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
'@nuxt/eslint-config': 1.3.0(@vue/[email protected])([email protected]([email protected]))([email protected])
'@nuxt/eslint-plugin': 1.3.0([email protected]([email protected]))([email protected])
'@nuxt/kit': 3.16.2([email protected])
@ -6150,12 +6167,12 @@ snapshots:
transitivePeerDependencies:
- magicast
'@nuxt/[email protected](@types/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]))([email protected])':
'@nuxt/[email protected](@types/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])(t[email protected])(t[email protected])([email protected]([email protected]))([email protected]([email protected]))([email protected])':
dependencies:
'@nuxt/kit': 3.16.2([email protected])
'@rollup/plugin-replace': 6.0.2([email protected])
'@vitejs/plugin-vue': 5.2.3([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
'@vitejs/plugin-vue-jsx': 4.1.2([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
'@vitejs/plugin-vue': 5.2.3([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
'@vitejs/plugin-vue-jsx': 4.1.2([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
autoprefixer: 10.4.21([email protected])
consola: 3.4.2
cssnano: 7.0.6([email protected])
@ -6181,9 +6198,9 @@ snapshots:
ufo: 1.6.1
unenv: 2.0.0-rc.15
unplugin: 2.3.2
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite-node: 3.1.1(@types/[email protected])([email protected])([email protected])([email protected])
vite-plugin-checker: 0.9.1([email protected]([email protected]))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
vite-node: 3.1.1(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
vite-plugin-checker: 0.9.1([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]))
vue: 3.5.13([email protected])
vue-bundle-renderer: 2.1.1
transitivePeerDependencies:
@ -6815,19 +6832,19 @@ snapshots:
- rollup
- supports-color
'@vitejs/[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))':
'@vitejs/[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))':
dependencies:
'@babel/core': 7.26.10
'@babel/plugin-transform-typescript': 7.27.0(@babel/[email protected])
'@vue/babel-plugin-jsx': 1.4.0(@babel/[email protected])
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
vue: 3.5.13([email protected])
transitivePeerDependencies:
- supports-color
'@vitejs/[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))':
'@vitejs/[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))':
dependencies:
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
vue: 3.5.13([email protected])
'@volar/[email protected]':
@ -6923,14 +6940,14 @@ snapshots:
dependencies:
'@vue/devtools-kit': 7.7.2
'@vue/[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))':
'@vue/[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))':
dependencies:
'@vue/devtools-kit': 7.7.2
'@vue/devtools-shared': 7.7.2
mitt: 3.0.1
nanoid: 5.1.5
pathe: 2.0.3
vite-hot-client: 0.2.4([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
vite-hot-client: 0.2.4([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
vue: 3.5.13([email protected])
transitivePeerDependencies:
- vite
@ -8852,15 +8869,15 @@ snapshots:
dependencies:
boolbase: 1.0.0
[email protected](@libsql/[email protected])(@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])(@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])(t[email protected])(t[email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))([email protected]):
dependencies:
'@nuxt/cli': 3.24.1([email protected])
'@nuxt/devalue': 2.0.2
'@nuxt/devtools': 2.4.0([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
'@nuxt/devtools': 2.4.0([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected]))
'@nuxt/kit': 3.16.2([email protected])
'@nuxt/schema': 3.16.2
'@nuxt/telemetry': 2.6.6([email protected])
'@nuxt/vite-builder': 3.16.2(@types/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]))([email protected])
'@nuxt/vite-builder': 3.16.2(@types/[email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])(t[email protected])(t[email protected])([email protected]([email protected]))([email protected]([email protected]))([email protected])
'@oxc-parser/wasm': 0.60.0
'@unhead/vue': 2.0.5([email protected]([email protected]))
'@vue/shared': 3.5.13
@ -9932,6 +9949,13 @@ snapshots:
[email protected]: {}
[email protected]:
dependencies:
esbuild: 0.25.2
get-tsconfig: 4.10.0
optionalDependencies:
fsevents: 2.3.3
[email protected]:
dependencies:
prelude-ls: 1.2.1
@ -10127,27 +10151,27 @@ snapshots:
[email protected]: {}
[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected])):
[email protected]([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])):
dependencies:
birpc: 2.3.0
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite-hot-client: 2.0.4([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
vite-hot-client: 2.0.4([email protected](@types/[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](@types/[email protected])([email protected])([email protected])([email protected])([email protected])):
dependencies:
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite: 6.2.6(@types/[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](@types/[email protected])([email protected])([email protected])([email protected])([email protected])):
dependencies:
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
[email protected](@types/[email protected])([email protected])([email protected])([email protected]):
[email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]):
dependencies:
cac: 6.7.14
debug: 4.4.0
es-module-lexer: 1.6.0
pathe: 2.0.3
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
transitivePeerDependencies:
- '@types/node'
- jiti
@ -10162,7 +10186,7 @@ snapshots:
- tsx
- yaml
[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]([email protected]))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))([email protected]([email protected])):
dependencies:
'@babel/code-frame': 7.26.2
chokidar: 4.0.3
@ -10172,7 +10196,7 @@ snapshots:
strip-ansi: 7.1.0
tiny-invariant: 1.3.3
tinyglobby: 0.2.12
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
vscode-uri: 3.1.0
optionalDependencies:
eslint: 9.24.0([email protected])
@ -10180,7 +10204,7 @@ snapshots:
typescript: 5.8.3
vue-tsc: 2.2.8([email protected])
[email protected](@nuxt/[email protected]([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected])):
[email protected](@nuxt/[email protected]([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])):
dependencies:
ansis: 3.17.0
debug: 4.4.0
@ -10190,24 +10214,24 @@ snapshots:
perfect-debounce: 1.0.0
sirv: 3.0.1
unplugin-utils: 0.2.4
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite-dev-rpc: 1.0.7([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
vite-dev-rpc: 1.0.7([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
optionalDependencies:
'@nuxt/kit': 3.16.2([email protected])
transitivePeerDependencies:
- supports-color
[email protected]([email protected](@types/[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:
estree-walker: 3.0.3
exsolve: 1.0.4
magic-string: 0.30.17
pathe: 2.0.3
source-map-js: 1.2.1
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])
vite: 6.2.6(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
vue: 3.5.13([email protected])
[email protected](@types/[email protected])([email protected])([email protected])([email protected]):
[email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]):
dependencies:
esbuild: 0.25.2
postcss: 8.5.3
@ -10217,6 +10241,7 @@ snapshots:
fsevents: 2.3.3
jiti: 2.4.2
terser: 5.39.0
tsx: 4.19.3
yaml: 2.7.1
[email protected]: {}

2
src/server/utils/password.ts

@ -1,3 +1,5 @@
// ! Auto Imports are not supported in this file
import argon2 from 'argon2';
import { deserialize } from '@phc/format';

Loading…
Cancel
Save