Adding change password in settings.

This commit is contained in:
Bradley Shellnut 2025-01-06 18:07:30 -08:00
parent 438bd52c57
commit 1319a74967
10 changed files with 387 additions and 250 deletions

View file

@ -49,15 +49,15 @@
"@types/qrcode": "^1.5.5", "@types/qrcode": "^1.5.5",
"arctic": "^1.9.2", "arctic": "^1.9.2",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"bits-ui": "1.0.0-next.76", "bits-ui": "1.0.0-next.77",
"bullmq": "^5.13.0", "bullmq": "^5.34.7",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"drizzle-kit": "^0.30.1", "drizzle-kit": "^0.30.1",
"formsnap": "^2.0.0", "formsnap": "^2.0.0",
"lucide-svelte": "^0.469.0", "lucide-svelte": "^0.469.0",
"mode-watcher": "^0.5.0", "mode-watcher": "^0.5.0",
"storybook": "^8.4.7", "storybook": "^8.4.7",
"svelte": "^5.16.1", "svelte": "^5.16.5",
"svelte-check": "^4.0.0", "svelte-check": "^4.0.0",
"svelte-meta-tags": "^4.0.4", "svelte-meta-tags": "^4.0.4",
"svelte-preprocess": "^6.0.3", "svelte-preprocess": "^6.0.3",
@ -80,7 +80,7 @@
"@hono/swagger-ui": "^0.5.0", "@hono/swagger-ui": "^0.5.0",
"@hono/zod-openapi": "^0.18.3", "@hono/zod-openapi": "^0.18.3",
"@hono/zod-validator": "^0.4.2", "@hono/zod-validator": "^0.4.2",
"@inlang/paraglide-sveltekit": "^0.15.3", "@inlang/paraglide-sveltekit": "^0.15.4",
"@internationalized/date": "^3.5.5", "@internationalized/date": "^3.5.5",
"@needle-di/core": "^0.8.4", "@needle-di/core": "^0.8.4",
"@oslojs/binary": "^1.0.0", "@oslojs/binary": "^1.0.0",
@ -94,13 +94,13 @@
"@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/container-queries": "^0.1.1",
"@tailwindcss/forms": "^0.5.9", "@tailwindcss/forms": "^0.5.9",
"@tailwindcss/typography": "^0.5.15", "@tailwindcss/typography": "^0.5.15",
"arctic": "^3.0.0", "arctic": "^3.1.0",
"argon2": "^0.41.1", "argon2": "^0.41.1",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"dotenv": "^16.4.7", "dotenv": "^16.4.7",
"drizzle-orm": "^0.38.3", "drizzle-orm": "^0.38.3",
"drizzle-zod": "^0.6.1", "drizzle-zod": "^0.6.1",
"hono": "^4.6.15", "hono": "^4.6.16",
"hono-pino": "^0.7.0", "hono-pino": "^0.7.0",
"hono-rate-limiter": "^0.4.2", "hono-rate-limiter": "^0.4.2",
"hono-zod-openapi": "^0.5.0", "hono-zod-openapi": "^0.5.0",

View file

