Updating auth logic for v3 lucia, fixing types, upgrading dependencies.

This commit is contained in:
Bradley Shellnut 2023-12-19 17:54:39 -08:00
parent b290f3092f
commit 527866b1d2
23 changed files with 358 additions and 385 deletions

View file

@ -11,23 +11,20 @@ module.exports = {
parserOptions: {
sourceType: 'module',
ecmaVersion: 2020,
project: './tsconfig.json',
extraFileExtensions: ['.svelte'] // This is a required setting in `@typescript-eslint/parser` v4.24.0.
extraFileExtensions: ['.svelte']
},
ignorePatterns: ['*.cjs'],
overrides: [
{
files: ['*.svelte'],
parser: 'svelte-eslint-parser',
// Parse the `<script>` in `.svelte` as TypeScript by adding the following configuration.
parserOptions: {
parser: '@typescript-eslint/parser'
}
}
],
env: {
browser: true,
es2017: true,
node: true
}
};
},
overrides: [
{
files: ['*.svelte'],
parser: 'svelte-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser'
}
}
]
};

View file

@ -27,7 +27,7 @@
},
"devDependencies": {
"@melt-ui/pp": "^0.1.4",
"@melt-ui/svelte": "^0.57.3",
"@melt-ui/svelte": "^0.66.0",
"@playwright/test": "^1.40.1",
"@resvg/resvg-js": "^2.4.1",
"@sveltejs/adapter-auto": "^2.1.1",
@ -49,18 +49,18 @@
"postcss-preset-env": "^9.3.0",
"prettier": "^3.1.1",
"prettier-plugin-svelte": "^3.1.2",
"prisma": "^5.7.0",
"prisma": "^5.7.1",
"sass": "^1.65.1",
"satori": "^0.10.11",
"satori-html": "^0.3.2",
"svelte": "^4.2.8",
"svelte-check": "^3.6.2",
"svelte-meta-tags": "^3.1.0",
"svelte-preprocess": "^5.1.2",
"svelte-preprocess": "^5.1.3",
"svelte-sequential-preprocessor": "^2.0.1",
"sveltekit-flash-message": "^2.2.2",
"sveltekit-flash-message": "^2.3.0",
"sveltekit-superforms": "^1.12.0",
"tailwindcss": "^3.3.6",
"tailwindcss": "^3.3.7",
"ts-node": "^10.9.2",
"tslib": "^2.6.1",
"typescript": "^5.3.3",
@ -80,30 +80,30 @@
"@lucia-auth/adapter-prisma": "4.0.0-beta.7",
"@lukeed/uuid": "^2.0.1",
"@paralleldrive/cuid2": "^2.2.2",
"@prisma/client": "^5.7.0",
"@prisma/client": "^5.7.1",
"@sentry/sveltekit": "^7.88.0",
"@types/feather-icons": "^4.29.4",
"@vercel/og": "^0.5.13",
"bits-ui": "^0.0.27",
"bits-ui": "^0.11.8",
"boardgamegeekclient": "^1.9.1",
"class-variance-authority": "^0.6.1",
"clsx": "^1.2.1",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"cookie": "^0.5.0",
"feather-icons": "^4.29.1",
"formsnap": "^0.0.9",
"formsnap": "^0.4.1",
"html-entities": "^2.4.0",
"iconify-icon": "^1.0.8",
"just-kebab-case": "^4.2.0",
"loader": "^2.1.1",
"lucia": "3.0.0-beta.12",
"lucide-svelte": "^0.256.1",
"lucide-svelte": "^0.298.0",
"open-props": "^1.6.16",
"oslo": "^0.24.0",
"radix-svelte": "^0.9.0",
"svelte-french-toast": "^1.2.0",
"svelte-lazy-loader": "^1.0.0",
"tailwind-merge": "^1.14.0",
"tailwind-variants": "^0.1.18",
"tailwind-merge": "^2.1.0",
"tailwind-variants": "^0.1.19",
"tailwindcss-animate": "^1.0.6",
"zod-to-json-schema": "^3.22.3"
}

View file

