diff --git a/package.json b/package.json index 7fea7c8..9bc112e 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@sveltejs/kit": "^2.5.25", "@sveltejs/vite-plugin-svelte": "^3.1.2", "@types/cookie": "^0.6.0", - "@types/node": "^20.16.2", + "@types/node": "^20.16.3", "@types/pg": "^8.11.8", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", @@ -46,8 +46,8 @@ "just-debounce-it": "^3.2.0", "lucia": "3.2.0", "lucide-svelte": "^0.408.0", - "nodemailer": "^6.9.14", - "postcss": "^8.4.41", + "nodemailer": "^6.9.15", + "postcss": "^8.4.44", "postcss-import": "^16.1.0", "postcss-load-config": "^5.1.0", "postcss-preset-env": "^9.6.0", @@ -70,7 +70,7 @@ "tslib": "^2.7.0", "tsx": "^4.19.0", "typescript": "^5.5.4", - "vite": "^5.4.2", + "vite": "^5.4.3", "vitest": "^1.6.0", "zod": "^3.23.8" }, @@ -85,7 +85,7 @@ "@internationalized/date": "^3.5.5", "@lucia-auth/adapter-drizzle": "^1.1.0", "@lukeed/uuid": "^2.0.1", - "@neondatabase/serverless": "^0.9.4", + "@neondatabase/serverless": "^0.9.5", "@paralleldrive/cuid2": "^2.2.2", "@resvg/resvg-js": "^2.6.2", "@sveltejs/adapter-node": "^5.2.2", @@ -95,7 +95,7 @@ "arctic": "^1.9.2", "bits-ui": "^0.21.13", "boardgamegeekclient": "^1.9.1", - "bullmq": "^5.12.12", + "bullmq": "^5.12.13", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cookie": "^0.6.0", @@ -106,7 +106,7 @@ "feather-icons": "^4.29.2", "formsnap": "^1.0.1", "handlebars": "^4.7.8", - "hono": "^4.5.9", + "hono": "^4.5.11", "hono-rate-limiter": "^0.4.0", "html-entities": "^2.5.2", "iconify-icon": "^2.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd902d0..d6ffa34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,13 +13,13 @@ importers: version: 5.0.14 '@hono/swagger-ui': specifier: ^0.4.1 - version: 0.4.1(hono@4.5.9) + version: 0.4.1(hono@4.5.11) '@hono/zod-openapi': specifier: ^0.15.3 - version: 0.15.3(hono@4.5.9)(zod@3.23.8) + version: 0.15.3(hono@4.5.11)(zod@3.23.8) '@hono/zod-validator': specifier: ^0.2.2 - version: 0.2.2(hono@4.5.9)(zod@3.23.8) + version: 0.2.2(hono@4.5.11)(zod@3.23.8) '@iconify-icons/line-md': specifier: ^1.2.30 version: 1.2.30 @@ -31,13 +31,13 @@ importers: version: 3.5.5 '@lucia-auth/adapter-drizzle': specifier: ^1.1.0 - version: 1.1.0(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.4)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(lucia@3.2.0) + version: 1.1.0(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(lucia@3.2.0) '@lukeed/uuid': specifier: ^2.0.1 version: 2.0.1 '@neondatabase/serverless': - specifier: ^0.9.4 - version: 0.9.4 + specifier: ^0.9.5 + version: 0.9.5 '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 @@ -46,10 +46,10 @@ importers: version: 2.6.2 '@sveltejs/adapter-node': specifier: ^5.2.2 - version: 5.2.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8))) + version: 5.2.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))) '@sveltejs/adapter-vercel': specifier: ^5.4.3 - version: 5.4.3(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8))) + version: 5.4.3(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))) '@types/feather-icons': specifier: ^4.29.4 version: 4.29.4 @@ -66,8 +66,8 @@ importers: specifier: ^1.9.1 version: 1.9.1 bullmq: - specifier: ^5.12.12 - version: 5.12.12 + specifier: ^5.12.13 + version: 5.12.13 class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -85,25 +85,25 @@ importers: version: 11.0.6 drizzle-orm: specifier: ^0.32.2 - version: 0.32.2(@neondatabase/serverless@0.9.4)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4) + version: 0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4) drizzle-zod: specifier: ^0.5.1 - version: 0.5.1(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.4)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(zod@3.23.8) + version: 0.5.1(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(zod@3.23.8) feather-icons: specifier: ^4.29.2 version: 4.29.2 formsnap: specifier: ^1.0.1 - version: 1.0.1(svelte@5.0.0-next.175)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)) + version: 1.0.1(svelte@5.0.0-next.175)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)) handlebars: specifier: ^4.7.8 version: 4.7.8 hono: - specifier: ^4.5.9 - version: 4.5.9 + specifier: ^4.5.11 + version: 4.5.11 hono-rate-limiter: specifier: ^0.4.0 - version: 0.4.0(hono@4.5.9) + version: 0.4.0(hono@4.5.11) html-entities: specifier: ^2.5.2 version: 2.5.2 @@ -157,10 +157,10 @@ importers: version: 2.5.2 tailwind-variants: specifier: ^0.2.1 - version: 0.2.1(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4))) + version: 0.2.1(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4))) tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4))) + version: 1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4))) tsyringe: specifier: ^4.8.0 version: 4.8.0 @@ -185,22 +185,22 @@ importers: version: 1.46.1 '@sveltejs/adapter-auto': specifier: ^3.2.4 - version: 3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8))) + version: 3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))) '@sveltejs/enhanced-img': specifier: ^0.3.4 - version: 0.3.4(rollup@4.18.1)(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + version: 0.3.4(rollup@4.18.1)(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@sveltejs/kit': specifier: ^2.5.25 - version: 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + version: 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + version: 3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@types/cookie': specifier: ^0.6.0 version: 0.6.0 '@types/node': - specifier: ^20.16.2 - version: 20.16.2 + specifier: ^20.16.3 + version: 20.16.3 '@types/pg': specifier: ^8.11.8 version: 8.11.8 @@ -212,7 +212,7 @@ importers: version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.41) + version: 10.4.20(postcss@8.4.44) drizzle-kit: specifier: ^0.23.2 version: 0.23.2 @@ -224,7 +224,7 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-plugin-svelte: specifier: ^2.43.0 - version: 2.43.0(eslint@8.57.0)(svelte@5.0.0-next.175)(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)) + version: 2.43.0(eslint@8.57.0)(svelte@5.0.0-next.175)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) just-clone: specifier: ^6.2.0 version: 6.2.0 @@ -238,20 +238,20 @@ importers: specifier: ^0.408.0 version: 0.408.0(svelte@5.0.0-next.175) nodemailer: - specifier: ^6.9.14 - version: 6.9.14 + specifier: ^6.9.15 + version: 6.9.15 postcss: - specifier: ^8.4.41 - version: 8.4.41 + specifier: ^8.4.44 + version: 8.4.44 postcss-import: specifier: ^16.1.0 - version: 16.1.0(postcss@8.4.41) + version: 16.1.0(postcss@8.4.44) postcss-load-config: specifier: ^5.1.0 - version: 5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0) + version: 5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0) postcss-preset-env: specifier: ^9.6.0 - version: 9.6.0(postcss@8.4.41) + version: 9.6.0(postcss@8.4.44) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -272,7 +272,7 @@ importers: version: 5.0.0-next.175 svelte-check: specifier: ^3.8.6 - version: 3.8.6(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0))(postcss@8.4.41)(sass@1.77.8)(svelte@5.0.0-next.175) + version: 3.8.6(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175) svelte-headless-table: specifier: ^0.18.2 version: 0.18.2(svelte@5.0.0-next.175) @@ -281,25 +281,25 @@ importers: version: 3.1.4(svelte@5.0.0-next.175)(typescript@5.5.4) svelte-preprocess: specifier: ^6.0.2 - version: 6.0.2(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0))(postcss@8.4.41)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4) + version: 6.0.2(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4) svelte-sequential-preprocessor: specifier: ^2.0.1 version: 2.0.1 sveltekit-flash-message: specifier: ^2.4.4 - version: 2.4.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175) + version: 2.4.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175) sveltekit-rate-limiter: specifier: ^0.5.2 - version: 0.5.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8))) + version: 0.5.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))) sveltekit-superforms: specifier: ^2.17.0 - version: 2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175) + version: 2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175) tailwindcss: specifier: ^3.4.10 - version: 3.4.10(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)) + version: 3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.16.2)(typescript@5.5.4) + version: 10.9.2(@types/node@20.16.3)(typescript@5.5.4) tslib: specifier: ^2.7.0 version: 2.7.0 @@ -310,11 +310,11 @@ importers: specifier: ^5.5.4 version: 5.5.4 vite: - specifier: ^5.4.2 - version: 5.4.2(@types/node@20.16.2)(sass@1.77.8) + specifier: ^5.4.3 + version: 5.4.3(@types/node@20.16.3)(sass@1.77.8) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.16.2)(sass@1.77.8) + version: 1.6.0(@types/node@20.16.3)(sass@1.77.8) zod: specifier: ^3.23.8 version: 3.23.8 @@ -1524,8 +1524,8 @@ packages: cpu: [x64] os: [win32] - '@neondatabase/serverless@0.9.4': - resolution: {integrity: sha512-D0AXgJh6xkf+XTlsO7iwE2Q1w8981E1cLCPAALMU2YKtkF/1SF6BiAzYARZFYo175ON+b1RNIy9TdSFHm5nteg==} + '@neondatabase/serverless@0.9.5': + resolution: {integrity: sha512-siFas6gItqv6wD/pZnvdu34wEqgG3nSE6zWZdq5j2DEsa+VvX8i/5HXJOo06qrw5axPXn+lGCxeR+NLaSPIXug==} '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} @@ -2114,8 +2114,8 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@20.16.2': - resolution: {integrity: sha512-91s/n4qUPV/wg8eE9KHYW1kouTfDk2FPGjXbBMfRWP/2vg1rCXNQL1OCabwGs0XSdukuK+MwCDXE30QpSeMUhQ==} + '@types/node@20.16.3': + resolution: {integrity: sha512-/wdGiWRkMOm53gAsSyFMXFZHbVg7C6CbkrzHNpaHoYfsUWPg7m6ZRKtvQjgvQ9i8WT540a3ydRlRQbxjY30XxQ==} '@types/pg@8.11.6': resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} @@ -2405,8 +2405,8 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - bullmq@5.12.12: - resolution: {integrity: sha512-xrWKDj1ZwnGKmrlmFqF6Vmub3WqDFfdBcIRLCooIs5+jeVzbHK7/1usgYSFg2pZiwK6h6eMivTb9WvcKkNW/+w==} + bullmq@5.12.13: + resolution: {integrity: sha512-bFk0s1U9eQ8vKrhH9zYg/1H0+puSLVXuuq/pIW2jxgUmtLebRUBZr0cHJx35azTf2oPUJ+xXfpfHWaUtm4ZveA==} bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} @@ -3181,8 +3181,8 @@ packages: peerDependencies: hono: ^4.1.1 - hono@4.5.9: - resolution: {integrity: sha512-zz8ktqMDRrZETjxBrv8C5PQRFbrTRCLNVAjD1SNQyOzv4VjmX68Uxw83xQ6oxdAB60HiWnGEatiKA8V3SZLDkQ==} + hono@4.5.11: + resolution: {integrity: sha512-62FcjLPtjAFwISVBUshryl+vbHOjg8rE4uIK/dxyR8GpLztunZpwFmfEvmJCUI7xoGh/Sr3CGCDPCmYxVw7wUQ==} engines: {node: '>=16.0.0'} html-entities@2.5.2: @@ -3615,8 +3615,8 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - nodemailer@6.9.14: - resolution: {integrity: sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==} + nodemailer@6.9.15: + resolution: {integrity: sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==} engines: {node: '>=6.0.0'} nopt@5.0.0: @@ -4079,8 +4079,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.41: - resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} + postcss@8.4.44: + resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -4844,8 +4844,8 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.4.2: - resolution: {integrity: sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==} + vite@5.4.3: + resolution: {integrity: sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5114,201 +5114,201 @@ snapshots: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.41)': + '@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.44)': dependencies: '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - '@csstools/postcss-color-function@3.0.19(postcss@8.4.41)': + '@csstools/postcss-color-function@3.0.19(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-color-mix-function@2.0.19(postcss@8.4.41)': + '@csstools/postcss-color-mix-function@2.0.19(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-content-alt-text@1.0.0(postcss@8.4.41)': + '@csstools/postcss-content-alt-text@1.0.0(postcss@8.4.44)': dependencies: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-exponential-functions@1.0.9(postcss@8.4.41)': + '@csstools/postcss-exponential-functions@1.0.9(postcss@8.4.44)': dependencies: '@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-font-format-keywords@3.0.2(postcss@8.4.41)': + '@csstools/postcss-font-format-keywords@3.0.2(postcss@8.4.44)': dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@1.0.11(postcss@8.4.41)': + '@csstools/postcss-gamut-mapping@1.0.11(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-gradients-interpolation-method@4.0.20(postcss@8.4.41)': + '@csstools/postcss-gradients-interpolation-method@4.0.20(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-hwb-function@3.0.18(postcss@8.4.41)': + '@csstools/postcss-hwb-function@3.0.18(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-ic-unit@3.0.7(postcss@8.4.41)': + '@csstools/postcss-ic-unit@3.0.7(postcss@8.4.44)': dependencies: - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-initial@1.0.1(postcss@8.4.41)': + '@csstools/postcss-initial@1.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-is-pseudo-class@4.0.8(postcss@8.4.41)': + '@csstools/postcss-is-pseudo-class@4.0.8(postcss@8.4.44)': dependencies: '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - '@csstools/postcss-light-dark-function@1.0.8(postcss@8.4.41)': + '@csstools/postcss-light-dark-function@1.0.8(postcss@8.4.44)': dependencies: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-logical-float-and-clear@2.0.1(postcss@8.4.41)': + '@csstools/postcss-logical-float-and-clear@2.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-logical-overflow@1.0.1(postcss@8.4.41)': + '@csstools/postcss-logical-overflow@1.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-logical-overscroll-behavior@1.0.1(postcss@8.4.41)': + '@csstools/postcss-logical-overscroll-behavior@1.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-logical-resize@2.0.1(postcss@8.4.41)': + '@csstools/postcss-logical-resize@2.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-logical-viewport-units@2.0.11(postcss@8.4.41)': + '@csstools/postcss-logical-viewport-units@2.0.11(postcss@8.4.44)': dependencies: '@csstools/css-tokenizer': 2.4.1 - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-media-minmax@1.1.8(postcss@8.4.41)': + '@csstools/postcss-media-minmax@1.1.8(postcss@8.4.44)': dependencies: '@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.11(postcss@8.4.41)': + '@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.11(postcss@8.4.44)': dependencies: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-nested-calc@3.0.2(postcss@8.4.41)': + '@csstools/postcss-nested-calc@3.0.2(postcss@8.4.44)': dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-normalize-display-values@3.0.2(postcss@8.4.41)': + '@csstools/postcss-normalize-display-values@3.0.2(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@3.0.19(postcss@8.4.41)': + '@csstools/postcss-oklab-function@3.0.19(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-progressive-custom-properties@3.3.0(postcss@8.4.41)': + '@csstools/postcss-progressive-custom-properties@3.3.0(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-relative-color-syntax@2.0.19(postcss@8.4.41)': + '@csstools/postcss-relative-color-syntax@2.0.19(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-scope-pseudo-class@3.0.1(postcss@8.4.41)': + '@csstools/postcss-scope-pseudo-class@3.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - '@csstools/postcss-stepped-value-functions@3.0.10(postcss@8.4.41)': + '@csstools/postcss-stepped-value-functions@3.0.10(postcss@8.4.44)': dependencies: '@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-text-decoration-shorthand@3.0.7(postcss@8.4.41)': + '@csstools/postcss-text-decoration-shorthand@3.0.7(postcss@8.4.44)': dependencies: '@csstools/color-helpers': 4.2.1 - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@3.0.10(postcss@8.4.41)': + '@csstools/postcss-trigonometric-functions@3.0.10(postcss@8.4.44)': dependencies: '@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.41 + postcss: 8.4.44 - '@csstools/postcss-unset-value@3.0.1(postcss@8.4.41)': + '@csstools/postcss-unset-value@3.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.0)': dependencies: @@ -5318,9 +5318,9 @@ snapshots: dependencies: postcss-selector-parser: 6.1.0 - '@csstools/utilities@1.0.0(postcss@8.4.41)': + '@csstools/utilities@1.0.0(postcss@8.4.44)': dependencies: - postcss: 8.4.41 + postcss: 8.4.44 '@drizzle-team/brocli@0.8.2': {} @@ -5698,20 +5698,20 @@ snapshots: '@hapi/hoek': 9.3.0 optional: true - '@hono/swagger-ui@0.4.1(hono@4.5.9)': + '@hono/swagger-ui@0.4.1(hono@4.5.11)': dependencies: - hono: 4.5.9 + hono: 4.5.11 - '@hono/zod-openapi@0.15.3(hono@4.5.9)(zod@3.23.8)': + '@hono/zod-openapi@0.15.3(hono@4.5.11)(zod@3.23.8)': dependencies: '@asteasolutions/zod-to-openapi': 7.1.1(zod@3.23.8) - '@hono/zod-validator': 0.2.2(hono@4.5.9)(zod@3.23.8) - hono: 4.5.9 + '@hono/zod-validator': 0.2.2(hono@4.5.11)(zod@3.23.8) + hono: 4.5.11 zod: 3.23.8 - '@hono/zod-validator@0.2.2(hono@4.5.9)(zod@3.23.8)': + '@hono/zod-validator@0.2.2(hono@4.5.11)(zod@3.23.8)': dependencies: - hono: 4.5.9 + hono: 4.5.11 zod: 3.23.8 '@humanwhocodes/config-array@0.11.14': @@ -5854,9 +5854,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@lucia-auth/adapter-drizzle@1.1.0(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.4)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(lucia@3.2.0)': + '@lucia-auth/adapter-drizzle@1.1.0(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(lucia@3.2.0)': dependencies: - drizzle-orm: 0.32.2(@neondatabase/serverless@0.9.4)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4) + drizzle-orm: 0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4) lucia: 3.2.0 '@lukeed/csprng@1.1.0': {} @@ -5925,7 +5925,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@neondatabase/serverless@0.9.4': + '@neondatabase/serverless@0.9.5': dependencies: '@types/pg': 8.11.6 @@ -6301,41 +6301,41 @@ snapshots: '@sodaru/yup-to-json-schema@2.0.1': optional: true - '@sveltejs/adapter-auto@3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))': + '@sveltejs/adapter-auto@3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))': dependencies: - '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) import-meta-resolve: 4.1.0 - '@sveltejs/adapter-node@5.2.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))': + '@sveltejs/adapter-node@5.2.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))': dependencies: '@rollup/plugin-commonjs': 26.0.1(rollup@4.18.1) '@rollup/plugin-json': 6.1.0(rollup@4.18.1) '@rollup/plugin-node-resolve': 15.2.3(rollup@4.18.1) - '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) rollup: 4.18.1 - '@sveltejs/adapter-vercel@5.4.3(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))': + '@sveltejs/adapter-vercel@5.4.3(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))': dependencies: - '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@vercel/nft': 0.27.2 esbuild: 0.21.5 transitivePeerDependencies: - encoding - supports-color - '@sveltejs/enhanced-img@0.3.4(rollup@4.18.1)(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8))': + '@sveltejs/enhanced-img@0.3.4(rollup@4.18.1)(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))': dependencies: magic-string: 0.30.10 svelte: 5.0.0-next.175 svelte-parse-markup: 0.1.5(svelte@5.0.0-next.175) - vite: 5.4.2(@types/node@20.16.2)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) vite-imagetools: 7.0.2(rollup@4.18.1) transitivePeerDependencies: - rollup - '@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8))': + '@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 @@ -6349,28 +6349,28 @@ snapshots: sirv: 2.0.4 svelte: 5.0.0-next.175 tiny-glob: 0.2.9 - vite: 5.4.2(@types/node@20.16.2)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) debug: 4.3.4 svelte: 5.0.0-next.175 - vite: 5.4.2(@types/node@20.16.2)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8))': + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.10 svelte: 5.0.0-next.175 svelte-hmr: 0.16.0(svelte@5.0.0-next.175) - vite: 5.4.2(@types/node@20.16.2)(sass@1.77.8) - vitefu: 0.2.5(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) + vitefu: 0.2.5(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) transitivePeerDependencies: - supports-color @@ -6400,19 +6400,19 @@ snapshots: '@types/json-schema@7.0.15': optional: true - '@types/node@20.16.2': + '@types/node@20.16.3': dependencies: undici-types: 6.19.6 '@types/pg@8.11.6': dependencies: - '@types/node': 20.16.2 + '@types/node': 20.16.3 pg-protocol: 1.6.1 pg-types: 4.0.2 '@types/pg@8.11.8': dependencies: - '@types/node': 20.16.2 + '@types/node': 20.16.3 pg-protocol: 1.6.1 pg-types: 4.0.2 @@ -6666,14 +6666,14 @@ snapshots: async-sema@3.1.1: {} - autoprefixer@10.4.20(postcss@8.4.41): + autoprefixer@10.4.20(postcss@8.4.44): dependencies: browserslist: 4.23.3 caniuse-lite: 1.0.30001649 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 axobject-query@4.0.0: @@ -6759,7 +6759,7 @@ snapshots: builtin-modules@3.3.0: {} - bullmq@5.12.12: + bullmq@5.12.13: dependencies: cron-parser: 4.9.0 ioredis: 5.4.1 @@ -6911,25 +6911,25 @@ snapshots: css-background-parser@0.1.0: {} - css-blank-pseudo@6.0.2(postcss@8.4.41): + css-blank-pseudo@6.0.2(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 css-box-shadow@1.0.0-3: {} css-color-keywords@1.0.0: {} - css-has-pseudo@6.0.5(postcss@8.4.41): + css-has-pseudo@6.0.5(postcss@8.4.44): dependencies: '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 - css-prefers-color-scheme@9.0.1(postcss@8.4.41): + css-prefers-color-scheme@9.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 css-to-react-native@3.2.0: dependencies: @@ -7030,16 +7030,16 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.32.2(@neondatabase/serverless@0.9.4)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4): + drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4): optionalDependencies: - '@neondatabase/serverless': 0.9.4 + '@neondatabase/serverless': 0.9.5 '@types/pg': 8.11.8 pg: 8.12.0 postgres: 3.4.4 - drizzle-zod@0.5.1(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.4)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(zod@3.23.8): + drizzle-zod@0.5.1(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(zod@3.23.8): dependencies: - drizzle-orm: 0.32.2(@neondatabase/serverless@0.9.4)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4) + drizzle-orm: 0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4) zod: 3.23.8 eastasianwidth@0.2.0: {} @@ -7199,7 +7199,7 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-plugin-svelte@2.43.0(eslint@8.57.0)(svelte@5.0.0-next.175)(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)): + eslint-plugin-svelte@2.43.0(eslint@8.57.0)(svelte@5.0.0-next.175)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 @@ -7207,9 +7207,9 @@ snapshots: eslint-compat-utils: 0.5.1(eslint@8.57.0) esutils: 2.0.3 known-css-properties: 0.34.0 - postcss: 8.4.41 - postcss-load-config: 3.1.4(postcss@8.4.41)(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)) - postcss-safe-parser: 6.0.0(postcss@8.4.41) + postcss: 8.4.44 + postcss-load-config: 3.1.4(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) + postcss-safe-parser: 6.0.0(postcss@8.4.44) postcss-selector-parser: 6.1.0 semver: 7.6.2 svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.175) @@ -7435,11 +7435,11 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - formsnap@1.0.1(svelte@5.0.0-next.175)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)): + formsnap@1.0.1(svelte@5.0.0-next.175)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)): dependencies: nanoid: 5.0.7 svelte: 5.0.0-next.175 - sveltekit-superforms: 2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175) + sveltekit-superforms: 2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175) forwarded@0.2.0: {} @@ -7571,11 +7571,11 @@ snapshots: hex-rgb@4.3.0: {} - hono-rate-limiter@0.4.0(hono@4.5.9): + hono-rate-limiter@0.4.0(hono@4.5.11): dependencies: - hono: 4.5.9 + hono: 4.5.11 - hono@4.5.9: {} + hono@4.5.11: {} html-entities@2.5.2: {} @@ -7968,7 +7968,7 @@ snapshots: node-releases@2.0.18: {} - nodemailer@6.9.14: {} + nodemailer@6.9.15: {} nopt@5.0.0: dependencies: @@ -8174,271 +8174,271 @@ snapshots: pngjs@5.0.0: {} - postcss-attribute-case-insensitive@6.0.3(postcss@8.4.41): + postcss-attribute-case-insensitive@6.0.3(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-clamp@4.1.0(postcss@8.4.41): + postcss-clamp@4.1.0(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@6.0.14(postcss@8.4.41): + postcss-color-functional-notation@6.0.14(postcss@8.4.44): dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - postcss-color-hex-alpha@9.0.4(postcss@8.4.41): + postcss-color-hex-alpha@9.0.4(postcss@8.4.44): dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@9.0.3(postcss@8.4.41): + postcss-color-rebeccapurple@9.0.3(postcss@8.4.44): dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-custom-media@10.0.8(postcss@8.4.41): + postcss-custom-media@10.0.8(postcss@8.4.44): dependencies: '@csstools/cascade-layer-name-parser': 1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - postcss: 8.4.41 + postcss: 8.4.44 - postcss-custom-properties@13.3.12(postcss@8.4.41): + postcss-custom-properties@13.3.12(postcss@8.4.44): dependencies: '@csstools/cascade-layer-name-parser': 1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-custom-selectors@7.1.12(postcss@8.4.41): + postcss-custom-selectors@7.1.12(postcss@8.4.44): dependencies: '@csstools/cascade-layer-name-parser': 1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - postcss-dir-pseudo-class@8.0.1(postcss@8.4.41): + postcss-dir-pseudo-class@8.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-double-position-gradients@5.0.7(postcss@8.4.41): + postcss-double-position-gradients@5.0.7(postcss@8.4.44): dependencies: - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-focus-visible@9.0.1(postcss@8.4.41): + postcss-focus-visible@9.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-focus-within@8.0.1(postcss@8.4.41): + postcss-focus-within@8.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-font-variant@5.0.0(postcss@8.4.41): + postcss-font-variant@5.0.0(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - postcss-gap-properties@5.0.1(postcss@8.4.41): + postcss-gap-properties@5.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - postcss-image-set-function@6.0.3(postcss@8.4.41): + postcss-image-set-function@6.0.3(postcss@8.4.44): dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-import@15.1.0(postcss@8.4.41): + postcss-import@15.1.0(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-import@16.1.0(postcss@8.4.41): + postcss-import@16.1.0(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.41): + postcss-js@4.0.1(postcss@8.4.44): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.41 + postcss: 8.4.44 - postcss-lab-function@6.0.19(postcss@8.4.41): + postcss-lab-function@6.0.19(postcss@8.4.44): dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/utilities': 1.0.0(postcss@8.4.41) - postcss: 8.4.41 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - postcss-load-config@3.1.4(postcss@8.4.41)(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)): + postcss-load-config@3.1.4(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - postcss: 8.4.41 - ts-node: 10.9.2(@types/node@20.16.2)(typescript@5.5.4) + postcss: 8.4.44 + ts-node: 10.9.2(@types/node@20.16.3)(typescript@5.5.4) - postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)): + postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)): dependencies: lilconfig: 3.1.1 yaml: 2.4.3 optionalDependencies: - postcss: 8.4.41 - ts-node: 10.9.2(@types/node@20.16.2)(typescript@5.5.4) + postcss: 8.4.44 + ts-node: 10.9.2(@types/node@20.16.3)(typescript@5.5.4) - postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0): + postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0): dependencies: lilconfig: 3.1.1 yaml: 2.4.2 optionalDependencies: jiti: 1.21.6 - postcss: 8.4.41 + postcss: 8.4.44 tsx: 4.19.0 - postcss-logical@7.0.1(postcss@8.4.41): + postcss-logical@7.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-nested@6.0.1(postcss@8.4.41): + postcss-nested@6.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - postcss-nesting@12.1.5(postcss@8.4.41): + postcss-nesting@12.1.5(postcss@8.4.44): dependencies: '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.1.0) '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - postcss-opacity-percentage@2.0.0(postcss@8.4.41): + postcss-opacity-percentage@2.0.0(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - postcss-overflow-shorthand@5.0.1(postcss@8.4.41): + postcss-overflow-shorthand@5.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.4.41): + postcss-page-break@3.0.4(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - postcss-place@9.0.1(postcss@8.4.41): + postcss-place@9.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-preset-env@9.6.0(postcss@8.4.41): + postcss-preset-env@9.6.0(postcss@8.4.44): dependencies: - '@csstools/postcss-cascade-layers': 4.0.6(postcss@8.4.41) - '@csstools/postcss-color-function': 3.0.19(postcss@8.4.41) - '@csstools/postcss-color-mix-function': 2.0.19(postcss@8.4.41) - '@csstools/postcss-content-alt-text': 1.0.0(postcss@8.4.41) - '@csstools/postcss-exponential-functions': 1.0.9(postcss@8.4.41) - '@csstools/postcss-font-format-keywords': 3.0.2(postcss@8.4.41) - '@csstools/postcss-gamut-mapping': 1.0.11(postcss@8.4.41) - '@csstools/postcss-gradients-interpolation-method': 4.0.20(postcss@8.4.41) - '@csstools/postcss-hwb-function': 3.0.18(postcss@8.4.41) - '@csstools/postcss-ic-unit': 3.0.7(postcss@8.4.41) - '@csstools/postcss-initial': 1.0.1(postcss@8.4.41) - '@csstools/postcss-is-pseudo-class': 4.0.8(postcss@8.4.41) - '@csstools/postcss-light-dark-function': 1.0.8(postcss@8.4.41) - '@csstools/postcss-logical-float-and-clear': 2.0.1(postcss@8.4.41) - '@csstools/postcss-logical-overflow': 1.0.1(postcss@8.4.41) - '@csstools/postcss-logical-overscroll-behavior': 1.0.1(postcss@8.4.41) - '@csstools/postcss-logical-resize': 2.0.1(postcss@8.4.41) - '@csstools/postcss-logical-viewport-units': 2.0.11(postcss@8.4.41) - '@csstools/postcss-media-minmax': 1.1.8(postcss@8.4.41) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.11(postcss@8.4.41) - '@csstools/postcss-nested-calc': 3.0.2(postcss@8.4.41) - '@csstools/postcss-normalize-display-values': 3.0.2(postcss@8.4.41) - '@csstools/postcss-oklab-function': 3.0.19(postcss@8.4.41) - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.41) - '@csstools/postcss-relative-color-syntax': 2.0.19(postcss@8.4.41) - '@csstools/postcss-scope-pseudo-class': 3.0.1(postcss@8.4.41) - '@csstools/postcss-stepped-value-functions': 3.0.10(postcss@8.4.41) - '@csstools/postcss-text-decoration-shorthand': 3.0.7(postcss@8.4.41) - '@csstools/postcss-trigonometric-functions': 3.0.10(postcss@8.4.41) - '@csstools/postcss-unset-value': 3.0.1(postcss@8.4.41) - autoprefixer: 10.4.20(postcss@8.4.41) + '@csstools/postcss-cascade-layers': 4.0.6(postcss@8.4.44) + '@csstools/postcss-color-function': 3.0.19(postcss@8.4.44) + '@csstools/postcss-color-mix-function': 2.0.19(postcss@8.4.44) + '@csstools/postcss-content-alt-text': 1.0.0(postcss@8.4.44) + '@csstools/postcss-exponential-functions': 1.0.9(postcss@8.4.44) + '@csstools/postcss-font-format-keywords': 3.0.2(postcss@8.4.44) + '@csstools/postcss-gamut-mapping': 1.0.11(postcss@8.4.44) + '@csstools/postcss-gradients-interpolation-method': 4.0.20(postcss@8.4.44) + '@csstools/postcss-hwb-function': 3.0.18(postcss@8.4.44) + '@csstools/postcss-ic-unit': 3.0.7(postcss@8.4.44) + '@csstools/postcss-initial': 1.0.1(postcss@8.4.44) + '@csstools/postcss-is-pseudo-class': 4.0.8(postcss@8.4.44) + '@csstools/postcss-light-dark-function': 1.0.8(postcss@8.4.44) + '@csstools/postcss-logical-float-and-clear': 2.0.1(postcss@8.4.44) + '@csstools/postcss-logical-overflow': 1.0.1(postcss@8.4.44) + '@csstools/postcss-logical-overscroll-behavior': 1.0.1(postcss@8.4.44) + '@csstools/postcss-logical-resize': 2.0.1(postcss@8.4.44) + '@csstools/postcss-logical-viewport-units': 2.0.11(postcss@8.4.44) + '@csstools/postcss-media-minmax': 1.1.8(postcss@8.4.44) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.11(postcss@8.4.44) + '@csstools/postcss-nested-calc': 3.0.2(postcss@8.4.44) + '@csstools/postcss-normalize-display-values': 3.0.2(postcss@8.4.44) + '@csstools/postcss-oklab-function': 3.0.19(postcss@8.4.44) + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/postcss-relative-color-syntax': 2.0.19(postcss@8.4.44) + '@csstools/postcss-scope-pseudo-class': 3.0.1(postcss@8.4.44) + '@csstools/postcss-stepped-value-functions': 3.0.10(postcss@8.4.44) + '@csstools/postcss-text-decoration-shorthand': 3.0.7(postcss@8.4.44) + '@csstools/postcss-trigonometric-functions': 3.0.10(postcss@8.4.44) + '@csstools/postcss-unset-value': 3.0.1(postcss@8.4.44) + autoprefixer: 10.4.20(postcss@8.4.44) browserslist: 4.23.1 - css-blank-pseudo: 6.0.2(postcss@8.4.41) - css-has-pseudo: 6.0.5(postcss@8.4.41) - css-prefers-color-scheme: 9.0.1(postcss@8.4.41) + css-blank-pseudo: 6.0.2(postcss@8.4.44) + css-has-pseudo: 6.0.5(postcss@8.4.44) + css-prefers-color-scheme: 9.0.1(postcss@8.4.44) cssdb: 8.1.0 - postcss: 8.4.41 - postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.41) - postcss-clamp: 4.1.0(postcss@8.4.41) - postcss-color-functional-notation: 6.0.14(postcss@8.4.41) - postcss-color-hex-alpha: 9.0.4(postcss@8.4.41) - postcss-color-rebeccapurple: 9.0.3(postcss@8.4.41) - postcss-custom-media: 10.0.8(postcss@8.4.41) - postcss-custom-properties: 13.3.12(postcss@8.4.41) - postcss-custom-selectors: 7.1.12(postcss@8.4.41) - postcss-dir-pseudo-class: 8.0.1(postcss@8.4.41) - postcss-double-position-gradients: 5.0.7(postcss@8.4.41) - postcss-focus-visible: 9.0.1(postcss@8.4.41) - postcss-focus-within: 8.0.1(postcss@8.4.41) - postcss-font-variant: 5.0.0(postcss@8.4.41) - postcss-gap-properties: 5.0.1(postcss@8.4.41) - postcss-image-set-function: 6.0.3(postcss@8.4.41) - postcss-lab-function: 6.0.19(postcss@8.4.41) - postcss-logical: 7.0.1(postcss@8.4.41) - postcss-nesting: 12.1.5(postcss@8.4.41) - postcss-opacity-percentage: 2.0.0(postcss@8.4.41) - postcss-overflow-shorthand: 5.0.1(postcss@8.4.41) - postcss-page-break: 3.0.4(postcss@8.4.41) - postcss-place: 9.0.1(postcss@8.4.41) - postcss-pseudo-class-any-link: 9.0.2(postcss@8.4.41) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.41) - postcss-selector-not: 7.0.2(postcss@8.4.41) + postcss: 8.4.44 + postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.44) + postcss-clamp: 4.1.0(postcss@8.4.44) + postcss-color-functional-notation: 6.0.14(postcss@8.4.44) + postcss-color-hex-alpha: 9.0.4(postcss@8.4.44) + postcss-color-rebeccapurple: 9.0.3(postcss@8.4.44) + postcss-custom-media: 10.0.8(postcss@8.4.44) + postcss-custom-properties: 13.3.12(postcss@8.4.44) + postcss-custom-selectors: 7.1.12(postcss@8.4.44) + postcss-dir-pseudo-class: 8.0.1(postcss@8.4.44) + postcss-double-position-gradients: 5.0.7(postcss@8.4.44) + postcss-focus-visible: 9.0.1(postcss@8.4.44) + postcss-focus-within: 8.0.1(postcss@8.4.44) + postcss-font-variant: 5.0.0(postcss@8.4.44) + postcss-gap-properties: 5.0.1(postcss@8.4.44) + postcss-image-set-function: 6.0.3(postcss@8.4.44) + postcss-lab-function: 6.0.19(postcss@8.4.44) + postcss-logical: 7.0.1(postcss@8.4.44) + postcss-nesting: 12.1.5(postcss@8.4.44) + postcss-opacity-percentage: 2.0.0(postcss@8.4.44) + postcss-overflow-shorthand: 5.0.1(postcss@8.4.44) + postcss-page-break: 3.0.4(postcss@8.4.44) + postcss-place: 9.0.1(postcss@8.4.44) + postcss-pseudo-class-any-link: 9.0.2(postcss@8.4.44) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.44) + postcss-selector-not: 7.0.2(postcss@8.4.44) - postcss-pseudo-class-any-link@9.0.2(postcss@8.4.41): + postcss-pseudo-class-any-link@9.0.2(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-replace-overflow-wrap@4.0.0(postcss@8.4.41): + postcss-replace-overflow-wrap@4.0.0(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - postcss-safe-parser@6.0.0(postcss@8.4.41): + postcss-safe-parser@6.0.0(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - postcss-scss@4.0.9(postcss@8.4.41): + postcss-scss@4.0.9(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 - postcss-selector-not@7.0.2(postcss@8.4.41): + postcss-selector-not@7.0.2(postcss@8.4.44): dependencies: - postcss: 8.4.41 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 postcss-selector-parser@6.0.16: @@ -8453,7 +8453,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.41: + postcss@8.4.44: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -8887,14 +8887,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.8.6(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0))(postcss@8.4.41)(sass@1.77.8)(svelte@5.0.0-next.175): + svelte-check@3.8.6(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 picocolors: 1.0.0 sade: 1.8.1 svelte: 5.0.0-next.175 - svelte-preprocess: 5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0))(postcss@8.4.41)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4) + svelte-preprocess: 5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4) typescript: 5.5.4 transitivePeerDependencies: - '@babel/core' @@ -8912,8 +8912,8 @@ snapshots: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.41 - postcss-scss: 4.0.9(postcss@8.4.41) + postcss: 8.4.44 + postcss-scss: 4.0.9(postcss@8.4.44) optionalDependencies: svelte: 5.0.0-next.175 @@ -8950,7 +8950,7 @@ snapshots: dependencies: svelte: 5.0.0-next.175 - svelte-preprocess@5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0))(postcss@8.4.41)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4): + svelte-preprocess@5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 @@ -8959,17 +8959,17 @@ snapshots: strip-indent: 3.0.0 svelte: 5.0.0-next.175 optionalDependencies: - postcss: 8.4.41 - postcss-load-config: 5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0) + postcss: 8.4.44 + postcss-load-config: 5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0) sass: 1.77.8 typescript: 5.5.4 - svelte-preprocess@6.0.2(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0))(postcss@8.4.41)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4): + svelte-preprocess@6.0.2(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4): dependencies: svelte: 5.0.0-next.175 optionalDependencies: - postcss: 8.4.41 - postcss-load-config: 5.1.0(jiti@1.21.6)(postcss@8.4.41)(tsx@4.19.0) + postcss: 8.4.44 + postcss-load-config: 5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0) sass: 1.77.8 typescript: 5.5.4 @@ -9024,19 +9024,19 @@ snapshots: magic-string: 0.30.10 zimmerframe: 1.1.2 - sveltekit-flash-message@2.4.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175): + sveltekit-flash-message@2.4.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175): dependencies: - '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) svelte: 5.0.0-next.175 - sveltekit-rate-limiter@0.5.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8))): + sveltekit-rate-limiter@0.5.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))): dependencies: '@isaacs/ttlcache': 1.4.1 - '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) - sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175): + sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175): dependencies: - '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) devalue: 5.0.0 just-clone: 6.2.0 memoize-weak: 1.0.2 @@ -9061,16 +9061,16 @@ snapshots: tailwind-merge@2.5.2: {} - tailwind-variants@0.2.1(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4))): + tailwind-variants@0.2.1(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4))): dependencies: tailwind-merge: 2.5.2 - tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)) + tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) - tailwindcss-animate@1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4))): dependencies: - tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)) + tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) - tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)): + tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -9086,11 +9086,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.41 - postcss-import: 15.1.0(postcss@8.4.41) - postcss-js: 4.0.1(postcss@8.4.41) - postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4)) - postcss-nested: 6.0.1(postcss@8.4.41) + postcss: 8.4.44 + postcss-import: 15.1.0(postcss@8.4.44) + postcss-js: 4.0.1(postcss@8.4.44) + postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) + postcss-nested: 6.0.1(postcss@8.4.44) postcss-selector-parser: 6.1.0 resolve: 1.22.8 sucrase: 3.35.0 @@ -9156,14 +9156,14 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@types/node@20.16.2)(typescript@5.5.4): + ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.16.2 + '@types/node': 20.16.3 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 @@ -9272,13 +9272,13 @@ snapshots: transitivePeerDependencies: - rollup - vite-node@1.6.0(@types/node@20.16.2)(sass@1.77.8): + vite-node@1.6.0(@types/node@20.16.3)(sass@1.77.8): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.4.2(@types/node@20.16.2)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) transitivePeerDependencies: - '@types/node' - less @@ -9290,21 +9290,21 @@ snapshots: - supports-color - terser - vite@5.4.2(@types/node@20.16.2)(sass@1.77.8): + vite@5.4.3(@types/node@20.16.3)(sass@1.77.8): dependencies: esbuild: 0.21.5 - postcss: 8.4.41 + postcss: 8.4.44 rollup: 4.21.0 optionalDependencies: - '@types/node': 20.16.2 + '@types/node': 20.16.3 fsevents: 2.3.3 sass: 1.77.8 - vitefu@0.2.5(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)): + vitefu@0.2.5(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)): optionalDependencies: - vite: 5.4.2(@types/node@20.16.2)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) - vitest@1.6.0(@types/node@20.16.2)(sass@1.77.8): + vitest@1.6.0(@types/node@20.16.3)(sass@1.77.8): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -9323,11 +9323,11 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.4.2(@types/node@20.16.2)(sass@1.77.8) - vite-node: 1.6.0(@types/node@20.16.2)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) + vite-node: 1.6.0(@types/node@20.16.3)(sass@1.77.8) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.16.2 + '@types/node': 20.16.3 transitivePeerDependencies: - less - lightningcss diff --git a/src/lib/components/LeftNav.svelte b/src/lib/components/LeftNav.svelte new file mode 100644 index 0000000..40f2ac0 --- /dev/null +++ b/src/lib/components/LeftNav.svelte @@ -0,0 +1,77 @@ + + +
+ +
+ {@render children()} +
+
+ + \ No newline at end of file diff --git a/src/lib/server/api/controllers/mfa.controller.ts b/src/lib/server/api/controllers/mfa.controller.ts index 148b390..9285b79 100644 --- a/src/lib/server/api/controllers/mfa.controller.ts +++ b/src/lib/server/api/controllers/mfa.controller.ts @@ -2,13 +2,15 @@ import 'reflect-metadata' import { StatusCodes } from '$lib/constants/status-codes' import type { Controller } from '$lib/server/api/common/interfaces/controller.interface' import { verifyTotpDto } from '$lib/server/api/dtos/verify-totp.dto' +import { db } from '$lib/server/api/packages/drizzle' +import { RecoveryCodesService } from '$lib/server/api/services/recovery-codes.service' import { TotpService } from '$lib/server/api/services/totp.service' +import { UsersService } from '$lib/server/api/services/users.service' import { zValidator } from '@hono/zod-validator' import { Hono } from 'hono' import { inject, injectable } from 'tsyringe' import { CredentialsType } from '../databases/tables' import { requireAuth } from '../middleware/auth.middleware' -import { UsersService } from '../services/users.service' import type { HonoTypes } from '../types' @injectable() @@ -16,6 +18,7 @@ export class MfaController implements Controller { controller = new Hono() constructor( + @inject(RecoveryCodesService) private readonly recoveryCodesService: RecoveryCodesService, @inject(TotpService) private readonly totpService: TotpService, @inject(UsersService) private readonly usersService: UsersService, ) {} @@ -36,6 +39,8 @@ export class MfaController implements Controller { const user = c.var.user try { await this.totpService.deleteOneByUserIdAndType(user.id, CredentialsType.TOTP) + await this.recoveryCodesService.deleteAllRecoveryCodesByUserId(user.id) + await this.usersService.updateUser(user.id, { mfa_enabled: false }) console.log('TOTP deleted') return c.body(null, StatusCodes.NO_CONTENT) } catch (e) { @@ -43,16 +48,26 @@ export class MfaController implements Controller { return c.status(StatusCodes.INTERNAL_SERVER_ERROR) } }) + .get('/totp/recoveryCodes', requireAuth, async (c) => { + const user = c.var.user + // You can only view recovery codes once and that is on creation + const existingCodes = await this.recoveryCodesService.findAllRecoveryCodesByUserId(user.id) + if (existingCodes) { + return c.body('You have already generated recovery codes', StatusCodes.BAD_REQUEST) + } + const recoveryCodes = await this.recoveryCodesService.createRecoveryCodes(user.id) + return c.json({ recoveryCodes }) + }) .post('/totp/verify', requireAuth, zValidator('json', verifyTotpDto), async (c) => { try { const user = c.var.user const { code } = c.req.valid('json') const verified = await this.totpService.verify(user.id, code) if (verified) { - this.usersService.updateUser(user.id, { mfa_enabled: true }) + await this.usersService.updateUser(user.id, { mfa_enabled: true }) return c.json({}, StatusCodes.OK) } - return c.json({}, StatusCodes.BAD_REQUEST) + return c.json('Invalid code', StatusCodes.BAD_REQUEST) } catch (e) { console.error(e) return c.status(StatusCodes.INTERNAL_SERVER_ERROR) diff --git a/src/lib/server/api/repositories/credentials.repository.ts b/src/lib/server/api/repositories/credentials.repository.ts index 7042384..1ff99e9 100644 --- a/src/lib/server/api/repositories/credentials.repository.ts +++ b/src/lib/server/api/repositories/credentials.repository.ts @@ -1,3 +1,4 @@ +import 'reflect-metadata' import type { Repository } from '$lib/server/api/common/interfaces/repository.interface' import { CredentialsType, credentialsTable } from '$lib/server/api/databases/tables/credentials.table' import { DatabaseProvider } from '$lib/server/api/providers/database.provider' diff --git a/src/lib/server/api/repositories/recovery-codes.repository.ts b/src/lib/server/api/repositories/recovery-codes.repository.ts new file mode 100644 index 0000000..6fdc7f0 --- /dev/null +++ b/src/lib/server/api/repositories/recovery-codes.repository.ts @@ -0,0 +1,27 @@ +import 'reflect-metadata' +import type { Repository } from '$lib/server/api/common/interfaces/repository.interface' +import { DatabaseProvider } from '$lib/server/api/providers/database.provider' +import { type InferInsertModel, eq } from 'drizzle-orm' +import { inject, injectable } from 'tsyringe' +import { recoveryCodesTable } from '../databases/tables' + +export type CreateRecoveryCodes = InferInsertModel + +@injectable() +export class RecoveryCodesRepository implements Repository { + constructor(@inject(DatabaseProvider) private readonly db: DatabaseProvider) {} + + async findAllByUserId(userId: string) { + return this.db.query.recoveryCodesTable.findFirst({ + where: eq(recoveryCodesTable.userId, userId), + }) + } + + async deleteAllByUserId(userId: string) { + return this.db.delete(recoveryCodesTable).where(eq(recoveryCodesTable.userId, userId)) + } + + trxHost(trx: DatabaseProvider) { + return new RecoveryCodesRepository(trx) + } +} diff --git a/src/lib/server/api/services/recovery-codes.service.ts b/src/lib/server/api/services/recovery-codes.service.ts new file mode 100644 index 0000000..e1f5567 --- /dev/null +++ b/src/lib/server/api/services/recovery-codes.service.ts @@ -0,0 +1,38 @@ +import 'reflect-metadata' +import { recoveryCodesTable } from '$lib/server/api/databases/tables' +import { db } from '$lib/server/api/packages/drizzle' +import { RecoveryCodesRepository } from '$lib/server/api/repositories/recovery-codes.repository' +import { alphabet, generateRandomString } from 'oslo/crypto' +import { Argon2id } from 'oslo/password' +import { inject, injectable } from 'tsyringe' + +@injectable() +export class RecoveryCodesService { + constructor(@inject(RecoveryCodesRepository) private readonly recoveryCodesRepository: RecoveryCodesRepository) {} + + async findAllRecoveryCodesByUserId(userId: string) { + return this.recoveryCodesRepository.findAllByUserId(userId) + } + + async createRecoveryCodes(userId: string) { + const createdRecoveryCodes = Array.from({ length: 5 }, () => generateRandomString(10, alphabet('A-Z', '0-9'))) + if (createdRecoveryCodes && userId) { + for (const code of createdRecoveryCodes) { + const hashedCode = await new Argon2id().hash(code) + console.log('Inserting recovery code', code, hashedCode) + await db.insert(recoveryCodesTable).values({ + userId, + code: hashedCode, + }) + } + + return createdRecoveryCodes + } + + return [] + } + + async deleteAllRecoveryCodesByUserId(userId: string) { + return this.recoveryCodesRepository.deleteAllByUserId(userId) + } +} diff --git a/src/routes/(app)/(protected)/profile/security/+layout.server.ts b/src/routes/(app)/(protected)/profile/security/+layout.server.ts new file mode 100644 index 0000000..e2ef8d4 --- /dev/null +++ b/src/routes/(app)/(protected)/profile/security/+layout.server.ts @@ -0,0 +1,3 @@ +export const load = async () => { + return {} +} diff --git a/src/routes/(app)/(protected)/profile/security/+layout.svelte b/src/routes/(app)/(protected)/profile/security/+layout.svelte new file mode 100644 index 0000000..c3382ba --- /dev/null +++ b/src/routes/(app)/(protected)/profile/security/+layout.svelte @@ -0,0 +1,15 @@ + + + + {@render children()} + diff --git a/src/routes/(app)/(protected)/profile/security/mfa/+page.server.ts b/src/routes/(app)/(protected)/profile/security/mfa/+page.server.ts index 59cf933..c7fb19e 100644 --- a/src/routes/(app)/(protected)/profile/security/mfa/+page.server.ts +++ b/src/routes/(app)/(protected)/profile/security/mfa/+page.server.ts @@ -1,22 +1,15 @@ -import { StatusCodes } from '$lib/constants/status-codes' import { notSignedInMessage } from '$lib/flashMessages' -import { db } from '$lib/server/api/packages/drizzle' -import { userNotAuthenticated } from '$lib/server/auth-utils' import { addTwoFactorSchema, removeTwoFactorSchema } from '$lib/validations/account' import env from '$src/env' -import { type Actions, error, fail } from '@sveltejs/kit' -import { eq } from 'drizzle-orm' +import { type Actions, fail } from '@sveltejs/kit' import kebabCase from 'just-kebab-case' -import { HMAC } from 'oslo/crypto' -import { decodeHex, encodeHex } from 'oslo/encoding' -import { TOTPController, createTOTPKeyURI } from 'oslo/otp' -import { Argon2id } from 'oslo/password' +import { base32, decodeHex } from 'oslo/encoding' +import { createTOTPKeyURI } from 'oslo/otp' import QRCode from 'qrcode' -import { redirect, setFlash } from 'sveltekit-flash-message/server' +import { redirect } from 'sveltekit-flash-message/server' import { zod } from 'sveltekit-superforms/adapters' import { setError, superValidate } from 'sveltekit-superforms/server' import type { PageServerLoad } from '../../$types' -import { type Credentials, credentialsTable, recoveryCodesTable, usersTable } from '../../../../../../lib/server/api/databases/tables' export const load: PageServerLoad = async (event) => { const { locals } = event @@ -69,7 +62,11 @@ export const load: PageServerLoad = async (event) => { addTwoFactorForm, }) } - const totpUri = createTOTPKeyURI(issuer, accountName, decodeHex(createdTotpCredentials.secret_data)) + const decodedHexSecret = decodeHex(createdTotpCredentials.secret_data) + const secret = base32.encode(new Uint8Array(decodedHexSecret), { + includePadding: false, + }) + const totpUri = createTOTPKeyURI(issuer, accountName, decodedHexSecret) addTwoFactorForm.data = { current_password: '', @@ -82,6 +79,7 @@ export const load: PageServerLoad = async (event) => { recoveryCodes: [], totpUri, qrCode: await QRCode.toDataURL(totpUri), + secret, } } @@ -118,21 +116,25 @@ export const actions: Actions = { } const twoFactorCode = addTwoFactorForm.data.two_factor_code - const { error: verifyTotpError } = locals.api.mfa.totp.verify + const { error: verifyTotpError } = await locals.api.mfa.totp.verify .$post({ json: { code: twoFactorCode }, }) .then(locals.parseApiResponse) - if (verifyTotpError) { return setError(addTwoFactorForm, 'two_factor_code', 'Invalid code') } - redirect(302, '/profile/security/two-factor/recovery-codes') + redirect(302, '/profile/security/mfa/recovery-codes') }, disableTotp: async (event) => { const { locals } = event - const { user, session } = locals + + const authedUser = await locals.getAuthedUser() + if (!authedUser) { + throw redirect(302, '/login', notSignedInMessage, event) + } + const removeTwoFactorForm = await superValidate(event, zod(removeTwoFactorSchema)) if (!removeTwoFactorForm.valid) { @@ -140,51 +142,27 @@ export const actions: Actions = { removeTwoFactorForm, }) } - - if (!user || !session) { - return fail(401, { - removeTwoFactorForm, + const { error: verifyPasswordError } = await locals.api.me.verify.password + .$post({ + json: { password: removeTwoFactorForm.data.current_password }, }) - } + .then(locals.parseApiResponse) - const dbUser = await db.query.usersTable.findFirst({ - where: eq(usersTable.id, user.id), - }) - - // if (!dbUser?.hashed_password) { - // removeTwoFactorForm.data.current_password = ''; - // return setError( - // removeTwoFactorForm, - // 'Error occurred. Please try again or contact support if you need further help.', - // ); - // } - - const currentPasswordVerified = await new Argon2id().verify( - // dbUser.hashed_password, - removeTwoFactorForm.data.current_password, - ) - - if (!currentPasswordVerified) { + if (verifyPasswordError) { + console.log(verifyPasswordError) return setError(removeTwoFactorForm, 'current_password', 'Your password is incorrect') } - const twoFactorDetails = await db.query.twoFactor.findFirst({ - where: eq(twoFactor.userId, dbUser.id), - }) - - if (!twoFactorDetails) { + const { error: deleteTotpError } = await locals.api.mfa.totp.$delete().then(locals.parseApiResponse) + if (deleteTotpError) { return fail(500, { removeTwoFactorForm, }) } - await db.update(twoFactor).set({ enabled: false }).where(eq(twoFactor.userId, user.id)) - await db.delete(recoveryCodes).where(eq(recoveryCodes.userId, user.id)) - - // setFlash({ type: 'success', message: 'Two-Factor Authentication has been disabled.' }, cookies); redirect( 302, - '/profile/security/two-factor', + '/profile/security/mfa', { type: 'success', message: 'Two-Factor Authentication has been disabled.', diff --git a/src/routes/(app)/(protected)/profile/security/mfa/+page.svelte b/src/routes/(app)/(protected)/profile/security/mfa/+page.svelte index 3270b03..0182587 100644 --- a/src/routes/(app)/(protected)/profile/security/mfa/+page.svelte +++ b/src/routes/(app)/(protected)/profile/security/mfa/+page.svelte @@ -1,37 +1,38 @@ +

Two-Factor Authentication

{#if twoFactorEnabled} @@ -70,4 +71,13 @@ Submit -{/if} \ No newline at end of file + Secret: {secret} +{/if} +
+ + \ No newline at end of file diff --git a/src/routes/(app)/(protected)/profile/security/mfa/recovery-codes/+page.server.ts b/src/routes/(app)/(protected)/profile/security/mfa/recovery-codes/+page.server.ts index 663f788..c3c6533 100644 --- a/src/routes/(app)/(protected)/profile/security/mfa/recovery-codes/+page.server.ts +++ b/src/routes/(app)/(protected)/profile/security/mfa/recovery-codes/+page.server.ts @@ -1,11 +1,6 @@ import { notSignedInMessage } from '$lib/flashMessages' -import { db } from '$lib/server/api/packages/drizzle' -import { eq } from 'drizzle-orm' -import { alphabet, generateRandomString } from 'oslo/crypto' -import { Argon2id } from 'oslo/password' import { redirect } from 'sveltekit-flash-message/server' import type { PageServerLoad } from '../../../$types' -import { recoveryCodesTable } from '../../../../../../../lib/server/api/databases/tables' export const load: PageServerLoad = async (event) => { const { locals } = event @@ -16,30 +11,18 @@ export const load: PageServerLoad = async (event) => { } if (authedUser.mfa_enabled) { - const dbRecoveryCodes = await db.query.recoveryCodesTable.findMany({ - where: eq(recoveryCodesTable.userId, authedUser.id), - }) - - if (dbRecoveryCodes.length === 0) { - const createdRecoveryCodes = Array.from({ length: 5 }, () => generateRandomString(10, alphabet('A-Z', '0-9'))) - if (createdRecoveryCodes) { - for (const code of createdRecoveryCodes) { - const hashedCode = await new Argon2id().hash(code) - console.log('Inserting recovery code', code, hashedCode) - await db.insert(recoveryCodesTable).values({ - userId: authedUser.id, - code: hashedCode, - }) - } - } + const { data: recoveryCodesData, error: recoveryCodesError } = await locals.api.mfa.totp.recoveryCodes.$get().then(locals.parseApiResponse) + console.log('recoveryCodesData', recoveryCodesData) + console.log('recoveryCodesError', recoveryCodesError) + if (recoveryCodesError || !recoveryCodesData || !recoveryCodesData.recoveryCodes) { return { - recoveryCodes: createdRecoveryCodes, + recoveryCodes: [], } } return { - recoveryCodes: [], + recoveryCodes: recoveryCodesData.recoveryCodes, } } - console.error('2FA not enabled') + redirect(302, '/profile', { message: 'Two-Factor Authentication is not enabled', type: 'error' }, event) }