@ -10,16 +10,16 @@ importers:
dependencies: dependencies:
'@hono/swagger-ui': '@hono/swagger-ui':
specifier: ^0.5.0 specifier: ^0.5.0
version: 0.5.0(hono@4.6.15) version: 0.5.0(hono@4.6.16)
'@hono/zod-openapi': '@hono/zod-openapi':
specifier: ^0.18.3 specifier: ^0.18.3
version: 0.18.3(hono@4.6.15)(zod@3.24.1) version: 0.18.3(hono@4.6.16)(zod@3.24.1)
'@hono/zod-validator': '@hono/zod-validator':
specifier: ^0.4.2 specifier: ^0.4.2
version: 0.4.2(hono@4.6.15)(zod@3.24.1) version: 0.4.2(hono@4.6.16)(zod@3.24.1)
'@inlang/paraglide-sveltekit': '@inlang/paraglide-sveltekit':
specifier: ^0.15.3 specifier: ^0.15.4
version: 0.15.3(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))) version: 0.15.4(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))
'@internationalized/date': '@internationalized/date':
specifier: ^3.5.5 specifier: ^3.5.5
version: 3.6.0 version: 3.6.0
@ -49,7 +49,7 @@ importers:
version: 1.0.0 version: 1.0.0
'@scalar/hono-api-reference': '@scalar/hono-api-reference':
specifier: ^0.5.162 specifier: ^0.5.162
version: 0.5.165(hono@4.6.15) version: 0.5.165(hono@4.6.16)
'@tailwindcss/container-queries': '@tailwindcss/container-queries':
specifier: ^0.1.1 specifier: ^0.1.1
version: 0.1.1(tailwindcss@3.4.17) version: 0.1.1(tailwindcss@3.4.17)
@ -60,8 +60,8 @@ importers:
specifier: ^0.5.15 specifier: ^0.5.15
version: 0.5.15(tailwindcss@3.4.17) version: 0.5.15(tailwindcss@3.4.17)
arctic: arctic:
specifier: ^3.0.0 specifier: ^3.1.0
version: 3.0.0 version: 3.1.0
argon2: argon2:
specifier: ^0.41.1 specifier: ^0.41.1
version: 0.41.1 version: 0.41.1
@ -78,17 +78,17 @@ importers:
specifier: ^0.6.1 specifier: ^0.6.1
version: 0.6.1(drizzle-orm@0.38.3(@types/pg@8.11.10)(@types/react@19.0.2)(pg@8.13.1)(postgres@3.4.5)(react@18.3.1))(zod@3.24.1) version: 0.6.1(drizzle-orm@0.38.3(@types/pg@8.11.10)(@types/react@19.0.2)(pg@8.13.1)(postgres@3.4.5)(react@18.3.1))(zod@3.24.1)
hono: hono:
specifier: ^4.6.15 specifier: ^4.6.16
version: 4.6.15 version: 4.6.16
hono-pino: hono-pino:
specifier: ^0.7.0 specifier: ^0.7.0
version: 0.7.0(hono@4.6.15)(pino@9.6.0) version: 0.7.0(hono@4.6.16)(pino@9.6.0)
hono-rate-limiter: hono-rate-limiter:
specifier: ^0.4.2 specifier: ^0.4.2
version: 0.4.2(hono@4.6.15) version: 0.4.2(hono@4.6.16)
hono-zod-openapi: hono-zod-openapi:
specifier: ^0.5.0 specifier: ^0.5.0
version: 0.5.0(hono@4.6.15)(zod@3.24.1) version: 0.5.0(hono@4.6.16)(zod@3.24.1)
ioredis: ioredis:
specifier: ^5.4.2 specifier: ^5.4.2
version: 5.4.2 version: 5.4.2
@ -124,7 +124,7 @@ importers:
version: 1.7.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) version: 1.7.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
stoker: stoker:
specifier: ^1.4.2 specifier: ^1.4.2
version: 1.4.2(@asteasolutions/zod-to-openapi@7.3.0(zod@3.24.1))(@hono/zod-openapi@0.18.3(hono@4.6.15)(zod@3.24.1))(hono@4.6.15)(openapi3-ts@4.4.0) version: 1.4.2(@asteasolutions/zod-to-openapi@7.3.0(zod@3.24.1))(@hono/zod-openapi@0.18.3(hono@4.6.16)(zod@3.24.1))(hono@4.6.16)(openapi3-ts@4.4.0)
devDependencies: devDependencies:
'@biomejs/biome': '@biomejs/biome':
specifier: ^1.9.4 specifier: ^1.9.4
@ -155,31 +155,31 @@ importers:
version: 8.4.7(storybook@8.4.7) version: 8.4.7(storybook@8.4.7)
'@storybook/addon-svelte-csf': '@storybook/addon-svelte-csf':
specifier: ^5.0.0-next.21 specifier: ^5.0.0-next.21
version: 5.0.0-next.21(@storybook/svelte@8.4.7(storybook@8.4.7)(svelte@5.16.1))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(storybook@8.4.7)(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) version: 5.0.0-next.21(@storybook/svelte@8.4.7(storybook@8.4.7)(svelte@5.16.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(storybook@8.4.7)(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
'@storybook/blocks': '@storybook/blocks':
specifier: ^8.4.7 specifier: ^8.4.7
version: 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7) version: 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7)
'@storybook/svelte': '@storybook/svelte':
specifier: ^8.4.7 specifier: ^8.4.7
version: 8.4.7(storybook@8.4.7)(svelte@5.16.1) version: 8.4.7(storybook@8.4.7)(svelte@5.16.5)
'@storybook/sveltekit': '@storybook/sveltekit':
specifier: ^8.4.7 specifier: ^8.4.7
version: 8.4.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(storybook@8.4.7)(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) version: 8.4.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(storybook@8.4.7)(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
'@storybook/test': '@storybook/test':
specifier: ^8.4.7 specifier: ^8.4.7
version: 8.4.7(storybook@8.4.7) version: 8.4.7(storybook@8.4.7)
'@sveltejs/adapter-node': '@sveltejs/adapter-node':
specifier: ^5.2.9 specifier: ^5.2.9
version: 5.2.11(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))) version: 5.2.11(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))
'@sveltejs/enhanced-img': '@sveltejs/enhanced-img':
specifier: ^0.4.4 specifier: ^0.4.4
version: 0.4.4(rollup@4.29.1)(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) version: 0.4.4(rollup@4.29.1)(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
'@sveltejs/kit': '@sveltejs/kit':
specifier: ^2.15.1 specifier: ^2.15.1
version: 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) version: 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
'@sveltejs/vite-plugin-svelte': '@sveltejs/vite-plugin-svelte':
specifier: ^5.0.3 specifier: ^5.0.3
version: 5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) version: 5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
'@types/cookie': '@types/cookie':
specifier: ^1.0.0 specifier: ^1.0.0
version: 1.0.0 version: 1.0.0
@ -199,11 +199,11 @@ importers:
specifier: ^10.4.20 specifier: ^10.4.20
version: 10.4.20(postcss@8.4.49) version: 10.4.20(postcss@8.4.49)
bits-ui: bits-ui:
specifier: 1.0.0-next.76 specifier: 1.0.0-next.77
version: 1.0.0-next.76(svelte@5.16.1) version: 1.0.0-next.77(svelte@5.16.5)
bullmq: bullmq:
specifier: ^5.13.0 specifier: ^5.34.7
version: 5.34.6 version: 5.34.7
clsx: clsx:
specifier: ^2.1.1 specifier: ^2.1.1
version: 2.1.1 version: 2.1.1
@ -212,40 +212,40 @@ importers:
version: 0.30.1 version: 0.30.1
formsnap: formsnap:
specifier: ^2.0.0 specifier: ^2.0.0
version: 2.0.0(svelte@5.16.1)(sveltekit-superforms@2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.1)(typescript@5.7.2)) version: 2.0.0(svelte@5.16.5)(sveltekit-superforms@2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.5)(typescript@5.7.2))
lucide-svelte: lucide-svelte:
specifier: ^0.469.0 specifier: ^0.469.0
version: 0.469.0(svelte@5.16.1) version: 0.469.0(svelte@5.16.5)
mode-watcher: mode-watcher:
specifier: ^0.5.0 specifier: ^0.5.0
version: 0.5.0(svelte@5.16.1) version: 0.5.0(svelte@5.16.5)
storybook: storybook:
specifier: ^8.4.7 specifier: ^8.4.7
version: 8.4.7 version: 8.4.7
svelte: svelte:
specifier: ^5.16.1 specifier: ^5.16.5
version: 5.16.1 version: 5.16.5
svelte-check: svelte-check:
specifier: ^4.0.0 specifier: ^4.0.0
version: 4.1.1(picomatch@4.0.2)(svelte@5.16.1)(typescript@5.7.2) version: 4.1.1(picomatch@4.0.2)(svelte@5.16.5)(typescript@5.7.2)
svelte-meta-tags: svelte-meta-tags:
specifier: ^4.0.4 specifier: ^4.0.4
version: 4.0.4(svelte@5.16.1)(typescript@5.7.2) version: 4.0.4(svelte@5.16.5)(typescript@5.7.2)
svelte-preprocess: svelte-preprocess:
specifier: ^6.0.3 specifier: ^6.0.3
version: 6.0.3(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@5.16.1)(typescript@5.7.2) version: 6.0.3(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@5.16.5)(typescript@5.7.2)
svelte-sequential-preprocessor: svelte-sequential-preprocessor:
specifier: ^2.0.2 specifier: ^2.0.2
version: 2.0.2 version: 2.0.2
svelte-sonner: svelte-sonner:
specifier: ^0.3.28 specifier: ^0.3.28
version: 0.3.28(svelte@5.16.1) version: 0.3.28(svelte@5.16.5)
sveltekit-flash-message: sveltekit-flash-message:
specifier: ^2.4.4 specifier: ^2.4.4
version: 2.4.4(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1) version: 2.4.4(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)
sveltekit-superforms: sveltekit-superforms:
specifier: ^2.22.1 specifier: ^2.22.1
version: 2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.1)(typescript@5.7.2) version: 2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.5)(typescript@5.7.2)
tailwind-merge: tailwind-merge:
specifier: ^2.6.0 specifier: ^2.6.0
version: 2.6.0 version: 2.6.0
@ -1471,17 +1471,17 @@ packages:
resolution: {integrity: sha512-KEZQvED+eLidJ/U7VSE60ux7M+ctfvvxlqQ3pkaSNbRPeEYRSt/9e8aWMv9cHgEtqS62x2s0n7Ej+BF7uNSJyA==} resolution: {integrity: sha512-KEZQvED+eLidJ/U7VSE60ux7M+ctfvvxlqQ3pkaSNbRPeEYRSt/9e8aWMv9cHgEtqS62x2s0n7Ej+BF7uNSJyA==}
hasBin: true hasBin: true
'@inlang/paraglide-sveltekit@0.15.3': '@inlang/paraglide-sveltekit@0.15.4':
resolution: {integrity: sha512-/kw4TE7+COOEpqPryt3+g4aindV1N21FPEyeaVMwejh4cyZgVjLXDeZzNTvsfYLwjcAHkAkUPEEzPfZ8U5+Gcg==} resolution: {integrity: sha512-SkhhitIdVYYEhy/uOec4X3m+ufzBwOrF/YLwoiaNPUSBvnUdyMTBeC5/MkDd9ztcm1ruJ/f56tX/GmJTgApBow==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
'@sveltejs/kit': ^2.4.3 '@sveltejs/kit': ^2.4.3
'@inlang/paraglide-unplugin@1.9.3': '@inlang/paraglide-unplugin@1.9.4':
resolution: {integrity: sha512-ddtHTqL6x7ySTSLX466oryznWdKNo44UZ8KcX1MtMxX6OO4SSecrIhMEX64sPjx8NpM0D03MmYnLMGV8Rf53Gw==} resolution: {integrity: sha512-8UPXNJSdJx8c5p2R85ITqEv9crPgcIJ3W7CsJRWhLHOU3g6FibXbwz98+25jTJJnadmhiQ+P+nZKNYJOFjcEDw==}
'@inlang/paraglide-vite@1.3.3': '@inlang/paraglide-vite@1.3.4':
resolution: {integrity: sha512-ZSvrGbPuvJZLeg9YKico5zMx3Rjeby7q6oSqBItcVmg5Sptu+ULe2H28C8HwHJL2fkVjiSCAkhWbop1kyf6tWw==} resolution: {integrity: sha512-6LqDU7ed7QzV5qBGcOfFhuvGZZ3s5RFBSHyItyh9G8+8XrpGGYIQ5LZfvgd2DAFs2Bzjlk5gRGXcfwc5W+wfYQ==}
'@inlang/plugin-message-format@2.2.0': '@inlang/plugin-message-format@2.2.0':
resolution: {integrity: sha512-6MJLExr3OLqbR8gCP4UEgNMgdaJFFCug2GLmFwid7Ana4kObnbCA33YN3m3eN8p+lmnv7zpfW7oeyTZXZLoptg==} resolution: {integrity: sha512-6MJLExr3OLqbR8gCP4UEgNMgdaJFFCug2GLmFwid7Ana4kObnbCA33YN3m3eN8p+lmnv7zpfW7oeyTZXZLoptg==}
@ -2452,8 +2452,8 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
arctic@3.0.0: arctic@3.1.0:
resolution: {integrity: sha512-Od87d6wYenoExOHMmU0ss7ViXnNZpUhclemhf32OAYzpzQyXEz1clV/MlPEkBtpbukJ+ZVNuQdconuzW1tsh0w==} resolution: {integrity: sha512-g+EOL5+/DUm1aly4HD90L/bpg7ngDvjH65SvZn0MaUfPzuPxhzra7w3HP8f1tvDpSJqyzbI7l1L4Rvj9eqoOcg==}
arg@5.0.2: arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
@ -2538,8 +2538,8 @@ packages:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'} engines: {node: '>=8'}
bits-ui@1.0.0-next.76: bits-ui@1.0.0-next.77:
resolution: {integrity: sha512-BtTBlAQgdtA7l1V2EarM2QJlD8pkH4DAKACjCy4KMIVWMXdg15BGwALoXw1IWk4Xe4nCXI5Bz+lIB6nSgrzo6Q==} resolution: {integrity: sha512-IV0AyVEvsRkXv4s/fl4iea5E9W2b9EBf98s9mRMKMc1xHxM9MmtM2r6MZMqftHQ/c+gHTIt3A9EKuTlh7uay8w==}
engines: {node: '>=18', pnpm: '>=8.7.0'} engines: {node: '>=18', pnpm: '>=8.7.0'}
peerDependencies: peerDependencies:
svelte: ^5.11.0 svelte: ^5.11.0
@ -2588,8 +2588,8 @@ packages:
buffer-from@1.1.2: buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
bullmq@5.34.6: bullmq@5.34.7:
resolution: {integrity: sha512-pRCYyO9RlkQWxdmKlrNnUthyFwurYXRYLVXD1YIx+nCCdhAOiHatD8FDHbsT/w2I31c0NWoMcfZiIGuipiF7Lg==} resolution: {integrity: sha512-Z6nKi8skD9n5/ErddTngeeEd8dRvZCu8wgZqpeH9zK0DlyTxYKceTnkGab3FkA+U9mzlqa0z34ZKGMbn4GWdgQ==}
bytes@3.1.2: bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
@ -3469,8 +3469,8 @@ packages:
hono: ^4.6.10 hono: ^4.6.10
zod: ^3.21.4 zod: ^3.21.4
hono@4.6.15: hono@4.6.16:
resolution: {integrity: sha512-OiQwvAOAaI2JrABBH69z5rsctHDzFzIKJge0nYXgtzGJ0KftwLWcBXm1upJC23/omNRtnqM0gjRMbtXshPdqhQ==} resolution: {integrity: sha512-iE6xOPwDYlfnZFwk6BfIMMIH4WZm3pPhz6rc1uJM/OPew0pjG5K6p8WTLaMBY1/szF/T0TaEjprMpwn16BA0NQ==}
engines: {node: '>=16.9.0'} engines: {node: '>=16.9.0'}
hookable@5.5.3: hookable@5.5.3:
@ -4716,8 +4716,8 @@ packages:
resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==}
engines: {node: '>=16'} engines: {node: '>=16'}
svelte@5.16.1: svelte@5.16.5:
resolution: {integrity: sha512-FsA1OjAKMAFSDob6j/Tv2ZV9rY4SeqPd1WXQlQkFkePAozSHLp6tbkU9qa1xJ+uTRzMSM2Vx3USdsYZBXd3H3g==} resolution: {integrity: sha512-zTG45crJUGjNYQgmQ0YDxFJ7ge1O6ZwevPxGgGOxuMOXOQhcH9LC9GEx2JS9/BlkhxdsO8ETofQ76ouFwDVpCQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
sveltedoc-parser@4.2.1: sveltedoc-parser@4.2.1:
@ -5811,20 +5811,20 @@ snapshots:
'@hapi/hoek': 9.3.0 '@hapi/hoek': 9.3.0
optional: true optional: true
'@hono/swagger-ui@0.5.0(hono@4.6.15)': '@hono/swagger-ui@0.5.0(hono@4.6.16)':
dependencies: dependencies:
hono: 4.6.15 hono: 4.6.16
'@hono/zod-openapi@0.18.3(hono@4.6.15)(zod@3.24.1)': '@hono/zod-openapi@0.18.3(hono@4.6.16)(zod@3.24.1)':
dependencies: dependencies:
'@asteasolutions/zod-to-openapi': 7.3.0(zod@3.24.1) '@asteasolutions/zod-to-openapi': 7.3.0(zod@3.24.1)
'@hono/zod-validator': 0.4.2(hono@4.6.15)(zod@3.24.1) '@hono/zod-validator': 0.4.2(hono@4.6.16)(zod@3.24.1)
hono: 4.6.15 hono: 4.6.16
zod: 3.24.1 zod: 3.24.1
'@hono/zod-validator@0.4.2(hono@4.6.15)(zod@3.24.1)': '@hono/zod-validator@0.4.2(hono@4.6.16)(zod@3.24.1)':
dependencies: dependencies:
hono: 4.6.15 hono: 4.6.16
zod: 3.24.1 zod: 3.24.1
'@humanwhocodes/config-array@0.9.5': '@humanwhocodes/config-array@0.9.5':
@ -5964,36 +5964,37 @@ snapshots:
- debug - debug
- supports-color - supports-color
'@inlang/paraglide-sveltekit@0.15.3(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))': '@inlang/paraglide-sveltekit@0.15.4(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))':
dependencies: dependencies:
'@inlang/paraglide-js': 1.11.7 '@inlang/paraglide-js': 1.11.7
'@inlang/paraglide-vite': 1.3.3 '@inlang/paraglide-vite': 1.3.4
'@lix-js/client': 2.2.1 '@lix-js/client': 2.2.1
'@sveltejs/kit': 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@sveltejs/kit': 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
commander: 12.1.0 commander: 12.1.0
dedent: 1.5.1 dedent: 1.5.1
devalue: 4.3.3 devalue: 4.3.3
magic-string: 0.30.17 magic-string: 0.30.17
svelte: 5.16.1 svelte: 5.16.5
transitivePeerDependencies: transitivePeerDependencies:
- babel-plugin-macros - babel-plugin-macros
- debug - debug
- supports-color - supports-color
'@inlang/paraglide-unplugin@1.9.3': '@inlang/paraglide-unplugin@1.9.4':
dependencies: dependencies:
'@inlang/paraglide-js': 1.11.7 '@inlang/paraglide-js': 1.11.7
'@inlang/sdk': 0.36.4 '@inlang/sdk': 0.36.4
'@lix-js/client': 2.2.1 '@lix-js/client': 2.2.1
typescript: 5.7.2
unplugin: 1.16.0 unplugin: 1.16.0
transitivePeerDependencies: transitivePeerDependencies:
- babel-plugin-macros - babel-plugin-macros
- debug - debug
- supports-color - supports-color
'@inlang/paraglide-vite@1.3.3': '@inlang/paraglide-vite@1.3.4':
dependencies: dependencies:
'@inlang/paraglide-unplugin': 1.9.3 '@inlang/paraglide-unplugin': 1.9.4
transitivePeerDependencies: transitivePeerDependencies:
- babel-plugin-macros - babel-plugin-macros
- debug - debug
@ -6548,10 +6549,10 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.29.1': '@rollup/rollup-win32-x64-msvc@4.29.1':
optional: true optional: true
'@scalar/hono-api-reference@0.5.165(hono@4.6.15)': '@scalar/hono-api-reference@0.5.165(hono@4.6.16)':
dependencies: dependencies:
'@scalar/types': 0.0.25 '@scalar/types': 0.0.25
hono: 4.6.15 hono: 4.6.16
'@scalar/openapi-types@0.1.5': {} '@scalar/openapi-types@0.1.5': {}
@ -6654,20 +6655,20 @@ snapshots:
storybook: 8.4.7 storybook: 8.4.7
ts-dedent: 2.2.0 ts-dedent: 2.2.0
'@storybook/addon-svelte-csf@5.0.0-next.21(@storybook/svelte@8.4.7(storybook@8.4.7)(svelte@5.16.1))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(storybook@8.4.7)(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))': '@storybook/addon-svelte-csf@5.0.0-next.21(@storybook/svelte@8.4.7(storybook@8.4.7)(svelte@5.16.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(storybook@8.4.7)(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))':
dependencies: dependencies:
'@storybook/csf': 0.1.13 '@storybook/csf': 0.1.13
'@storybook/docs-tools': 8.4.7(storybook@8.4.7) '@storybook/docs-tools': 8.4.7(storybook@8.4.7)
'@storybook/node-logger': 8.4.7(storybook@8.4.7) '@storybook/node-logger': 8.4.7(storybook@8.4.7)
'@storybook/svelte': 8.4.7(storybook@8.4.7)(svelte@5.16.1) '@storybook/svelte': 8.4.7(storybook@8.4.7)(svelte@5.16.5)
'@storybook/types': 8.4.7(storybook@8.4.7) '@storybook/types': 8.4.7(storybook@8.4.7)
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
dedent: 1.5.3 dedent: 1.5.3
es-toolkit: 1.31.0 es-toolkit: 1.31.0
esrap: 1.3.2 esrap: 1.3.2
magic-string: 0.30.17 magic-string: 0.30.17
svelte: 5.16.1 svelte: 5.16.5
svelte-ast-print: 0.4.2(svelte@5.16.1) svelte-ast-print: 0.4.2(svelte@5.16.5)
vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0) vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)
zimmerframe: 1.1.2 zimmerframe: 1.1.2
transitivePeerDependencies: transitivePeerDependencies:
@ -6767,16 +6768,16 @@ snapshots:
react-dom: 18.3.1(react@18.3.1) react-dom: 18.3.1(react@18.3.1)
storybook: 8.4.7 storybook: 8.4.7
'@storybook/svelte-vite@8.4.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(storybook@8.4.7)(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))': '@storybook/svelte-vite@8.4.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(storybook@8.4.7)(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))':
dependencies: dependencies:
'@storybook/builder-vite': 8.4.7(storybook@8.4.7)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@storybook/builder-vite': 8.4.7(storybook@8.4.7)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
'@storybook/svelte': 8.4.7(storybook@8.4.7)(svelte@5.16.1) '@storybook/svelte': 8.4.7(storybook@8.4.7)(svelte@5.16.5)
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
magic-string: 0.30.17 magic-string: 0.30.17
storybook: 8.4.7 storybook: 8.4.7
svelte: 5.16.1 svelte: 5.16.5
svelte-preprocess: 5.1.4(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@5.16.1)(typescript@5.7.2) svelte-preprocess: 5.1.4(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@5.16.5)(typescript@5.7.2)
svelte2tsx: 0.7.31(svelte@5.16.1)(typescript@5.7.2) svelte2tsx: 0.7.31(svelte@5.16.5)(typescript@5.7.2)
sveltedoc-parser: 4.2.1 sveltedoc-parser: 4.2.1
ts-dedent: 2.2.0 ts-dedent: 2.2.0
typescript: 5.7.2 typescript: 5.7.2
@ -6793,7 +6794,7 @@ snapshots:
- sugarss - sugarss
- supports-color - supports-color
'@storybook/svelte@8.4.7(storybook@8.4.7)(svelte@5.16.1)': '@storybook/svelte@8.4.7(storybook@8.4.7)(svelte@5.16.5)':
dependencies: dependencies:
'@storybook/components': 8.4.7(storybook@8.4.7) '@storybook/components': 8.4.7(storybook@8.4.7)
'@storybook/global': 5.0.0 '@storybook/global': 5.0.0
@ -6801,21 +6802,21 @@ snapshots:
'@storybook/preview-api': 8.4.7(storybook@8.4.7) '@storybook/preview-api': 8.4.7(storybook@8.4.7)
'@storybook/theming': 8.4.7(storybook@8.4.7) '@storybook/theming': 8.4.7(storybook@8.4.7)
storybook: 8.4.7 storybook: 8.4.7
svelte: 5.16.1 svelte: 5.16.5
sveltedoc-parser: 4.2.1 sveltedoc-parser: 4.2.1
ts-dedent: 2.2.0 ts-dedent: 2.2.0
type-fest: 2.19.0 type-fest: 2.19.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@storybook/sveltekit@8.4.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(storybook@8.4.7)(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))': '@storybook/sveltekit@8.4.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(storybook@8.4.7)(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))':
dependencies: dependencies:
'@storybook/addon-actions': 8.4.7(storybook@8.4.7) '@storybook/addon-actions': 8.4.7(storybook@8.4.7)
'@storybook/builder-vite': 8.4.7(storybook@8.4.7)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@storybook/builder-vite': 8.4.7(storybook@8.4.7)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
'@storybook/svelte': 8.4.7(storybook@8.4.7)(svelte@5.16.1) '@storybook/svelte': 8.4.7(storybook@8.4.7)(svelte@5.16.5)
'@storybook/svelte-vite': 8.4.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(storybook@8.4.7)(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@storybook/svelte-vite': 8.4.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(storybook@8.4.7)(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
storybook: 8.4.7 storybook: 8.4.7
svelte: 5.16.1 svelte: 5.16.5
vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0) vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
@ -6850,29 +6851,29 @@ snapshots:
dependencies: dependencies:
storybook: 8.4.7 storybook: 8.4.7
'@sveltejs/adapter-node@5.2.11(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))': '@sveltejs/adapter-node@5.2.11(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))':
dependencies: dependencies:
'@rollup/plugin-commonjs': 28.0.2(rollup@4.29.1) '@rollup/plugin-commonjs': 28.0.2(rollup@4.29.1)
'@rollup/plugin-json': 6.1.0(rollup@4.29.1) '@rollup/plugin-json': 6.1.0(rollup@4.29.1)
'@rollup/plugin-node-resolve': 16.0.0(rollup@4.29.1) '@rollup/plugin-node-resolve': 16.0.0(rollup@4.29.1)
'@sveltejs/kit': 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@sveltejs/kit': 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
rollup: 4.29.1 rollup: 4.29.1
'@sveltejs/enhanced-img@0.4.4(rollup@4.29.1)(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))': '@sveltejs/enhanced-img@0.4.4(rollup@4.29.1)(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))':
dependencies: dependencies:
magic-string: 0.30.17 magic-string: 0.30.17
sharp: 0.33.5 sharp: 0.33.5
svelte: 5.16.1 svelte: 5.16.5
svelte-parse-markup: 0.1.5(svelte@5.16.1) svelte-parse-markup: 0.1.5(svelte@5.16.5)
vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0) vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)
vite-imagetools: 7.0.5(rollup@4.29.1) vite-imagetools: 7.0.5(rollup@4.29.1)
zimmerframe: 1.1.2 zimmerframe: 1.1.2
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
'@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))': '@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))':
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
'@types/cookie': 0.6.0 '@types/cookie': 0.6.0
cookie: 0.6.0 cookie: 0.6.0
devalue: 5.1.1 devalue: 5.1.1
@ -6884,27 +6885,27 @@ snapshots:
sade: 1.8.1 sade: 1.8.1
set-cookie-parser: 2.7.1 set-cookie-parser: 2.7.1
sirv: 3.0.0 sirv: 3.0.0
svelte: 5.16.1 svelte: 5.16.5
tiny-glob: 0.2.9 tiny-glob: 0.2.9
vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0) vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)
'@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))': '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))':
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
debug: 4.4.0 debug: 4.4.0
svelte: 5.16.1 svelte: 5.16.5
vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0) vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))': '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))':
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
debug: 4.4.0 debug: 4.4.0
deepmerge: 4.3.1 deepmerge: 4.3.1
kleur: 4.1.5 kleur: 4.1.5
magic-string: 0.30.17 magic-string: 0.30.17
svelte: 5.16.1 svelte: 5.16.5
vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0) vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)
vitefu: 1.0.4(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) vitefu: 1.0.4(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
transitivePeerDependencies: transitivePeerDependencies:
@ -7160,7 +7161,7 @@ snapshots:
normalize-path: 3.0.0 normalize-path: 3.0.0
picomatch: 2.3.1 picomatch: 2.3.1
arctic@3.0.0: arctic@3.1.0:
dependencies: dependencies:
'@oslojs/crypto': 1.0.1 '@oslojs/crypto': 1.0.1
'@oslojs/encoding': 1.1.0 '@oslojs/encoding': 1.1.0
@ -7242,15 +7243,15 @@ snapshots:
binary-extensions@2.3.0: {} binary-extensions@2.3.0: {}
bits-ui@1.0.0-next.76(svelte@5.16.1): bits-ui@1.0.0-next.77(svelte@5.16.5):
dependencies: dependencies:
'@floating-ui/core': 1.6.8 '@floating-ui/core': 1.6.8
'@floating-ui/dom': 1.6.12 '@floating-ui/dom': 1.6.12
'@internationalized/date': 3.6.0 '@internationalized/date': 3.6.0
esm-env: 1.2.1 esm-env: 1.2.1
runed: 0.22.0(svelte@5.16.1) runed: 0.22.0(svelte@5.16.5)
svelte: 5.16.1 svelte: 5.16.5
svelte-toolbelt: 0.7.0(svelte@5.16.1) svelte-toolbelt: 0.7.0(svelte@5.16.5)
block-stream2@2.1.0: block-stream2@2.1.0:
dependencies: dependencies:
@ -7307,7 +7308,7 @@ snapshots:
buffer-from@1.1.2: {} buffer-from@1.1.2: {}
bullmq@5.34.6: bullmq@5.34.7:
dependencies: dependencies:
cron-parser: 4.9.0 cron-parser: 4.9.0
ioredis: 5.4.2 ioredis: 5.4.2
@ -8069,11 +8070,11 @@ snapshots:
combined-stream: 1.0.8 combined-stream: 1.0.8
mime-types: 2.1.35 mime-types: 2.1.35
formsnap@2.0.0(svelte@5.16.1)(sveltekit-superforms@2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.1)(typescript@5.7.2)): formsnap@2.0.0(svelte@5.16.5)(sveltekit-superforms@2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.5)(typescript@5.7.2)):
dependencies: dependencies:
svelte: 5.16.1 svelte: 5.16.5
svelte-toolbelt: 0.5.0(svelte@5.16.1) svelte-toolbelt: 0.5.0(svelte@5.16.5)
sveltekit-superforms: 2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.1)(typescript@5.7.2) sveltekit-superforms: 2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.5)(typescript@5.7.2)
forwarded@0.2.0: {} forwarded@0.2.0: {}
@ -8190,24 +8191,24 @@ snapshots:
help-me@5.0.0: {} help-me@5.0.0: {}
hono-pino@0.7.0(hono@4.6.15)(pino@9.6.0): hono-pino@0.7.0(hono@4.6.16)(pino@9.6.0):
dependencies: dependencies:
defu: 6.1.4 defu: 6.1.4
hono: 4.6.15 hono: 4.6.16
pino: 9.6.0 pino: 9.6.0
hono-rate-limiter@0.4.2(hono@4.6.15): hono-rate-limiter@0.4.2(hono@4.6.16):
dependencies: dependencies:
hono: 4.6.15 hono: 4.6.16
hono-zod-openapi@0.5.0(hono@4.6.15)(zod@3.24.1): hono-zod-openapi@0.5.0(hono@4.6.16)(zod@3.24.1):
dependencies: dependencies:
'@hono/zod-validator': 0.4.2(hono@4.6.15)(zod@3.24.1) '@hono/zod-validator': 0.4.2(hono@4.6.16)(zod@3.24.1)
hono: 4.6.15 hono: 4.6.16
zod: 3.24.1 zod: 3.24.1
zod-openapi: 4.2.2(zod@3.24.1) zod-openapi: 4.2.2(zod@3.24.1)
hono@4.6.15: {} hono@4.6.16: {}
hookable@5.5.3: {} hookable@5.5.3: {}
@ -8456,9 +8457,9 @@ snapshots:
lru-cache@10.4.3: {} lru-cache@10.4.3: {}
lucide-svelte@0.469.0(svelte@5.16.1): lucide-svelte@0.469.0(svelte@5.16.5):
dependencies: dependencies:
svelte: 5.16.1 svelte: 5.16.5
luxon@3.5.0: {} luxon@3.5.0: {}
@ -8538,9 +8539,9 @@ snapshots:
dependencies: dependencies:
minimist: 1.2.8 minimist: 1.2.8
mode-watcher@0.5.0(svelte@5.16.1): mode-watcher@0.5.0(svelte@5.16.5):
dependencies: dependencies:
svelte: 5.16.1 svelte: 5.16.5
mri@1.2.0: {} mri@1.2.0: {}
@ -9048,15 +9049,15 @@ snapshots:
dependencies: dependencies:
queue-microtask: 1.2.3 queue-microtask: 1.2.3
runed@0.20.0(svelte@5.16.1): runed@0.20.0(svelte@5.16.5):
dependencies: dependencies:
esm-env: 1.2.1 esm-env: 1.2.1
svelte: 5.16.1 svelte: 5.16.5
runed@0.22.0(svelte@5.16.1): runed@0.22.0(svelte@5.16.5):
dependencies: dependencies:
esm-env: 1.2.1 esm-env: 1.2.1
svelte: 5.16.1 svelte: 5.16.5
rusha@0.8.14: {} rusha@0.8.14: {}
@ -9251,13 +9252,13 @@ snapshots:
std-env@3.8.0: {} std-env@3.8.0: {}
stoker@1.4.2(@asteasolutions/zod-to-openapi@7.3.0(zod@3.24.1))(@hono/zod-openapi@0.18.3(hono@4.6.15)(zod@3.24.1))(hono@4.6.15)(openapi3-ts@4.4.0): stoker@1.4.2(@asteasolutions/zod-to-openapi@7.3.0(zod@3.24.1))(@hono/zod-openapi@0.18.3(hono@4.6.16)(zod@3.24.1))(hono@4.6.16)(openapi3-ts@4.4.0):
dependencies: dependencies:
'@asteasolutions/zod-to-openapi': 7.3.0(zod@3.24.1) '@asteasolutions/zod-to-openapi': 7.3.0(zod@3.24.1)
hono: 4.6.15 hono: 4.6.16
openapi3-ts: 4.4.0 openapi3-ts: 4.4.0
optionalDependencies: optionalDependencies:
'@hono/zod-openapi': 0.18.3(hono@4.6.15)(zod@3.24.1) '@hono/zod-openapi': 0.18.3(hono@4.6.16)(zod@3.24.1)
storybook@8.4.7: storybook@8.4.7:
dependencies: dependencies:
@ -9330,51 +9331,51 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {} supports-preserve-symlinks-flag@1.0.0: {}
svelte-ast-print@0.4.2(svelte@5.16.1): svelte-ast-print@0.4.2(svelte@5.16.5):
dependencies: dependencies:
esrap: 1.2.2 esrap: 1.2.2
svelte: 5.16.1 svelte: 5.16.5
zimmerframe: 1.1.2 zimmerframe: 1.1.2
svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.16.1)(typescript@5.7.2): svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.16.5)(typescript@5.7.2):
dependencies: dependencies:
'@jridgewell/trace-mapping': 0.3.25 '@jridgewell/trace-mapping': 0.3.25
chokidar: 4.0.3 chokidar: 4.0.3
fdir: 6.4.2(picomatch@4.0.2) fdir: 6.4.2(picomatch@4.0.2)
picocolors: 1.1.1 picocolors: 1.1.1
sade: 1.8.1 sade: 1.8.1
svelte: 5.16.1 svelte: 5.16.5
typescript: 5.7.2 typescript: 5.7.2
transitivePeerDependencies: transitivePeerDependencies:
- picomatch - picomatch
svelte-meta-tags@4.0.4(svelte@5.16.1)(typescript@5.7.2): svelte-meta-tags@4.0.4(svelte@5.16.5)(typescript@5.7.2):
dependencies: dependencies:
schema-dts: 1.1.2(typescript@5.7.2) schema-dts: 1.1.2(typescript@5.7.2)
svelte: 5.16.1 svelte: 5.16.5
transitivePeerDependencies: transitivePeerDependencies:
- typescript - typescript
svelte-parse-markup@0.1.5(svelte@5.16.1): svelte-parse-markup@0.1.5(svelte@5.16.5):
dependencies: dependencies:
svelte: 5.16.1 svelte: 5.16.5
svelte-preprocess@5.1.4(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@5.16.1)(typescript@5.7.2): svelte-preprocess@5.1.4(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@5.16.5)(typescript@5.7.2):
dependencies: dependencies:
'@types/pug': 2.0.10 '@types/pug': 2.0.10
detect-indent: 6.1.0 detect-indent: 6.1.0
magic-string: 0.30.17 magic-string: 0.30.17
sorcery: 0.11.1 sorcery: 0.11.1
strip-indent: 3.0.0 strip-indent: 3.0.0
svelte: 5.16.1 svelte: 5.16.5
optionalDependencies: optionalDependencies:
postcss: 8.4.49 postcss: 8.4.49
postcss-load-config: 4.0.2(postcss@8.4.49) postcss-load-config: 4.0.2(postcss@8.4.49)
typescript: 5.7.2 typescript: 5.7.2
svelte-preprocess@6.0.3(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@5.16.1)(typescript@5.7.2): svelte-preprocess@6.0.3(postcss-load-config@4.0.2(postcss@8.4.49))(postcss@8.4.49)(svelte@5.16.5)(typescript@5.7.2):
dependencies: dependencies:
svelte: 5.16.1 svelte: 5.16.5
optionalDependencies: optionalDependencies:
postcss: 8.4.49 postcss: 8.4.49
postcss-load-config: 4.0.2(postcss@8.4.49) postcss-load-config: 4.0.2(postcss@8.4.49)
@ -9385,28 +9386,28 @@ snapshots:
svelte: 4.2.19 svelte: 4.2.19
tslib: 2.7.0 tslib: 2.7.0
svelte-sonner@0.3.28(svelte@5.16.1): svelte-sonner@0.3.28(svelte@5.16.5):
dependencies: dependencies:
svelte: 5.16.1 svelte: 5.16.5
svelte-toolbelt@0.5.0(svelte@5.16.1): svelte-toolbelt@0.5.0(svelte@5.16.5):
dependencies: dependencies:
clsx: 2.1.1 clsx: 2.1.1
style-to-object: 1.0.8 style-to-object: 1.0.8
svelte: 5.16.1 svelte: 5.16.5
svelte-toolbelt@0.7.0(svelte@5.16.1): svelte-toolbelt@0.7.0(svelte@5.16.5):
dependencies: dependencies:
clsx: 2.1.1 clsx: 2.1.1
runed: 0.20.0(svelte@5.16.1) runed: 0.20.0(svelte@5.16.5)
style-to-object: 1.0.8 style-to-object: 1.0.8
svelte: 5.16.1 svelte: 5.16.5
svelte2tsx@0.7.31(svelte@5.16.1)(typescript@5.7.2): svelte2tsx@0.7.31(svelte@5.16.5)(typescript@5.7.2):
dependencies: dependencies:
dedent-js: 1.0.1 dedent-js: 1.0.1
pascal-case: 3.1.2 pascal-case: 3.1.2
svelte: 5.16.1 svelte: 5.16.5
typescript: 5.7.2 typescript: 5.7.2
svelte@4.2.19: svelte@4.2.19:
@ -9426,7 +9427,7 @@ snapshots:
magic-string: 0.30.17 magic-string: 0.30.17
periscopic: 3.1.0 periscopic: 3.1.0
svelte@5.16.1: svelte@5.16.5:
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
'@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/sourcemap-codec': 1.5.0
@ -9451,17 +9452,17 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
sveltekit-flash-message@2.4.4(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1): sveltekit-flash-message@2.4.4(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5):
dependencies: dependencies:
'@sveltejs/kit': 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@sveltejs/kit': 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
svelte: 5.16.1 svelte: 5.16.5
sveltekit-superforms@2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.1)(typescript@5.7.2): sveltekit-superforms@2.22.1(@sveltejs/kit@2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.16.5)(typescript@5.7.2):
dependencies: dependencies:
'@sveltejs/kit': 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.1)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)) '@sveltejs/kit': 2.15.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0)))(svelte@5.16.5)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.7.0))
devalue: 5.1.1 devalue: 5.1.1
memoize-weak: 1.0.2 memoize-weak: 1.0.2
svelte: 5.16.1 svelte: 5.16.5
ts-deepmerge: 7.0.2 ts-deepmerge: 7.0.2
optionalDependencies: optionalDependencies:
'@exodus/schemasafe': 1.3.0 '@exodus/schemasafe': 1.3.0