@ -16,7 +16,7 @@ dependencies:
version: 1.2.48
'@lucia-auth/adapter-prisma':
specifier: 4.0.0-beta.7
version: 4.0.0-beta.7(@prisma/client@5.7.0)(lucia@3.0.0-beta.12)
version: 4.0.0-beta.7(@prisma/client@5.7.1)(lucia@3.0.0-beta.12)
'@lukeed/uuid':
specifier: ^2.0.1
version: 2.0.1
@ -24,8 +24,8 @@ dependencies:
specifier: ^2.2.2
version: 2.2.2
'@prisma/client':
specifier: ^5.7.0
version: 5.7.0(prisma@5.7.0)
specifier: ^5.7.1
version: 5.7.1(prisma@5.7.1)
'@sentry/sveltekit':
specifier: ^7.88.0
version: 7.88.0(@sveltejs/kit@1.30.3)(svelte@4.2.8)
@ -36,17 +36,17 @@ dependencies:
specifier: ^0.5.13
version: 0.5.20
bits-ui:
specifier: ^0.0.27
version: 0.0.27(@sveltejs/kit@1.30.3)(svelte@4.2.8)
specifier: ^0.11.8
version: 0.11.8(svelte@4.2.8)
boardgamegeekclient:
specifier: ^1.9.1
version: 1.9.1
class-variance-authority:
specifier: ^0.6.1
version: 0.6.1
specifier: ^0.7.0
version: 0.7.0
clsx:
specifier: ^1.2.1
version: 1.2.1
specifier: ^2.0.0
version: 2.0.0
cookie:
specifier: ^0.5.0
version: 0.5.0
@ -54,8 +54,8 @@ dependencies:
specifier: ^4.29.1
version: 4.29.1
formsnap:
specifier: ^0.0.9
version: 0.0.9(svelte@4.2.8)(sveltekit-superforms@1.12.0)(zod@3.22.4)
specifier: ^0.4.1
version: 0.4.1(svelte@4.2.8)(sveltekit-superforms@1.12.0)(zod@3.22.4)
html-entities:
specifier: ^2.4.0
version: 2.4.0
@ -72,8 +72,8 @@ dependencies:
specifier: 3.0.0-beta.12
version: 3.0.0-beta.12
lucide-svelte:
specifier: ^0.256.1
version: 0.256.1(svelte@4.2.8)
specifier: ^0.298.0
version: 0.298.0(svelte@4.2.8)
open-props:
specifier: ^1.6.16
version: 1.6.16
@ -90,14 +90,14 @@ dependencies:
specifier: ^1.0.0
version: 1.0.0
tailwind-merge:
specifier: ^1.14.0
version: 1.14.0
specifier: ^2.1.0
version: 2.1.0
tailwind-variants:
specifier: ^0.1.18
version: 0.1.18(tailwindcss@3.3.6)
specifier: ^0.1.19
version: 0.1.19(tailwindcss@3.3.7)
tailwindcss-animate:
specifier: ^1.0.6
version: 1.0.7(tailwindcss@3.3.6)
version: 1.0.7(tailwindcss@3.3.7)
zod-to-json-schema:
specifier: ^3.22.3
version: 3.22.3(zod@3.22.4)
@ -105,10 +105,10 @@ dependencies:
devDependencies:
'@melt-ui/pp':
specifier: ^0.1.4
version: 0.1.4(@melt-ui/svelte@0.57.3)(svelte@4.2.8)
version: 0.1.4(@melt-ui/svelte@0.66.0)(svelte@4.2.8)
'@melt-ui/svelte':
specifier: ^0.57.3
version: 0.57.3(svelte@4.2.8)
specifier: ^0.66.0
version: 0.66.0(svelte@4.2.8)
'@playwright/test':
specifier: ^1.40.1
version: 1.40.1
@ -173,8 +173,8 @@ devDependencies:
specifier: ^3.1.2
version: 3.1.2(prettier@3.1.1)(svelte@4.2.8)
prisma:
specifier: ^5.7.0
version: 5.7.0
specifier: ^5.7.1
version: 5.7.1
sass:
specifier: ^1.65.1
version: 1.69.5
@ -194,20 +194,20 @@ devDependencies:
specifier: ^3.1.0
version: 3.1.0(svelte@4.2.8)(typescript@5.3.3)
svelte-preprocess:
specifier: ^5.1.2
version: 5.1.2(postcss-load-config@4.0.2)(postcss@8.4.32)(sass@1.69.5)(svelte@4.2.8)(typescript@5.3.3)
specifier: ^5.1.3
version: 5.1.3(postcss-load-config@4.0.2)(postcss@8.4.32)(sass@1.69.5)(svelte@4.2.8)(typescript@5.3.3)
svelte-sequential-preprocessor:
specifier: ^2.0.1
version: 2.0.1
sveltekit-flash-message:
specifier: ^2.2.2
version: 2.2.2(@sveltejs/kit@1.30.3)(svelte@4.2.8)
specifier: ^2.3.0
version: 2.3.0(@sveltejs/kit@1.30.3)(svelte@4.2.8)
sveltekit-superforms:
specifier: ^1.12.0
version: 1.12.0(@sveltejs/kit@1.30.3)(svelte@4.2.8)(zod@3.22.4)
tailwindcss:
specifier: ^3.3.6
version: 3.3.6(ts-node@10.9.2)
specifier: ^3.3.7
version: 3.3.7(ts-node@10.9.2)
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@18.19.3)(typescript@5.3.3)
@ -263,6 +263,13 @@ packages:
'@babel/types': 7.23.0
dev: false
/@babel/runtime@7.23.6:
resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.1
dev: false
/@babel/types@7.23.0:
resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
engines: {node: '>=6.9.0'}
@ -882,11 +889,17 @@ packages:
resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==}
dependencies:
'@floating-ui/utils': 0.1.6
dev: false
/@floating-ui/core@1.5.2:
resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==}
dependencies:
'@floating-ui/utils': 0.1.6
/@floating-ui/dom@1.5.3:
resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==}
dependencies:
'@floating-ui/core': 1.5.0
'@floating-ui/core': 1.5.2
'@floating-ui/utils': 0.1.6
/@floating-ui/utils@0.1.6:
@ -932,6 +945,11 @@ packages:
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
dev: false
/@internationalized/date@3.5.0:
resolution: {integrity: sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==}
dependencies:
'@swc/helpers': 0.5.3
/@jest/schemas@29.6.3:
resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@ -970,13 +988,13 @@ packages:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
/@lucia-auth/adapter-prisma@4.0.0-beta.7(@prisma/client@5.7.0)(lucia@3.0.0-beta.12):
/@lucia-auth/adapter-prisma@4.0.0-beta.7(@prisma/client@5.7.1)(lucia@3.0.0-beta.12):
resolution: {integrity: sha512-iC7xy5wylgzmpQtJwxnshGTx4OTxmPc1yKJcTrp7FnWPSOg6ehvTw2fYBbKb+sHEe8nKVBhQbfAV44ChonPiHQ==}
peerDependencies:
'@prisma/client': ^4.2.0 || ^5.0.0
lucia: 3.0.0-beta.12
dependencies:
'@prisma/client': 5.7.0(prisma@5.7.0)
'@prisma/client': 5.7.1(prisma@5.7.1)
lucia: 3.0.0-beta.12
dev: false
@ -1008,38 +1026,42 @@ packages:
transitivePeerDependencies:
- encoding
- supports-color
dev: true
/@melt-ui/pp@0.1.4(@melt-ui/svelte@0.57.3)(svelte@4.2.8):
/@melt-ui/pp@0.1.4(@melt-ui/svelte@0.66.0)(svelte@4.2.8):
resolution: {integrity: sha512-zR+Kl3CZJPJBHW8V7YcdQCMI/dVcnW9Ct3yGbVaIywYVStVRS7F9uEDOea3xLLT2WTGodQePzPlUn53yKFu87g==}
engines: {pnpm: '>=8.6.3'}
peerDependencies:
'@melt-ui/svelte': '>= 0.29.0'
svelte: ^3.55.0 || ^4.0.0 || ^5.0.0-next.1
dependencies:
'@melt-ui/svelte': 0.57.3(svelte@4.2.8)
'@melt-ui/svelte': 0.66.0(svelte@4.2.8)
estree-walker: 3.0.3
svelte: 4.2.8
dev: true
/@melt-ui/svelte@0.37.2(svelte@4.2.8):
resolution: {integrity: sha512-MdFnsY/yL2p/y0m2PqaM/tGmJ/ZsUAhACksPXCbrTXBw042rHkZHC8ykp5E5MVXGPn/eWc9nt9Vh3tmB+2CjXw==}
/@melt-ui/svelte@0.65.2(svelte@4.2.8):
resolution: {integrity: sha512-BpsSl9Bjp1++8U3+LaDOFUoX/PFQ9N7QWFhlFdUEZduhrbVyU70v9A459SKrQ+esFSjvh1AvqJYkMAUJXJlAmQ==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
'@floating-ui/core': 1.5.0
'@floating-ui/core': 1.5.2
'@floating-ui/dom': 1.5.3
'@internationalized/date': 3.5.0
dequal: 2.0.3
focus-trap: 7.5.4
nanoid: 4.0.2
svelte: 4.2.8
dev: false
/@melt-ui/svelte@0.57.3(svelte@4.2.8):
resolution: {integrity: sha512-2nGZmoaaaikLF+sDx7XU5cUsOzN2chY0QrIRJAngtT88bXw8MHRNvErG+YdFgLGsR3N5qnEw2D9XV1BgWKrSYw==}
/@melt-ui/svelte@0.66.0(svelte@4.2.8):
resolution: {integrity: sha512-vEF8V+MYNOovNxAgc54o9BWE8+TeQt6ey2zOxHjPuj8GnnIUsRHJxErMo96bjqdhpVjW7cMUEdOET0Tw0YqSIw==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
'@floating-ui/core': 1.5.0
'@floating-ui/core': 1.5.2
'@floating-ui/dom': 1.5.3
'@internationalized/date': 3.5.0
dequal: 2.0.3
focus-trap: 7.5.4
nanoid: 4.0.2
@ -1358,8 +1380,8 @@ packages:
/@polka/url@1.0.0-next.23:
resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==}
/@prisma/client@5.7.0(prisma@5.7.0):
resolution: {integrity: sha512-cZmglCrfNbYpzUtz7HscVHl38e9CrUs31nrVoGUK1nIPXGgt8hT4jj2s657UXcNdQ/jBUxDgGmHyu2Nyrq1txg==}
/@prisma/client@5.7.1(prisma@5.7.1):
resolution: {integrity: sha512-TUSa4nUcC4nf/e7X3jyO1pEd6XcI/TLRCA0KjkA46RDIpxUaRsBYEOqITwXRW2c0bMFyKcCRXrH4f7h4q9oOlg==}
engines: {node: '>=16.13'}
requiresBuild: true
peerDependencies:
@ -1368,35 +1390,35 @@ packages:
prisma:
optional: true
dependencies:
prisma: 5.7.0
prisma: 5.7.1
dev: false
/@prisma/debug@5.7.0:
resolution: {integrity: sha512-tZ+MOjWlVvz1kOEhNYMa4QUGURY+kgOUBqLHYIV8jmCsMuvA1tWcn7qtIMLzYWCbDcQT4ZS8xDgK0R2gl6/0wA==}
/@prisma/debug@5.7.1:
resolution: {integrity: sha512-yrVSO/YZOxdeIxcBtZ5BaNqUfPrZkNsAKQIQg36cJKMxj/VYK3Vk5jMKkI+gQLl0KReo1YvX8GWKfV788SELjw==}
/@prisma/engines-version@5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9:
resolution: {integrity: sha512-V6tgRVi62jRwTm0Hglky3Scwjr/AKFBFtS+MdbsBr7UOuiu1TKLPc6xfPiyEN1+bYqjEtjxwGsHgahcJsd1rNg==}
/@prisma/engines-version@5.7.1-1.0ca5ccbcfa6bdc81c003cf549abe4269f59c41e5:
resolution: {integrity: sha512-dIR5IQK/ZxEoWRBDOHF87r1Jy+m2ih3Joi4vzJRP+FOj5yxCwS2pS5SBR3TWoVnEK1zxtLI/3N7BjHyGF84fgw==}
/@prisma/engines@5.7.0:
resolution: {integrity: sha512-TkOMgMm60n5YgEKPn9erIvFX2/QuWnl3GBo6yTRyZKk5O5KQertXiNnrYgSLy0SpsKmhovEPQb+D4l0SzyE7XA==}
/@prisma/engines@5.7.1:
resolution: {integrity: sha512-R+Pqbra8tpLP2cvyiUpx+SIKglav3nTCpA+rn6826CThviQ8yvbNG0s8jNpo51vS9FuZO3pOkARqG062vKX7uA==}
requiresBuild: true
dependencies:
'@prisma/debug': 5.7.0
'@prisma/engines-version': 5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9
'@prisma/fetch-engine': 5.7.0
'@prisma/get-platform': 5.7.0
'@prisma/debug': 5.7.1
'@prisma/engines-version': 5.7.1-1.0ca5ccbcfa6bdc81c003cf549abe4269f59c41e5
'@prisma/fetch-engine': 5.7.1
'@prisma/get-platform': 5.7.1
/@prisma/fetch-engine@5.7.0:
resolution: {integrity: sha512-zIn/qmO+N/3FYe7/L9o+yZseIU8ivh4NdPKSkQRIHfg2QVTVMnbhGoTcecbxfVubeTp+DjcbjS0H9fCuM4W04w==}
/@prisma/fetch-engine@5.7.1:
resolution: {integrity: sha512-9ELauIEBkIaEUpMIYPRlh5QELfoC6pyHolHVQgbNxglaINikZ9w9X7r1TIePAcm05pCNp2XPY1ObQIJW5nYfBQ==}
dependencies:
'@prisma/debug': 5.7.0
'@prisma/engines-version': 5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9
'@prisma/get-platform': 5.7.0
'@prisma/debug': 5.7.1
'@prisma/engines-version': 5.7.1-1.0ca5ccbcfa6bdc81c003cf549abe4269f59c41e5
'@prisma/get-platform': 5.7.1
/@prisma/get-platform@5.7.0:
resolution: {integrity: sha512-ZeV/Op4bZsWXuw5Tg05WwRI8BlKiRFhsixPcAM+5BKYSiUZiMKIi713tfT3drBq8+T0E1arNZgYSA9QYcglWNA==}
/@prisma/get-platform@5.7.1:
resolution: {integrity: sha512-eDlswr3a1m5z9D/55Iyt/nZqS5UpD+DZ9MooBB3hvrcPhDQrcf9m4Tl7buy4mvAtrubQ626ECtb8c6L/f7rGSQ==}
dependencies:
'@prisma/debug': 5.7.0
'@prisma/debug': 5.7.1
/@resvg/resvg-js-android-arm-eabi@2.6.0:
resolution: {integrity: sha512-lJnZ/2P5aMocrFMW7HWhVne5gH82I8xH6zsfH75MYr4+/JOaVcGCTEQ06XFohGMdYRP3v05SSPLPvTM/RHjxfA==}
@ -1535,6 +1557,7 @@ packages:
dependencies:
estree-walker: 2.0.2
picomatch: 2.3.1
dev: true
/@sentry-internal/feedback@7.88.0:
resolution: {integrity: sha512-lbK6jgO1I0M96nZQ99mcLSZ55ebwPAP6LhEWhkmc+eAfy97VpiY+qsbmgsmOzCEPqMmEUCEcI0rEZ7fiye2v2Q==}
@ -1766,6 +1789,7 @@ packages:
transitivePeerDependencies:
- encoding
- supports-color
dev: true
/@sveltejs/kit@1.30.3(svelte@4.2.8)(vite@4.5.1):
resolution: {integrity: sha512-0DzVXfU4h+tChFvoc8C61IqErCyskD4ydSIDjpKS2lYlEzIYrtYrY7juSqACFxqcvZAnOEXvSY+zZ8br0+ZMMg==}
@ -1828,6 +1852,11 @@ packages:
transitivePeerDependencies:
- supports-color
/@swc/helpers@0.5.3:
resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==}
dependencies:
tslib: 2.6.2
/@tsconfig/node10@1.0.9:
resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
@ -1880,10 +1909,6 @@ packages:
resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
dev: true
/@types/unist@3.0.1:
resolution: {integrity: sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==}
dev: false
/@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3):
resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==}
engines: {node: ^16.0.0 || >=18.0.0}
@ -2038,6 +2063,7 @@ packages:
transitivePeerDependencies:
- encoding
- supports-color
dev: true
/@vercel/og@0.5.20:
resolution: {integrity: sha512-zi+ZXSx/peXA+1lq7s/5Vzmm/TTfTSf/5P1qNYnh42+7X+pZmahWoXt0i7SWiq3WagfsNUNA4hUDapDiHRoXqA==}
@ -2088,6 +2114,7 @@ packages:
/abbrev@1.1.1:
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
dev: true
/acorn-jsx@5.3.2(acorn@8.11.2):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
@ -2126,10 +2153,7 @@ packages:
/ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
/ansi-sequence-parser@1.1.1:
resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==}
dev: false
dev: true
/ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
@ -2155,6 +2179,7 @@ packages:
/aproba@2.0.0:
resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
dev: true
/are-we-there-yet@2.0.0:
resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
@ -2162,6 +2187,7 @@ packages:
dependencies:
delegates: 1.0.0
readable-stream: 3.6.2
dev: true
/arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
@ -2206,6 +2232,7 @@ packages:
/async-sema@3.1.1:
resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
dev: true
/autoprefixer@10.4.16(postcss@8.4.32):
resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
@ -2248,23 +2275,17 @@ packages:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
dependencies:
file-uri-to-path: 1.0.0
dev: true
/bits-ui@0.0.27(@sveltejs/kit@1.30.3)(svelte@4.2.8):
resolution: {integrity: sha512-T/8BjEVvAOlp+1ofg4JRiwjv5m/320KUrWk5ONrjzmZVZ5d+uIlGwHmdVysbVtygHxf+FWi8CCKSPYrbxmQUYA==}
/bits-ui@0.11.8(svelte@4.2.8):
resolution: {integrity: sha512-T3YaT88OJguBoUU/MSncf41fiIc+5/ka8Au2LUDo0nSECex+LFY40+hKWLJc5tRT56avkyHsI7x9daA2r9eS/g==}
peerDependencies:
svelte: ^4.0.0
dependencies:
'@melt-ui/svelte': 0.37.2(svelte@4.2.8)
'@sveltejs/adapter-vercel': 3.1.0(@sveltejs/kit@1.30.3)
nanoid: 4.0.2
shiki: 0.14.5
'@internationalized/date': 3.5.0
'@melt-ui/svelte': 0.65.2(svelte@4.2.8)
nanoid: 5.0.4
svelte: 4.2.8
tailwind-merge: 1.14.0
unist-builder: 4.0.0
transitivePeerDependencies:
- '@sveltejs/kit'
- encoding
- supports-color
dev: false
/boardgamegeekclient@1.9.1:
@ -2383,19 +2404,20 @@ packages:
/chownr@2.0.0:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
dev: true
/class-variance-authority@0.6.1:
resolution: {integrity: sha512-eurOEGc7YVx3majOrOb099PNKgO3KnKSApOprXI4BTq6bcfbqbQXPN2u+rPPmIJ2di23bMwhk0SxCCthBmszEQ==}
/class-variance-authority@0.7.0:
resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==}
dependencies:
clsx: 1.2.1
clsx: 2.0.0
dev: false
/classnames@2.3.2:
resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==}
dev: false
/clsx@1.2.1:
resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
/clsx@2.0.0:
resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
engines: {node: '>=6'}
dev: false
@ -2421,6 +2443,7 @@ packages:
/color-support@1.1.3:
resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
hasBin: true
dev: true
/commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
@ -2431,6 +2454,7 @@ packages:
/console-control-strings@1.1.0:
resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
dev: true
/cookie@0.5.0:
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
@ -2563,6 +2587,7 @@ packages:
/delegates@1.0.0:
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
dev: true
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
@ -2576,6 +2601,7 @@ packages:
/detect-libc@2.0.2:
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
engines: {node: '>=8'}
dev: true
/devalue@4.3.2:
resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==}
@ -2618,6 +2644,7 @@ packages:
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
dev: true
/es6-promise@3.3.1:
resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
@ -2810,6 +2837,7 @@ packages:
/estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
dev: true
/estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
@ -2834,6 +2862,7 @@ packages:
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.5
dev: true
/fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
@ -2844,7 +2873,6 @@ packages:
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.5
dev: true
/fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
@ -2885,6 +2913,7 @@ packages:
/file-uri-to-path@1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
dev: true
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
@ -2923,11 +2952,11 @@ packages:
is-callable: 1.2.7
dev: false
/formsnap@0.0.9(svelte@4.2.8)(sveltekit-superforms@1.12.0)(zod@3.22.4):
resolution: {integrity: sha512-PJ/UU0+nfdyywc73sN016tF0+aPVhy37M43MY9jbtjrDuhFcibQ4EoCG3b8NtyBMSTWf785SuzAo8jdADiQVcg==}
/formsnap@0.4.1(svelte@4.2.8)(sveltekit-superforms@1.12.0)(zod@3.22.4):
resolution: {integrity: sha512-hUOaDKb+KoBi4PamJRnxRqIQW3msp2BKPqohoqjHUuBb+vgBrhoaz0WYEFkXG4bzVQS3JngG55m/zX5ciZTyeA==}
peerDependencies:
svelte: ^4.0.0
sveltekit-superforms: ^1.6.1
sveltekit-superforms: ^1.7.1
zod: ^3.22.2
dependencies:
svelte: 4.2.8
@ -2944,6 +2973,7 @@ packages:
engines: {node: '>= 8'}
dependencies:
minipass: 3.3.6
dev: true
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
@ -2979,6 +3009,7 @@ packages:
string-width: 4.2.3
strip-ansi: 6.0.1
wide-align: 1.1.5
dev: true
/get-func-name@2.0.2:
resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
@ -3103,6 +3134,7 @@ packages:
/has-unicode@2.0.1:
resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
dev: true
/hasown@2.0.0:
resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
@ -3207,6 +3239,7 @@ packages:
/is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
dev: true
/is-generator-function@1.0.10:
resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
@ -3296,6 +3329,7 @@ packages:
/jsonc-parser@3.2.0:
resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
dev: true
/just-clone@6.2.0:
resolution: {integrity: sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==}
@ -3406,6 +3440,7 @@ packages:
engines: {node: '>=10'}
dependencies:
yallist: 4.0.0
dev: true
/lucia@3.0.0-beta.12:
resolution: {integrity: sha512-BqazR0IVm5xfURR6G+mjcL77ttDHTdX+qWqaHP121fKIU27rYqUBTAxVYP3252W3gDblFmSYlnhxzkJzI+z/dw==}
@ -3413,8 +3448,8 @@ packages:
oslo: 0.23.5
dev: false
/lucide-svelte@0.256.1(svelte@4.2.8):
resolution: {integrity: sha512-Fk8kQ5Xal9lxvX7T4fkyo592so3zzBtwfAfCOtptEh68jOKery/DyMlhY5m/Bh0M0pvb87soakYchighTBzPLQ==}
/lucide-svelte@0.298.0(svelte@4.2.8):
resolution: {integrity: sha512-7xYNSMY1z1QMjLe8GWToFtFh0lvTsrxdgEAXMite/Urn9tPD16Xk3597ibpgt9Ff7IBb/ArMc3y3ZKofZhs8fQ==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
@ -3426,6 +3461,7 @@ packages:
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
dev: false
/magic-string@0.30.5:
resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
@ -3446,6 +3482,7 @@ packages:
engines: {node: '>=8'}
dependencies:
semver: 6.3.1
dev: true
/make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
@ -3494,6 +3531,7 @@ packages:
engines: {node: '>=8'}
dependencies:
yallist: 4.0.0
dev: true
/minipass@4.2.8:
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
@ -3503,6 +3541,7 @@ packages:
/minipass@5.0.0:
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
engines: {node: '>=8'}
dev: true
/minipass@7.0.4:
resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
@ -3515,6 +3554,7 @@ packages:
dependencies:
minipass: 3.3.6
yallist: 4.0.0
dev: true
/mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
@ -3526,6 +3566,7 @@ packages:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
hasBin: true
dev: true
/mlly@1.4.2:
resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
@ -3564,6 +3605,12 @@ packages:
engines: {node: ^14 || ^16 || >=18}
hasBin: true
/nanoid@5.0.4:
resolution: {integrity: sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig==}
engines: {node: ^18 || >=20}
hasBin: true
dev: false
/natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
@ -3582,6 +3629,7 @@ packages:
/node-gyp-build@4.7.1:
resolution: {integrity: sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==}
hasBin: true
dev: true
/node-releases@2.0.13:
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
@ -3593,6 +3641,7 @@ packages:
hasBin: true
dependencies:
abbrev: 1.1.1
dev: true
/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
@ -3610,6 +3659,7 @@ packages:
console-control-strings: 1.1.0
gauge: 3.0.2
set-blocking: 2.0.0
dev: true
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
@ -4251,13 +4301,13 @@ packages:
react-is: 18.2.0
dev: true
/prisma@5.7.0:
resolution: {integrity: sha512-0rcfXO2ErmGAtxnuTNHQT9ztL0zZheQjOI/VNJzdq87C3TlGPQtMqtM+KCwU6XtmkoEr7vbCQqA7HF9IY0ST+Q==}
/prisma@5.7.1:
resolution: {integrity: sha512-ekho7ziH0WEJvC4AxuJz+ewRTMskrebPcrKuBwcNzVDniYxx+dXOGcorNeIb9VEMO5vrKzwNYvhD271Ui2jnNw==}
engines: {node: '>=16.13'}
hasBin: true
requiresBuild: true
dependencies:
'@prisma/engines': 5.7.0
'@prisma/engines': 5.7.1
/progress@2.0.3:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
@ -4303,6 +4353,7 @@ packages:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
dev: true
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
@ -4325,6 +4376,10 @@ packages:
resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==}
dev: false
/regenerator-runtime@0.14.1:
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
dev: false
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@ -4333,6 +4388,7 @@ packages:
/resolve-from@5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
dev: true
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
@ -4357,6 +4413,7 @@ packages:
hasBin: true
dependencies:
glob: 7.2.3
dev: true
/rollup@3.29.4:
resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==}
@ -4378,6 +4435,7 @@ packages:
/safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: true
/sander@0.5.1:
resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==}
@ -4445,6 +4503,7 @@ packages:
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
dev: true
/semver@7.5.4:
resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
@ -4452,9 +4511,11 @@ packages:
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: true
/set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
dev: true
/set-cookie-parser@2.6.0:
resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
@ -4481,21 +4542,13 @@ packages:
engines: {node: '>=8'}
dev: true
/shiki@0.14.5:
resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==}
dependencies:
ansi-sequence-parser: 1.1.1
jsonc-parser: 3.2.0
vscode-oniguruma: 1.7.0
vscode-textmate: 8.0.0
dev: false
/siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
dev: true
/signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
dev: true
/sirv@2.0.3:
resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==}
@ -4543,6 +4596,7 @@ packages:
emoji-regex: 8.0.0
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
dev: true
/string.prototype.codepointat@0.2.1:
resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==}
@ -4551,12 +4605,14 @@ packages:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
dependencies:
safe-buffer: 5.2.1
dev: true
/strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
dependencies:
ansi-regex: 5.0.1
dev: true
/strip-indent@3.0.0:
resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
@ -4617,7 +4673,7 @@ packages:
picocolors: 1.0.0
sade: 1.8.1
svelte: 4.2.8
svelte-preprocess: 5.1.2(postcss-load-config@4.0.2)(postcss@8.4.32)(sass@1.69.5)(svelte@4.2.8)(typescript@5.3.3)
svelte-preprocess: 5.1.3(postcss-load-config@4.0.2)(postcss@8.4.32)(sass@1.69.5)(svelte@4.2.8)(typescript@5.3.3)
typescript: 5.3.3
transitivePeerDependencies:
- '@babel/core'
@ -4680,9 +4736,9 @@ packages:
- typescript
dev: true
/svelte-preprocess@5.1.2(postcss-load-config@4.0.2)(postcss@8.4.32)(sass@1.69.5)(svelte@4.2.8)(typescript@5.3.3):
resolution: {integrity: sha512-XF0aliMAcYnP4hLETvB6HRAMnaL09ASYT1Z2I1Gwu0nz6xbdg/dSgAEthtFZJA4AKrNhFDFdmUDO+H9d/6xg5g==}
engines: {node: '>= 14.10.0'}
/svelte-preprocess@5.1.3(postcss-load-config@4.0.2)(postcss@8.4.32)(sass@1.69.5)(svelte@4.2.8)(typescript@5.3.3):
resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==}
engines: {node: '>= 16.0.0', pnpm: ^8.0.0}
requiresBuild: true
peerDependencies:
'@babel/core': ^7.10.2
@ -4720,7 +4776,7 @@ packages:
dependencies:
'@types/pug': 2.0.8
detect-indent: 6.1.0
magic-string: 0.27.0
magic-string: 0.30.5
postcss: 8.4.32
postcss-load-config: 4.0.2(postcss@8.4.32)(ts-node@10.9.2)
sass: 1.69.5
@ -4764,10 +4820,10 @@ packages:
magic-string: 0.30.5
periscopic: 3.1.0
/sveltekit-flash-message@2.2.2(@sveltejs/kit@1.30.3)(svelte@4.2.8):
resolution: {integrity: sha512-5xaQbkbEfzIMT2VfyJNtXl/20ugaBLc/9BzeQ+l4rHr+IoWC81qRANKAFlfZqZ2eCGPq1pzIhVeuxaPk74dAgA==}
/sveltekit-flash-message@2.3.0(@sveltejs/kit@1.30.3)(svelte@4.2.8):
resolution: {integrity: sha512-PJgOtKfJ02sNBNp3iELSJ/TlJGCxkLtqPVSlSvp16KFueJrtiMDjFDliPkYJAGJ3EJHcoVac6aF1moCUOjS5Vw==}
peerDependencies:
'@sveltejs/kit': 1.x
'@sveltejs/kit': 1.x || 2.x
svelte: 3.x || 4.x
dependencies:
'@sveltejs/kit': 1.30.3(svelte@4.2.8)(vite@4.5.1)
@ -4792,26 +4848,32 @@ packages:
resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==}
dev: false
/tailwind-variants@0.1.18(tailwindcss@3.3.6):
resolution: {integrity: sha512-yoydMYm3FbZRw7wak+E2sqwYv2Uo3YWRqVZR03DGqDGm0ytzDrEnWO/Q/GMHdhaz8adOvycKw/bwCgQFCfmfhg==}
/tailwind-merge@2.1.0:
resolution: {integrity: sha512-l11VvI4nSwW7MtLSLYT4ldidDEUwQAMWuSHk7l4zcXZDgnCRa0V3OdCwFfM7DCzakVXMNRwAeje9maFFXT71dQ==}
dependencies:
'@babel/runtime': 7.23.6
dev: false
/tailwind-variants@0.1.19(tailwindcss@3.3.7):
resolution: {integrity: sha512-D9Yf5WqsxodnCtjZt6KifEoKwW8rTURXQV03KRKlojITQM5gV1vPVWufWNiIvd/ptC3QybYFpwmHK9cs4Ei08Q==}
engines: {node: '>=16.x', pnpm: '>=7.x'}
peerDependencies:
tailwindcss: '*'
dependencies:
tailwind-merge: 1.14.0
tailwindcss: 3.3.6(ts-node@10.9.2)
tailwindcss: 3.3.7(ts-node@10.9.2)
dev: false
/tailwindcss-animate@1.0.7(tailwindcss@3.3.6):
/tailwindcss-animate@1.0.7(tailwindcss@3.3.7):
resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
dependencies:
tailwindcss: 3.3.6(ts-node@10.9.2)
tailwindcss: 3.3.7(ts-node@10.9.2)
dev: false
/tailwindcss@3.3.6(ts-node@10.9.2):
resolution: {integrity: sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==}
/tailwindcss@3.3.7(ts-node@10.9.2):
resolution: {integrity: sha512-pjgQxDZPvyS/nG3ZYkyCvsbONJl7GdOejfm24iMt2ElYQQw8Jc4p0m8RdMp7mznPD0kUhfzwV3zAwa80qI0zmQ==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
@ -4820,7 +4882,7 @@ packages:
chokidar: 3.5.3
didyoumean: 1.2.2
dlv: 1.1.3
fast-glob: 3.3.1
fast-glob: 3.3.2
glob-parent: 6.0.2
is-glob: 4.0.3
jiti: 1.21.0
@ -4850,6 +4912,7 @@ packages:
minizlib: 2.1.2
mkdirp: 1.0.4
yallist: 4.0.0
dev: true
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
@ -5001,12 +5064,6 @@ packages:
pako: 0.2.9
tiny-inflate: 1.0.3
/unist-builder@4.0.0:
resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==}
dependencies:
'@types/unist': 3.0.1
dev: false
/unplugin@1.0.1:
resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==}
dependencies:
@ -5182,14 +5239,6 @@ packages:
- terser
dev: true
/vscode-oniguruma@1.7.0:
resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==}
dev: false
/vscode-textmate@8.0.0:
resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==}
dev: false
/webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
@ -5239,12 +5288,14 @@ packages:
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
dependencies:
string-width: 4.2.3
dev: true
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true
/yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}

