From bdfc1dfd3ff07890d0f591d5a178d46a785cd6d6 Mon Sep 17 00:00:00 2001
From: Bradley Shellnut
Date: Sun, 13 Aug 2023 22:12:02 -0700
Subject: [PATCH] Updating dependencies, fixing search, fixing wishlist add and
remove, fixing game page, not showing buttons on list of games, and adding
helper components.
---
.vscode/settings.json | 2 +-
package.json | 34 +-
pnpm-lock.yaml | 457 +++++++++---------
prisma/schema.prisma | 29 +-
src/lib/apis/collection.ts | 0
src/lib/apis/wishlist.ts | 0
src/lib/components/AddToList.svelte | 138 ++++++
src/lib/components/WishlistButton.svelte | 0
src/lib/components/game/index.svelte | 99 +---
.../components/search/textSearch/index.svelte | 75 +--
src/lib/zodValidation.ts | 5 +
.../(protected)/collection/+page.server.ts | 4 +-
src/routes/(protected)/list/+layout.server.ts | 35 ++
src/routes/(protected)/list/+layout.svelte | 41 ++
.../(protected)/list/[id]/+page.server.ts | 126 +++++
src/routes/(protected)/list/[id]/+page.svelte | 24 +
.../(protected)/wishlist/+page.server.ts | 161 ++++--
src/routes/(protected)/wishlist/+page.svelte | 138 +-----
src/routes/+layout.svelte | 5 +-
src/routes/api/wishlist/+server.ts | 33 ++
src/routes/api/wishlist/[id]/items/+server.ts | 0
.../api/wishlist/[id]/search/+server.ts | 74 +++
src/routes/auth/signin/+page.server.ts | 6 +-
src/routes/auth/signup/+page.server.ts | 3 +-
src/routes/game/[id]/+page.server.ts | 37 +-
src/routes/game/[id]/+page.svelte | 88 +---
src/routes/search/+page.server.ts | 121 ++---
svelte.config.js | 1 +
28 files changed, 988 insertions(+), 748 deletions(-)
create mode 100644 src/lib/apis/collection.ts
create mode 100644 src/lib/apis/wishlist.ts
create mode 100644 src/lib/components/AddToList.svelte
create mode 100644 src/lib/components/WishlistButton.svelte
create mode 100644 src/routes/(protected)/list/+layout.server.ts
create mode 100644 src/routes/(protected)/list/+layout.svelte
create mode 100644 src/routes/(protected)/list/[id]/+page.server.ts
create mode 100644 src/routes/(protected)/list/[id]/+page.svelte
create mode 100644 src/routes/api/wishlist/+server.ts
create mode 100644 src/routes/api/wishlist/[id]/items/+server.ts
create mode 100644 src/routes/api/wishlist/[id]/search/+server.ts
diff --git a/.vscode/settings.json b/.vscode/settings.json
index f995fd8..1c54db3 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,3 @@
{
- "cSpell.words": ["iconify", "kickstarter", "msrp"]
+ "cSpell.words": ["iconify", "kickstarter", "lucide", "msrp"]
}
diff --git a/package.json b/package.json
index 931184a..11fafd7 100644
--- a/package.json
+++ b/package.json
@@ -22,18 +22,18 @@
"seed": "ts-node --esm prisma/seed.ts"
},
"devDependencies": {
- "@melt-ui/pp": "^0.0.7",
- "@playwright/test": "^1.36.2",
+ "@melt-ui/pp": "^0.1.2",
+ "@playwright/test": "^1.37.0",
"@sveltejs/adapter-auto": "^1.0.3",
"@sveltejs/adapter-vercel": "^1.0.6",
- "@sveltejs/kit": "^1.22.4",
+ "@sveltejs/kit": "^1.22.5",
"@types/cookie": "^0.5.1",
- "@types/node": "^18.17.1",
+ "@types/node": "^18.17.5",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
- "autoprefixer": "^10.4.14",
- "eslint": "^8.46.0",
- "eslint-config-prettier": "^8.9.0",
+ "autoprefixer": "^10.4.15",
+ "eslint": "^8.47.0",
+ "eslint-config-prettier": "^8.10.0",
"eslint-plugin-svelte": "^2.32.4",
"just-clone": "^6.2.0",
"just-debounce-it": "^3.2.0",
@@ -44,18 +44,18 @@
"prettier": "^2.8.8",
"prettier-plugin-svelte": "^2.10.1",
"prisma": "^5.1.1",
- "sass": "^1.64.2",
- "svelte": "^4.1.2",
- "svelte-check": "^3.4.6",
+ "sass": "^1.65.1",
+ "svelte": "^4.2.0",
+ "svelte-check": "^3.5.0",
"svelte-preprocess": "^5.0.4",
"svelte-sequential-preprocessor": "^2.0.1",
- "sveltekit-flash-message": "^2.1.0",
- "sveltekit-superforms": "^1.5.0",
+ "sveltekit-flash-message": "^2.1.3",
+ "sveltekit-superforms": "^1.5.1",
"tailwindcss": "^3.3.3",
"ts-node": "^10.9.1",
"tslib": "^2.6.1",
"typescript": "^5.1.6",
- "vite": "^4.4.8",
+ "vite": "^4.4.9",
"vitest": "^0.25.3",
"zod": "^3.21.4"
},
@@ -70,9 +70,9 @@
"@iconify-icons/line-md": "^1.2.23",
"@iconify-icons/mdi": "^1.2.47",
"@lucia-auth/adapter-mysql": "^2.0.0",
- "@lucia-auth/adapter-prisma": "^3.0.0",
+ "@lucia-auth/adapter-prisma": "^3.0.1",
"@lukeed/uuid": "^2.0.1",
- "@melt-ui/svelte": "^0.27.3",
+ "@melt-ui/svelte": "^0.34.6",
"@prisma/client": "5.1.1",
"@types/feather-icons": "^4.29.1",
"class-variance-authority": "^0.6.1",
@@ -82,9 +82,9 @@
"iconify-icon": "^1.0.8",
"just-kebab-case": "^4.2.0",
"loader": "^2.1.1",
- "lucia": "^2.0.0",
+ "lucia": "^2.3.0",
"lucide-svelte": "^0.256.1",
- "open-props": "^1.5.10",
+ "open-props": "^1.5.11",
"radix-svelte": "^0.8.0",
"svelte-french-toast": "^1.2.0",
"svelte-lazy": "^1.2.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bc1abfe..b67ce0f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -19,16 +19,16 @@ dependencies:
version: 1.2.47
'@lucia-auth/adapter-mysql':
specifier: ^2.0.0
- version: 2.0.0(lucia@2.0.0)
+ version: 2.0.0(lucia@2.3.0)
'@lucia-auth/adapter-prisma':
- specifier: ^3.0.0
- version: 3.0.0(@prisma/client@5.1.1)(lucia@2.0.0)
+ specifier: ^3.0.1
+ version: 3.0.1(@prisma/client@5.1.1)(lucia@2.3.0)
'@lukeed/uuid':
specifier: ^2.0.1
version: 2.0.1
'@melt-ui/svelte':
- specifier: ^0.27.3
- version: 0.27.3(svelte@4.1.2)
+ specifier: ^0.34.6
+ version: 0.34.6(svelte@4.2.0)
'@prisma/client':
specifier: 5.1.1
version: 5.1.1(prisma@5.1.1)
@@ -57,29 +57,29 @@ dependencies:
specifier: ^2.1.1
version: 2.1.1
lucia:
- specifier: ^2.0.0
- version: 2.0.0
+ specifier: ^2.3.0
+ version: 2.3.0
lucide-svelte:
specifier: ^0.256.1
- version: 0.256.1(svelte@4.1.2)
+ version: 0.256.1(svelte@4.2.0)
open-props:
- specifier: ^1.5.10
- version: 1.5.10
+ specifier: ^1.5.11
+ version: 1.5.11
radix-svelte:
specifier: ^0.8.0
- version: 0.8.0(svelte@4.1.2)
+ version: 0.8.0(svelte@4.2.0)
svelte-french-toast:
specifier: ^1.2.0
- version: 1.2.0(svelte@4.1.2)
+ version: 1.2.0(svelte@4.2.0)
svelte-lazy:
specifier: ^1.2.1
- version: 1.2.1(svelte@4.1.2)
+ version: 1.2.1(svelte@4.2.0)
svelte-lazy-loader:
specifier: ^1.0.0
version: 1.0.0
svelte-legos:
specifier: ^0.2.1
- version: 0.2.1(svelte@4.1.2)
+ version: 0.2.1(svelte@4.2.0)
tailwind-merge:
specifier: ^1.14.0
version: 1.14.0
@@ -92,44 +92,44 @@ dependencies:
devDependencies:
'@melt-ui/pp':
- specifier: ^0.0.7
- version: 0.0.7(@melt-ui/svelte@0.27.3)(svelte@4.1.2)
+ specifier: ^0.1.2
+ version: 0.1.2(@melt-ui/svelte@0.34.6)(svelte@4.2.0)
'@playwright/test':
- specifier: ^1.36.2
- version: 1.36.2
+ specifier: ^1.37.0
+ version: 1.37.0
'@sveltejs/adapter-auto':
specifier: ^1.0.3
- version: 1.0.3(@sveltejs/kit@1.22.4)
+ version: 1.0.3(@sveltejs/kit@1.22.5)
'@sveltejs/adapter-vercel':
specifier: ^1.0.6
- version: 1.0.6(@sveltejs/kit@1.22.4)
+ version: 1.0.6(@sveltejs/kit@1.22.5)
'@sveltejs/kit':
- specifier: ^1.22.4
- version: 1.22.4(svelte@4.1.2)(vite@4.4.8)
+ specifier: ^1.22.5
+ version: 1.22.5(svelte@4.2.0)(vite@4.4.9)
'@types/cookie':
specifier: ^0.5.1
version: 0.5.1
'@types/node':
- specifier: ^18.17.1
- version: 18.17.1
+ specifier: ^18.17.5
+ version: 18.17.5
'@typescript-eslint/eslint-plugin':
specifier: ^5.62.0
- version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.1.6)
+ version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)(typescript@5.1.6)
'@typescript-eslint/parser':
specifier: ^5.62.0
- version: 5.62.0(eslint@8.46.0)(typescript@5.1.6)
+ version: 5.62.0(eslint@8.47.0)(typescript@5.1.6)
autoprefixer:
- specifier: ^10.4.14
- version: 10.4.14(postcss@8.4.27)
+ specifier: ^10.4.15
+ version: 10.4.15(postcss@8.4.27)
eslint:
- specifier: ^8.46.0
- version: 8.46.0
+ specifier: ^8.47.0
+ version: 8.47.0
eslint-config-prettier:
- specifier: ^8.9.0
- version: 8.9.0(eslint@8.46.0)
+ specifier: ^8.10.0
+ version: 8.10.0(eslint@8.47.0)
eslint-plugin-svelte:
specifier: ^2.32.4
- version: 2.32.4(eslint@8.46.0)(svelte@4.1.2)(ts-node@10.9.1)
+ version: 2.32.4(eslint@8.47.0)(svelte@4.2.0)(ts-node@10.9.1)
just-clone:
specifier: ^6.2.0
version: 6.2.0
@@ -153,37 +153,37 @@ devDependencies:
version: 2.8.8
prettier-plugin-svelte:
specifier: ^2.10.1
- version: 2.10.1(prettier@2.8.8)(svelte@4.1.2)
+ version: 2.10.1(prettier@2.8.8)(svelte@4.2.0)
prisma:
specifier: ^5.1.1
version: 5.1.1
sass:
- specifier: ^1.64.2
- version: 1.64.2
+ specifier: ^1.65.1
+ version: 1.65.1
svelte:
- specifier: ^4.1.2
- version: 4.1.2
+ specifier: ^4.2.0
+ version: 4.2.0
svelte-check:
- specifier: ^3.4.6
- version: 3.4.6(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.64.2)(svelte@4.1.2)
+ specifier: ^3.5.0
+ version: 3.5.0(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.65.1)(svelte@4.2.0)
svelte-preprocess:
specifier: ^5.0.4
- version: 5.0.4(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.64.2)(svelte@4.1.2)(typescript@5.1.6)
+ version: 5.0.4(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.65.1)(svelte@4.2.0)(typescript@5.1.6)
svelte-sequential-preprocessor:
specifier: ^2.0.1
version: 2.0.1
sveltekit-flash-message:
- specifier: ^2.1.0
- version: 2.1.0(@sveltejs/kit@1.22.4)(svelte@4.1.2)
+ specifier: ^2.1.3
+ version: 2.1.3(@sveltejs/kit@1.22.5)(svelte@4.2.0)
sveltekit-superforms:
- specifier: ^1.5.0
- version: 1.5.0(@sveltejs/kit@1.22.4)(svelte@4.1.2)(zod@3.21.4)
+ specifier: ^1.5.1
+ version: 1.5.1(@sveltejs/kit@1.22.5)(svelte@4.2.0)(zod@3.21.4)
tailwindcss:
specifier: ^3.3.3
version: 3.3.3(ts-node@10.9.1)
ts-node:
specifier: ^10.9.1
- version: 10.9.1(@types/node@18.17.1)(typescript@5.1.6)
+ version: 10.9.1(@types/node@18.17.5)(typescript@5.1.6)
tslib:
specifier: ^2.6.1
version: 2.6.1
@@ -191,11 +191,11 @@ devDependencies:
specifier: ^5.1.6
version: 5.1.6
vite:
- specifier: ^4.4.8
- version: 4.4.8(@types/node@18.17.1)(sass@1.64.2)
+ specifier: ^4.4.9
+ version: 4.4.9(@types/node@18.17.5)(sass@1.65.1)
vitest:
specifier: ^0.25.3
- version: 0.25.8(sass@1.64.2)
+ version: 0.25.8(sass@1.65.1)
zod:
specifier: ^3.21.4
version: 3.21.4
@@ -1021,14 +1021,14 @@ packages:
dev: true
optional: true
- /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0):
+ /@eslint-community/eslint-utils@4.4.0(eslint@8.47.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
- eslint: 8.46.0
- eslint-visitor-keys: 3.4.2
+ eslint: 8.47.0
+ eslint-visitor-keys: 3.4.3
dev: true
/@eslint-community/regexpp@4.5.0:
@@ -1041,8 +1041,8 @@ packages:
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true
- /@eslint/eslintrc@2.1.1:
- resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==}
+ /@eslint/eslintrc@2.1.2:
+ resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
@@ -1058,18 +1058,34 @@ packages:
- supports-color
dev: true
- /@eslint/js@8.46.0:
- resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==}
+ /@eslint/js@8.47.0:
+ resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@floating-ui/core@1.3.1:
resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==}
+ dev: false
+
+ /@floating-ui/core@1.4.1:
+ resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==}
+ dependencies:
+ '@floating-ui/utils': 0.1.1
/@floating-ui/dom@1.4.2:
resolution: {integrity: sha512-VKmvHVatWnewmGGy+7Mdy4cTJX71Pli6v/Wjb5RQBuq5wjUYx+Ef+kRThi8qggZqDgD8CogCpqhRoVp3+yQk+g==}
dependencies:
'@floating-ui/core': 1.3.1
+ dev: false
+
+ /@floating-ui/dom@1.5.1:
+ resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==}
+ dependencies:
+ '@floating-ui/core': 1.4.1
+ '@floating-ui/utils': 0.1.1
+
+ /@floating-ui/utils@0.1.1:
+ resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==}
/@fontsource/fira-mono@4.5.10:
resolution: {integrity: sha512-bxUnRP8xptGRo8YXeY073DSpfK74XpSb0ZyRNpHV9WvLnJ7TwPOjZll8hTMin7zLC6iOp59pDZ8EQDj1gzgAQQ==}
@@ -1152,7 +1168,7 @@ packages:
'@jridgewell/resolve-uri': 3.1.0
'@jridgewell/sourcemap-codec': 1.4.15
- /@lucia-auth/adapter-mysql@2.0.0(lucia@2.0.0):
+ /@lucia-auth/adapter-mysql@2.0.0(lucia@2.3.0):
resolution: {integrity: sha512-8a4JZ3VjDyRu/mAop2hEt/jOJO2HXwWIAid6a4wGiR8wgnlyOws9brRc+/wxQHSOlWUlrWemrfDvXLs5mMtkeQ==}
peerDependencies:
'@planetscale/database': ^1.0.0
@@ -1164,17 +1180,17 @@ packages:
mysql2:
optional: true
dependencies:
- lucia: 2.0.0
+ lucia: 2.3.0
dev: false
- /@lucia-auth/adapter-prisma@3.0.0(@prisma/client@5.1.1)(lucia@2.0.0):
- resolution: {integrity: sha512-qrFA5IID4AulINQbLQLQPIXqE9+M3zjmN558VDhrS3Y7Fdn5dyObPbHijUWw7lGYgOrhxDox9UUG8oyZ3+D1MA==}
+ /@lucia-auth/adapter-prisma@3.0.1(@prisma/client@5.1.1)(lucia@2.3.0):
+ resolution: {integrity: sha512-JZNl+721M5ApjtNiH+WUYstiC8cffcI/Y9IzKsa0uUhQMIHl2ObCrgO0R3fgHnjWHBjhQoK36g/r/iSJIDppBA==}
peerDependencies:
'@prisma/client': ^4.2.0 || ^5.0.0
lucia: ^2.0.0
dependencies:
'@prisma/client': 5.1.1(prisma@5.1.1)
- lucia: 2.0.0
+ lucia: 2.3.0
dev: false
/@lukeed/csprng@1.1.0:
@@ -1207,26 +1223,27 @@ packages:
- supports-color
dev: true
- /@melt-ui/pp@0.0.7(@melt-ui/svelte@0.27.3)(svelte@4.1.2):
- resolution: {integrity: sha512-O7gRJ1OXmLjZBR7jB1SV2O4WORn1jk+k06gxej3EXPYAJGcPg+EfKNw54G0/VhhMup1ZrwMsleUgoCOzus/JUw==}
+ /@melt-ui/pp@0.1.2(@melt-ui/svelte@0.34.6)(svelte@4.2.0):
+ resolution: {integrity: sha512-GZeqp7UWLNZUC2dJpREnZrWMR88vy27WO7C3cIBz4KW3/CFD19FjNkd3VbSRfcRryrMkdnEs9nu2VUa8/0u58w==}
+ engines: {pnpm: '>=8.6.3'}
peerDependencies:
- '@melt-ui/svelte': '>= 0.22.0'
+ '@melt-ui/svelte': '>= 0.29.0'
svelte: ^3.55.0 || ^4.0.0
dependencies:
- '@melt-ui/svelte': 0.27.3(svelte@4.1.2)
- svelte: 4.1.2
+ '@melt-ui/svelte': 0.34.6(svelte@4.2.0)
+ svelte: 4.2.0
dev: true
- /@melt-ui/svelte@0.27.3(svelte@4.1.2):
- resolution: {integrity: sha512-NKv0GCmWqhp7cxvpJUW90ouNSmjxgE7GWs75w0cJfBdxS85Eie6DW4rCmkC8MOw1q20wg8fiQzQ03FGig4BbhA==}
+ /@melt-ui/svelte@0.34.6(svelte@4.2.0):
+ resolution: {integrity: sha512-uH+s8QL5vxvb9//tULFupGSBhWTh+TvRMbIVVEae8BVlIyQrvYD5G61hoq0CiJ+Oieqgti3wnckLkaz20aYDIg==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
- '@floating-ui/core': 1.3.1
- '@floating-ui/dom': 1.4.2
+ '@floating-ui/core': 1.4.1
+ '@floating-ui/dom': 1.5.1
focus-trap: 7.5.2
nanoid: 4.0.2
- svelte: 4.1.2
+ svelte: 4.2.0
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -1246,13 +1263,13 @@ packages:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.15.0
- /@playwright/test@1.36.2:
- resolution: {integrity: sha512-2rVZeyPRjxfPH6J0oGJqE8YxiM1IBRyM8hyrXYK7eSiAqmbNhxwcLa7dZ7fy9Kj26V7FYia5fh9XJRq4Dqme+g==}
+ /@playwright/test@1.37.0:
+ resolution: {integrity: sha512-181WBLk4SRUyH1Q96VZl7BP6HcK0b7lbdeKisn3N/vnjitk+9HbdlFz/L5fey05vxaAhldIDnzo8KUoy8S3mmQ==}
engines: {node: '>=16'}
hasBin: true
dependencies:
- '@types/node': 18.17.1
- playwright-core: 1.36.2
+ '@types/node': 18.17.5
+ playwright-core: 1.37.0
optionalDependencies:
fsevents: 2.3.2
dev: true
@@ -1291,21 +1308,21 @@ packages:
picomatch: 2.3.1
dev: true
- /@sveltejs/adapter-auto@1.0.3(@sveltejs/kit@1.22.4):
+ /@sveltejs/adapter-auto@1.0.3(@sveltejs/kit@1.22.5):
resolution: {integrity: sha512-hc7O12YQqvZ1CD4fo1gMJuPzBZvuoG5kwxb2RRoz4fVoB8B2vuPO2cY751Ln0G6T/HMrAf8kCqw6Pg+wbxcstw==}
peerDependencies:
'@sveltejs/kit': ^1.0.0
dependencies:
- '@sveltejs/kit': 1.22.4(svelte@4.1.2)(vite@4.4.8)
+ '@sveltejs/kit': 1.22.5(svelte@4.2.0)(vite@4.4.9)
import-meta-resolve: 2.2.0
dev: true
- /@sveltejs/adapter-vercel@1.0.6(@sveltejs/kit@1.22.4):
+ /@sveltejs/adapter-vercel@1.0.6(@sveltejs/kit@1.22.5):
resolution: {integrity: sha512-fo6aaEygPd/6B5Jms4Ff7R4jbADnppuLvKOWBNTGe5MGB7ZRUkl+gxHWMQx2av2knyEZkA6V8y5M6R3ML5yN4g==}
peerDependencies:
'@sveltejs/kit': ^1.0.0
dependencies:
- '@sveltejs/kit': 1.22.4(svelte@4.1.2)(vite@4.4.8)
+ '@sveltejs/kit': 1.22.5(svelte@4.2.0)(vite@4.4.9)
'@vercel/nft': 0.22.6
esbuild: 0.16.8
transitivePeerDependencies:
@@ -1313,8 +1330,8 @@ packages:
- supports-color
dev: true
- /@sveltejs/kit@1.22.4(svelte@4.1.2)(vite@4.4.8):
- resolution: {integrity: sha512-Opkqw1QXk4Cc25b/heJP2D7mX+OUBFAq4MXKfET58svTTxdeiHFKzmnuRsSF3nmxESqrLjqPAgHpib+knNGzRw==}
+ /@sveltejs/kit@1.22.5(svelte@4.2.0)(vite@4.4.9):
+ resolution: {integrity: sha512-LHq+ECucoT6c6/tkrxIQtD8KVNhPFV4QQ+xOKTwBAs/Qdtff8P5gAzsIZiwEaaO6J6sYZoy5RP2VR6m8PSCgLA==}
engines: {node: ^16.14 || >=18}
hasBin: true
requiresBuild: true
@@ -1322,7 +1339,7 @@ packages:
svelte: ^3.54.0 || ^4.0.0-next.0
vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@4.1.2)(vite@4.4.8)
+ '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@4.2.0)(vite@4.4.9)
'@types/cookie': 0.5.1
cookie: 0.5.0
devalue: 4.3.1
@@ -1333,14 +1350,14 @@ packages:
sade: 1.8.1
set-cookie-parser: 2.6.0
sirv: 2.0.2
- svelte: 4.1.2
- undici: 5.22.0
- vite: 4.4.8(@types/node@18.17.1)(sass@1.64.2)
+ svelte: 4.2.0
+ undici: 5.23.0
+ vite: 4.4.9(@types/node@18.17.5)(sass@1.65.1)
transitivePeerDependencies:
- supports-color
dev: true
- /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@4.1.2)(vite@4.4.8):
+ /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@4.2.0)(vite@4.4.9):
resolution: {integrity: sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==}
engines: {node: ^14.18.0 || >= 16}
peerDependencies:
@@ -1348,30 +1365,30 @@ packages:
svelte: ^3.54.0 || ^4.0.0-next.0
vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@4.1.2)(vite@4.4.8)
+ '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@4.2.0)(vite@4.4.9)
debug: 4.3.4
- svelte: 4.1.2
- vite: 4.4.8(@types/node@18.17.1)(sass@1.64.2)
+ svelte: 4.2.0
+ vite: 4.4.9(@types/node@18.17.5)(sass@1.65.1)
transitivePeerDependencies:
- supports-color
dev: true
- /@sveltejs/vite-plugin-svelte@2.4.1(svelte@4.1.2)(vite@4.4.8):
+ /@sveltejs/vite-plugin-svelte@2.4.1(svelte@4.2.0)(vite@4.4.9):
resolution: {integrity: sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==}
engines: {node: ^14.18.0 || >= 16}
peerDependencies:
svelte: ^3.54.0 || ^4.0.0-next.0
vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@4.1.2)(vite@4.4.8)
+ '@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@4.2.0)(vite@4.4.9)
debug: 4.3.4
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.0
- svelte: 4.1.2
- svelte-hmr: 0.15.2(svelte@4.1.2)
- vite: 4.4.8(@types/node@18.17.1)(sass@1.64.2)
- vitefu: 0.2.4(vite@4.4.8)
+ svelte: 4.2.0
+ svelte-hmr: 0.15.2(svelte@4.2.0)
+ vite: 4.4.9(@types/node@18.17.5)(sass@1.65.1)
+ vitefu: 0.2.4(vite@4.4.9)
transitivePeerDependencies:
- supports-color
dev: true
@@ -1413,8 +1430,8 @@ packages:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: true
- /@types/node@18.17.1:
- resolution: {integrity: sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==}
+ /@types/node@18.17.5:
+ resolution: {integrity: sha512-xNbS75FxH6P4UXTPUJp/zNPq6/xsfdJKussCWNOnz4aULWIRwMgP1LgaB5RiBnMX1DPCYenuqGZfnIAx5mbFLA==}
/@types/pug@2.0.6:
resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==}
@@ -1428,7 +1445,7 @@ packages:
resolution: {integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==}
dev: false
- /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.1.6):
+ /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)(typescript@5.1.6):
resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -1440,12 +1457,12 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.5.0
- '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@5.1.6)
'@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/type-utils': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
- '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
+ '@typescript-eslint/type-utils': 5.62.0(eslint@8.47.0)(typescript@5.1.6)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.1.6)
debug: 4.3.4
- eslint: 8.46.0
+ eslint: 8.47.0
graphemer: 1.4.0
ignore: 5.2.1
natural-compare-lite: 1.4.0
@@ -1456,7 +1473,7 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6):
+ /@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@5.1.6):
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -1470,7 +1487,7 @@ packages:
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6)
debug: 4.3.4
- eslint: 8.46.0
+ eslint: 8.47.0
typescript: 5.1.6
transitivePeerDependencies:
- supports-color
@@ -1484,7 +1501,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.62.0
dev: true
- /@typescript-eslint/type-utils@5.62.0(eslint@8.46.0)(typescript@5.1.6):
+ /@typescript-eslint/type-utils@5.62.0(eslint@8.47.0)(typescript@5.1.6):
resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -1495,9 +1512,9 @@ packages:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6)
- '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.1.6)
debug: 4.3.4
- eslint: 8.46.0
+ eslint: 8.47.0
tsutils: 3.21.0(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
@@ -1530,19 +1547,19 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@5.1.6):
+ /@typescript-eslint/utils@5.62.0(eslint@8.47.0)(typescript@5.1.6):
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
'@types/json-schema': 7.0.12
'@types/semver': 7.5.0
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6)
- eslint: 8.46.0
+ eslint: 8.47.0
eslint-scope: 5.1.1
semver: 7.3.8
transitivePeerDependencies:
@@ -1555,7 +1572,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
'@typescript-eslint/types': 5.62.0
- eslint-visitor-keys: 3.4.2
+ eslint-visitor-keys: 3.4.3
dev: true
/@vercel/nft@0.22.6:
@@ -1701,15 +1718,15 @@ packages:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: false
- /autoprefixer@10.4.14(postcss@8.4.27):
- resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
+ /autoprefixer@10.4.15(postcss@8.4.27):
+ resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
postcss: ^8.1.0
dependencies:
- browserslist: 4.21.5
- caniuse-lite: 1.0.30001481
+ browserslist: 4.21.10
+ caniuse-lite: 1.0.30001520
fraction.js: 4.2.0
normalize-range: 0.1.2
picocolors: 1.0.0
@@ -1768,15 +1785,15 @@ packages:
dependencies:
fill-range: 7.0.1
- /browserslist@4.21.5:
- resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
+ /browserslist@4.21.10:
+ resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001481
- electron-to-chromium: 1.4.372
- node-releases: 2.0.10
- update-browserslist-db: 1.0.11(browserslist@4.21.5)
+ caniuse-lite: 1.0.30001520
+ electron-to-chromium: 1.4.490
+ node-releases: 2.0.13
+ update-browserslist-db: 1.0.11(browserslist@4.21.10)
dev: true
/browserslist@4.21.9:
@@ -1784,9 +1801,9 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001506
- electron-to-chromium: 1.4.438
- node-releases: 2.0.12
+ caniuse-lite: 1.0.30001520
+ electron-to-chromium: 1.4.490
+ node-releases: 2.0.13
update-browserslist-db: 1.0.11(browserslist@4.21.9)
dev: true
@@ -1810,12 +1827,8 @@ packages:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
- /caniuse-lite@1.0.30001481:
- resolution: {integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==}
- dev: true
-
- /caniuse-lite@1.0.30001506:
- resolution: {integrity: sha512-6XNEcpygZMCKaufIcgpQNZNf00GEqc7VQON+9Rd0K1bMYo8xhMZRAo5zpbnbMNizi4YNgIDAFrdykWsvY3H4Hw==}
+ /caniuse-lite@1.0.30001520:
+ resolution: {integrity: sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA==}
dev: true
/canvas-confetti@1.6.0:
@@ -2071,12 +2084,8 @@ packages:
esutils: 2.0.3
dev: true
- /electron-to-chromium@1.4.372:
- resolution: {integrity: sha512-MrlFq/j+TYHOjeWsWGYfzevc25HNeJdsF6qaLFrqBTRWZQtWkb1myq/Q2veLWezVaa5OcSZ99CFwTT4aF4Mung==}
- dev: true
-
- /electron-to-chromium@1.4.438:
- resolution: {integrity: sha512-x94U0FhphEsHsOloCvlsujHCvoir0ZQ73ZAs/QN4PLx98uNvyEU79F75rq1db75Bx/atvuh7KPeuxelh+xfYJw==}
+ /electron-to-chromium@1.4.490:
+ resolution: {integrity: sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==}
dev: true
/emoji-regex@8.0.0:
@@ -2157,16 +2166,16 @@ packages:
engines: {node: '>=10'}
dev: true
- /eslint-config-prettier@8.9.0(eslint@8.46.0):
- resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==}
+ /eslint-config-prettier@8.10.0(eslint@8.47.0):
+ resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
dependencies:
- eslint: 8.46.0
+ eslint: 8.47.0
dev: true
- /eslint-plugin-svelte@2.32.4(eslint@8.46.0)(svelte@4.1.2)(ts-node@10.9.1):
+ /eslint-plugin-svelte@2.32.4(eslint@8.47.0)(svelte@4.2.0)(ts-node@10.9.1):
resolution: {integrity: sha512-VJ12i2Iogug1jvhwxSlognnfGj76P5gks/V4pUD4SCSVQOp14u47MNP0zAG8AQR3LT0Fi1iUvIFnY4l9z5Rwbg==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -2176,10 +2185,10 @@ packages:
svelte:
optional: true
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
'@jridgewell/sourcemap-codec': 1.4.15
debug: 4.3.4
- eslint: 8.46.0
+ eslint: 8.47.0
esutils: 2.0.3
known-css-properties: 0.28.0
postcss: 8.4.27
@@ -2187,8 +2196,8 @@ packages:
postcss-safe-parser: 6.0.0(postcss@8.4.27)
postcss-selector-parser: 6.0.13
semver: 7.5.3
- svelte: 4.1.2
- svelte-eslint-parser: 0.32.2(svelte@4.1.2)
+ svelte: 4.2.0
+ svelte-eslint-parser: 0.32.2(svelte@4.2.0)
transitivePeerDependencies:
- supports-color
- ts-node
@@ -2210,20 +2219,20 @@ packages:
estraverse: 5.3.0
dev: true
- /eslint-visitor-keys@3.4.2:
- resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==}
+ /eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
- /eslint@8.46.0:
- resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==}
+ /eslint@8.47.0:
+ resolution: {integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
'@eslint-community/regexpp': 4.6.2
- '@eslint/eslintrc': 2.1.1
- '@eslint/js': 8.46.0
+ '@eslint/eslintrc': 2.1.2
+ '@eslint/js': 8.47.0
'@humanwhocodes/config-array': 0.11.10
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
@@ -2234,7 +2243,7 @@ packages:
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.2
+ eslint-visitor-keys: 3.4.3
espree: 9.6.1
esquery: 1.5.0
esutils: 2.0.3
@@ -2271,7 +2280,7 @@ packages:
dependencies:
acorn: 8.10.0
acorn-jsx: 5.3.2(acorn@8.10.0)
- eslint-visitor-keys: 3.4.2
+ eslint-visitor-keys: 3.4.3
dev: true
/esquery@1.5.0:
@@ -2751,16 +2760,16 @@ packages:
yallist: 4.0.0
dev: true
- /lucia@2.0.0:
- resolution: {integrity: sha512-WRBMoZIgTHH6y2bAEHZWgWcMH6tDsQ+wf45juUgmn3ycjipn/e6OGpWki4XSjEuRm50WXghH+2EF9LCjCHUsUw==}
+ /lucia@2.3.0:
+ resolution: {integrity: sha512-FS+WjvTh8xK/N2I5PBQ9xhF5+OJZo1g2w931ZlaJoXSRxsM1WTkMRAyxFAE3Azoe9vHqlKxRsw11ZiSv+yc3rA==}
dev: false
- /lucide-svelte@0.256.1(svelte@4.1.2):
+ /lucide-svelte@0.256.1(svelte@4.2.0):
resolution: {integrity: sha512-Fk8kQ5Xal9lxvX7T4fkyo592so3zzBtwfAfCOtptEh68jOKery/DyMlhY5m/Bh0M0pvb87soakYchighTBzPLQ==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
- svelte: 4.1.2
+ svelte: 4.2.0
dev: false
/magic-string@0.27.0:
@@ -2922,12 +2931,8 @@ packages:
hasBin: true
dev: true
- /node-releases@2.0.10:
- resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
- dev: true
-
- /node-releases@2.0.12:
- resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==}
+ /node-releases@2.0.13:
+ resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
dev: true
/nopt@5.0.0:
@@ -2969,8 +2974,8 @@ packages:
dependencies:
wrappy: 1.0.2
- /open-props@1.5.10:
- resolution: {integrity: sha512-iE+B7Zo0ytgeUNI38uHiBrxF5Nnv3uX8AzogBXzf7wqeNyG6oqQEEBs1gnAZdRF+h7IRO0zOGM5d9/huiNFR+w==}
+ /open-props@1.5.11:
+ resolution: {integrity: sha512-wwfcnYPVKmTruKcZL7vx3o7/PA2qfL6W2/MZCyebUhzLWHSDd/K5iFRqwrSh/RbNfITYCfNdUTbexHDJpFq+2A==}
dev: false
/optionator@0.9.3:
@@ -3054,8 +3059,8 @@ packages:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
- /playwright-core@1.36.2:
- resolution: {integrity: sha512-sQYZt31dwkqxOrP7xy2ggDfEzUxM1lodjhsQ3NMMv5uGTRDsLxU0e4xf4wwMkF2gplIxf17QMBCodSFgm6bFVQ==}
+ /playwright-core@1.37.0:
+ resolution: {integrity: sha512-1c46jhTH/myQw6sesrcuHVtLoSNfJv8Pfy9t3rs6subY7kARv0HRw5PpyfPYPpPtQvBOmgbE6K+qgYUpj81LAA==}
engines: {node: '>=16'}
hasBin: true
dev: true
@@ -3273,7 +3278,7 @@ packages:
dependencies:
lilconfig: 2.1.0
postcss: 8.4.27
- ts-node: 10.9.1(@types/node@18.17.1)(typescript@5.1.6)
+ ts-node: 10.9.1(@types/node@18.17.5)(typescript@5.1.6)
yaml: 1.10.2
dev: true
@@ -3291,7 +3296,7 @@ packages:
dependencies:
lilconfig: 2.0.6
postcss: 8.4.27
- ts-node: 10.9.1(@types/node@18.17.1)(typescript@5.1.6)
+ ts-node: 10.9.1(@types/node@18.17.5)(typescript@5.1.6)
yaml: 2.1.3
/postcss-logical@6.2.0(postcss@8.4.27):
@@ -3390,7 +3395,7 @@ packages:
'@csstools/postcss-text-decoration-shorthand': 2.2.4(postcss@8.4.27)
'@csstools/postcss-trigonometric-functions': 2.1.1(postcss@8.4.27)
'@csstools/postcss-unset-value': 2.0.1(postcss@8.4.27)
- autoprefixer: 10.4.14(postcss@8.4.27)
+ autoprefixer: 10.4.15(postcss@8.4.27)
browserslist: 4.21.9
css-blank-pseudo: 5.0.2(postcss@8.4.27)
css-has-pseudo: 5.0.2(postcss@8.4.27)
@@ -3495,14 +3500,14 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
- /prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@4.1.2):
+ /prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@4.2.0):
resolution: {integrity: sha512-Wlq7Z5v2ueCubWo0TZzKc9XHcm7TDxqcuzRuGd0gcENfzfT4JZ9yDlCbEgxWgiPmLHkBjfOtpAWkcT28MCDpUQ==}
peerDependencies:
prettier: ^1.16.4 || ^2.0.0
svelte: ^3.2.0 || ^4.0.0-next.0
dependencies:
prettier: 2.8.8
- svelte: 4.1.2
+ svelte: 4.2.0
dev: true
/prettier@2.8.8:
@@ -3540,14 +3545,14 @@ packages:
/queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- /radix-svelte@0.8.0(svelte@4.1.2):
+ /radix-svelte@0.8.0(svelte@4.2.0):
resolution: {integrity: sha512-VweSd96EiLCml9wA6krPQFxyZfci+A7phAPl9J6QH4nivKroFV2EUSGo9wAnqM2u04nI2mxGKa+wfMhNy84GVg==}
peerDependencies:
svelte: ^3.58.0
dependencies:
'@floating-ui/core': 1.3.1
'@floating-ui/dom': 1.4.2
- svelte: 4.1.2
+ svelte: 4.2.0
dev: false
/read-cache@1.0.0:
@@ -3617,8 +3622,8 @@ packages:
glob: 7.2.3
dev: true
- /rollup@3.26.2:
- resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==}
+ /rollup@3.27.2:
+ resolution: {integrity: sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==}
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
@@ -3654,8 +3659,8 @@ packages:
rimraf: 2.7.1
dev: true
- /sass@1.64.2:
- resolution: {integrity: sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==}
+ /sass@1.65.1:
+ resolution: {integrity: sha512-9DINwtHmA41SEd36eVPQ9BJKpn7eKDQmUHmpI0y5Zv2Rcorrh0zS+cFrt050hdNbmmCNKTW3hV5mWfuegNRsEA==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
@@ -3818,8 +3823,8 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- /svelte-check@3.4.6(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.64.2)(svelte@4.1.2):
- resolution: {integrity: sha512-OBlY8866Zh1zHQTkBMPS6psPi7o2umTUyj6JWm4SacnIHXpWFm658pG32m3dKvKFL49V4ntAkfFHKo4ztH07og==}
+ /svelte-check@3.5.0(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.65.1)(svelte@4.2.0):
+ resolution: {integrity: sha512-KHujbn4k17xKYLmtCwv0sKKM7uiHTYcQvXnvrCcNU6a7hcszh99zFTIoiu/Sp/ewAw5aJmillJ1Cs8gKLmcX4A==}
hasBin: true
peerDependencies:
svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0
@@ -3830,8 +3835,8 @@ packages:
import-fresh: 3.3.0
picocolors: 1.0.0
sade: 1.8.1
- svelte: 4.1.2
- svelte-preprocess: 5.0.4(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.64.2)(svelte@4.1.2)(typescript@5.1.6)
+ svelte: 4.2.0
+ svelte-preprocess: 5.0.4(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.65.1)(svelte@4.2.0)(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
- '@babel/core'
@@ -3845,7 +3850,7 @@ packages:
- sugarss
dev: true
- /svelte-eslint-parser@0.32.2(svelte@4.1.2):
+ /svelte-eslint-parser@0.32.2(svelte@4.2.0):
resolution: {integrity: sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -3855,44 +3860,44 @@ packages:
optional: true
dependencies:
eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.2
+ eslint-visitor-keys: 3.4.3
espree: 9.6.1
postcss: 8.4.27
postcss-scss: 4.0.6(postcss@8.4.27)
- svelte: 4.1.2
+ svelte: 4.2.0
dev: true
- /svelte-french-toast@1.2.0(svelte@4.1.2):
+ /svelte-french-toast@1.2.0(svelte@4.2.0):
resolution: {integrity: sha512-5PW+6RFX3xQPbR44CngYAP1Sd9oCq9P2FOox4FZffzJuZI2mHOB7q5gJBVnOiLF5y3moVGZ7u2bYt7+yPAgcEQ==}
peerDependencies:
svelte: ^3.57.0 || ^4.0.0
dependencies:
- svelte: 4.1.2
- svelte-writable-derived: 3.1.0(svelte@4.1.2)
+ svelte: 4.2.0
+ svelte-writable-derived: 3.1.0(svelte@4.2.0)
dev: false
- /svelte-hmr@0.15.2(svelte@4.1.2):
+ /svelte-hmr@0.15.2(svelte@4.2.0):
resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
peerDependencies:
svelte: ^3.19.0 || ^4.0.0-next.0
dependencies:
- svelte: 4.1.2
+ svelte: 4.2.0
dev: true
/svelte-lazy-loader@1.0.0:
resolution: {integrity: sha512-AZD6R60vksyojn21FgXLglmBiBB9K5Dkdu0hdGrLbCaRCYT68IsWkZfRUqKhMx1IfzqWcZQ8X9y/f+Ih0oNQkQ==}
dev: false
- /svelte-lazy@1.2.1(svelte@4.1.2):
+ /svelte-lazy@1.2.1(svelte@4.2.0):
resolution: {integrity: sha512-8L+GrU5p0ia/nLDeGDMTC+DtmbXlFcoaTPoSf8jIy1NoKicqSJXz5tjiu6GUsD7ra0RjgIvhQiLcdZYR9VECeA==}
peerDependencies:
svelte: 3.x
dependencies:
- svelte: 4.1.2
+ svelte: 4.2.0
dev: false
- /svelte-legos@0.2.1(svelte@4.1.2):
+ /svelte-legos@0.2.1(svelte@4.2.0):
resolution: {integrity: sha512-M7IncWP2e8FaHzQN1DSzxLSoq/6aQYWZ93REZam9bYlvLEjdPGWLAYdpPNnnZtXlHco+o3zrgYTdwsyyS9beUQ==}
peerDependencies:
svelte: ^3.54.0
@@ -3900,10 +3905,10 @@ packages:
canvas-confetti: 1.6.0
prism-svelte: 0.5.0
prismjs: 1.29.0
- svelte: 4.1.2
+ svelte: 4.2.0
dev: false
- /svelte-preprocess@5.0.4(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.64.2)(svelte@4.1.2)(typescript@5.1.6):
+ /svelte-preprocess@5.0.4(postcss-load-config@4.0.1)(postcss@8.4.27)(sass@1.65.1)(svelte@4.2.0)(typescript@5.1.6):
resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==}
engines: {node: '>= 14.10.0'}
requiresBuild: true
@@ -3946,10 +3951,10 @@ packages:
magic-string: 0.27.0
postcss: 8.4.27
postcss-load-config: 4.0.1(postcss@8.4.27)(ts-node@10.9.1)
- sass: 1.64.2
+ sass: 1.65.1
sorcery: 0.11.0
strip-indent: 3.0.0
- svelte: 4.1.2
+ svelte: 4.2.0
typescript: 5.1.6
dev: true
@@ -3957,20 +3962,20 @@ packages:
resolution: {integrity: sha512-N5JqlBni6BzElxmuFrOPxOJnjsxh1cFDACLEVKs8OHBcx8ZNRO1p5SxuQex1m3qbLzAC8G99EHeWcxGkjyKjLQ==}
engines: {node: '>=16'}
dependencies:
- svelte: 4.1.2
+ svelte: 4.2.0
tslib: 2.6.1
dev: true
- /svelte-writable-derived@3.1.0(svelte@4.1.2):
+ /svelte-writable-derived@3.1.0(svelte@4.2.0):
resolution: {integrity: sha512-cTvaVFNIJ036vSDIyPxJYivKC7ZLtcFOPm1Iq6qWBDo1fOHzfk6ZSbwaKrxhjgy52Rbl5IHzRcWgos6Zqn9/rg==}
peerDependencies:
svelte: ^3.2.1 || ^4.0.0-next.1
dependencies:
- svelte: 4.1.2
+ svelte: 4.2.0
dev: false
- /svelte@4.1.2:
- resolution: {integrity: sha512-/evA8U6CgOHe5ZD1C1W3va9iJG7mWflcCdghBORJaAhD2JzrVERJty/2gl0pIPrJYBGZwZycH6onYf+64XXF9g==}
+ /svelte@4.2.0:
+ resolution: {integrity: sha512-kVsdPjDbLrv74SmLSUzAsBGquMs4MPgWGkGLpH+PjOYnFOziAvENVzgJmyOCV2gntxE32aNm8/sqNKD6LbIpeQ==}
engines: {node: '>=16'}
dependencies:
'@ampproject/remapping': 2.2.1
@@ -3987,25 +3992,25 @@ packages:
magic-string: 0.30.0
periscopic: 3.1.0
- /sveltekit-flash-message@2.1.0(@sveltejs/kit@1.22.4)(svelte@4.1.2):
- resolution: {integrity: sha512-I9UOYsFpONLu9erXHG8CeHW1tQVZguRUDXV3NHbi6kVA4jPG12R2ypJBrcYW7UyZOLBp3Y3FdVyemkaAmfwr/w==}
+ /sveltekit-flash-message@2.1.3(@sveltejs/kit@1.22.5)(svelte@4.2.0):
+ resolution: {integrity: sha512-NFhQ3t2101AM9JO5Mgj38r69ykF4BOs1Ap3567DaM1RoAaNtXRXpAuEc/DQV78HZN/Fxzw8dxyTMdIC1HztUvA==}
peerDependencies:
'@sveltejs/kit': 1.x
svelte: 3.x || 4.x
dependencies:
- '@sveltejs/kit': 1.22.4(svelte@4.1.2)(vite@4.4.8)
- svelte: 4.1.2
+ '@sveltejs/kit': 1.22.5(svelte@4.2.0)(vite@4.4.9)
+ svelte: 4.2.0
dev: true
- /sveltekit-superforms@1.5.0(@sveltejs/kit@1.22.4)(svelte@4.1.2)(zod@3.21.4):
- resolution: {integrity: sha512-c/2v6zN9rtIAsOfsd6rBV7Kf0lB2+/o6sAFaOuMrYPlTBro5lpbz3iN/3nM5D3EuLE2Xt/iDdZYpkQdH8rq4nQ==}
+ /sveltekit-superforms@1.5.1(@sveltejs/kit@1.22.5)(svelte@4.2.0)(zod@3.21.4):
+ resolution: {integrity: sha512-OqKzxuL1P29CFiK1CD00JRsvEsRPedvrR0qXmB4uqzXAIjOS+DpLjoEaa6Cnkd4H00fRa2161GcZNeEBue/D3A==}
peerDependencies:
'@sveltejs/kit': 1.x
svelte: 3.x || 4.x
zod: 3.x
dependencies:
- '@sveltejs/kit': 1.22.4(svelte@4.1.2)(vite@4.4.8)
- svelte: 4.1.2
+ '@sveltejs/kit': 1.22.5(svelte@4.2.0)(vite@4.4.9)
+ svelte: 4.2.0
zod: 3.21.4
dev: true
@@ -4124,7 +4129,7 @@ packages:
/ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
- /ts-node@10.9.1(@types/node@18.17.1)(typescript@5.1.6):
+ /ts-node@10.9.1(@types/node@18.17.5)(typescript@5.1.6):
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
hasBin: true
peerDependencies:
@@ -4143,7 +4148,7 @@ packages:
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 18.17.1
+ '@types/node': 18.17.5
acorn: 8.8.2
acorn-walk: 8.2.0
arg: 4.1.3
@@ -4194,20 +4199,20 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- /undici@5.22.0:
- resolution: {integrity: sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==}
+ /undici@5.23.0:
+ resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==}
engines: {node: '>=14.0'}
dependencies:
busboy: 1.6.0
dev: true
- /update-browserslist-db@1.0.11(browserslist@4.21.5):
+ /update-browserslist-db@1.0.11(browserslist@4.21.10):
resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.21.5
+ browserslist: 4.21.10
escalade: 3.1.1
picocolors: 1.0.0
dev: true
@@ -4235,8 +4240,8 @@ packages:
/v8-compile-cache-lib@3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
- /vite@4.4.8(@types/node@18.17.1)(sass@1.64.2):
- resolution: {integrity: sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==}
+ /vite@4.4.9(@types/node@18.17.5)(sass@1.65.1):
+ resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
peerDependencies:
@@ -4263,16 +4268,16 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 18.17.1
+ '@types/node': 18.17.5
esbuild: 0.18.11
postcss: 8.4.27
- rollup: 3.26.2
- sass: 1.64.2
+ rollup: 3.27.2
+ sass: 1.65.1
optionalDependencies:
fsevents: 2.3.2
dev: true
- /vitefu@0.2.4(vite@4.4.8):
+ /vitefu@0.2.4(vite@4.4.9):
resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==}
peerDependencies:
vite: ^3.0.0 || ^4.0.0
@@ -4280,10 +4285,10 @@ packages:
vite:
optional: true
dependencies:
- vite: 4.4.8(@types/node@18.17.1)(sass@1.64.2)
+ vite: 4.4.9(@types/node@18.17.5)(sass@1.65.1)
dev: true
- /vitest@0.25.8(sass@1.64.2):
+ /vitest@0.25.8(sass@1.65.1):
resolution: {integrity: sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==}
engines: {node: '>=v14.16.0'}
hasBin: true
@@ -4307,7 +4312,7 @@ packages:
dependencies:
'@types/chai': 4.3.4
'@types/chai-subset': 1.3.3
- '@types/node': 18.17.1
+ '@types/node': 18.17.5
acorn: 8.8.1
acorn-walk: 8.2.0
chai: 4.3.7
@@ -4318,7 +4323,7 @@ packages:
tinybench: 2.3.1
tinypool: 0.3.0
tinyspy: 1.0.2
- vite: 4.4.8(@types/node@18.17.1)(sass@1.64.2)
+ vite: 4.4.9(@types/node@18.17.5)(sass@1.65.1)
transitivePeerDependencies:
- less
- lightningcss
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 78807e1..a67265f 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -46,7 +46,8 @@ model User {
receiveEmail Boolean @default(false)
token String? @unique
collection Collection?
- wishlist Wishlist[]
+ wishlist Wishlist?
+ list List[]
theme String @default("system")
created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6)
@@ -101,7 +102,6 @@ model CollectionItem {
model Wishlist {
id String @id @default(cuid())
- name String
user_id String @unique
user User @relation(references: [id], fields: [user_id])
items WishlistItem[]
@@ -123,6 +123,30 @@ model WishlistItem {
@@map("wishlist_items")
}
+model List {
+ id String @id @default(cuid())
+ name String
+ user_id String @unique
+ user User @relation(references: [id], fields: [user_id])
+ items ListItem[]
+
+ @@index([user_id])
+ @@map("lists")
+}
+
+model ListItem {
+ id String @id @default(cuid())
+ list_id String @unique
+ list List @relation(references: [id], fields: [list_id], onDelete: Cascade)
+ game_id String @unique
+ game Game @relation(references: [id], fields: [game_id])
+ created_at DateTime @default(now()) @db.Timestamp(6)
+ updated_at DateTime @updatedAt @db.Timestamp(6)
+
+ @@index([game_id, list_id])
+ @@map("list_items")
+}
+
model Game {
id String @id @default(cuid())
name String
@@ -152,6 +176,7 @@ model Game {
expansions Expansion[]
collection_items CollectionItem[]
wishlist_items WishlistItem[]
+ list_items ListItem[]
external_id String @unique
created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6)
diff --git a/src/lib/apis/collection.ts b/src/lib/apis/collection.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/lib/apis/wishlist.ts b/src/lib/apis/wishlist.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/lib/components/AddToList.svelte b/src/lib/components/AddToList.svelte
new file mode 100644
index 0000000..c01b8a9
--- /dev/null
+++ b/src/lib/components/AddToList.svelte
@@ -0,0 +1,138 @@
+
+
+{#if in_wishlist}
+
+{:else}
+
+{/if}
+
+{#if in_collection}
+
+{:else}
+
+{/if}
+
+
+
+
+ {#if $open}
+
+ {#each Object.entries(options) as [key, value]}
+
+ {value}
+ {#if $isSelected(key)}
+
+
+
+ {/if}
+
+ {/each}
+
+ {/if}
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/components/WishlistButton.svelte b/src/lib/components/WishlistButton.svelte
new file mode 100644
index 0000000..e69de29
diff --git a/src/lib/components/game/index.svelte b/src/lib/components/game/index.svelte
index 8c965b3..f74bd0e 100644
--- a/src/lib/components/game/index.svelte
+++ b/src/lib/components/game/index.svelte
@@ -1,89 +1,18 @@
@@ -113,32 +42,6 @@
-
-
-
-
-
-
diff --git a/src/lib/components/search/textSearch/index.svelte b/src/lib/components/search/textSearch/index.svelte
index 7e64830..1ed169e 100644
--- a/src/lib/components/search/textSearch/index.svelte
+++ b/src/lib/components/search/textSearch/index.svelte
@@ -1,32 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/(protected)/list/[id]/+page.server.ts b/src/routes/(protected)/list/[id]/+page.server.ts
new file mode 100644
index 0000000..6c8b491
--- /dev/null
+++ b/src/routes/(protected)/list/[id]/+page.server.ts
@@ -0,0 +1,126 @@
+import { fail, redirect } from '@sveltejs/kit';
+import { superValidate } from 'sveltekit-superforms/server';
+import prisma from '$lib/prisma.js';
+import { list_game_request_schema } from '$lib/zodValidation';
+
+export async function load({ params, locals }) {
+ const session = await locals.auth.validate();
+ if (!session) {
+ throw redirect(302, '/auth/signin');
+ }
+
+ try {
+ let wishlist = await prisma.wishlist.findUnique({
+ where: {
+ id: params.id,
+ AND: {
+ user_id: session.userId
+ }
+ },
+ include: {
+ items: {
+ include: {
+ game: {
+ select: {
+ id: true,
+ name: true,
+ thumb_url: true
+ }
+ }
+ }
+ }
+ }
+ });
+
+ return {
+ wishlist
+ };
+ } catch (e) {
+ console.error(e);
+ return {};
+ }
+}
+
+export const actions = {
+ // Add game to a wishlist
+ add: async (event) => {
+ const { params, locals, request } = event;
+ const form = await superValidate(event, modifyListGameSchema);
+
+ const session = await locals.auth.validate();
+ if (!session) {
+ throw redirect(302, '/auth/signin');
+ }
+
+ let game = await prisma.game.findUnique({
+ where: {
+ id: form.id
+ }
+ });
+
+ if (!game) {
+ // game = await prisma.game.create({
+ // data: {
+ // name: form.name
+ // }
+ // });
+ return fail(400, {
+ message: 'Game not found'
+ });
+ }
+
+ const wishlist = await prisma.wishlist.findUnique({
+ where: {
+ id: params.id
+ }
+ });
+
+ if (wishlist?.user_id !== session.userId) {
+ return fail(401, {
+ message: 'Unauthorized'
+ });
+ }
+
+ if (!wishlist) {
+ throw redirect(302, '/404');
+ }
+
+ const wishlistItem = await prisma.wishlistItem.create({
+ data: {
+ game_id: game.id,
+ wishlist_id: wishlist.id
+ }
+ });
+
+ if (!wishlistItem) {
+ return fail(500, {
+ message: 'Something went wrong'
+ });
+ }
+
+ return {
+ form
+ };
+ },
+ // Create new wishlist
+ create: async ({ params, locals, request }) => {
+ const session = await locals.auth.validate();
+ if (!session) {
+ throw redirect(302, '/auth/signin');
+ }
+ },
+ // Delete a wishlist
+ delete: async ({ params, locals, request }) => {
+ const session = await locals.auth.validate();
+ if (!session) {
+ throw redirect(302, '/auth/signin');
+ }
+ },
+ // Remove game from a wishlist
+ remove: async ({ params, locals, request }) => {
+ const session = await locals.auth.validate();
+ if (!session) {
+ throw redirect(302, '/auth/signin');
+ }
+ }
+};
diff --git a/src/routes/(protected)/list/[id]/+page.svelte b/src/routes/(protected)/list/[id]/+page.svelte
new file mode 100644
index 0000000..00ebcfd
--- /dev/null
+++ b/src/routes/(protected)/list/[id]/+page.svelte
@@ -0,0 +1,24 @@
+
+
+
+ {`Wishlist ${wishlist.name} | Bored Game`}
+
+
+{wishlist.name}
+Games on your wishlist:
+
+ {#if gamesItems.length > 0}
+ {#each gamesItems as game (game.id)}
+
+ {/each}
+ {:else}
+
Sorry no games found!
+ {/if}
+
\ No newline at end of file
diff --git a/src/routes/(protected)/wishlist/+page.server.ts b/src/routes/(protected)/wishlist/+page.server.ts
index 8b785a7..195ad65 100644
--- a/src/routes/(protected)/wishlist/+page.server.ts
+++ b/src/routes/(protected)/wishlist/+page.server.ts
@@ -1,7 +1,8 @@
-import { redirect } from '@sveltejs/kit';
+import { error, redirect } from '@sveltejs/kit';
import { superValidate } from 'sveltekit-superforms/server';
import prisma from '$lib/prisma.js';
import { list_game_request_schema } from '$lib/zodValidation';
+import { modifyListGameSchema } from '$lib/config/zod-schemas.js';
export async function load({ params, locals }) {
const session = await locals.auth.validate();
@@ -9,72 +10,98 @@ export async function load({ params, locals }) {
throw redirect(302, '/auth/signin');
}
+ console.log('Wishlist load User id', session.user);
+
try {
- let wishlists = await prisma.wishlist.findMany({
+ let wishlist = await prisma.wishlist.findUnique({
where: {
- user_id: session.userId
+ user_id: session?.user?.userId
},
include: {
- items: true
+ items: {
+ include: {
+ game: {
+ select: {
+ id: true,
+ name: true,
+ thumb_url: true
+ }
+ }
+ }
+ }
}
});
- if (wishlists.length === 0) {
- const wishlist = await prisma.wishlist.create({
- data: {
- user_id: session.userId,
- name: 'My Wishlist'
- }
- });
- wishlists.push(wishlist);
+ if (!wishlist) {
+ throw redirect(302, '/404');
}
+ console.log('wishlist', wishlist);
+
return {
- wishlists
+ games: wishlist?.items
};
} catch (e) {
console.error(e);
}
+ redirect(302, '/404');
}
export const actions = {
// Add game to a wishlist
add: async (event) => {
const { params, locals, request } = event;
- const form = await superValidate(event, list_game_request_schema);
+ const form = await superValidate(event, modifyListGameSchema);
- const session = await locals.auth.validate();
- if (!session) {
- throw redirect(302, '/auth/signin');
- }
-
- let game = await prisma.game.findUnique({
- where: {
- id: form.id
+ try {
+ const session = await locals.auth.validate();
+ if (!session) {
+ throw redirect(302, '/auth/signin');
}
- });
- if (!game) {
- game = await prisma.game.create({
- data: {
- name: form.name
+ let game = await prisma.game.findUnique({
+ where: {
+ id: form.data.id
}
});
- throw redirect(302, '/404');
- }
- if (game) {
- const wishlist = await prisma.wishlist.create({
- data: {
- user_id: session.userId,
- name: form.name
+ if (!game) {
+ // game = await prisma.game.create({
+ // data: {
+ // name: form.name
+ // }
+ // });
+ console.log('game not found');
+ throw redirect(302, '/404');
+ }
+
+ if (game) {
+ const wishlist = await prisma.wishlist.findUnique({
+ where: {
+ user_id: session.user.userId
+ }
+ });
+
+ if (!wishlist) {
+ console.log('Wishlist not found');
+ return error(404, 'Wishlist not found');
}
- });
- }
- return {
- form
- };
+ await prisma.wishlistItem.create({
+ data: {
+ game_id: game.id,
+ wishlist_id: wishlist.id
+ }
+ });
+ }
+
+ return {
+ form
+ };
+ } catch (e) {
+ console.error(e);
+ return error(500, 'Something went wrong');
+ }
},
// Create new wishlist
create: async ({ params, locals, request }) => {
@@ -91,10 +118,58 @@ export const actions = {
}
},
// Remove game from a wishlist
- remove: async ({ params, locals, request }) => {
- const session = await locals.auth.validate();
- if (!session) {
- throw redirect(302, '/auth/signin');
+ remove: async (event) => {
+ const { params, locals, request } = event;
+ const form = await superValidate(event, modifyListGameSchema);
+
+ try {
+ const session = await locals.auth.validate();
+ if (!session) {
+ throw redirect(302, '/auth/signin');
+ }
+
+ let game = await prisma.game.findUnique({
+ where: {
+ id: form.data.id
+ }
+ });
+
+ if (!game) {
+ // game = await prisma.game.create({
+ // data: {
+ // name: form.name
+ // }
+ // });
+ console.log('game not found');
+ throw redirect(302, '/404');
+ }
+
+ if (game) {
+ const wishlist = await prisma.wishlist.findUnique({
+ where: {
+ user_id: session.user.userId
+ }
+ });
+
+ if (!wishlist) {
+ console.log('Wishlist not found');
+ return error(404, 'Wishlist not found');
+ }
+
+ await prisma.wishlistItem.delete({
+ where: {
+ wishlist_id: wishlist.id,
+ game_id: game.id
+ }
+ });
+ }
+
+ return {
+ form
+ };
+ } catch (e) {
+ console.error(e);
+ return error(500, 'Something went wrong');
}
}
};
diff --git a/src/routes/(protected)/wishlist/+page.svelte b/src/routes/(protected)/wishlist/+page.svelte
index 635939d..ce6e60b 100644
--- a/src/routes/(protected)/wishlist/+page.svelte
+++ b/src/routes/(protected)/wishlist/+page.svelte
@@ -1,134 +1,22 @@
- Your Wishlist | Bored Game
+ {`Your Wishlist | Bored Game`}
-Your Wishlist
-{#each wishlists as wishlist}
- {wishlist.name}
-{/each}
-
-
-
+
\ No newline at end of file
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 759e737..2aae69e 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -11,7 +11,6 @@
import Header from '$lib/components/header/index.svelte';
import Footer from '$lib/components/footer.svelte';
import Loading from '$lib/components/loading.svelte';
- import Transition from '$lib/components/transition/index.svelte';
import Portal from '$lib/Portal.svelte';
import { boredState } from '$lib/stores/boredState';
import { collectionStore } from '$lib/stores/collectionStore';
@@ -123,9 +122,9 @@
-
+
-
+
diff --git a/src/routes/api/wishlist/+server.ts b/src/routes/api/wishlist/+server.ts
new file mode 100644
index 0000000..18a9c3f
--- /dev/null
+++ b/src/routes/api/wishlist/+server.ts
@@ -0,0 +1,33 @@
+import { error } from '@sveltejs/kit';
+
+// Fetch collection for user
+// export function GET({ url, locals }) {
+// if (!locals.user) {
+// throw error(401, {});
+// }
+// const
+// const searchParams = Object.fromEntries(url.searchParams);
+// const q = searchParams?.q;
+// const limit = parseInt(searchParams?.limit) || 10;
+// const skip = parseInt(searchParams?.skip) || 0;
+
+// return new Response();
+// }
+
+// // Create a new collection for user
+// export function POST({ url }) {
+// const searchParams = Object.fromEntries(url.searchParams);
+// const q = searchParams?.q;
+// const limit = parseInt(searchParams?.limit) || 10;
+// const skip = parseInt(searchParams?.skip) || 0;
+// }
+
+// // Update or Create a collection
+// export function PUT({ url }) {
+// const searchParams = Object.fromEntries(url.searchParams);
+// const q = searchParams?.q;
+// const limit = parseInt(searchParams?.limit) || 10;
+// const skip = parseInt(searchParams?.skip) || 0;
+// }
+
+//
diff --git a/src/routes/api/wishlist/[id]/items/+server.ts b/src/routes/api/wishlist/[id]/items/+server.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/routes/api/wishlist/[id]/search/+server.ts b/src/routes/api/wishlist/[id]/search/+server.ts
new file mode 100644
index 0000000..2405e33
--- /dev/null
+++ b/src/routes/api/wishlist/[id]/search/+server.ts
@@ -0,0 +1,74 @@
+import { error, json } from '@sveltejs/kit';
+import prisma from '$lib/prisma.js';
+import type { CollectionItemWithGame } from '$lib/types.js';
+
+// Search a user's collection
+export async function GET({ url, locals, params }) {
+ const searchParams = Object.fromEntries(url.searchParams);
+ const q = searchParams?.q || '';
+ const limit = parseInt(searchParams?.limit) || 10;
+ const skip = parseInt(searchParams?.skip) || 0;
+ const order = searchParams?.order || 'asc';
+ const sort = searchParams?.sort || 'name';
+ const collection_id = params.id;
+ const session = await locals.auth.validate();
+ console.log('url', url);
+ console.log('username', locals?.user?.id);
+
+ if (!session) {
+ throw error(401, { message: 'Unauthorized' });
+ }
+
+ let collection = await prisma.collection.findUnique({
+ where: {
+ user_id: locals.user.userId
+ }
+ });
+ console.log('collection', collection);
+
+ if (!collection) {
+ console.log('Collection was not found');
+ throw error(404, { message: 'Collection was not found' });
+ }
+
+ try {
+ const orderBy = { [sort]: order };
+ let collection_items: CollectionItemWithGame[] = await prisma.collectionItem.findMany({
+ where: {
+ collection_id,
+ AND: [
+ {
+ game: {
+ name: {
+ contains: q
+ }
+ }
+ }
+ ]
+ },
+ orderBy: [
+ {
+ game: {
+ ...orderBy
+ }
+ }
+ ],
+ include: {
+ game: {
+ select: {
+ id: true,
+ name: true,
+ thumb_url: true
+ }
+ }
+ },
+ skip,
+ take: limit
+ });
+
+ return json(collection_items);
+ } catch (e) {
+ console.error(e);
+ throw error(500, { message: 'Something went wrong' });
+ }
+}
diff --git a/src/routes/auth/signin/+page.server.ts b/src/routes/auth/signin/+page.server.ts
index 0984fca..dcdd9a8 100644
--- a/src/routes/auth/signin/+page.server.ts
+++ b/src/routes/auth/signin/+page.server.ts
@@ -71,12 +71,10 @@ export const actions = {
user_id: user.id
},
create: {
- user_id: user.id,
- name: 'My Wishlist'
+ user_id: user.id
},
update: {
- user_id: user.id,
- name: 'My Wishlist'
+ user_id: user.id
}
});
}
diff --git a/src/routes/auth/signup/+page.server.ts b/src/routes/auth/signup/+page.server.ts
index 2fc0ae7..6c171a2 100644
--- a/src/routes/auth/signup/+page.server.ts
+++ b/src/routes/auth/signup/+page.server.ts
@@ -89,8 +89,7 @@ export const actions = {
});
await prisma.wishlist.create({
data: {
- user_id: user.userId,
- name: 'My Wishlist'
+ user_id: user.userId
}
});
diff --git a/src/routes/game/[id]/+page.server.ts b/src/routes/game/[id]/+page.server.ts
index 1f4834c..554f511 100644
--- a/src/routes/game/[id]/+page.server.ts
+++ b/src/routes/game/[id]/+page.server.ts
@@ -12,9 +12,44 @@ export const load = async ({ params, setHeaders, locals }) => {
}
});
console.log('found game', game);
+
+ if (!game) {
+ throw error(404, 'not found');
+ }
+
+ const wishlist = await prisma.wishlist.findUnique({
+ where: {
+ user_id: user.userId
+ },
+ include: {
+ items: {
+ where: {
+ game_id: game.id
+ }
+ }
+ }
+ });
+
+ const collection = await prisma.collection.findUnique({
+ where: {
+ user_id: user.userId
+ },
+ include: {
+ items: {
+ where: {
+ game_id: game.id
+ }
+ }
+ }
+ });
+
return {
game,
- user
+ user,
+ in_wishlist: wishlist?.items?.length !== 0 || false,
+ in_collection: collection?.items?.length !== 0 || false,
+ wishlist,
+ collection
};
} catch (error) {
console.log(error);
diff --git a/src/routes/game/[id]/+page.svelte b/src/routes/game/[id]/+page.svelte
index 131bc3c..42251f2 100644
--- a/src/routes/game/[id]/+page.svelte
+++ b/src/routes/game/[id]/+page.svelte
@@ -3,20 +3,14 @@
import { Image } from 'svelte-lazy-loader';
import minusCircle from '@iconify-icons/line-md/minus-circle';
import plusCircle from '@iconify-icons/line-md/plus-circle';
- import type { GameType, SavedGameType } from '$lib/types';
+ import type { SavedGameType } from '$lib/types';
import { collectionStore } from '$lib/stores/collectionStore';
import { wishlistStore } from '$lib/stores/wishlistStore';
- import RemoveCollectionDialog from '$lib/components/dialog/RemoveCollectionDialog.svelte';
- import { addToCollection } from '$lib/util/manipulateCollection';
import type { PageData } from './$types';
- import { boredState } from '$lib/stores/boredState';
- import { browser } from '$app/environment';
import LinkWithIcon from '$lib/components/LinkWithIcon.svelte';
- import { addToWishlist } from '$lib/util/manipulateWishlist';
- import RemoveWishlistDialog from '$lib/components/dialog/RemoveWishlistDialog.svelte';
- import { binarySearchOnStore } from '$lib/util/binarySearchOnStore';
- import { convertToSavedGame } from '$lib/util/gameMapper';
import { Button } from '$components/ui/button';
+ import AddToList from '$components/AddToList.svelte';
+ import { Dices } from 'lucide-svelte';
$: existsInCollection = $collectionStore.find((item: SavedGameType) => item.id === game.id);
$: existsInWishlist = $wishlistStore.find((item: SavedGameType) => item.id === game.id);
@@ -25,56 +19,11 @@
export let data: PageData;
console.log('data', data);
- // let game: GameType;
- $: ({ game, user } = data);
- // let game = data?.game;
- // export let game: GameType = data?.game;
+
+ $: ({ game, user, wishlist, collection, in_collection, in_wishlist } = data);
+
let seeMore: boolean = false;
console.log('game', game);
- // let firstParagraphEnd = 0;
- // if (game?.description?.indexOf('') > 0) {
- // firstParagraphEnd = game?.description?.indexOf('') + 4;
- // } else if (game?.description?.indexOf(' p>') > 0) {
- // firstParagraphEnd = game?.description?.indexOf(' p>') + 5;
- // }
-
- function onCollectionClick() {
- if (existsInCollection) {
- removeFromCollection();
- } else {
- let index = binarySearchOnStore($collectionStore, convertToSavedGame(game), 'en');
- console.log(`Binary index: ${index}`)
- addToCollection(game, index);
- if (browser) {
- localStorage.collection = JSON.stringify($collectionStore);
- }
- }
- }
-
- function onWishlistClick() {
- if (existsInWishlist) {
- removeFromWishList();
- } else {
- addToWishlist(game);
- if (browser) {
- localStorage.wishlist = JSON.stringify($wishlistStore);
- }
- }
- }
-
- function removeFromCollection() {
- boredState.update((n) => ({
- ...n,
- dialog: { isOpen: true, content: RemoveCollectionDialog, additionalData: game }
- }));
- }
-
- function removeFromWishList() {
- boredState.update((n) => ({
- ...n,
- dialog: { isOpen: true, content: RemoveWishlistDialog, additionalData: game }
- }));
- }
@@ -86,7 +35,11 @@
@@ -110,24 +63,7 @@
{#if user?.username}
-
-
-
-
+
{:else}
or to add to a list.
diff --git a/src/routes/search/+page.server.ts b/src/routes/search/+page.server.ts
index eec38bc..e65243b 100644
--- a/src/routes/search/+page.server.ts
+++ b/src/routes/search/+page.server.ts
@@ -21,7 +21,7 @@ import type { PageServerLoad } from '../$types.js';
* an array of all the games fetched. If any error occurred during the operation, it returns an object with totalCount as 0 and games as empty array.
* @throws will throw an error if the response received from fetching games operation is not OK (200).
*/
-async function searchForGames(urlQueryParams: SearchQuery, locals, eventFetch) {
+async function searchForGames(urlQueryParams: SearchQuery, eventFetch) {
try {
console.log('urlQueryParams search games', urlQueryParams);
// let games = await prisma.game.findMany({
@@ -104,8 +104,8 @@ async function searchForGames(urlQueryParams: SearchQuery, locals, eventFetch) {
console.log('totalCount', totalCount);
gameList.forEach((game) => {
if (game?.min_players && game?.max_players) {
- game.players = `${game.min_players}-${game.max_players}`;
- game.playtime = `${game.min_playtime}-${game.max_playtime}`;
+ game.players = `${game.min_players} - ${game.max_players}`;
+ game.playtime = `${game.min_playtime} - ${game.max_playtime}`;
}
const boredGame = mapAPIGameToBoredGame(game);
createOrUpdateGame(boredGame);
@@ -114,51 +114,6 @@ async function searchForGames(urlQueryParams: SearchQuery, locals, eventFetch) {
}
}
- if (locals?.user) {
- const game_ids = games.map((game) => game.id);
- console.log('game_ids', game_ids);
- const collections = await prisma.collection.findMany({
- where: {
- user_id: locals.user.id
- },
- include: {
- items: {
- where: {
- game_id: {
- in: game_ids
- }
- }
- }
- }
- });
- console.log('collections', collections);
- const wishlists = await prisma.wishlist.findMany({
- where: {
- user_id: locals.user.id
- },
- include: {
- items: {
- where: {
- id: {
- in: game_ids
- }
- }
- }
- }
- });
- // console.log('wishlist_items', wishlist_items);
- for (const game of games) {
- console.log(
- 'Checking collection',
- collections.findIndex((item) => item.items.some((i) => i.game_id === game.id))
- );
- game.in_collection =
- collections.findIndex((item) => item.items.some((i) => i.game_id === game.id)) === 0;
- game.in_wishlist =
- wishlists.findIndex((item) => item.items.some((i) => i.game_id === game.id)) === 0;
- }
- }
-
return {
totalCount,
games
@@ -290,42 +245,54 @@ export const load: PageServerLoad = async ({ params, locals, request, fetch, url
};
// fields: ('id,name,min_age,min_players,max_players,thumb_url,min_playtime,max_playtime,min_age,description');
-
- if (form.data?.minAge) {
- if (form.data?.exactMinAge) {
- queryParams.min_age = form.data?.minAge;
- } else {
- queryParams.gt_min_age = form.data?.minAge === 1 ? 0 : form.data?.minAge - 1;
+ try {
+ if (form.data?.minAge) {
+ if (form.data?.exactMinAge) {
+ queryParams.min_age = form.data?.minAge;
+ } else {
+ queryParams.gt_min_age = form.data?.minAge === 1 ? 0 : form.data?.minAge - 1;
+ }
}
- }
- if (form.data?.minPlayers) {
- if (form.data?.exactMinPlayers) {
- queryParams.min_players = form.data?.minPlayers;
- } else {
- queryParams.gt_min_players = form.data?.minPlayers === 1 ? 0 : form.data?.minPlayers - 1;
+ if (form.data?.minPlayers) {
+ if (form.data?.exactMinPlayers) {
+ queryParams.min_players = form.data?.minPlayers;
+ } else {
+ queryParams.gt_min_players = form.data?.minPlayers === 1 ? 0 : form.data?.minPlayers - 1;
+ }
}
- }
- if (form.data?.maxPlayers) {
- if (form.data?.exactMaxPlayers) {
- queryParams.max_players = form.data?.maxPlayers;
- } else {
- queryParams.lt_max_players = form.data?.maxPlayers + 1;
+ if (form.data?.maxPlayers) {
+ if (form.data?.exactMaxPlayers) {
+ queryParams.max_players = form.data?.maxPlayers;
+ } else {
+ queryParams.lt_max_players = form.data?.maxPlayers + 1;
+ }
}
+
+ const newQueryParams: Record = {};
+ for (const key in queryParams) {
+ newQueryParams[key] = `${queryParams[key as keyof SearchQuery]}`;
+ }
+
+ const urlQueryParams = new URLSearchParams(newQueryParams);
+ const searchData = await searchForGames(urlQueryParams, fetch);
+ // console.log('searchData', searchData);
+
+ return {
+ form,
+ // modifyListForm,
+ searchData
+ };
+ } catch (e) {
+ console.log(`Error searching board games ${e}`);
}
-
- const newQueryParams: Record = {};
- for (const key in queryParams) {
- newQueryParams[key] = `${queryParams[key as keyof SearchQuery]}`;
- }
-
- const urlQueryParams = new URLSearchParams(newQueryParams);
- const searchData = await searchForGames(urlQueryParams, locals, fetch);
-
return {
form,
- // modifyListForm,
- searchData
+ searchData: {
+ totalCount: 0,
+ games: []
+ },
+ wishlists: []
};
};
diff --git a/svelte.config.js b/svelte.config.js
index bff8035..8d7d538 100644
--- a/svelte.config.js
+++ b/svelte.config.js
@@ -28,4 +28,5 @@ const config = {
componentPath: './src/lib/components/ui'
}
};
+
export default config;