View file

@ -0,0 +1,10 @@
import { refinePasswords } from '$lib/validations/account';
import { z } from 'zod';
export const changePasswordDto = z.object({
current_password: z.string({ required_error: 'Current Password is required' }),
new_password: z.string({ required_error: 'New Password is required' }),
confirm_password: z.string({ required_error: 'Confirm Password is required' }),
});
export type ChangePasswordDto = z.infer<typeof changePasswordDto>;

View file

@ -5,60 +5,65 @@ import { authState } from '../common/middleware/auth.middleware';
import { zValidator } from '@hono/zod-validator'; import { zValidator } from '@hono/zod-validator';
import { updateUserDto } from './dtos/update-user.dto'; import { updateUserDto } from './dtos/update-user.dto';
import { EmailChangeRequestsService } from './email-change-requests/email-change-requests.service'; import { EmailChangeRequestsService } from './email-change-requests/email-change-requests.service';
import { updateEmailDto } from '$lib/dtos/settings/update-email.dto'; import { updateEmailDto } from '$lib/dtos/settings/email/update-email.dto';
import { UsersRepository } from './users.repository'; import { UsersRepository } from './users.repository';
import { verifyEmailDto } from '$lib/dtos/settings/verify-email.dto'; import { verifyEmailDto } from '$lib/dtos/settings/email/verify-email.dto';
import { rateLimit } from '../common/middleware/rate-limit.middleware'; import { rateLimit } from '../common/middleware/rate-limit.middleware';
import { changePasswordDto } from '$lib/dtos/settings/password/change-password.dto';
import { StatusCodes } from '$lib/constants/status-codes';
import { SessionsService } from '../iam/sessions/sessions.service';
@injectable() @injectable()
export class UsersController extends Controller { export class UsersController extends Controller {
constructor( constructor(
private usersService = inject(UsersService), private usersService = inject(UsersService),
private emailChangeRequestsService = inject(EmailChangeRequestsService), private emailChangeRequestsService = inject(EmailChangeRequestsService),
private usersRepository = inject(UsersRepository) private sessionsService = inject(SessionsService),
) { private usersRepository = inject(UsersRepository),
super(); ) {
} super();
}
routes() { routes() {
return this.controller return this.controller
.get('/me', async (c) => { .get('/me', async (c) => {
const session = c.var.session; const session = c.var.session;
const user = session ? await this.usersRepository.findOneByIdOrThrow(session.userId) : null; const user = session ? await this.usersRepository.findOneByIdOrThrow(session.userId) : null;
c.var.logger.info(`Get user: ${JSON.stringify(user)}`); c.var.logger.info(`Get user: ${JSON.stringify(user)}`);
return c.json(user); return c.json(user);
}) })
.patch('/me', authState('session'), zValidator('form', updateUserDto), async (c) => { .patch('/me', authState('session'), zValidator('form', updateUserDto), async (c) => {
await this.usersService.update(c.var.session.userId, c.req.valid('form')); await this.usersService.update(c.var.session.userId, c.req.valid('form'));
const user = await this.usersRepository.findOneByIdOrThrow(c.var.session.id); const user = await this.usersRepository.findOneByIdOrThrow(c.var.session.id);
return c.json(user); return c.json(user);
}) })
.post( .post('/me/email/request', authState('session'), zValidator('json', updateEmailDto), rateLimit({ limit: 5, minutes: 15 }), async (c) => {
'/me/email/request', c.var.logger.info(`Request email change: ${c.req.valid('json').email}`);
authState('session'), await this.emailChangeRequestsService.requestEmailChange(c.var.session.userId, c.req.valid('json').email);
zValidator('json', updateEmailDto), return c.json({ message: 'Email change request sent' });
rateLimit({ limit: 5, minutes: 15 }), })
async (c) => { .post('/me/email/verify', authState('session'), zValidator('json', verifyEmailDto), rateLimit({ limit: 5, minutes: 15 }), async (c) => {
c.var.logger.info(`Request email change: ${c.req.valid('json').email}`); await this.emailChangeRequestsService.verifyEmailChange(c.var.session.userId, c.req.valid('json').code);
await this.emailChangeRequestsService.requestEmailChange( return c.json({ message: 'Email change request sent' });
c.var.session.userId, })
c.req.valid('json').email .put('/me/password', authState('session'), zValidator('json', changePasswordDto), rateLimit({ limit: 5, minutes: 15 }), async (c) => {
); const { current_password, new_password, confirm_password } = c.req.valid('json');
return c.json({ message: 'Email change request sent' }); if (new_password !== confirm_password) {
} return c.json({ error: 'Passwords do not match' }, StatusCodes.UNPROCESSABLE_ENTITY);
) }
.post( try {
'/me/email/verify', const correctPassword = await this.usersService.verifyPassword(c.var.session.userId, { password: current_password });
authState('session'), if (!correctPassword) {
zValidator('json', verifyEmailDto), return c.json({ error: 'Unable to update password' }, StatusCodes.UNAUTHORIZED);
rateLimit({ limit: 5, minutes: 15 }), }
async (c) => { await this.usersService.updatePassword(c.var.session.userId, new_password);
await this.emailChangeRequestsService.verifyEmailChange( await this.sessionsService.invalidateSession('');
c.var.session.userId, this.sessionsService.deleteSessionCookie();
c.req.valid('json').code return c.json({ message: 'logout' });
); } catch (error) {
return c.json({ message: 'Email change request sent' }); console.error('Error updating password', error);
} return c.json({ error: 'Unable to update password' }, StatusCodes.INTERNAL_SERVER_ERROR);
); }
} });
}
} }