View file

@ -1,22 +1,20 @@
<script lang="ts">
import { applyAction, enhance } from '$app/forms';
import { ListChecks, ListTodo, LogOut, User } from 'lucide-svelte';
import { Button } from '$lib/components/ui/button';
import * as DropdownMenu from "$lib/components/ui/dropdown-menu";
import * as Avatar from "$lib/components/ui/avatar";
import * as DropdownMenu from "$components/ui/dropdown-menu";
import * as Avatar from "$components/ui/avatar";
import Logo from '$components/logo.svelte';
import { boredState } from '$lib/stores/boredState';
import { invalidateAll } from '$app/navigation';
import toast from 'svelte-french-toast';
export let user: any;
export let user;
let avatar = user?.username.slice(0, 1).toUpperCase() || '?';
</script>
<header>
<div class="corner">
<a href="/" class="logo" title="Home">
<a href="/static" class="logo" title="Home">
<div class="logo-image">
<Logo />
</div>
@ -59,7 +57,6 @@
</a>
<form
use:enhance={() => {
boredState.update((n) => ({ ...n, loading: true }));
return async ({ result }) => {
console.log(result);
if (result.type === 'success' || result.type === 'redirect') {
@ -73,7 +70,6 @@
}
await invalidateAll();
await applyAction(result);
boredState.update((n) => ({ ...n, loading: true }));
};
}}
action="/logout"

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="107" height="128" viewBox="0 0 107 128"><title>svelte-logo</title><path d="M94.1566,22.8189c-10.4-14.8851-30.94-19.2971-45.7914-9.8348L22.2825,29.6078A29.9234,29.9234,0,0,0,8.7639,49.6506a31.5136,31.5136,0,0,0,3.1076,20.2318A30.0061,30.0061,0,0,0,7.3953,81.0653a31.8886,31.8886,0,0,0,5.4473,24.1157c10.4022,14.8865,30.9423,19.2966,45.7914,9.8348L84.7167,98.3921A29.9177,29.9177,0,0,0,98.2353,78.3493,31.5263,31.5263,0,0,0,95.13,58.117a30,30,0,0,0,4.4743-11.1824,31.88,31.88,0,0,0-5.4473-24.1157" style="fill:#ff3e00"/><path d="M45.8171,106.5815A20.7182,20.7182,0,0,1,23.58,98.3389a19.1739,19.1739,0,0,1-3.2766-14.5025,18.1886,18.1886,0,0,1,.6233-2.4357l.4912-1.4978,1.3363.9815a33.6443,33.6443,0,0,0,10.203,5.0978l.9694.2941-.0893.9675a5.8474,5.8474,0,0,0,1.052,3.8781,6.2389,6.2389,0,0,0,6.6952,2.485,5.7449,5.7449,0,0,0,1.6021-.7041L69.27,76.281a5.4306,5.4306,0,0,0,2.4506-3.631,5.7948,5.7948,0,0,0-.9875-4.3712,6.2436,6.2436,0,0,0-6.6978-2.4864,5.7427,5.7427,0,0,0-1.6.7036l-9.9532,6.3449a19.0329,19.0329,0,0,1-5.2965,2.3259,20.7181,20.7181,0,0,1-22.2368-8.2427,19.1725,19.1725,0,0,1-3.2766-14.5024,17.9885,17.9885,0,0,1,8.13-12.0513L55.8833,23.7472a19.0038,19.0038,0,0,1,5.3-2.3287A20.7182,20.7182,0,0,1,83.42,29.6611a19.1739,19.1739,0,0,1,3.2766,14.5025,18.4,18.4,0,0,1-.6233,2.4357l-.4912,1.4978-1.3356-.98a33.6175,33.6175,0,0,0-10.2037-5.1l-.9694-.2942.0893-.9675a5.8588,5.8588,0,0,0-1.052-3.878,6.2389,6.2389,0,0,0-6.6952-2.485,5.7449,5.7449,0,0,0-1.6021.7041L37.73,51.719a5.4218,5.4218,0,0,0-2.4487,3.63,5.7862,5.7862,0,0,0,.9856,4.3717,6.2437,6.2437,0,0,0,6.6978,2.4864,5.7652,5.7652,0,0,0,1.602-.7041l9.9519-6.3425a18.978,18.978,0,0,1,5.2959-2.3278,20.7181,20.7181,0,0,1,22.2368,8.2427,19.1725,19.1725,0,0,1,3.2766,14.5024,17.9977,17.9977,0,0,1-8.13,12.0532L51.1167,104.2528a19.0038,19.0038,0,0,1-5.3,2.3287" style="fill:#fff"/></svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -11,14 +11,16 @@
export { className as class };
</script>
<FormPrimitive.Select
class={cn(
buttonVariants({ variant: "outline" }),
"appearance-none bg-transparent font-normal",
className
)}
{...$$restProps}
>
<slot />
</FormPrimitive.Select>
<ChevronDown class="absolute right-3 top-2.5 h-4 w-4 opacity-50" />
<div class="relative">
<FormPrimitive.Select
class={cn(
buttonVariants({ variant: "outline" }),
"appearance-none bg-transparent font-normal",
className
)}
{...$$restProps}
>
<slot />
</FormPrimitive.Select>
<ChevronDown class="absolute right-3 top-2.5 h-4 w-4 opacity-50" />
</div>

