From d86b975b4ef4bdc03af33f569818208e3cb4119c Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Wed, 6 Mar 2024 20:37:05 -0800 Subject: [PATCH 01/22] Removing prisma. --- drizzle.config.ts | 2 +- package.json | 17 +- pnpm-lock.yaml | 257 ++++---- prisma/categories.json | 256 -------- prisma/mechanics.json | 577 ------------------ prisma/schema.prisma | 272 --------- prisma/seed.ts | 84 --- src/app.d.ts | 5 - src/lib/components/AddToList.svelte | 10 +- src/lib/components/Game.svelte | 12 +- src/lib/components/Header.svelte | 17 +- src/lib/drizzle.ts | 2 +- src/lib/prisma.ts | 4 - src/lib/utils/gameMapper.ts | 1 - src/migrate.ts | 2 +- .../(app)/(protected)/list/+layout.server.ts | 23 +- .../(app)/(protected)/list/+layout.svelte | 26 +- .../(protected)/list/[id]/+page.server.ts | 62 +- src/routes/(app)/+layout.server.ts | 9 + src/routes/(app)/+page.server.ts | 3 - src/seed.ts | 2 +- src/server/users.ts | 35 +- vite.config.ts | 5 - 23 files changed, 221 insertions(+), 1462 deletions(-) delete mode 100644 prisma/categories.json delete mode 100644 prisma/mechanics.json delete mode 100644 prisma/schema.prisma delete mode 100644 prisma/seed.ts delete mode 100644 src/lib/prisma.ts create mode 100644 src/routes/(app)/+layout.server.ts diff --git a/drizzle.config.ts b/drizzle.config.ts index dd39ff9..b0bba9c 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -11,7 +11,7 @@ export default defineConfig({ user: process.env.DATABASE_USER, password: process.env.DATABASE_PASSWORD, database: process.env.DATABASE || 'boredgame', - ssl: true + ssl: process.env.DATABASE_HOST === 'localhost' ? false : true, }, // Print all statements verbose: true, diff --git a/package.json b/package.json index 685d5d9..1f86a82 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,11 @@ "private": "true", "scripts": { "dev": "NODE_OPTIONS=\"--inspect\" vite dev --host", - "build": "prisma generate && vite build", + "build": "drizzle-kit generate:pg && vite build", "package": "svelte-kit package", "preview": "vite preview", "test": "playwright test", "test:ui": "svelte-kit sync && playwright test --ui", - "postinstall": "prisma generate", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "test:unit": "vitest", @@ -26,7 +25,7 @@ }, "devDependencies": { "@melt-ui/pp": "^0.3.0", - "@melt-ui/svelte": "^0.75.2", + "@melt-ui/svelte": "^0.75.3", "@playwright/test": "^1.42.0", "@resvg/resvg-js": "^2.6.0", "@sveltejs/adapter-auto": "^3.1.1", @@ -34,7 +33,7 @@ "@sveltejs/kit": "^2.5.2", "@sveltejs/vite-plugin-svelte": "^3.0.2", "@types/cookie": "^0.6.0", - "@types/node": "^20.11.24", + "@types/node": "^20.11.25", "@types/pg": "^8.11.2", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", @@ -49,10 +48,9 @@ "postcss": "^8.4.35", "postcss-import": "^16.0.1", "postcss-load-config": "^5.0.3", - "postcss-preset-env": "^9.4.0", + "postcss-preset-env": "^9.5.0", "prettier": "^3.2.5", "prettier-plugin-svelte": "^3.2.2", - "prisma": "^5.9.1", "sass": "^1.71.1", "satori": "^0.10.13", "satori-html": "^0.3.2", @@ -63,12 +61,12 @@ "svelte-sequential-preprocessor": "^2.0.1", "sveltekit-flash-message": "^2.4.2", "sveltekit-rate-limiter": "^0.4.3", - "sveltekit-superforms": "^2.7.0", + "sveltekit-superforms": "^2.8.0", "tailwindcss": "^3.4.1", "ts-node": "^10.9.2", "tslib": "^2.6.1", "tsx": "^4.7.1", - "typescript": "^5.3.3", + "typescript": "^5.4.2", "vite": "^5.1.5", "vitest": "^1.3.1", "zod": "^3.22.4" @@ -88,12 +86,11 @@ "@neondatabase/serverless": "^0.9.0", "@paralleldrive/cuid2": "^2.2.2", "@planetscale/database": "^1.16.0", - "@prisma/client": "^5.9.1", "@sentry/sveltekit": "^7.100.1", "@sveltejs/adapter-vercel": "^5.1.0", "@types/feather-icons": "^4.29.4", "@vercel/og": "^0.5.20", - "bits-ui": "^0.19.3", + "bits-ui": "^0.19.5", "boardgamegeekclient": "^1.9.1", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc7b27d..a6c7c18 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,9 +32,6 @@ dependencies: '@planetscale/database': specifier: ^1.16.0 version: 1.16.0 - '@prisma/client': - specifier: ^5.9.1 - version: 5.9.1(prisma@5.9.1) '@sentry/sveltekit': specifier: ^7.100.1 version: 7.100.1(@sveltejs/kit@2.5.2)(svelte@4.2.12) @@ -48,8 +45,8 @@ dependencies: specifier: ^0.5.20 version: 0.5.20 bits-ui: - specifier: ^0.19.3 - version: 0.19.3(svelte@4.2.12) + specifier: ^0.19.5 + version: 0.19.5(svelte@4.2.12) boardgamegeekclient: specifier: ^1.9.1 version: 1.9.1 @@ -70,7 +67,7 @@ dependencies: version: 4.29.1 formsnap: specifier: ^0.5.1 - version: 0.5.1(svelte@4.2.12)(sveltekit-superforms@2.7.0) + version: 0.5.1(svelte@4.2.12)(sveltekit-superforms@2.8.0) html-entities: specifier: ^2.5.2 version: 2.5.2 @@ -132,10 +129,10 @@ dependencies: devDependencies: '@melt-ui/pp': specifier: ^0.3.0 - version: 0.3.0(@melt-ui/svelte@0.75.2)(svelte@4.2.12) + version: 0.3.0(@melt-ui/svelte@0.75.3)(svelte@4.2.12) '@melt-ui/svelte': - specifier: ^0.75.2 - version: 0.75.2(svelte@4.2.12) + specifier: ^0.75.3 + version: 0.75.3(svelte@4.2.12) '@playwright/test': specifier: ^1.42.0 version: 1.42.0 @@ -158,17 +155,17 @@ devDependencies: specifier: ^0.6.0 version: 0.6.0 '@types/node': - specifier: ^20.11.24 - version: 20.11.24 + specifier: ^20.11.25 + version: 20.11.25 '@types/pg': specifier: ^8.11.2 version: 8.11.2 '@typescript-eslint/eslint-plugin': specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.3.3) + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/parser': specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.3.3) + version: 6.21.0(eslint@8.57.0)(typescript@5.4.2) autoprefixer: specifier: ^10.4.18 version: 10.4.18(postcss@8.4.35) @@ -203,17 +200,14 @@ devDependencies: specifier: ^5.0.3 version: 5.0.3(postcss@8.4.35) postcss-preset-env: - specifier: ^9.4.0 - version: 9.4.0(postcss@8.4.35) + specifier: ^9.5.0 + version: 9.5.0(postcss@8.4.35) prettier: specifier: ^3.2.5 version: 3.2.5 prettier-plugin-svelte: specifier: ^3.2.2 version: 3.2.2(prettier@3.2.5)(svelte@4.2.12) - prisma: - specifier: ^5.9.1 - version: 5.9.1 sass: specifier: ^1.71.1 version: 1.71.1 @@ -231,10 +225,10 @@ devDependencies: version: 3.6.6(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.12) svelte-meta-tags: specifier: ^3.1.1 - version: 3.1.1(svelte@4.2.12)(typescript@5.3.3) + version: 3.1.1(svelte@4.2.12)(typescript@5.4.2) svelte-preprocess: specifier: ^5.1.3 - version: 5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.12)(typescript@5.3.3) + version: 5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.12)(typescript@5.4.2) svelte-sequential-preprocessor: specifier: ^2.0.1 version: 2.0.1 @@ -245,14 +239,14 @@ devDependencies: specifier: ^0.4.3 version: 0.4.3(@sveltejs/kit@2.5.2) sveltekit-superforms: - specifier: ^2.7.0 - version: 2.7.0(@sveltejs/kit@2.5.2)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12) + specifier: ^2.8.0 + version: 2.8.0(@sveltejs/kit@2.5.2)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12) tailwindcss: specifier: ^3.4.1 version: 3.4.1(ts-node@10.9.2) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.11.24)(typescript@5.3.3) + version: 10.9.2(@types/node@20.11.25)(typescript@5.4.2) tslib: specifier: ^2.6.1 version: 2.6.2 @@ -260,14 +254,14 @@ devDependencies: specifier: ^4.7.1 version: 4.7.1 typescript: - specifier: ^5.3.3 - version: 5.3.3 + specifier: ^5.4.2 + version: 5.4.2 vite: specifier: ^5.1.5 - version: 5.1.5(@types/node@20.11.24)(sass@1.71.1) + version: 5.1.5(@types/node@20.11.25)(sass@1.71.1) vitest: specifier: ^1.3.1 - version: 1.3.1(@types/node@20.11.24)(sass@1.71.1) + version: 1.3.1(@types/node@20.11.25)(sass@1.71.1) zod: specifier: ^3.22.4 version: 3.22.4 @@ -469,8 +463,8 @@ packages: postcss: 8.4.35 dev: true - /@csstools/postcss-gradients-interpolation-method@4.0.10(postcss@8.4.35): - resolution: {integrity: sha512-PwKOxVuX8lo52bPtPeKjaIp6oH2EzhcBxCndRcvGZKsqZYQ35k9A5G4yihZ+wp7PoxPqDNiXuhQsvQG2lqMpOA==} + /@csstools/postcss-gradients-interpolation-method@4.0.11(postcss@8.4.35): + resolution: {integrity: sha512-LFom5jCVUfzF+iuiOZvhvX7RRN8vc+tKpcKo9s4keEBAU2mPwV5/Fgz5iylEfXP/DZbEdq2C0At20urMi/lupw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 @@ -728,6 +722,15 @@ packages: postcss: 8.4.35 dev: true + /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.15): + resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + dependencies: + postcss-selector-parser: 6.0.15 + dev: true + /@csstools/selector-specificity@3.0.2(postcss-selector-parser@6.0.15): resolution: {integrity: sha512-RpHaZ1h9LE7aALeQXmXrJkRG84ZxIsctEN2biEUmFyKpzFM3zZ35eUMcIzZFsw/2olQE6v69+esEqU2f1MKycg==} engines: {node: ^14 || ^16 || >=18} @@ -1941,7 +1944,7 @@ packages: '@prisma/client': ^4.2.0 || ^5.0.0 lucia: 3.x dependencies: - '@prisma/client': 5.9.1(prisma@5.9.1) + '@prisma/client': 5.9.1 lucia: 3.0.1 dev: false @@ -1975,21 +1978,21 @@ packages: - supports-color dev: false - /@melt-ui/pp@0.3.0(@melt-ui/svelte@0.75.2)(svelte@4.2.12): + /@melt-ui/pp@0.3.0(@melt-ui/svelte@0.75.3)(svelte@4.2.12): resolution: {integrity: sha512-b07Bdh8l2KcwKVCXOY+SoBw1dk9eWvQfMSi6SoacpRVyVmmfpi0kV4oGt3HYF0tUCB3sEmVicxse50ZzZxEzEA==} 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.75.2(svelte@4.2.12) + '@melt-ui/svelte': 0.75.3(svelte@4.2.12) estree-walker: 3.0.3 magic-string: 0.30.5 svelte: 4.2.12 dev: true - /@melt-ui/svelte@0.75.2(svelte@4.2.12): - resolution: {integrity: sha512-EZYH5iEzHs/CPsWqRlH6AnJ70sTuPB4llVK3ajafWig6I5q3qyGU8NIz4aozUssL0edf9BKmyDVAy6Vksy1fbA==} + /@melt-ui/svelte@0.75.3(svelte@4.2.12): + resolution: {integrity: sha512-EA2IKn7w9qtzO/M7VEENpphQ9A4az+QDMQbA8SJLuKyu+S8NWliln5y9vvmnx9dZF8GtKtUKuxpwRNyPg5LAOg==} peerDependencies: svelte: '>=3 <5' dependencies: @@ -2662,7 +2665,7 @@ packages: requiresBuild: true optional: true - /@prisma/client@5.9.1(prisma@5.9.1): + /@prisma/client@5.9.1: resolution: {integrity: sha512-caSOnG4kxcSkhqC/2ShV7rEoWwd3XrftokxJqOCMVvia4NYV/TPtJlS9C2os3Igxw/Qyxumj9GBQzcStzECvtQ==} engines: {node: '>=16.13'} requiresBuild: true @@ -2671,37 +2674,8 @@ packages: peerDependenciesMeta: prisma: optional: true - dependencies: - prisma: 5.9.1 dev: false - /@prisma/debug@5.9.1: - resolution: {integrity: sha512-yAHFSFCg8KVoL0oRUno3m60GAjsUKYUDkQ+9BA2X2JfVR3kRVSJFc/GpQ2fSORi4pSHZR9orfM4UC9OVXIFFTA==} - - /@prisma/engines-version@5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64: - resolution: {integrity: sha512-HFl7275yF0FWbdcNvcSRbbu9JCBSLMcurYwvWc8WGDnpu7APxQo2ONtZrUggU3WxLxUJ2uBX+0GOFIcJeVeOOQ==} - - /@prisma/engines@5.9.1: - resolution: {integrity: sha512-gkdXmjxQ5jktxWNdDA5aZZ6R8rH74JkoKq6LD5mACSvxd2vbqWeWIOV0Py5wFC8vofOYShbt6XUeCIUmrOzOnQ==} - requiresBuild: true - dependencies: - '@prisma/debug': 5.9.1 - '@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 - '@prisma/fetch-engine': 5.9.1 - '@prisma/get-platform': 5.9.1 - - /@prisma/fetch-engine@5.9.1: - resolution: {integrity: sha512-l0goQOMcNVOJs1kAcwqpKq3ylvkD9F04Ioe1oJoCqmz05mw22bNAKKGWuDd3zTUoUZr97va0c/UfLNru+PDmNA==} - dependencies: - '@prisma/debug': 5.9.1 - '@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 - '@prisma/get-platform': 5.9.1 - - /@prisma/get-platform@5.9.1: - resolution: {integrity: sha512-6OQsNxTyhvG+T2Ksr8FPFpuPeL4r9u0JF0OZHUBI/Uy9SS43sPyAIutt4ZEAyqWQt104ERh70EZedkHZKsnNbg==} - dependencies: - '@prisma/debug': 5.9.1 - /@resvg/resvg-js-android-arm-eabi@2.6.0: resolution: {integrity: sha512-lJnZ/2P5aMocrFMW7HWhVne5gH82I8xH6zsfH75MYr4+/JOaVcGCTEQ06XFohGMdYRP3v05SSPLPvTM/RHjxfA==} engines: {node: '>= 10'} @@ -3249,7 +3223,7 @@ packages: sirv: 2.0.4 svelte: 4.2.12 tiny-glob: 0.2.9 - vite: 5.1.5(@types/node@20.11.24)(sass@1.71.1) + vite: 5.1.5(@types/node@20.11.25)(sass@1.71.1) /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5): resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} @@ -3262,7 +3236,7 @@ packages: '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.12)(vite@5.1.5) debug: 4.3.4 svelte: 4.2.12 - vite: 5.1.5(@types/node@20.11.24)(sass@1.71.1) + vite: 5.1.5(@types/node@20.11.25)(sass@1.71.1) transitivePeerDependencies: - supports-color @@ -3280,7 +3254,7 @@ packages: magic-string: 0.30.5 svelte: 4.2.12 svelte-hmr: 0.15.3(svelte@4.2.12) - vite: 5.1.5(@types/node@20.11.24)(sass@1.71.1) + vite: 5.1.5(@types/node@20.11.25)(sass@1.71.1) vitefu: 0.2.5(vite@5.1.5) transitivePeerDependencies: - supports-color @@ -3323,22 +3297,22 @@ packages: /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - /@types/node@20.11.24: - resolution: {integrity: sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==} + /@types/node@20.11.25: + resolution: {integrity: sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==} dependencies: undici-types: 5.26.5 /@types/pg@8.11.2: resolution: {integrity: sha512-G2Mjygf2jFMU/9hCaTYxJrwdObdcnuQde1gndooZSOHsNSaCehAuwc7EIuSA34Do8Jx2yZ19KtvW8P0j4EuUXw==} dependencies: - '@types/node': 20.11.24 + '@types/node': 20.11.25 pg-protocol: 1.6.0 pg-types: 4.0.2 /@types/pg@8.6.6: resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} dependencies: - '@types/node': 20.11.24 + '@types/node': 20.11.25 pg-protocol: 1.6.0 pg-types: 2.2.0 dev: false @@ -3356,7 +3330,7 @@ packages: requiresBuild: true optional: true - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3368,10 +3342,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.57.0 @@ -3379,13 +3353,13 @@ packages: ignore: 5.3.0 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.0.3(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3): + /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3397,11 +3371,11 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.2) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.3.3 + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true @@ -3414,7 +3388,7 @@ packages: '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): + /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3424,12 +3398,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.2) debug: 4.3.4 eslint: 8.57.0 - ts-api-utils: 1.0.3(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.0.3(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true @@ -3439,7 +3413,7 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.2): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3455,13 +3429,13 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.2.1(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): + /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3472,7 +3446,7 @@ packages: '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.2) eslint: 8.57.0 semver: 7.5.4 transitivePeerDependencies: @@ -3771,13 +3745,13 @@ packages: file-uri-to-path: 1.0.0 dev: false - /bits-ui@0.19.3(svelte@4.2.12): - resolution: {integrity: sha512-0qqZ1bwE4ZmTnzTdsl4mYEbHY5f0NVgxhddIqscLjJZx4ltkVKDXxBwEusbE2NToqKtXNNrU0wy7sLusdzdhcg==} + /bits-ui@0.19.5(svelte@4.2.12): + resolution: {integrity: sha512-jrt0pGZdixtl27VrfzLj5yJxha29CK+6nClZZSoJCL5DlXFT1sluF9NnOSMP48D3kczR5YjpArvCe0BEnGq4jA==} peerDependencies: svelte: ^4.0.0 dependencies: '@internationalized/date': 3.5.2 - '@melt-ui/svelte': 0.75.2(svelte@4.2.12) + '@melt-ui/svelte': 0.75.3(svelte@4.2.12) nanoid: 5.0.6 svelte: 4.2.12 dev: false @@ -4110,8 +4084,8 @@ packages: mdn-data: 2.0.30 source-map-js: 1.0.2 - /cssdb@7.11.0: - resolution: {integrity: sha512-YUVAJhjDcTZzVD5XE49l3PQtGE29vvhzaL1bM3BtkvSmIRJeYENdfn1dn5jauBI7BBF+IyyiBS+oSVx3Hz/Gaw==} + /cssdb@7.11.1: + resolution: {integrity: sha512-F0nEoX/Rv8ENTHsjMPGHd9opdjGfXkgRBafSUGnQKPzGZFB7Lm0BbT10x21TMOCrKLbVsJ0NoCDMk6AfKqw8/A==} dev: true /cssesc@3.0.0: @@ -4834,7 +4808,7 @@ packages: is-callable: 1.2.7 dev: false - /formsnap@0.5.1(svelte@4.2.12)(sveltekit-superforms@2.7.0): + /formsnap@0.5.1(svelte@4.2.12)(sveltekit-superforms@2.8.0): resolution: {integrity: sha512-8ppOlOu7llBEJbV0PzUz/KWh1J8KfiGqwjiyb8emQ2m+/nYXohLBtMcLVpW3XwlMkUbYaIXM+5lhfGjw8xbGJw==} peerDependencies: svelte: ^4.0.0 @@ -4842,7 +4816,7 @@ packages: dependencies: nanoid: 5.0.6 svelte: 4.2.12 - sveltekit-superforms: 2.7.0(@sveltejs/kit@2.5.2)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12) + sveltekit-superforms: 2.8.0(@sveltejs/kit@2.5.2)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12) dev: false /fraction.js@4.3.7: @@ -6278,7 +6252,7 @@ packages: dependencies: lilconfig: 2.1.0 postcss: 8.4.35 - ts-node: 10.9.2(@types/node@20.11.24)(typescript@5.3.3) + ts-node: 10.9.2(@types/node@20.11.25)(typescript@5.4.2) yaml: 1.10.2 dev: true @@ -6296,7 +6270,7 @@ packages: dependencies: lilconfig: 3.0.0 postcss: 8.4.35 - ts-node: 10.9.2(@types/node@20.11.24)(typescript@5.3.3) + ts-node: 10.9.2(@types/node@20.11.25)(typescript@5.4.2) yaml: 2.3.4 /postcss-load-config@5.0.3(postcss@8.4.35): @@ -6335,12 +6309,13 @@ packages: postcss: 8.4.35 postcss-selector-parser: 6.0.13 - /postcss-nesting@12.0.3(postcss@8.4.35): - resolution: {integrity: sha512-yrtMRPFNkfZMv9ikBvZ/Eh3RxhpMBKQ3KzD7LCY8+jYVlgju/Mdcxi4JY8bW2Y7ISXw8GTLuF/o+kFtp+yaVfQ==} + /postcss-nesting@12.1.0(postcss@8.4.35): + resolution: {integrity: sha512-QOYnosaZ+mlP6plQrAxFw09UUp2Sgtxj1BVHN+rSVbtV0Yx48zRt9/9F/ZOoxOKBBEsaJk2MYhhVRjeRRw5yuw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: + '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.15) '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.15) postcss: 8.4.35 postcss-selector-parser: 6.0.15 @@ -6383,8 +6358,8 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-preset-env@9.4.0(postcss@8.4.35): - resolution: {integrity: sha512-5X2UA4Dn4xo7sJFCxlzW/dAGo71Oxh/K5DVls33hd2e3j06OKnW5FJQTw2hB0wTnGv0f6WcMaVBGFqcEfAgwlw==} + /postcss-preset-env@9.5.0(postcss@8.4.35): + resolution: {integrity: sha512-ZTrTWCSqKVYSABB1GerMBb6F8Uto5YWIq1nqi+TKOHPzrXMcyJNuJTc0v2lp5WjG4Sfvwdo7HF/7/3j7HskRog==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 @@ -6395,7 +6370,7 @@ packages: '@csstools/postcss-exponential-functions': 1.0.4(postcss@8.4.35) '@csstools/postcss-font-format-keywords': 3.0.2(postcss@8.4.35) '@csstools/postcss-gamut-mapping': 1.0.3(postcss@8.4.35) - '@csstools/postcss-gradients-interpolation-method': 4.0.10(postcss@8.4.35) + '@csstools/postcss-gradients-interpolation-method': 4.0.11(postcss@8.4.35) '@csstools/postcss-hwb-function': 3.0.9(postcss@8.4.35) '@csstools/postcss-ic-unit': 3.0.4(postcss@8.4.35) '@csstools/postcss-initial': 1.0.1(postcss@8.4.35) @@ -6423,7 +6398,7 @@ packages: css-blank-pseudo: 6.0.1(postcss@8.4.35) css-has-pseudo: 6.0.2(postcss@8.4.35) css-prefers-color-scheme: 9.0.1(postcss@8.4.35) - cssdb: 7.11.0 + cssdb: 7.11.1 postcss: 8.4.35 postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.35) postcss-clamp: 4.1.0(postcss@8.4.35) @@ -6442,7 +6417,7 @@ packages: postcss-image-set-function: 6.0.3(postcss@8.4.35) postcss-lab-function: 6.0.10(postcss@8.4.35) postcss-logical: 7.0.1(postcss@8.4.35) - postcss-nesting: 12.0.3(postcss@8.4.35) + postcss-nesting: 12.1.0(postcss@8.4.35) postcss-opacity-percentage: 2.0.0(postcss@8.4.35) postcss-overflow-shorthand: 5.0.1(postcss@8.4.35) postcss-page-break: 3.0.4(postcss@8.4.35) @@ -6602,14 +6577,6 @@ packages: react-is: 18.2.0 dev: true - /prisma@5.9.1: - resolution: {integrity: sha512-Hy/8KJZz0ELtkw4FnG9MS9rNWlXcJhf98Z2QMqi0QiVMoS8PzsBkpla0/Y5hTlob8F3HeECYphBjqmBxrluUrQ==} - engines: {node: '>=16.13'} - hasBin: true - requiresBuild: true - dependencies: - '@prisma/engines': 5.9.1 - /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -6820,12 +6787,12 @@ packages: yoga-wasm-web: 0.3.3 dev: false - /schema-dts@1.1.2(typescript@5.3.3): + /schema-dts@1.1.2(typescript@5.4.2): resolution: {integrity: sha512-MpNwH0dZJHinVxk9bT8XUdjKTxMYrA5bLtrrGmFA6PTLwlOKnhi67XoRd6/ty+Djt6ZC0slR57qFhZDNMI6DhQ==} peerDependencies: typescript: '>=4.1.0' dependencies: - typescript: 5.3.3 + typescript: 5.4.2 dev: true /semver@6.3.1: @@ -7089,8 +7056,8 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.12 - svelte-preprocess: 5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.12)(typescript@5.3.3) - typescript: 5.3.3 + svelte-preprocess: 5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.12)(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -7141,12 +7108,12 @@ packages: resolution: {integrity: sha512-AZD6R60vksyojn21FgXLglmBiBB9K5Dkdu0hdGrLbCaRCYT68IsWkZfRUqKhMx1IfzqWcZQ8X9y/f+Ih0oNQkQ==} dev: false - /svelte-meta-tags@3.1.1(svelte@4.2.12)(typescript@5.3.3): + /svelte-meta-tags@3.1.1(svelte@4.2.12)(typescript@5.4.2): resolution: {integrity: sha512-tSWU1xbRGV5rkDN4wWXZfY24BRuhPa3Z8W2Zpt3GCv01QQdWRhhgmlpYVdfoSPNQX060bDB/JM1cu4H+lXxe8w==} peerDependencies: svelte: ^3.55.0 || ^4.0.0 dependencies: - schema-dts: 1.1.2(typescript@5.3.3) + schema-dts: 1.1.2(typescript@5.4.2) svelte: 4.2.12 transitivePeerDependencies: - typescript @@ -7160,7 +7127,7 @@ packages: svelte: 4.2.12 dev: true - /svelte-preprocess@5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.12)(typescript@5.3.3): + /svelte-preprocess@5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.12)(typescript@5.4.2): resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} engines: {node: '>= 16.0.0', pnpm: ^8.0.0} requiresBuild: true @@ -7207,7 +7174,7 @@ packages: sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.12 - typescript: 5.3.3 + typescript: 5.4.2 dev: true /svelte-sequential-preprocessor@2.0.1: @@ -7264,8 +7231,8 @@ packages: '@sveltejs/kit': 2.5.2(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) dev: true - /sveltekit-superforms@2.7.0(@sveltejs/kit@2.5.2)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12): - resolution: {integrity: sha512-z/YXWE4utCy/HIo/AcXlckItRj7ANNPFFHO4C42uwbtXZOODnEbuPb+sbpbTdGAw65JhIos59qEZXFFofzfEug==} + /sveltekit-superforms@2.8.0(@sveltejs/kit@2.5.2)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12): + resolution: {integrity: sha512-Ac3GlnVOjZ6q4m6+1xcPEznJsoet4tNn3FqbgZ83UJP5O/io4fWXioGFDztuZXmIDPeaBoAx22A0TMmS61pCxA==} peerDependencies: '@sveltejs/kit': 1.x || 2.x svelte: 3.x || 4.x || >=5.0.0-next.51 @@ -7285,7 +7252,7 @@ packages: joi: 17.12.2 superstruct: 1.0.3 valibot: 0.29.0 - yup: 1.3.3 + yup: 1.4.0 zod: 3.22.4 zod-to-json-schema: 3.22.4(zod@3.22.4) transitivePeerDependencies: @@ -7436,22 +7403,22 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false - /ts-api-utils@1.0.3(typescript@5.3.3): + /ts-api-utils@1.0.3(typescript@5.4.2): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.3.3 + typescript: 5.4.2 dev: true - /ts-api-utils@1.2.1(typescript@5.3.3): + /ts-api-utils@1.2.1(typescript@5.4.2): resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.3.3 + typescript: 5.4.2 dev: true /ts-deepmerge@7.0.0: @@ -7461,7 +7428,7 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-node@10.9.2(@types/node@20.11.24)(typescript@5.3.3): + /ts-node@10.9.2(@types/node@20.11.25)(typescript@5.4.2): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -7480,14 +7447,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.24 + '@types/node': 20.11.25 acorn: 8.11.2 acorn-walk: 8.3.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.3 + typescript: 5.4.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -7540,8 +7507,8 @@ packages: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} dev: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} hasBin: true @@ -7629,7 +7596,7 @@ packages: - rollup dev: true - /vite-node@1.3.1(@types/node@20.11.24)(sass@1.71.1): + /vite-node@1.3.1(@types/node@20.11.25)(sass@1.71.1): resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -7638,7 +7605,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.5(@types/node@20.11.24)(sass@1.71.1) + vite: 5.1.5(@types/node@20.11.25)(sass@1.71.1) transitivePeerDependencies: - '@types/node' - less @@ -7650,7 +7617,7 @@ packages: - terser dev: true - /vite@5.1.5(@types/node@20.11.24)(sass@1.71.1): + /vite@5.1.5(@types/node@20.11.25)(sass@1.71.1): resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -7678,7 +7645,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.24 + '@types/node': 20.11.25 esbuild: 0.19.12 postcss: 8.4.35 rollup: 4.12.0 @@ -7694,9 +7661,9 @@ packages: vite: optional: true dependencies: - vite: 5.1.5(@types/node@20.11.24)(sass@1.71.1) + vite: 5.1.5(@types/node@20.11.25)(sass@1.71.1) - /vitest@1.3.1(@types/node@20.11.24)(sass@1.71.1): + /vitest@1.3.1(@types/node@20.11.25)(sass@1.71.1): resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -7721,7 +7688,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.11.24 + '@types/node': 20.11.25 '@vitest/expect': 1.3.1 '@vitest/runner': 1.3.1 '@vitest/snapshot': 1.3.1 @@ -7739,8 +7706,8 @@ packages: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.1.5(@types/node@20.11.24)(sass@1.71.1) - vite-node: 1.3.1(@types/node@20.11.24)(sass@1.71.1) + vite: 5.1.5(@types/node@20.11.25)(sass@1.71.1) + vite-node: 1.3.1(@types/node@20.11.25)(sass@1.71.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -7845,8 +7812,8 @@ packages: /yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} - /yup@1.3.3: - resolution: {integrity: sha512-v8QwZSsHH2K3/G9WSkp6mZKO+hugKT1EmnMqLNUcfu51HU9MDyhlETT/JgtzprnrnQHPWsjc6MUDMBp/l9fNnw==} + /yup@1.4.0: + resolution: {integrity: sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==} requiresBuild: true dependencies: property-expr: 2.0.6 diff --git a/prisma/categories.json b/prisma/categories.json deleted file mode 100644 index 3ca093f..0000000 --- a/prisma/categories.json +++ /dev/null @@ -1,256 +0,0 @@ -{ - "categories": [ - { - "name": "Abstract Strategy" - }, - { - "name": "Action / Dexterity" - }, - { - "name": "Adventure" - }, - { - "name": "Age of Reason" - }, - { - "name": "American Civil War" - }, - { - "name": "American Indian Wars" - }, - { - "name": "American Revolutionary War" - }, - { - "name": "American West" - }, - { - "name": "Ancient" - }, - { - "name": "Animals" - }, - { - "name": "Arabian" - }, - { - "name": "Aviation / Flight" - }, - { - "name": "Bluffing" - }, - { - "name": "Book" - }, - { - "name": "Card Game" - }, - { - "name": "Children's Game" - }, - { - "name": "City Building" - }, - { - "name": "Civil War" - }, - { - "name": "Civilization" - }, - { - "name": "Collectible Components" - }, - { - "name": "Comic Book / Strip" - }, - { - "name": "Deduction" - }, - { - "name": "Dice" - }, - { - "name": "Economic" - }, - { - "name": "Educational" - }, - { - "name": "Electronic" - }, - { - "name": "Environmental" - }, - { - "name": "Expansion for Base-game" - }, - { - "name": "Exploration" - }, - { - "name": "Fan Expansion" - }, - { - "name": "Fantasy" - }, - { - "name": "Farming" - }, - { - "name": "Fighting" - }, - { - "name": "Game System" - }, - { - "name": "Horror" - }, - { - "name": "Humor" - }, - { - "name": "Industry / Manufacturing" - }, - { - "name": "Korean War" - }, - { - "name": "Mafia" - }, - { - "name": "Math" - }, - { - "name": "Mature / Adult" - }, - { - "name": "Maze" - }, - { - "name": "Medical" - }, - { - "name": "Medieval" - }, - { - "name": "Memory" - }, - { - "name": "Miniatures" - }, - { - "name": "Modern Warefare" - }, - { - "name": "Movies / TV / Radio Theme" - }, - { - "name": "Murder/Mystery" - }, - { - "name": "Music" - }, - { - "name": "Mythology" - }, - { - "name": "Napoleonic" - }, - { - "name": "Nautical" - }, - { - "name": "Negotiation" - }, - { - "name": "Novel-based" - }, - { - "name": "Number" - }, - { - "name": "Party Game" - }, - { - "name": "Pike and Shot" - }, - { - "name": "Pirates" - }, - { - "name": "Political" - }, - { - "name": "Post-Napoleonic" - }, - { - "name": "Prehistoric" - }, - { - "name": "Print & Play" - }, - { - "name": "Puzzle" - }, - { - "name": "Racing" - }, - { - "name": "Real-time" - }, - { - "name": "Religious" - }, - { - "name": "Renaissance" - }, - { - "name": "Science Fiction" - }, - { - "name": "Space Exploration" - }, - { - "name": "Spies/Secret Agents" - }, - { - "name": "Sports" - }, - { - "name": "Territory Building" - }, - { - "name": "Trains" - }, - { - "name": "Transportation" - }, - { - "name": "Travel" - }, - { - "name": "Trivia" - }, - { - "name": "Video Game Theme" - }, - { - "name": "Vietnam War" - }, - { - "name": "Wargame" - }, - { - "name": "Word Game" - }, - { - "name": "World War I" - }, - { - "name": "World War II" - }, - { - "name": "Zombies" - } - ] -} diff --git a/prisma/mechanics.json b/prisma/mechanics.json deleted file mode 100644 index 0880679..0000000 --- a/prisma/mechanics.json +++ /dev/null @@ -1,577 +0,0 @@ -{ - "mechanics": [ - { - "name": "Acting" - }, - { - "name": "Action Drafting" - }, - { - "name": "Action Points" - }, - { - "name": "Action Queue" - }, - { - "name": "Action Retrieval" - }, - { - "name": "Action Timer" - }, - { - "name": "Action/Event" - }, - { - "name": "Advantage Token" - }, - { - "name": "Alliances" - }, - { - "name": "Area Majority / Influence" - }, - { - "name": "Area Movement" - }, - { - "name": "Area-Impulse" - }, - { - "name": "Auction Compensation" - }, - { - "name": "Auction: Dexterity" - }, - { - "name": "Auction: Dutch" - }, - { - "name": "Auction: Dutch Priority" - }, - { - "name": "Auction: English" - }, - { - "name": "Auction: Fixed Placement" - }, - { - "name": "Auction: Multiple Lot" - }, - { - "name": "Auction: Once Around" - }, - { - "name": "Auction: Sealed Bid" - }, - { - "name": "Auction: Turn Order Until Pass" - }, - { - "name": "Auction/Bidding" - }, - { - "name": "Automatic Resource Growth" - }, - { - "name": "Betting and Bluffing" - }, - { - "name": "Bias" - }, - { - "name": "Bids As Wagers" - }, - { - "name": "Bingo" - }, - { - "name": "Bribery" - }, - { - "name": "Campaign / Battle Card Driven" - }, - { - "name": "Card Play Conflict Resolution" - }, - { - "name": "Catch the Leader" - }, - { - "name": "Chaining" - }, - { - "name": "Chit-Pull System" - }, - { - "name": "Closed Drafting" - }, - { - "name": "Closed Economy Auction" - }, - { - "name": "Command Cards" - }, - { - "name": "Commodity Speculation" - }, - { - "name": "Communication Limits" - }, - { - "name": "Connections" - }, - { - "name": "Constrained Bidding" - }, - { - "name": "Contracts" - }, - { - "name": "Cooperative Game" - }, - { - "name": "Crayon Rail System" - }, - { - "name": "Critical Hits and Failures" - }, - { - "name": "Cube Tower" - }, - { - "name": "Deck Construction" - }, - { - "name": "Deck, Bag, and Pool Building" - }, - { - "name": "Deduction" - }, - { - "name": "Delayed Purchase" - }, - { - "name": "Dice Rolling" - }, - { - "name": "Die Icon Resolution" - }, - { - "name": "Different Dice Movement" - }, - { - "name": "Drawing" - }, - { - "name": "Elapsed Real Time Ending" - }, - { - "name": "Enclosure" - }, - { - "name": "End Game Bonuses" - }, - { - "name": "Events" - }, - { - "name": "Finale Ending" - }, - { - "name": "Flicking" - }, - { - "name": "Follow" - }, - { - "name": "Force Commitment" - }, - { - "name": "Grid Coverage" - }, - { - "name": "Grid Movement" - }, - { - "name": "Hand Management" - }, - { - "name": "Hexagon Grid" - }, - { - "name": "Hidden Movement" - }, - { - "name": "Hidden Roles" - }, - { - "name": "Hidden Victory Points" - }, - { - "name": "Highest-Lowest Scoring" - }, - { - "name": "Hot Potato" - }, - { - "name": "I Cut, You Choose" - }, - { - "name": "Impulse Movement" - }, - { - "name": "Income" - }, - { - "name": "Increase Value of Unchosen Resources" - }, - { - "name": "Induction" - }, - { - "name": "Interrupts" - }, - { - "name": "Investment" - }, - { - "name": "Kill Steal" - }, - { - "name": "King of the Hill" - }, - { - "name": "Ladder Climbing" - }, - { - "name": "Layering" - }, - { - "name": "Legacy Game" - }, - { - "name": "Line Drawing" - }, - { - "name": "Line of Sight" - }, - { - "name": "Loans" - }, - { - "name": "Lose a Turn" - }, - { - "name": "Mancala" - }, - { - "name": "Map Addition" - }, - { - "name": "Map Deformation" - }, - { - "name": "Map Reduction" - }, - { - "name": "Market" - }, - { - "name": "Matching" - }, - { - "name": "Measurement Movement" - }, - { - "name": "Melding and Splaying" - }, - { - "name": "Memory" - }, - { - "name": "Minimap Resolution" - }, - { - "name": "Modular Board" - }, - { - "name": "Move Through Deck" - }, - { - "name": "Movement Points" - }, - { - "name": "Movement Template" - }, - { - "name": "Moving Multiple Units" - }, - { - "name": "Multi-Use Cards" - }, - { - "name": "Multiple Maps" - }, - { - "name": "Narrative Choice / Paragraph" - }, - { - "name": "Negotiation" - }, - { - "name": "Neighbor Scope" - }, - { - "name": "Network and Route Building" - }, - { - "name": "Once-Per-Game Abilities" - }, - { - "name": "Open Drafting" - }, - { - "name": "Order Counters" - }, - { - "name": "Ordering" - }, - { - "name": "Ownership" - }, - { - "name": "Paper-and-Pencil" - }, - { - "name": "Passed Action Token" - }, - { - "name": "Pattern Building" - }, - { - "name": "Pattern Movement" - }, - { - "name": "Pattern Recognition" - }, - { - "name": "Physical Removal" - }, - { - "name": "Pick-up and Deliver" - }, - { - "name": "Pieces as Map" - }, - { - "name": "Player Elimination" - }, - { - "name": "Player Judge" - }, - { - "name": "Point to Point Movement" - }, - { - "name": "Predictive Bid" - }, - { - "name": "Prisoner's Dilemma" - }, - { - "name": "Programmed Movement" - }, - { - "name": "Push Your Luck" - }, - { - "name": "Questions and Answers" - }, - { - "name": "Race" - }, - { - "name": "Random Production" - }, - { - "name": "Ratio / Combat Results Table" - }, - { - "name": "Re-rolling and Locking" - }, - { - "name": "Real-Time" - }, - { - "name": "Relative Movement" - }, - { - "name": "Resource Queue" - }, - { - "name": "Resource to Move" - }, - { - "name": "Rock-Paper-Scissors" - }, - { - "name": "Role Playing" - }, - { - "name": "Roles with Asymmetric Information" - }, - { - "name": "Roll / Spin and Move" - }, - { - "name": "Rondel" - }, - { - "name": "Scenario / Mission / Campaign Game" - }, - { - "name": "Score-and-Reset Game" - }, - { - "name": "Secret Unit Deployment" - }, - { - "name": "Selection Order Bid" - }, - { - "name": "Semi-Cooperative Game" - }, - { - "name": "Set Collection" - }, - { - "name": "Simulation" - }, - { - "name": "Simultaneous Action Selection" - }, - { - "name": "Singing" - }, - { - "name": "Single Loser Game" - }, - { - "name": "Slide/Push" - }, - { - "name": "Solo / Solitaire Game" - }, - { - "name": "Speed Matching" - }, - { - "name": "Square Grid" - }, - { - "name": "Stacking and Balancing" - }, - { - "name": "Stat Check Resolution" - }, - { - "name": "Static Capture" - }, - { - "name": "Stock Holding" - }, - { - "name": "Storytelling" - }, - { - "name": "Sudden Death Ending" - }, - { - "name": "Tags" - }, - { - "name": "Take That" - }, - { - "name": "Targeted Clues" - }, - { - "name": "Team-Based Game" - }, - { - "name": "Tech Trees / Tech Tracks" - }, - { - "name": "Three Dimensional Movement" - }, - { - "name": "Tile Placement" - }, - { - "name": "Track Movement" - }, - { - "name": "Trading" - }, - { - "name": "Traitor Game" - }, - { - "name": "Trick-taking" - }, - { - "name": "Tug of War" - }, - { - "name": "Turn Order: Auction" - }, - { - "name": "Turn Order: Claim Action" - }, - { - "name": "Turn Order: Pass Order" - }, - { - "name": "Turn Order: Progressive" - }, - { - "name": "Turn Order: Random" - }, - { - "name": "Turn Order: Role Order" - }, - { - "name": "Turn Order: Stat-Based" - }, - { - "name": "Turn Order: Time Track" - }, - { - "name": "Variable Phase Order" - }, - { - "name": "Variable Player Powers" - }, - { - "name": "Variable Set-up" - }, - { - "name": "Victory Points as a Resource" - }, - { - "name": "Voting" - }, - { - "name": "Worker Placement" - }, - { - "name": "Worker Placement with Dice Workers" - }, - { - "name": "Worker Placement, Different Worker Types" - }, - { - "name": "Zone of Control" - } - ] -} diff --git a/prisma/schema.prisma b/prisma/schema.prisma deleted file mode 100644 index 14628d6..0000000 --- a/prisma/schema.prisma +++ /dev/null @@ -1,272 +0,0 @@ -// This is your Prisma schema file, -// learn more about it in the docs: https://pris.ly/d/prisma-schema - -generator client { - provider = "prisma-client-js" - previewFeatures = ["fullTextSearch", "fullTextIndex", "relationJoins"] -} - -datasource db { - provider = "mysql" - url = env("DATABASE_URL") - relationMode = "prisma" -} - -model Role { - id String @id @default(cuid()) - name String @unique - userRoles UserRole[] - - @@map("roles") -} - -model UserRole { - id String @id @default(cuid()) - user User @relation(fields: [user_id], references: [id]) - user_id String - role Role @relation(fields: [role_id], references: [id]) - role_id String - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @updatedAt @db.Timestamp(6) - - @@unique([user_id, role_id]) - @@index([user_id]) - @@index([role_id]) - @@map("user_roles") -} - -model User { - id String @id @default(cuid()) - username String @unique - hashed_password String? - email String? @unique - firstName String? - lastName String? - roles UserRole[] - verified Boolean @default(false) - receiveEmail Boolean @default(false) - collection Collection? - wishlist Wishlist? - list List[] - theme String @default("system") - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @updatedAt @db.Timestamp(6) - sessions Session[] - - @@map("users") -} - -model Session { - id String @id @unique - userId String - ip_country String - ip_address String - expiresAt DateTime - user User @relation(references: [id], fields: [userId], onDelete: Cascade) - - @@index([userId]) - @@map("sessions") -} - -model Collection { - id String @id @default(cuid()) - user_id String @unique - user User @relation(references: [id], fields: [user_id]) - items CollectionItem[] - - @@index([user_id]) - @@map("collections") -} - -model CollectionItem { - id String @id @default(cuid()) - collection_id String - collection Collection @relation(references: [id], fields: [collection_id], onDelete: Cascade) - game_id String @unique - game Game @relation(references: [id], fields: [game_id]) - times_played Int - - @@index([game_id, collection_id]) - @@index([game_id]) - @@index([collection_id]) - @@map("collection_items") -} - -model Wishlist { - id String @id @default(cuid()) - user_id String @unique - user User @relation(references: [id], fields: [user_id]) - items WishlistItem[] - - @@index([user_id]) - @@map("wishlists") -} - -model WishlistItem { - id String @id @default(cuid()) - wishlist_id String - wishlist Wishlist @relation(references: [id], fields: [wishlist_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, wishlist_id]) - @@index([game_id]) - @@index([wishlist_id]) - @@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 - 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]) - @@index([game_id]) - @@index([list_id]) - @@map("list_items") -} - -model Game { - id String @id @default(cuid()) - name String - slug String - description String? @db.LongText - year_published Int? @db.Year - min_players Int? - max_players Int? - playtime Int? - min_playtime Int? - max_playtime Int? - min_age Int? - image_url String? - thumb_url String? - url String? - categories Category[] - mechanics Mechanic[] - designers Designer[] - publishers Publisher[] - artists Artist[] - names GameName[] - expansions Expansion[] @relation("BaseToExpansion") - expansion_of Expansion[] @relation("ExpansionToBase") - collection_items CollectionItem[] - wishlist_items WishlistItem[] - list_items ListItem[] - external_id Int @unique - last_sync_at DateTime? @db.Timestamp(6) - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @updatedAt @db.Timestamp(6) - - @@fulltext([name]) - @@fulltext([slug]) - @@map("games") -} - -model GameName { - id String @id @default(cuid()) - name String - slug String - game_id String - 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]) - @@map("game_names") -} - -model Publisher { - id String @id @default(cuid()) - name String - slug String - external_id Int @unique - games Game[] - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @updatedAt @db.Timestamp(6) - - @@fulltext([name]) - @@map("publishers") -} - -model Category { - id String @id @default(cuid()) - name String - slug String - games Game[] - external_id Int @unique - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @updatedAt @db.Timestamp(6) - - @@fulltext([name]) - @@map("categories") -} - -model Mechanic { - id String @id @default(cuid()) - name String - slug String - games Game[] - external_id Int @unique - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @updatedAt @db.Timestamp(6) - - @@fulltext([name]) - @@map("mechanics") -} - -model Designer { - id String @id @default(cuid()) - name String - slug String - external_id Int @unique - games Game[] - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @updatedAt @db.Timestamp(6) - - @@fulltext([name]) - @@map("designers") -} - -model Artist { - id String @id @default(cuid()) - name String - slug String @unique - external_id Int @unique - games Game[] - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @updatedAt @db.Timestamp(6) - - @@fulltext([name]) - @@map("artists") -} - -model Expansion { - id String @id @default(cuid()) - base_game Game @relation(name: "BaseToExpansion", fields: [base_game_id], references: [id]) - base_game_id String - game Game @relation(name: "ExpansionToBase", fields: [game_id], references: [id]) - game_id String - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @updatedAt @db.Timestamp(6) - - @@index([base_game_id]) - @@index([game_id]) - @@map("expansions") -} diff --git a/prisma/seed.ts b/prisma/seed.ts deleted file mode 100644 index 5961cf8..0000000 --- a/prisma/seed.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { PrismaClient } from '@prisma/client'; - -const prisma = new PrismaClient(); - -async function main() { - console.log(`Start seeding ...`); - - console.log('Creating roles ...'); - const existingRoles = await prisma.role.findMany(); - if (existingRoles.length === 0) { - await prisma.role.createMany({ - data: [{ name: 'admin' }, { name: 'user' }] - }); - console.log('Roles created.'); - } else { - console.log('Roles already exist. No action taken.'); - } - - if (!await prisma.publisher.findFirst({ - where: { - external_id: 9999 - } - })) { - console.log('Publisher does not exist. Creating...'); - await prisma.publisher.create({ - data: { - name: 'Unknown', - slug: 'unknown', - external_id: 9999 - } - }); - } - - if (!await prisma.designer.findFirst({ - where: { - external_id: 9999 - } - })) { - console.log('Designer does not exist. Creating...'); - await prisma.designer.create({ - data: { - name: 'Unknown', - slug: 'unknown', - external_id: 9999 - } - }); - } - - if (!await prisma.artist.findFirst({ - where: { - external_id: 9999 - } - })) { - console.log('Artist does not exist. Creating...'); - await prisma.artist.create({ - data: { - name: 'Unknown', - slug: 'unknown', - external_id: 9999 - } - }); - } - // for (const p of userData) { - // const user = await prisma.user.create({ - // data: { - // firstName: p.user.firstName, - // lastName: p.user.lastName, - // email: p.user.email, - // username: p.user.username - // } - // }); - // console.log(`Created user with id: ${user.id}`); - // } - console.log(`Seeding finished.`); -} - -main() - .catch(async (e) => { - console.error(e); - process.exit(1); - }) - .finally(async () => { - await prisma.$disconnect(); - }); diff --git a/src/app.d.ts b/src/app.d.ts index 3bbe70d..20e0cdc 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -2,10 +2,6 @@ // for information about these interfaces // and what to do when importing types -import type { PrismaClient, User } from '@prisma/client'; - -type User = Omit; - // src/app.d.ts declare global { namespace App { @@ -16,7 +12,6 @@ declare global { auth: import('lucia').AuthRequest; user: import('lucia').User | null; session: import('lucia').Session | null; - prisma: PrismaClient; startTimer: number; ip: string; country: string; diff --git a/src/lib/components/AddToList.svelte b/src/lib/components/AddToList.svelte index 7756276..27aaafb 100644 --- a/src/lib/components/AddToList.svelte +++ b/src/lib/components/AddToList.svelte @@ -1,14 +1,12 @@
@@ -23,7 +30,7 @@