View file

@ -1,47 +1,71 @@
import { zod } from "sveltekit-superforms/adapters"; import { zod } from 'sveltekit-superforms/adapters';
import { fail, setError, superValidate } from "sveltekit-superforms"; import { fail, setError, superValidate } from 'sveltekit-superforms';
import { StatusCodes } from "@/constants/status-codes.js"; import { StatusCodes } from '@/constants/status-codes.js';
import { updateEmailDto } from "$lib/dtos/settings/update-email.dto.js"; import { updateEmailDto } from '$lib/dtos/settings/email/update-email.dto.js';
import { verifyEmailDto } from "$lib/dtos/settings/verify-email.dto.js"; import { verifyEmailDto } from '$lib/dtos/settings/email/verify-email.dto.js';
import { redirect } from "sveltekit-flash-message/server"; import { redirect } from 'sveltekit-flash-message/server';
import { notSignedInMessage } from "$lib/utils/flashMessages.js"; import { notSignedInMessage } from '$lib/utils/flashMessages.js';
import { changePasswordDto } from '$lib/dtos/settings/password/change-password.dto';
export const load = async (event) => { export const load = async (event) => {
const { parent } = event; const { parent } = event;
const { authedUser } = await parent(); const { authedUser } = await parent();
if (!authedUser) { if (!authedUser) {
throw redirect('/login', notSignedInMessage, event); throw redirect('/login', notSignedInMessage, event);
} }
return { return {
updateEmailForm: await superValidate(zod(updateEmailDto), { updateEmailForm: await superValidate(zod(updateEmailDto), {
defaults: { defaults: {
email: authedUser.email email: authedUser.email,
} },
}), }),
verifyEmailForm: await superValidate(zod(verifyEmailDto)) verifyEmailForm: await superValidate(zod(verifyEmailDto)),
}; changePasswordForm: await superValidate(zod(changePasswordDto)),
};
}; };
export const actions = { export const actions = {
updateEmail: async ({ request, locals }) => { updateEmail: async ({ request, locals }) => {
const updateEmailForm = await superValidate(request, zod(updateEmailDto)); const updateEmailForm = await superValidate(request, zod(updateEmailDto));
if (!updateEmailForm.valid) return fail(StatusCodes.BAD_REQUEST, { updateEmailForm }) if (!updateEmailForm.valid) return fail(StatusCodes.BAD_REQUEST, { updateEmailForm });
const { error } = await locals.api.users.me.email.request.$post({ json: updateEmailForm.data }).then(locals.parseApiResponse); const { error } = await locals.api.users.me.email.request.$post({ json: updateEmailForm.data }).then(locals.parseApiResponse);
if (error) return setError(updateEmailForm, 'email', error); if (error) return setError(updateEmailForm, 'email', error);
return { updateEmailForm } return { updateEmailForm };
}, },
verifyEmail: async ({ request, locals }) => { verifyEmail: async ({ request, locals }) => {
const verifyEmailForm = await superValidate(request, zod(verifyEmailDto)); const verifyEmailForm = await superValidate(request, zod(verifyEmailDto));
console.log(verifyEmailForm) console.log(verifyEmailForm);
if (!verifyEmailForm.valid) { if (!verifyEmailForm.valid) {
return fail(StatusCodes.BAD_REQUEST, { verifyEmailForm }); return fail(StatusCodes.BAD_REQUEST, { verifyEmailForm });
}
const { error } = await locals.api.users.me.email.verify.$post({ json: verifyEmailForm.data }).then(locals.parseApiResponse);
if (error) {
return setError(verifyEmailForm, 'code', error);
}
return { verifyEmailForm };
},
changePassword: async ({ request, locals }) => {
const changePasswordForm = await superValidate(request, zod(changePasswordDto));
if (!changePasswordForm.valid) {
return fail(StatusCodes.BAD_REQUEST, { changePasswordForm });
} }
const { error } = await locals.api.users.me.email.verify.$post({ json: verifyEmailForm.data }).then(locals.parseApiResponse);
const { error } = await locals.api.users.me.password.$put({ json: changePasswordForm.data }).then(locals.parseApiResponse);
console.log('error', error);
if (error) { if (error) {
return setError(verifyEmailForm, 'code', error); if (error.status === StatusCodes.UNPROCESSABLE_ENTITY) {
return setError(changePasswordForm, 'confirm_password', 'Confirm password does not match');
} else if (error.status === StatusCodes.BAD_REQUEST) {
return setError(changePasswordForm, 'password', error.message);
} else if (error.status === StatusCodes.FORBIDDEN) {
return setError(changePasswordForm, 'password', error.message);
} else {
console.log('error', error);
return setError(changePasswordForm, 'password', error);
}
} }
return { verifyEmailForm } return { changePasswordForm };
} },
}; };