View file

@ -11,7 +11,13 @@
export let placeholder = "";
</script>
<Select.Trigger {...$$restProps} {...$attrStore} on:click on:keydown>
<Select.Trigger
{...$$restProps}
{...$attrStore}
on:click
on:keydown
type="button"
>
<Select.Value {placeholder} />
<slot />
</Select.Trigger>

View file

@ -3,7 +3,7 @@
import { getFormField } from "formsnap";
import type { Select as SelectPrimitive } from "bits-ui";
type $$Props = SelectPrimitive.Props;
type $$Props = SelectPrimitive.Props<unknown>;
const { setValue, name, value } = getFormField();
export let onSelectedChange: $$Props["onSelectedChange"] = undefined;
</script>

View file

@ -1,15 +1,16 @@
import { Select as SelectPrimitive } from "bits-ui";
import Root from "./select.svelte";
import Label from "./select-label.svelte";
import Item from "./select-item.svelte";
import Content from "./select-content.svelte";
import Trigger from "./select-trigger.svelte";
import Separator from "./select-separator.svelte";
const Root = SelectPrimitive.Root;
const Group = SelectPrimitive.Group;
const Input = SelectPrimitive.Input;
const Value = SelectPrimitive.Value;
export {
Root,
Group,

View file

@ -5,6 +5,8 @@
type $$Props = SelectPrimitive.ContentProps;
type $$Events = SelectPrimitive.ContentEvents;
export let sideOffset: $$Props["sideOffset"] = 4;
export let inTransition: $$Props["inTransition"] = flyAndScale;
export let inTransitionConfig: $$Props["inTransitionConfig"] = undefined;
export let outTransition: $$Props["outTransition"] = scale;
@ -23,6 +25,7 @@
{inTransitionConfig}
{outTransition}
{outTransitionConfig}
{sideOffset}
class={cn(
"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none",
className

View file

@ -20,7 +20,7 @@
bind:pressed
class={cn(toggleVariants({ variant, size, className }))}
{...$$restProps}
on:m-click
on:click
>
<slot />
</TogglePrimitive.Root>

View file

@ -1,19 +1,19 @@
import { fail, redirect, type Actions } from "@sveltejs/kit";
import { message, setError, superValidate } from 'sveltekit-superforms/server';
import { Argon2id } from "oslo/password";
import { changeUserPasswordSchema } from '$lib/config/zod-schemas.js';
import { auth } from '$lib/server/lucia.js';
import { lucia } from '$lib/server/auth.js';
import type { PageServerLoad } from "./$types";
import prisma from "$lib/prisma";
export const load: PageServerLoad = async (event) => {
const form = await superValidate(event, changeUserPasswordSchema);
const session = await event.locals.auth.validate();
const user = event.locals.user;
if (!session) {
if (!user) {
throw redirect(302, '/login');
}
const { user } = session;
form.data = {
current_password: '',
password: '',
@ -27,7 +27,6 @@ export const load: PageServerLoad = async (event) => {
export const actions: Actions = {
default: async (event) => {
const form = await superValidate(event, changeUserPasswordSchema);
//console.log(form);
if (!form.valid) {
return fail(400, {
@ -35,23 +34,61 @@ export const actions: Actions = {
});
}
//add user to db
try {
console.log('updating profile');
const session = await event.locals.auth.validate();
console.log('updating profile');
if (!event.locals.user) {
throw redirect(302, '/login');
}
if (!session) {
throw redirect(302, '/login');
const user = event.locals.user;
const dbUser = await prisma.user.findUnique({
where: {
id: user.id
}
});
const user = session.user;
if (!dbUser || !dbUser.hashed_password) {
form.data.password = '';
form.data.confirm_password = '';
form.data.current_password = '';
return setError(
form,
'Error occurred. Please try again or contact support if you need further help.'
);
}
const currentPasswordVerified = await new Argon2id().verify(dbUser.hashed_password, form.data.current_password);
if (!currentPasswordVerified) {
return setError(form, 'current_password', 'Your password is incorrect.');
}
try {
if (user?.username) {
if (form.data.password !== form.data.confirm_password) {
return setError(form, 'Password and confirm password do not match');
}
await auth.useKey('username', user.username, form.data.current_password);
await auth.updateKeyPassword('username', user.username, form.data.password);
const hashedPassword = await new Argon2id().hash(form.data.password);
await lucia.invalidateUserSessions(user.id);
await prisma.user.update({
where: {
id: user.id
},
data: {
hashed_password: hashedPassword
}
});
const session = await lucia.createSession(user.id, {
country: event.locals.session.ip,
});
const sessionCookie = lucia.createSessionCookie(session.id);
return new Response(null, {
status: 302,
headers: {
Location: '/login',
'Set-Cookie': sessionCookie.serialize()
}
});
} else {
return setError(
form,
@ -67,9 +104,9 @@ export const actions: Actions = {
}
// TODO: Add toast instead?
form.data.password = '';
form.data.confirm_password = '';
form.data.current_password = '';
return message(form, 'Profile updated successfully.');
// form.data.password = '';
// form.data.confirm_password = '';
// form.data.current_password = '';
// return message(form, 'Profile updated successfully.');
}
};

View file

@ -1,8 +1,7 @@
import { fail, redirect, type Actions } from '@sveltejs/kit';
import { fail, type Actions } from '@sveltejs/kit';
import { message, setError, superValidate } from 'sveltekit-superforms/server';
// import { LuciaError } from 'lucia';
import { redirect } from 'sveltekit-flash-message/server';
import { userSchema } from '$lib/config/zod-schemas';
import { Lucia } from '$lib/server/auth.js';
import type { PageServerLoad } from './$types';
import prisma from '$lib/prisma';
@ -17,7 +16,8 @@ export const load: PageServerLoad = async (event) => {
const form = await superValidate(event, profileSchema);
if (!event.locals.user) {
throw redirect(302, '/login');
const message = { type: 'error', message: 'You are not signed in' } as const;
throw redirect(302, '/login', message, event);
}
const { user } = event.locals;

View file

@ -1,12 +1,12 @@
<script lang="ts">
import { superForm } from 'sveltekit-superforms/client';
//import SuperDebug from 'sveltekit-superforms/client/SuperDebug.svelte';
import { userSchema } from '$lib/config/zod-schemas';
import { AlertTriangle, KeyRound } from 'lucide-svelte';
import { Label } from '$components/ui/label';
import { userSchema } from '$lib/config/zod-schemas';
import * as Alert from "$lib/components/ui/alert";
import { Label } from '$lib/components/ui/label';
import { Input } from '$components/ui/input';
import { Button } from '$components/ui/button';
import * as Alert from "$lib/components/ui/alert";
export let data;
const profileSchema = userSchema.pick({
@ -16,7 +16,7 @@
username: true
});
const { form, errors, enhance, delayed, message } = superForm(data.form, {
const { form, errors, enhance, message } = superForm(data.form, {
taintedMessage: null,
validators: profileSchema,
delayMs: 0
@ -62,7 +62,7 @@
{#if $errors.email}
<small>{$errors.email}</small>
{/if}
{#if $form.email === ''}
{#if !$form.email}
<Alert.Root variant="destructive">
<AlertTriangle class="h-4 w-4" />
<Alert.Title>Heads up!</Alert.Title>

View file

@ -1,7 +1,6 @@
<script lang="ts">
import 'iconify-icon';
import Transition from '$lib/components/transition.svelte';
import Header from '$lib/components/header/index.svelte';
import Header from '$components/Header.svelte';
import Footer from '$lib/components/footer.svelte';
export let data;
@ -10,29 +9,12 @@
<Header user={data.user} />
<main>
<Transition url={data.url} transition={{ type: 'page' }}>
<slot />
</Transition>
<slot />
</main>
<Footer />
<style lang="postcss">
.background {
background: black;
opacity: 0.8;
cursor: none;
inset: 0;
position: fixed;
z-index: 100;
}
/* .wrapper {
display: grid;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
} */
main {
flex: 1;
display: flex;

View file

@ -1,9 +1,9 @@
<script lang="ts">
// import TextSearch from '$lib/components/search/textSearch/index.svelte';
// import TextSearch from '$lib/components/search/textSearch/header.svelte';
import RandomSearch from '$lib/components/search/random/index.svelte';
import logo from '$lib/assets/bored-game.png';
// import Random from '$lib/components/random/index.svelte';
// import Random from '$lib/components/random/header.svelte';
export let data;
</script>

View file

@ -30,29 +30,6 @@
defaultPage: 1,
siblingCount: 1
});
// async function handleNextPageEvent(event: CustomEvent) {
// if (+event?.detail?.page === page + 1) {
// page += 1;
// }
// await tick();
// submitButton.click();
// }
// async function handlePreviousPageEvent(event: CustomEvent) {
// if (+event?.detail?.page === page - 1) {
// page -= 1;
// }
// await tick();
// submitButton.click();
// }
// async function handlePerPageEvent(event: CustomEvent) {
// page = 1;
// pageSize = event.detail.pageSize;
// await tick();
// submitButton.click();
// }
</script>
<div class="game-search">

View file

@ -28,7 +28,7 @@ export const load: PageServerLoad = async (event) => {
export const actions: Actions = {
default: async (event) => {
const { cookies, locals } = event;
const { locals } = event;
const form = await superValidate(event, signInSchema);
if (!form.valid) {
@ -61,7 +61,7 @@ export const actions: Actions = {
}
session = await lucia.createSession(user.id, {
country: locals.session.ip,
country: locals.session.ip
});
sessionCookie = lucia.createSessionCookie(session.id);
@ -93,7 +93,7 @@ export const actions: Actions = {
form.data.password = '';
return setError(form, '', 'Your username or password is incorrect.');
}
event.cookies.set(sessionCookie.name, sessionCookie.value, sessionCookie.attributes);
form.data.username = '';
form.data.password = '';

View file

@ -2,7 +2,6 @@
import { page } from '$app/stores';
import { superForm } from 'sveltekit-superforms/client';
import * as flashModule from 'sveltekit-flash-message/client';
import toast from 'svelte-french-toast';
import { AlertCircle } from "lucide-svelte";
import { signInSchema } from '$lib/config/zod-schemas.js';
import { Label } from '$components/ui/label';
@ -31,16 +30,6 @@
validationMethod: 'oninput',
delayMs: 0,
});
// const flash = flashModule.getFlash(page);
// $: {
// if ($flash) {
// toast.error($flash.message, {
// duration: 5000
// });
// }
// }
</script>
<svelte:head>

View file

@ -33,15 +33,6 @@
let collapsibleOpen = true;
// const flash = flashModule.getFlash(page);
// $: {
// if ($flash) {
// toast.error($flash.message, {
// duration: 5000
// });
// }
// }
onMount(() => {
collapsibleOpen = false;
});

View file

@ -1,18 +1,16 @@
<script lang="ts">
import "$lib/styles/app.pcss";
import { onMount } from "svelte";
// import { getFlash } from 'sveltekit-flash-message/client';
import { getFlash } from 'sveltekit-flash-message/client';
import toast, { Toaster } from 'svelte-french-toast';
import { MetaTags } from 'svelte-meta-tags';
import 'iconify-icon';
import { page } from '$app/stores';
import { onNavigate } from "$app/navigation";
import { boredState } from '$lib/stores/boredState';
import Analytics from '$lib/components/analytics.svelte';
import Loading from '$lib/components/Loading.svelte';
import { theme } from '$state/theme';
import PageLoadingIndicator from '$lib/page_loading_indicator.svelte';
import Portal from "$lib/Portal.svelte";
import Loading from "$components/loading.svelte";
const dev = process.env.NODE_ENV !== 'production';
@ -31,28 +29,9 @@
...$page.data.metaTagsChild
}
// const flash = getFlash(page, {
// clearAfterMs: 6000
// });
// let flashType;
// let flashMessage;
// $: flashType = $flash?.type;
// $: flashMessage = $flash?.message;
// $: {
// if ($navigating) {
// debounce(() => {
// boredState.update((n) => ({ ...n, loading: true }));
// }, 250);
// }
// if (!$navigating) {
// boredState.update((n) => ({ ...n, loading: false }));
// }
// }
// $: isOpen = $boredState?.dialog?.isOpen;
$: loading = $boredState?.loading;
const flash = getFlash(page, {
clearAfterMs: 6000
});
onMount(() => {
// set the theme to the user's active theme
@ -60,21 +39,21 @@
document.querySelector('html')?.setAttribute('data-theme', $theme);
});
// flash.subscribe(($flash) => {
// if (!$flash) return;
flash.subscribe(($flash) => {
if (!$flash) return;
// if ($flash.type == 'success') {
// toast.success($flash.message);
// } else {
// toast.error($flash.message, {
// duration: 5000
// });
// }
if ($flash.type === 'success') {
toast.success($flash.message);
} else {
toast.error($flash.message, {
duration: 5000
});
}
// // Clearing the flash message could sometimes
// // be required here to avoid double-toasting.
// flash.set(undefined);
// });
// Clearing the flash message could sometimes
// be required here to avoid double-toasting.
flash.set(undefined);
});
onNavigate(async (navigation) => {
if (!document.startViewTransition) return;
@ -100,43 +79,10 @@
<slot />
</div>
{#if loading}
<Portal>
<div class="loading">
<Loading />
<h3>Loading...</h3>
</div>
<div class="background" />
</Portal>
{/if}
<!-- <Toaster /> -->
<Toaster />
<Loading />
<style lang="postcss">
.loading {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 101;
display: grid;
place-items: center;
gap: 1rem;
h3 {
color: white;
}
}
.background {
background: black;
opacity: 0.8;
cursor: none;
inset: 0;
position: fixed;
z-index: 100;
}
.layout {
display: flex;
position: relative;

View file

@ -1,5 +1,5 @@
import { error, json } from '@sveltejs/kit';
import type { Prisma } from '@prisma/client';
import { Prisma } from '@prisma/client';
import prisma from '$lib/prisma';
// Search a user's collection
@ -13,25 +13,33 @@ export const GET = async ({ url, locals }) => {
console.log(`q: ${q}, limit: ${limit}, skip: ${skip}, order: ${order}`);
// const sort : Prisma.GameOrderByRelevanceFieldEnum = <Prisma.GameOrderByRelevanceFieldEnum>searchParams?.sort || 'name';
// console.log('url', url);
const exactGameSelect: Prisma.GameSelect = {
id: true,
name: true,
slug: true,
thumb_url: true
};
try {
let games = [];
if (exact) {
games = await prisma.game.findFirst({
if (exact) {
const game =
await prisma.game.findFirst({
where: {
name: {
equals: q
}
},
select: {
id: true,
name: true,
slug: true,
thumb_url: true
}
select: exactGameSelect
});
} else {
games = await prisma.game.findMany({
if (!game) {
throw error(404, { message: 'No games found' });
}
const games = [game];
console.log('Games found in Exact Search API', JSON.stringify(games, null, 2));
return json(games);
} else {
const games =
(await prisma.game.findMany({
orderBy: {
_relevance: {
fields: ['name'],
@ -39,26 +47,14 @@ export const GET = async ({ url, locals }) => {
sort: order
}
},
select: {
id: true,
name: true,
slug: true,
thumb_url: true
},
select: exactGameSelect,
take: limit,
skip
});
}
if (!games || games.length === 0) {
})) || [];
if (games.length === 0) {
throw error(404, { message: 'No games found' });
}
console.log('Games found in Search API', JSON.stringify(games, null, 2));
return json(games);
} catch (e) {
console.error(e);
throw error(500, { message: 'Something went wrong' });
}
};