View file

@ -1,7 +1,9 @@
<script> <script>
import UpdateEmailCard from './update-email-card.svelte'; import UpdateEmailCard from './update-email-card.svelte';
import UpdatePasswordCard from './update-password-card.svelte';
let { data } = $props(); let { data } = $props();
</script> </script>
<UpdateEmailCard updateEmailForm={data.updateEmailForm} verifyEmailForm={data.verifyEmailForm} /> <UpdateEmailCard updateEmailForm={data.updateEmailForm} verifyEmailForm={data.verifyEmailForm} />
<UpdatePasswordCard changePasswordForm={data.changePasswordForm} />

View file

@ -6,8 +6,9 @@
import { superForm } from 'sveltekit-superforms'; import { superForm } from 'sveltekit-superforms';
import * as Dialog from '@/components/ui/dialog'; import * as Dialog from '@/components/ui/dialog';
import * as InputOTP from '$lib/components/ui/input-otp/index.js'; import * as InputOTP from '$lib/components/ui/input-otp/index.js';
import type { UpdateEmailDto } from '$lib/dtos/settings/update-email.dto'; import { updateEmailDto, type UpdateEmailDto } from '$lib/dtos/settings/email/update-email.dto';
import type { VerifyEmailDto } from '$lib/dtos/settings/verify-email.dto'; import { verifyEmailDto, type VerifyEmailDto } from '$lib/dtos/settings/email/verify-email.dto';
import { zodClient } from 'sveltekit-superforms/adapters';
/* ---------------------------------- props --------------------------------- */ /* ---------------------------------- props --------------------------------- */
let { updateEmailForm, verifyEmailForm }: { updateEmailForm: UpdateEmailDto; verifyEmailForm: VerifyEmailDto } = $props(); let { updateEmailForm, verifyEmailForm }: { updateEmailForm: UpdateEmailDto; verifyEmailForm: VerifyEmailDto } = $props();
@ -18,6 +19,7 @@
/* ---------------------------------- forms --------------------------------- */ /* ---------------------------------- forms --------------------------------- */
const sf_updateEmailForm = superForm(updateEmailForm, { const sf_updateEmailForm = superForm(updateEmailForm, {
resetForm: false, resetForm: false,
validators: zodClient(updateEmailDto),
onUpdated: ({ form }) => { onUpdated: ({ form }) => {
if (!form.valid) { if (!form.valid) {
return; return;
@ -27,6 +29,7 @@
}); });
const sf_verifyEmailForm = superForm(verifyEmailForm, { const sf_verifyEmailForm = superForm(verifyEmailForm, {
validators: zodClient(verifyEmailDto),
onUpdated: ({ form }) => { onUpdated: ({ form }) => {
if (!form.valid) { if (!form.valid) {
return; return;
@ -59,7 +62,7 @@
<Form.Control> <Form.Control>
{#snippet children({ props })} {#snippet children({ props })}
<Form.Label>Email</Form.Label> <Form.Label>Email</Form.Label>
<Input {...props} bind:value={$updateEmailFormData.email} /> <Input type="email" autocomplete="email" {...props} bind:value={$updateEmailFormData.email} />
{/snippet} {/snippet}
</Form.Control> </Form.Control>
<Form.Description /> <Form.Description />
@ -68,8 +71,8 @@
</form> </form>
</Card.Content> </Card.Content>
<Card.Footer class="border-t px-6 py-4"> <Card.Footer class="border-t px-6 py-4">
<Form.Button> <Form.Button onclick={() => submitEmailForm()}>
<button onclick={() => submitEmailForm()}>Submit</button> Submit
</Form.Button> </Form.Button>
</Card.Footer> </Card.Footer>
</Card.Root> </Card.Root>

View file

@ -0,0 +1,92 @@
<script lang="ts">
import * as Alert from "$lib/components/ui/alert/index.js";
import * as Card from "$lib/components/ui/card/index.js";
import { Input } from "$lib/components/ui/input/index.js";
import * as Form from "@/components/ui/form";
import { superForm } from "sveltekit-superforms";
import CircleAlert from "lucide-svelte/icons/circle-alert";
import { changePasswordDto, type ChangePasswordDto } from "$lib/dtos/settings/password/change-password.dto";
import { zodClient } from "sveltekit-superforms/adapters";
/* ---------------------------------- props --------------------------------- */
let { changePasswordForm }: { changePasswordForm: ChangePasswordDto } = $props();
/* ---------------------------------- forms --------------------------------- */
const sf_changePasswordForm = superForm(changePasswordForm, {
resetForm: false,
validators: zodClient(changePasswordDto),
});
const {
form: changePasswordFormData,
enhance: changePasswordEnhance,
submit: changePasswordFormSubmit,
} = sf_changePasswordForm;
</script>
<Card.Root>
<Card.Header>
<Card.Title>Change Password</Card.Title>
</Card.Header>
<Card.Content>
<form method="POST" action="?/changePassword" use:changePasswordEnhance>
<Form.Field form={sf_changePasswordForm} name="current_password">
<Form.Control>
{#snippet children({ props })}
<Form.Label>Current Password</Form.Label>
<Input
type="password"
autocomplete="current-password"
{...props}
bind:value={$changePasswordFormData.current_password}
/>
{/snippet}
</Form.Control>
<Form.Description />
<Form.FieldErrors />
</Form.Field>
<Form.Field form={sf_changePasswordForm} name="new_password">
<Form.Control>
{#snippet children({ props })}
<Form.Label>New Password</Form.Label>
<Input
type="password"
autocomplete="new-password"
{...props}
bind:value={$changePasswordFormData.new_password}
/>
{/snippet}
</Form.Control>
<Form.Description />
<Form.FieldErrors />
</Form.Field>
<Form.Field form={sf_changePasswordForm} name="confirm_password">
<Form.Control>
{#snippet children({ props })}
<Form.Label>Confirm Password</Form.Label>
<Input
type="password"
autocomplete="new-password"
{...props}
bind:value={$changePasswordFormData.confirm_password}
/>
{/snippet}
</Form.Control>
<Form.Description />
<Form.FieldErrors />
</Form.Field>
<Alert.Root variant="destructive">
<CircleAlert class="size-4" />
<Alert.Title level={3}>Heads up!</Alert.Title>
<Alert.Description>Changing your password will log you out of the current session.</Alert.Description>
</Alert.Root>
</form>
</Card.Content>
<Card.Footer class="border-t px-6 py-4">
<Form.Button onclick={() => changePasswordFormSubmit()}>
Submit
</Form.Button>
</Card.Footer>
</Card.Root>