diff --git a/package.json b/package.json index 5c45f74..ce95e6f 100644 --- a/package.json +++ b/package.json @@ -22,21 +22,21 @@ "seed": "ts-node --esm prisma/seed.ts" }, "devDependencies": { - "@playwright/test": "^1.35.1", + "@playwright/test": "^1.36.1", "@sveltejs/adapter-auto": "^1.0.3", "@sveltejs/adapter-vercel": "^1.0.6", - "@sveltejs/kit": "^1.21.0", + "@sveltejs/kit": "^1.22.3", "@types/cookie": "^0.5.1", "@types/node": "^18.16.19", - "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", "autoprefixer": "^10.4.14", - "eslint": "^8.44.0", + "eslint": "^8.45.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-svelte": "^2.32.2", "just-clone": "^6.2.0", "just-debounce-it": "^3.2.0", - "postcss": "^8.4.24", + "postcss": "^8.4.26", "postcss-import": "^15.1.0", "postcss-load-config": "^4.0.1", "postcss-preset-env": "^8.5.1", @@ -47,12 +47,12 @@ "svelte": "^3.59.2", "svelte-check": "^2.10.3", "svelte-preprocess": "^5.0.4", - "sveltekit-superforms": "^1.1.3", - "tailwindcss": "^3.3.2", + "sveltekit-superforms": "^1.3.0", + "tailwindcss": "^3.3.3", "ts-node": "^10.9.1", "tslib": "^2.6.0", "typescript": "^4.9.5", - "vite": "^4.3.9", + "vite": "^4.4.4", "vitest": "^0.25.3", "zod": "^3.21.4" }, @@ -65,7 +65,7 @@ "@axiomhq/axiom-node": "^0.12.0", "@fontsource/fira-mono": "^4.5.10", "@iconify-icons/line-md": "^1.2.23", - "@iconify-icons/mdi": "^1.2.46", + "@iconify-icons/mdi": "^1.2.47", "@leveluptuts/svelte-side-menu": "^1.0.5", "@leveluptuts/svelte-toy": "^2.0.3", "@lucia-auth/adapter-mysql": "^1.1.1", @@ -88,8 +88,8 @@ "svelte-lazy-loader": "^1.0.0", "svelte-legos": "^0.2.1", "sveltekit-flash-message": "^0.11.3", - "tailwind-merge": "^1.13.2", + "tailwind-merge": "^1.14.0", "tailwindcss-animate": "^1.0.6", - "zod-to-json-schema": "^3.21.3" + "zod-to-json-schema": "^3.21.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95acbc9..ef99158 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ dependencies: specifier: ^1.2.23 version: 1.2.23 '@iconify-icons/mdi': - specifier: ^1.2.46 - version: 1.2.46 + specifier: ^1.2.47 + version: 1.2.47 '@leveluptuts/svelte-side-menu': specifier: ^1.0.5 version: 1.0.5 @@ -82,30 +82,30 @@ dependencies: version: 0.2.1(svelte@3.59.2) sveltekit-flash-message: specifier: ^0.11.3 - version: 0.11.3(@sveltejs/kit@1.21.0)(svelte@3.59.2) + version: 0.11.3(@sveltejs/kit@1.22.3)(svelte@3.59.2) tailwind-merge: - specifier: ^1.13.2 - version: 1.13.2 + specifier: ^1.14.0 + version: 1.14.0 tailwindcss-animate: specifier: ^1.0.6 - version: 1.0.6(tailwindcss@3.3.2) + version: 1.0.6(tailwindcss@3.3.3) zod-to-json-schema: - specifier: ^3.21.3 - version: 3.21.3(zod@3.21.4) + specifier: ^3.21.4 + version: 3.21.4(zod@3.21.4) devDependencies: '@playwright/test': - specifier: ^1.35.1 - version: 1.35.1 + specifier: ^1.36.1 + version: 1.36.1 '@sveltejs/adapter-auto': specifier: ^1.0.3 - version: 1.0.3(@sveltejs/kit@1.21.0) + version: 1.0.3(@sveltejs/kit@1.22.3) '@sveltejs/adapter-vercel': specifier: ^1.0.6 - version: 1.0.6(@sveltejs/kit@1.21.0) + version: 1.0.6(@sveltejs/kit@1.22.3) '@sveltejs/kit': - specifier: ^1.21.0 - version: 1.21.0(svelte@3.59.2)(vite@4.3.9) + specifier: ^1.22.3 + version: 1.22.3(svelte@3.59.2)(vite@4.4.4) '@types/cookie': specifier: ^0.5.1 version: 0.5.1 @@ -113,23 +113,23 @@ devDependencies: specifier: ^18.16.19 version: 18.16.19 '@typescript-eslint/eslint-plugin': - specifier: ^5.60.1 - version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@4.9.5) + specifier: ^5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@4.9.5) '@typescript-eslint/parser': - specifier: ^5.60.1 - version: 5.60.1(eslint@8.44.0)(typescript@4.9.5) + specifier: ^5.62.0 + version: 5.62.0(eslint@8.45.0)(typescript@4.9.5) autoprefixer: specifier: ^10.4.14 - version: 10.4.14(postcss@8.4.24) + version: 10.4.14(postcss@8.4.26) eslint: - specifier: ^8.44.0 - version: 8.44.0 + specifier: ^8.45.0 + version: 8.45.0 eslint-config-prettier: specifier: ^8.8.0 - version: 8.8.0(eslint@8.44.0) + version: 8.8.0(eslint@8.45.0) eslint-plugin-svelte: specifier: ^2.32.2 - version: 2.32.2(eslint@8.44.0)(svelte@3.59.2)(ts-node@10.9.1) + version: 2.32.2(eslint@8.45.0)(svelte@3.59.2)(ts-node@10.9.1) just-clone: specifier: ^6.2.0 version: 6.2.0 @@ -137,17 +137,17 @@ devDependencies: specifier: ^3.2.0 version: 3.2.0 postcss: - specifier: ^8.4.24 - version: 8.4.24 + specifier: ^8.4.26 + version: 8.4.26 postcss-import: specifier: ^15.1.0 - version: 15.1.0(postcss@8.4.24) + version: 15.1.0(postcss@8.4.26) postcss-load-config: specifier: ^4.0.1 - version: 4.0.1(postcss@8.4.24)(ts-node@10.9.1) + version: 4.0.1(postcss@8.4.26)(ts-node@10.9.1) postcss-preset-env: specifier: ^8.5.1 - version: 8.5.1(postcss@8.4.24) + version: 8.5.1(postcss@8.4.26) prettier: specifier: ^2.8.8 version: 2.8.8 @@ -165,16 +165,16 @@ devDependencies: version: 3.59.2 svelte-check: specifier: ^2.10.3 - version: 2.10.3(postcss-load-config@4.0.1)(postcss@8.4.24)(sass@1.63.6)(svelte@3.59.2) + version: 2.10.3(postcss-load-config@4.0.1)(postcss@8.4.26)(sass@1.63.6)(svelte@3.59.2) svelte-preprocess: specifier: ^5.0.4 - version: 5.0.4(postcss-load-config@4.0.1)(postcss@8.4.24)(sass@1.63.6)(svelte@3.59.2)(typescript@4.9.5) + version: 5.0.4(postcss-load-config@4.0.1)(postcss@8.4.26)(sass@1.63.6)(svelte@3.59.2)(typescript@4.9.5) sveltekit-superforms: - specifier: ^1.1.3 - version: 1.1.3(@sveltejs/kit@1.21.0)(svelte@3.59.2)(zod@3.21.4) + specifier: ^1.3.0 + version: 1.3.0(@sveltejs/kit@1.22.3)(svelte@3.59.2)(zod@3.21.4) tailwindcss: - specifier: ^3.3.2 - version: 3.3.2(ts-node@10.9.1) + 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.16.19)(typescript@4.9.5) @@ -185,8 +185,8 @@ devDependencies: specifier: ^4.9.5 version: 4.9.5 vite: - specifier: ^4.3.9 - version: 4.3.9(@types/node@18.16.19)(sass@1.63.6) + specifier: ^4.4.4 + version: 4.4.4(@types/node@18.16.19)(sass@1.63.6) vitest: specifier: ^0.25.3 version: 0.25.8(sass@1.63.6) @@ -344,18 +344,18 @@ packages: '@csstools/css-tokenizer': 2.1.1 dev: true - /@csstools/postcss-cascade-layers@3.0.1(postcss@8.4.24): + /@csstools/postcss-cascade-layers@3.0.1(postcss@8.4.26): resolution: {integrity: sha512-dD8W98dOYNOH/yX4V4HXOhfCOnvVAg8TtsL+qCGNoKXuq5z2C/d026wGWgySgC8cajXXo/wNezS31Glj5GcqrA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /@csstools/postcss-color-function@2.2.3(postcss@8.4.24): + /@csstools/postcss-color-function@2.2.3(postcss@8.4.26): resolution: {integrity: sha512-b1ptNkr1UWP96EEHqKBWWaV5m/0hgYGctgA/RVZhONeP1L3T/8hwoqDm9bB23yVCfOgE9U93KI9j06+pEkJTvw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -364,11 +364,11 @@ packages: '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - postcss: 8.4.24 + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + postcss: 8.4.26 dev: true - /@csstools/postcss-color-mix-function@1.0.3(postcss@8.4.24): + /@csstools/postcss-color-mix-function@1.0.3(postcss@8.4.26): resolution: {integrity: sha512-QGXjGugTluqFZWzVf+S3wCiRiI0ukXlYqCi7OnpDotP/zaVTyl/aqZujLFzTOXy24BoWnu89frGMc79ohY5eog==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -377,21 +377,21 @@ packages: '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - postcss: 8.4.24 + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + postcss: 8.4.26 dev: true - /@csstools/postcss-font-format-keywords@2.0.2(postcss@8.4.24): + /@csstools/postcss-font-format-keywords@2.0.2(postcss@8.4.26): resolution: {integrity: sha512-iKYZlIs6JsNT7NKyRjyIyezTCHLh4L4BBB3F5Nx7Dc4Z/QmBgX+YJFuUSar8IM6KclGiAUFGomXFdYxAwJydlA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-gradients-interpolation-method@3.0.6(postcss@8.4.24): + /@csstools/postcss-gradients-interpolation-method@3.0.6(postcss@8.4.26): resolution: {integrity: sha512-rBOBTat/YMmB0G8VHwKqDEx+RZ4KCU9j42K8LwS0IpZnyThalZZF7BCSsZ6TFlZhcRZKlZy3LLFI2pLqjNVGGA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -400,11 +400,11 @@ packages: '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - postcss: 8.4.24 + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + postcss: 8.4.26 dev: true - /@csstools/postcss-hwb-function@2.2.2(postcss@8.4.24): + /@csstools/postcss-hwb-function@2.2.2(postcss@8.4.26): resolution: {integrity: sha512-W5Y5oaJ382HSlbdGfPf60d7dAK6Hqf10+Be1yZbd/TNNrQ/3dDdV1c07YwOXPQ3PZ6dvFMhxbIbn8EC3ki3nEg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -413,61 +413,61 @@ packages: '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /@csstools/postcss-ic-unit@2.0.4(postcss@8.4.24): + /@csstools/postcss-ic-unit@2.0.4(postcss@8.4.26): resolution: {integrity: sha512-9W2ZbV7whWnr1Gt4qYgxMWzbevZMOvclUczT5vk4yR6vS53W/njiiUhtm/jh/BKYwQ1W3PECZjgAd2dH4ebJig==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - postcss: 8.4.24 + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-is-pseudo-class@3.2.1(postcss@8.4.24): + /@csstools/postcss-is-pseudo-class@3.2.1(postcss@8.4.26): resolution: {integrity: sha512-AtANdV34kJl04Al62is3eQRk/BfOfyAvEmRJvbt+nx5REqImLC+2XhuE6skgkcPli1l8ONS67wS+l1sBzySc3Q==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /@csstools/postcss-logical-float-and-clear@1.0.1(postcss@8.4.24): + /@csstools/postcss-logical-float-and-clear@1.0.1(postcss@8.4.26): resolution: {integrity: sha512-eO9z2sMLddvlfFEW5Fxbjyd03zaO7cJafDurK4rCqyRt9P7aaWwha0LcSzoROlcZrw1NBV2JAp2vMKfPMQO1xw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /@csstools/postcss-logical-resize@1.0.1(postcss@8.4.24): + /@csstools/postcss-logical-resize@1.0.1(postcss@8.4.26): resolution: {integrity: sha512-x1ge74eCSvpBkDDWppl+7FuD2dL68WP+wwP2qvdUcKY17vJksz+XoE1ZRV38uJgS6FNUwC0AxrPW5gy3MxsDHQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-logical-viewport-units@1.0.3(postcss@8.4.24): + /@csstools/postcss-logical-viewport-units@1.0.3(postcss@8.4.26): resolution: {integrity: sha512-6zqcyRg9HSqIHIPMYdt6THWhRmE5/tyHKJQLysn2TeDf/ftq7Em9qwMTx98t2C/7UxIsYS8lOiHHxAVjWn2WUg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: '@csstools/css-tokenizer': 2.1.1 - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /@csstools/postcss-media-minmax@1.0.4(postcss@8.4.24): + /@csstools/postcss-media-minmax@1.0.4(postcss@8.4.26): resolution: {integrity: sha512-olnKTQk9+RMzpIpkjv55d44L4Ni02j8ZJoedJezQC5M03a56npcM1hx0apaTRG4Fz1wfPCQ0DBjQ8zsiJFelmA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -477,10 +477,10 @@ packages: '@csstools/css-parser-algorithms': 2.2.0(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 '@csstools/media-query-list-parser': 2.1.1(@csstools/css-parser-algorithms@2.2.0)(@csstools/css-tokenizer@2.1.1) - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /@csstools/postcss-media-queries-aspect-ratio-number-values@1.0.4(postcss@8.4.24): + /@csstools/postcss-media-queries-aspect-ratio-number-values@1.0.4(postcss@8.4.26): resolution: {integrity: sha512-IwyTbyR8E2y3kh6Fhrs251KjKBJeUPV5GlnUKnpU70PRFEN2DolWbf2V4+o/B9+Oj77P/DullLTulWEQ8uFtAA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -489,30 +489,30 @@ packages: '@csstools/css-parser-algorithms': 2.2.0(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 '@csstools/media-query-list-parser': 2.1.1(@csstools/css-parser-algorithms@2.2.0)(@csstools/css-tokenizer@2.1.1) - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /@csstools/postcss-nested-calc@2.0.2(postcss@8.4.24): + /@csstools/postcss-nested-calc@2.0.2(postcss@8.4.26): resolution: {integrity: sha512-jbwrP8rN4e7LNaRcpx3xpMUjhtt34I9OV+zgbcsYAAk6k1+3kODXJBf95/JMYWhu9g1oif7r06QVUgfWsKxCFw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-normalize-display-values@2.0.1(postcss@8.4.24): + /@csstools/postcss-normalize-display-values@2.0.1(postcss@8.4.26): resolution: {integrity: sha512-TQT5g3JQ5gPXC239YuRK8jFceXF9d25ZvBkyjzBGGoW5st5sPXFVQS8OjYb9IJ/K3CdfK4528y483cgS2DJR/w==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-oklab-function@2.2.3(postcss@8.4.24): + /@csstools/postcss-oklab-function@2.2.3(postcss@8.4.26): resolution: {integrity: sha512-AgJ2rWMnLCDcbSMTHSqBYn66DNLBym6JpBpCaqmwZ9huGdljjDRuH3DzOYzkgQ7Pm2K92IYIq54IvFHloUOdvA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -521,21 +521,21 @@ packages: '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - postcss: 8.4.24 + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + postcss: 8.4.26 dev: true - /@csstools/postcss-progressive-custom-properties@2.3.0(postcss@8.4.24): + /@csstools/postcss-progressive-custom-properties@2.3.0(postcss@8.4.26): resolution: {integrity: sha512-Zd8ojyMlsL919TBExQ1I0CTpBDdyCpH/yOdqatZpuC3sd22K4SwC7+Yez3Q/vmXMWSAl+shjNeFZ7JMyxMjK+Q==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-relative-color-syntax@1.0.2(postcss@8.4.24): + /@csstools/postcss-relative-color-syntax@1.0.2(postcss@8.4.26): resolution: {integrity: sha512-juCoVInkgH2TZPfOhyx6tIal7jW37L/0Tt+Vcl1LoxqQA9sxcg3JWYZ98pl1BonDnki6s/M7nXzFQHWsWMeHgw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -544,21 +544,21 @@ packages: '@csstools/css-color-parser': 1.2.1(@csstools/css-parser-algorithms@2.2.0)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.2.0(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - postcss: 8.4.24 + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + postcss: 8.4.26 dev: true - /@csstools/postcss-scope-pseudo-class@2.0.2(postcss@8.4.24): + /@csstools/postcss-scope-pseudo-class@2.0.2(postcss@8.4.26): resolution: {integrity: sha512-6Pvo4uexUCXt+Hz5iUtemQAcIuCYnL+ePs1khFR6/xPgC92aQLJ0zGHonWoewiBE+I++4gXK3pr+R1rlOFHe5w==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /@csstools/postcss-stepped-value-functions@2.1.1(postcss@8.4.24): + /@csstools/postcss-stepped-value-functions@2.1.1(postcss@8.4.26): resolution: {integrity: sha512-YCvdF0GCZK35nhLgs7ippcxDlRVe5QsSht3+EghqTjnYnyl3BbWIN6fYQ1dKWYTJ+7Bgi41TgqQFfJDcp9Xy/w==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -567,21 +567,21 @@ packages: '@csstools/css-calc': 1.1.1(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /@csstools/postcss-text-decoration-shorthand@2.2.4(postcss@8.4.24): + /@csstools/postcss-text-decoration-shorthand@2.2.4(postcss@8.4.26): resolution: {integrity: sha512-zPN56sQkS/7YTCVZhOBVCWf7AiNge8fXDl7JVaHLz2RyT4pnyK2gFjckWRLpO0A2xkm1lCgZ0bepYZTwAVd/5A==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: '@csstools/color-helpers': 2.1.0 - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-trigonometric-functions@2.1.1(postcss@8.4.24): + /@csstools/postcss-trigonometric-functions@2.1.1(postcss@8.4.26): resolution: {integrity: sha512-XcXmHEFfHXhvYz40FtDlA4Fp4NQln2bWTsCwthd2c+MCnYArUYU3YaMqzR5CrKP3pMoGYTBnp5fMqf1HxItNyw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -590,16 +590,16 @@ packages: '@csstools/css-calc': 1.1.1(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /@csstools/postcss-unset-value@2.0.1(postcss@8.4.24): + /@csstools/postcss-unset-value@2.0.1(postcss@8.4.26): resolution: {integrity: sha512-oJ9Xl29/yU8U7/pnMJRqAZd4YXNCfGEdcP4ywREuqm/xMqcgDNDppYRoCGDt40aaZQIEKBS79LytUDN/DHf0Ew==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true /@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.13): @@ -620,8 +620,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.17.18: - resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} + /@esbuild/android-arm64@0.18.11: + resolution: {integrity: sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -637,8 +637,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.18: - resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} + /@esbuild/android-arm@0.18.11: + resolution: {integrity: sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -654,8 +654,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.18: - resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} + /@esbuild/android-x64@0.18.11: + resolution: {integrity: sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -671,8 +671,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.18: - resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} + /@esbuild/darwin-arm64@0.18.11: + resolution: {integrity: sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -688,8 +688,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.18: - resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} + /@esbuild/darwin-x64@0.18.11: + resolution: {integrity: sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -705,8 +705,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.18: - resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} + /@esbuild/freebsd-arm64@0.18.11: + resolution: {integrity: sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -722,8 +722,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.18: - resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} + /@esbuild/freebsd-x64@0.18.11: + resolution: {integrity: sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -739,8 +739,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.18: - resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} + /@esbuild/linux-arm64@0.18.11: + resolution: {integrity: sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -756,8 +756,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.18: - resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} + /@esbuild/linux-arm@0.18.11: + resolution: {integrity: sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -773,8 +773,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.18: - resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} + /@esbuild/linux-ia32@0.18.11: + resolution: {integrity: sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -790,8 +790,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.18: - resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} + /@esbuild/linux-loong64@0.18.11: + resolution: {integrity: sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -807,8 +807,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.18: - resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} + /@esbuild/linux-mips64el@0.18.11: + resolution: {integrity: sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -824,8 +824,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.18: - resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} + /@esbuild/linux-ppc64@0.18.11: + resolution: {integrity: sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -841,8 +841,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.18: - resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} + /@esbuild/linux-riscv64@0.18.11: + resolution: {integrity: sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -858,8 +858,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.18: - resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} + /@esbuild/linux-s390x@0.18.11: + resolution: {integrity: sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -875,8 +875,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.18: - resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} + /@esbuild/linux-x64@0.18.11: + resolution: {integrity: sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -892,8 +892,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.18: - resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} + /@esbuild/netbsd-x64@0.18.11: + resolution: {integrity: sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -909,8 +909,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.18: - resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} + /@esbuild/openbsd-x64@0.18.11: + resolution: {integrity: sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -926,8 +926,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.18: - resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} + /@esbuild/sunos-x64@0.18.11: + resolution: {integrity: sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -943,8 +943,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.18: - resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} + /@esbuild/win32-arm64@0.18.11: + resolution: {integrity: sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -960,8 +960,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.18: - resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} + /@esbuild/win32-ia32@0.18.11: + resolution: {integrity: sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -977,21 +977,21 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.18: - resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} + /@esbuild/win32-x64@0.18.11: + resolution: {integrity: sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.44.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.45.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.44.0 + eslint: 8.45.0 eslint-visitor-keys: 3.4.1 dev: true @@ -1062,8 +1062,8 @@ packages: '@iconify/types': 2.0.0 dev: false - /@iconify-icons/mdi@1.2.46: - resolution: {integrity: sha512-/8se1J8YqupamWqyTejcX6zIrWgZQ8A5+7hWhHXcJD5Rc5OteEM2nuEq2NI29loAs/W9JZP4mH38uz6w2CETkw==} + /@iconify-icons/mdi@1.2.47: + resolution: {integrity: sha512-XwrHxJb2GzToyyoI9gaVm6/yE3aRlxB2IolKXzTEf6qAtjv3S4xFAxYaOlm6iuylQv+WyquH9C4cBudNPRHApg==} dependencies: '@iconify/types': 2.0.0 dev: false @@ -1164,7 +1164,7 @@ packages: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.3 + semver: 7.5.4 tar: 6.1.13 transitivePeerDependencies: - encoding @@ -1189,13 +1189,13 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@playwright/test@1.35.1: - resolution: {integrity: sha512-b5YoFe6J9exsMYg0pQAobNDR85T1nLumUYgUTtKm4d21iX2L7WqKq9dW8NGJ+2vX0etZd+Y7UeuqsxDXm9+5ZA==} + /@playwright/test@1.36.1: + resolution: {integrity: sha512-YK7yGWK0N3C2QInPU6iaf/L3N95dlGdbsezLya4n0ZCh3IL7VgPGxC6Gnznh9ApWdOmkJeleT2kMTcWPRZvzqg==} engines: {node: '>=16'} hasBin: true dependencies: '@types/node': 18.16.19 - playwright-core: 1.35.1 + playwright-core: 1.36.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -1233,21 +1233,21 @@ packages: picomatch: 2.3.1 dev: true - /@sveltejs/adapter-auto@1.0.3(@sveltejs/kit@1.21.0): + /@sveltejs/adapter-auto@1.0.3(@sveltejs/kit@1.22.3): resolution: {integrity: sha512-hc7O12YQqvZ1CD4fo1gMJuPzBZvuoG5kwxb2RRoz4fVoB8B2vuPO2cY751Ln0G6T/HMrAf8kCqw6Pg+wbxcstw==} peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@sveltejs/kit': 1.21.0(svelte@3.59.2)(vite@4.3.9) + '@sveltejs/kit': 1.22.3(svelte@3.59.2)(vite@4.4.4) import-meta-resolve: 2.2.0 dev: true - /@sveltejs/adapter-vercel@1.0.6(@sveltejs/kit@1.21.0): + /@sveltejs/adapter-vercel@1.0.6(@sveltejs/kit@1.22.3): resolution: {integrity: sha512-fo6aaEygPd/6B5Jms4Ff7R4jbADnppuLvKOWBNTGe5MGB7ZRUkl+gxHWMQx2av2knyEZkA6V8y5M6R3ML5yN4g==} peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@sveltejs/kit': 1.21.0(svelte@3.59.2)(vite@4.3.9) + '@sveltejs/kit': 1.22.3(svelte@3.59.2)(vite@4.4.4) '@vercel/nft': 0.22.6 esbuild: 0.16.8 transitivePeerDependencies: @@ -1255,8 +1255,8 @@ packages: - supports-color dev: true - /@sveltejs/kit@1.21.0(svelte@3.59.2)(vite@4.3.9): - resolution: {integrity: sha512-CBsYoI34SjtOQp0eG85dmVnvTR3Pjs8VgAQhO0CgQja9BIorKl808F1X8EunPhCcyek5r5lKQE1Mmbi0RuzHqA==} + /@sveltejs/kit@1.22.3(svelte@3.59.2)(vite@4.4.4): + resolution: {integrity: sha512-IpHD5wvuoOIHYaHQUBJ1zERD2Iz+fB/rBXhXjl8InKw6X4VKE9BSus+ttHhE7Ke+Ie9ecfilzX8BnWE3FeQyng==} engines: {node: ^16.14 || >=18} hasBin: true requiresBuild: true @@ -1264,7 +1264,7 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.2)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.2)(vite@4.4.4) '@types/cookie': 0.5.1 cookie: 0.5.0 devalue: 4.3.1 @@ -1277,11 +1277,11 @@ packages: sirv: 2.0.2 svelte: 3.59.2 undici: 5.22.0 - vite: 4.3.9(@types/node@18.16.19)(sass@1.63.6) + vite: 4.4.4(@types/node@18.16.19)(sass@1.63.6) transitivePeerDependencies: - supports-color - /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.2)(vite@4.3.9): + /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.2)(vite@4.4.4): resolution: {integrity: sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -1289,29 +1289,29 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.2)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.2)(vite@4.4.4) debug: 4.3.4 svelte: 3.59.2 - vite: 4.3.9(@types/node@18.16.19)(sass@1.63.6) + vite: 4.4.4(@types/node@18.16.19)(sass@1.63.6) transitivePeerDependencies: - supports-color - /@sveltejs/vite-plugin-svelte@2.4.1(svelte@3.59.2)(vite@4.3.9): + /@sveltejs/vite-plugin-svelte@2.4.1(svelte@3.59.2)(vite@4.4.4): 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@3.59.2)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.2)(vite@4.4.4) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.0 svelte: 3.59.2 svelte-hmr: 0.15.2(svelte@3.59.2) - vite: 4.3.9(@types/node@18.16.19)(sass@1.63.6) - vitefu: 0.2.4(vite@4.3.9) + vite: 4.4.4(@types/node@18.16.19)(sass@1.63.6) + vitefu: 0.2.4(vite@4.4.4) transitivePeerDependencies: - supports-color @@ -1369,8 +1369,8 @@ packages: resolution: {integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==} dev: false - /@typescript-eslint/eslint-plugin@5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@4.9.5): - resolution: {integrity: sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@4.9.5): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1381,13 +1381,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.60.1(eslint@8.44.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/type-utils': 5.60.1(eslint@8.44.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.45.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@4.9.5) debug: 4.3.4 - eslint: 8.44.0 - grapheme-splitter: 1.0.4 + eslint: 8.45.0 + graphemer: 1.4.0 ignore: 5.2.1 natural-compare-lite: 1.4.0 semver: 7.3.8 @@ -1397,8 +1397,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@4.9.5): - resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} + /@typescript-eslint/parser@5.62.0(eslint@8.45.0)(typescript@4.9.5): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1407,26 +1407,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/typescript-estree': 5.60.1(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.60.1: - resolution: {integrity: sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==} + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/visitor-keys': 5.60.1 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.60.1(eslint@8.44.0)(typescript@4.9.5): - resolution: {integrity: sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==} + /@typescript-eslint/type-utils@5.62.0(eslint@8.45.0)(typescript@4.9.5): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1435,23 +1435,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.60.1(typescript@4.9.5) - '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@4.9.5) debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.60.1: - resolution: {integrity: sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.60.1(typescript@4.9.5): - resolution: {integrity: sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==} + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1459,31 +1459,31 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/visitor-keys': 5.60.1 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.3 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.60.1(eslint@8.44.0)(typescript@4.9.5): - resolution: {integrity: sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==} + /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@4.9.5): + 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.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/typescript-estree': 5.60.1(typescript@4.9.5) - eslint: 8.44.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 8.45.0 eslint-scope: 5.1.1 semver: 7.3.8 transitivePeerDependencies: @@ -1491,11 +1491,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.60.1: - resolution: {integrity: sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==} + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.1 dev: true @@ -1632,7 +1632,7 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /autoprefixer@10.4.14(postcss@8.4.24): + /autoprefixer@10.4.14(postcss@8.4.26): resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -1644,7 +1644,7 @@ packages: fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true @@ -1861,35 +1861,35 @@ packages: which: 2.0.2 dev: true - /css-blank-pseudo@5.0.2(postcss@8.4.24): + /css-blank-pseudo@5.0.2(postcss@8.4.26): resolution: {integrity: sha512-aCU4AZ7uEcVSUzagTlA9pHciz7aWPKA/YzrEkpdSopJ2pvhIxiQ5sYeMz1/KByxlIo4XBdvMNJAVKMg/GRnhfw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /css-has-pseudo@5.0.2(postcss@8.4.24): + /css-has-pseudo@5.0.2(postcss@8.4.26): resolution: {integrity: sha512-q+U+4QdwwB7T9VEW/LyO6CFrLAeLqOykC5mDqJXc7aKZAhDbq7BvGT13VGJe+IwBfdN2o3Xdw2kJ5IxwV1Sc9Q==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: true - /css-prefers-color-scheme@8.0.2(postcss@8.4.24): + /css-prefers-color-scheme@8.0.2(postcss@8.4.26): resolution: {integrity: sha512-OvFghizHJ45x7nsJJUSYLyQNTzsCU8yWjxAc/nhPQg1pbs18LMoET8N3kOweFDPy0JV0OSXN2iqRFhPBHYOeMA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true /cssdb@7.6.0: @@ -2019,34 +2019,34 @@ packages: '@esbuild/win32-x64': 0.16.8 dev: true - /esbuild@0.17.18: - resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} + /esbuild@0.18.11: + resolution: {integrity: sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.18 - '@esbuild/android-arm64': 0.17.18 - '@esbuild/android-x64': 0.17.18 - '@esbuild/darwin-arm64': 0.17.18 - '@esbuild/darwin-x64': 0.17.18 - '@esbuild/freebsd-arm64': 0.17.18 - '@esbuild/freebsd-x64': 0.17.18 - '@esbuild/linux-arm': 0.17.18 - '@esbuild/linux-arm64': 0.17.18 - '@esbuild/linux-ia32': 0.17.18 - '@esbuild/linux-loong64': 0.17.18 - '@esbuild/linux-mips64el': 0.17.18 - '@esbuild/linux-ppc64': 0.17.18 - '@esbuild/linux-riscv64': 0.17.18 - '@esbuild/linux-s390x': 0.17.18 - '@esbuild/linux-x64': 0.17.18 - '@esbuild/netbsd-x64': 0.17.18 - '@esbuild/openbsd-x64': 0.17.18 - '@esbuild/sunos-x64': 0.17.18 - '@esbuild/win32-arm64': 0.17.18 - '@esbuild/win32-ia32': 0.17.18 - '@esbuild/win32-x64': 0.17.18 + '@esbuild/android-arm': 0.18.11 + '@esbuild/android-arm64': 0.18.11 + '@esbuild/android-x64': 0.18.11 + '@esbuild/darwin-arm64': 0.18.11 + '@esbuild/darwin-x64': 0.18.11 + '@esbuild/freebsd-arm64': 0.18.11 + '@esbuild/freebsd-x64': 0.18.11 + '@esbuild/linux-arm': 0.18.11 + '@esbuild/linux-arm64': 0.18.11 + '@esbuild/linux-ia32': 0.18.11 + '@esbuild/linux-loong64': 0.18.11 + '@esbuild/linux-mips64el': 0.18.11 + '@esbuild/linux-ppc64': 0.18.11 + '@esbuild/linux-riscv64': 0.18.11 + '@esbuild/linux-s390x': 0.18.11 + '@esbuild/linux-x64': 0.18.11 + '@esbuild/netbsd-x64': 0.18.11 + '@esbuild/openbsd-x64': 0.18.11 + '@esbuild/sunos-x64': 0.18.11 + '@esbuild/win32-arm64': 0.18.11 + '@esbuild/win32-ia32': 0.18.11 + '@esbuild/win32-x64': 0.18.11 /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -2058,16 +2058,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.8.0(eslint@8.44.0): + /eslint-config-prettier@8.8.0(eslint@8.45.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.44.0 + eslint: 8.45.0 dev: true - /eslint-plugin-svelte@2.32.2(eslint@8.44.0)(svelte@3.59.2)(ts-node@10.9.1): + /eslint-plugin-svelte@2.32.2(eslint@8.45.0)(svelte@3.59.2)(ts-node@10.9.1): resolution: {integrity: sha512-Jgbop2fNZsoxxkklZAIbDNhwAPynvnCtUXLsEC6O2qax7N/pfe2cNqT0ZoBbubXKJitQQDEyVDQ1rZs4ZWcrTA==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: @@ -2077,15 +2077,15 @@ packages: svelte: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 esutils: 2.0.3 known-css-properties: 0.27.0 - postcss: 8.4.24 - postcss-load-config: 3.1.4(postcss@8.4.24)(ts-node@10.9.1) - postcss-safe-parser: 6.0.0(postcss@8.4.24) + postcss: 8.4.26 + postcss-load-config: 3.1.4(postcss@8.4.26)(ts-node@10.9.1) + postcss-safe-parser: 6.0.0(postcss@8.4.26) postcss-selector-parser: 6.0.13 semver: 7.5.3 svelte: 3.59.2 @@ -2116,12 +2116,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.44.0: - resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==} + /eslint@8.45.0: + resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@eslint-community/regexpp': 4.5.0 '@eslint/eslintrc': 2.1.0 '@eslint/js': 8.44.0 @@ -2146,7 +2146,6 @@ packages: globals: 13.19.0 graphemer: 1.4.0 ignore: 5.2.1 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -2158,7 +2157,6 @@ packages: natural-compare: 1.4.0 optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color @@ -2223,6 +2221,17 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 + /fast-glob@3.3.0: + resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true @@ -2392,7 +2401,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.0 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -2402,10 +2411,6 @@ packages: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -2665,7 +2670,7 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 dev: true /make-error@1.3.6: @@ -2921,64 +2926,64 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - /playwright-core@1.35.1: - resolution: {integrity: sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==} + /playwright-core@1.36.1: + resolution: {integrity: sha512-7+tmPuMcEW4xeCL9cp9KxmYpQYHKkyjwoXRnoeTowaeNat8PoBMk/HwCYhqkH2fRkshfKEOiVus/IhID2Pg8kg==} engines: {node: '>=16'} hasBin: true dev: true - /postcss-attribute-case-insensitive@6.0.2(postcss@8.4.24): + /postcss-attribute-case-insensitive@6.0.2(postcss@8.4.26): resolution: {integrity: sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /postcss-clamp@4.1.0(postcss@8.4.24): + /postcss-clamp@4.1.0(postcss@8.4.26): resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} engines: {node: '>=7.6.0'} peerDependencies: postcss: ^8.4.6 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-color-functional-notation@5.1.0(postcss@8.4.24): + /postcss-color-functional-notation@5.1.0(postcss@8.4.26): resolution: {integrity: sha512-w2R4py6zrVE1U7FwNaAc76tNQlG9GLkrBbcFw+VhUjyDDiV28vfZG+l4LyPmpoQpeSJVtu8VgNjE8Jv5SpC7dQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - postcss: 8.4.24 + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-color-hex-alpha@9.0.2(postcss@8.4.24): + /postcss-color-hex-alpha@9.0.2(postcss@8.4.26): resolution: {integrity: sha512-SfPjgr//VQ/DOCf80STIAsdAs7sbIbxATvVmd+Ec7JvR8onz9pjawhq3BJM3Pie40EE3TyB0P6hft16D33Nlyg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-color-rebeccapurple@8.0.2(postcss@8.4.24): + /postcss-color-rebeccapurple@8.0.2(postcss@8.4.26): resolution: {integrity: sha512-xWf/JmAxVoB5bltHpXk+uGRoGFwu4WDAR7210el+iyvTdqiKpDhtcT8N3edXMoVJY0WHFMrKMUieql/wRNiXkw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-custom-media@9.1.5(postcss@8.4.24): + /postcss-custom-media@9.1.5(postcss@8.4.26): resolution: {integrity: sha512-GStyWMz7Qbo/Gtw1xVspzVSX8eipgNg4lpsO3CAeY4/A1mzok+RV6MCv3fg62trWijh/lYEj6vps4o8JcBBpDA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -2988,10 +2993,10 @@ packages: '@csstools/css-parser-algorithms': 2.2.0(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 '@csstools/media-query-list-parser': 2.1.1(@csstools/css-parser-algorithms@2.2.0)(@csstools/css-tokenizer@2.1.1) - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /postcss-custom-properties@13.2.0(postcss@8.4.24): + /postcss-custom-properties@13.2.0(postcss@8.4.26): resolution: {integrity: sha512-UYiPqbqmVayyv56y0mtGhvUKZClflwE9cTTmPaqEX8fOVjVwsotqKGYtJXSLxrJLwf9tt7ka+Luyh1ZAOhGHWA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -3000,11 +3005,11 @@ packages: '@csstools/cascade-layer-name-parser': 1.0.2(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-custom-selectors@7.1.3(postcss@8.4.24): + /postcss-custom-selectors@7.1.3(postcss@8.4.26): resolution: {integrity: sha512-GTVscax6O/8s7agFF0HsOoIyjrnAbLjgCUle8tn+0oDGJuVx7p56U7ClSRoC49poxFuMfu2B4Q8GnxSCOeuFKw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -3013,107 +3018,107 @@ packages: '@csstools/cascade-layer-name-parser': 1.0.2(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /postcss-dir-pseudo-class@7.0.2(postcss@8.4.24): + /postcss-dir-pseudo-class@7.0.2(postcss@8.4.26): resolution: {integrity: sha512-cMnslilYxBf9k3qejnovrUONZx1rXeUZJw06fgIUBzABJe3D2LiLL5WAER7Imt3nrkaIgG05XZBztueLEf5P8w==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /postcss-double-position-gradients@4.0.4(postcss@8.4.24): + /postcss-double-position-gradients@4.0.4(postcss@8.4.26): resolution: {integrity: sha512-nUAbUXURemLXIrl4Xoia2tiu5z/n8sY+BVDZApoeT9BlpByyrp02P/lFCRrRvZ/zrGRE+MOGLhk8o7VcMCtPtQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - postcss: 8.4.24 + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-focus-visible@8.0.2(postcss@8.4.24): + /postcss-focus-visible@8.0.2(postcss@8.4.26): resolution: {integrity: sha512-f/Vd+EC/GaKElknU59esVcRYr/Y3t1ZAQyL4u2xSOgkDy4bMCmG7VP5cGvj3+BTLNE9ETfEuz2nnt4qkZwTTeA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /postcss-focus-within@7.0.2(postcss@8.4.24): + /postcss-focus-within@7.0.2(postcss@8.4.26): resolution: {integrity: sha512-AHAJ89UQBcqBvFgQJE9XasGuwMNkKsGj4D/f9Uk60jFmEBHpAL14DrnSk3Rj+SwZTr/WUG+mh+Rvf8fid/346w==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /postcss-font-variant@5.0.0(postcss@8.4.24): + /postcss-font-variant@5.0.0(postcss@8.4.26): resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /postcss-gap-properties@4.0.1(postcss@8.4.24): + /postcss-gap-properties@4.0.1(postcss@8.4.26): resolution: {integrity: sha512-V5OuQGw4lBumPlwHWk/PRfMKjaq/LTGR4WDTemIMCaMevArVfCCA9wBJiL1VjDAd+rzuCIlkRoRvDsSiAaZ4Fg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /postcss-image-set-function@5.0.2(postcss@8.4.24): + /postcss-image-set-function@5.0.2(postcss@8.4.26): resolution: {integrity: sha512-Sszjwo0ubETX0Fi5MvpYzsONwrsjeabjMoc5YqHvURFItXgIu3HdCjcVuVKGMPGzKRhgaknmdM5uVWInWPJmeg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-import@15.1.0(postcss@8.4.24): + /postcss-import@15.1.0(postcss@8.4.26): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 - /postcss-initial@4.0.1(postcss@8.4.24): + /postcss-initial@4.0.1(postcss@8.4.26): resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /postcss-js@4.0.1(postcss@8.4.24): + /postcss-js@4.0.1(postcss@8.4.26): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.24 + postcss: 8.4.26 - /postcss-lab-function@5.2.3(postcss@8.4.24): + /postcss-lab-function@5.2.3(postcss@8.4.26): resolution: {integrity: sha512-fi32AYKzji5/rvgxo5zXHFvAYBw0u0OzELbeCNjEZVLUir18Oj+9RmNphtM8QdLUaUnrfx8zy8vVYLmFLkdmrQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: @@ -3122,11 +3127,11 @@ packages: '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) '@csstools/css-tokenizer': 2.1.1 - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - postcss: 8.4.24 + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + postcss: 8.4.26 dev: true - /postcss-load-config@3.1.4(postcss@8.4.24)(ts-node@10.9.1): + /postcss-load-config@3.1.4(postcss@8.4.26)(ts-node@10.9.1): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -3139,12 +3144,12 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.24 + postcss: 8.4.26 ts-node: 10.9.1(@types/node@18.16.19)(typescript@4.9.5) yaml: 1.10.2 dev: true - /postcss-load-config@4.0.1(postcss@8.4.24)(ts-node@10.9.1): + /postcss-load-config@4.0.1(postcss@8.4.26)(ts-node@10.9.1): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -3157,185 +3162,185 @@ packages: optional: true dependencies: lilconfig: 2.0.6 - postcss: 8.4.24 + postcss: 8.4.26 ts-node: 10.9.1(@types/node@18.16.19)(typescript@4.9.5) yaml: 2.1.3 - /postcss-logical@6.2.0(postcss@8.4.24): + /postcss-logical@6.2.0(postcss@8.4.26): resolution: {integrity: sha512-aqlfKGaY0nnbgI9jwUikp4gJKBqcH5noU/EdnIVceghaaDPYhZuyJVxlvWNy55tlTG5tunRKCTAX9yljLiFgmw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-nested@6.0.1(postcss@8.4.24): + /postcss-nested@6.0.1(postcss@8.4.26): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 - /postcss-nesting@11.3.0(postcss@8.4.24): + /postcss-nesting@11.3.0(postcss@8.4.26): resolution: {integrity: sha512-JlS10AQm/RzyrUGgl5irVkAlZYTJ99mNueUl+Qab+TcHhVedLiylWVkKBhRale+rS9yWIJK48JVzQlq3LcSdeA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /postcss-opacity-percentage@2.0.0(postcss@8.4.24): + /postcss-opacity-percentage@2.0.0(postcss@8.4.26): resolution: {integrity: sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /postcss-overflow-shorthand@4.0.1(postcss@8.4.24): + /postcss-overflow-shorthand@4.0.1(postcss@8.4.26): resolution: {integrity: sha512-HQZ0qi/9iSYHW4w3ogNqVNr2J49DHJAl7r8O2p0Meip38jsdnRPgiDW7r/LlLrrMBMe3KHkvNtAV2UmRVxzLIg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-page-break@3.0.4(postcss@8.4.24): + /postcss-page-break@3.0.4(postcss@8.4.26): resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} peerDependencies: postcss: ^8 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /postcss-place@8.0.1(postcss@8.4.24): + /postcss-place@8.0.1(postcss@8.4.26): resolution: {integrity: sha512-Ow2LedN8sL4pq8ubukO77phSVt4QyCm35ZGCYXKvRFayAwcpgB0sjNJglDoTuRdUL32q/ZC1VkPBo0AOEr4Uiw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true - /postcss-preset-env@8.5.1(postcss@8.4.24): + /postcss-preset-env@8.5.1(postcss@8.4.26): resolution: {integrity: sha512-qhWnJJjP6ArLUINWJ38t6Aftxnv9NW6cXK0NuwcLCcRilbuw72dSFLkCVUJeCfHGgJiKzX+pnhkGiki0PEynWg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/postcss-cascade-layers': 3.0.1(postcss@8.4.24) - '@csstools/postcss-color-function': 2.2.3(postcss@8.4.24) - '@csstools/postcss-color-mix-function': 1.0.3(postcss@8.4.24) - '@csstools/postcss-font-format-keywords': 2.0.2(postcss@8.4.24) - '@csstools/postcss-gradients-interpolation-method': 3.0.6(postcss@8.4.24) - '@csstools/postcss-hwb-function': 2.2.2(postcss@8.4.24) - '@csstools/postcss-ic-unit': 2.0.4(postcss@8.4.24) - '@csstools/postcss-is-pseudo-class': 3.2.1(postcss@8.4.24) - '@csstools/postcss-logical-float-and-clear': 1.0.1(postcss@8.4.24) - '@csstools/postcss-logical-resize': 1.0.1(postcss@8.4.24) - '@csstools/postcss-logical-viewport-units': 1.0.3(postcss@8.4.24) - '@csstools/postcss-media-minmax': 1.0.4(postcss@8.4.24) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 1.0.4(postcss@8.4.24) - '@csstools/postcss-nested-calc': 2.0.2(postcss@8.4.24) - '@csstools/postcss-normalize-display-values': 2.0.1(postcss@8.4.24) - '@csstools/postcss-oklab-function': 2.2.3(postcss@8.4.24) - '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.24) - '@csstools/postcss-relative-color-syntax': 1.0.2(postcss@8.4.24) - '@csstools/postcss-scope-pseudo-class': 2.0.2(postcss@8.4.24) - '@csstools/postcss-stepped-value-functions': 2.1.1(postcss@8.4.24) - '@csstools/postcss-text-decoration-shorthand': 2.2.4(postcss@8.4.24) - '@csstools/postcss-trigonometric-functions': 2.1.1(postcss@8.4.24) - '@csstools/postcss-unset-value': 2.0.1(postcss@8.4.24) - autoprefixer: 10.4.14(postcss@8.4.24) + '@csstools/postcss-cascade-layers': 3.0.1(postcss@8.4.26) + '@csstools/postcss-color-function': 2.2.3(postcss@8.4.26) + '@csstools/postcss-color-mix-function': 1.0.3(postcss@8.4.26) + '@csstools/postcss-font-format-keywords': 2.0.2(postcss@8.4.26) + '@csstools/postcss-gradients-interpolation-method': 3.0.6(postcss@8.4.26) + '@csstools/postcss-hwb-function': 2.2.2(postcss@8.4.26) + '@csstools/postcss-ic-unit': 2.0.4(postcss@8.4.26) + '@csstools/postcss-is-pseudo-class': 3.2.1(postcss@8.4.26) + '@csstools/postcss-logical-float-and-clear': 1.0.1(postcss@8.4.26) + '@csstools/postcss-logical-resize': 1.0.1(postcss@8.4.26) + '@csstools/postcss-logical-viewport-units': 1.0.3(postcss@8.4.26) + '@csstools/postcss-media-minmax': 1.0.4(postcss@8.4.26) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 1.0.4(postcss@8.4.26) + '@csstools/postcss-nested-calc': 2.0.2(postcss@8.4.26) + '@csstools/postcss-normalize-display-values': 2.0.1(postcss@8.4.26) + '@csstools/postcss-oklab-function': 2.2.3(postcss@8.4.26) + '@csstools/postcss-progressive-custom-properties': 2.3.0(postcss@8.4.26) + '@csstools/postcss-relative-color-syntax': 1.0.2(postcss@8.4.26) + '@csstools/postcss-scope-pseudo-class': 2.0.2(postcss@8.4.26) + '@csstools/postcss-stepped-value-functions': 2.1.1(postcss@8.4.26) + '@csstools/postcss-text-decoration-shorthand': 2.2.4(postcss@8.4.26) + '@csstools/postcss-trigonometric-functions': 2.1.1(postcss@8.4.26) + '@csstools/postcss-unset-value': 2.0.1(postcss@8.4.26) + autoprefixer: 10.4.14(postcss@8.4.26) browserslist: 4.21.9 - css-blank-pseudo: 5.0.2(postcss@8.4.24) - css-has-pseudo: 5.0.2(postcss@8.4.24) - css-prefers-color-scheme: 8.0.2(postcss@8.4.24) + css-blank-pseudo: 5.0.2(postcss@8.4.26) + css-has-pseudo: 5.0.2(postcss@8.4.26) + css-prefers-color-scheme: 8.0.2(postcss@8.4.26) cssdb: 7.6.0 - postcss: 8.4.24 - postcss-attribute-case-insensitive: 6.0.2(postcss@8.4.24) - postcss-clamp: 4.1.0(postcss@8.4.24) - postcss-color-functional-notation: 5.1.0(postcss@8.4.24) - postcss-color-hex-alpha: 9.0.2(postcss@8.4.24) - postcss-color-rebeccapurple: 8.0.2(postcss@8.4.24) - postcss-custom-media: 9.1.5(postcss@8.4.24) - postcss-custom-properties: 13.2.0(postcss@8.4.24) - postcss-custom-selectors: 7.1.3(postcss@8.4.24) - postcss-dir-pseudo-class: 7.0.2(postcss@8.4.24) - postcss-double-position-gradients: 4.0.4(postcss@8.4.24) - postcss-focus-visible: 8.0.2(postcss@8.4.24) - postcss-focus-within: 7.0.2(postcss@8.4.24) - postcss-font-variant: 5.0.0(postcss@8.4.24) - postcss-gap-properties: 4.0.1(postcss@8.4.24) - postcss-image-set-function: 5.0.2(postcss@8.4.24) - postcss-initial: 4.0.1(postcss@8.4.24) - postcss-lab-function: 5.2.3(postcss@8.4.24) - postcss-logical: 6.2.0(postcss@8.4.24) - postcss-nesting: 11.3.0(postcss@8.4.24) - postcss-opacity-percentage: 2.0.0(postcss@8.4.24) - postcss-overflow-shorthand: 4.0.1(postcss@8.4.24) - postcss-page-break: 3.0.4(postcss@8.4.24) - postcss-place: 8.0.1(postcss@8.4.24) - postcss-pseudo-class-any-link: 8.0.2(postcss@8.4.24) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.24) - postcss-selector-not: 7.0.1(postcss@8.4.24) + postcss: 8.4.26 + postcss-attribute-case-insensitive: 6.0.2(postcss@8.4.26) + postcss-clamp: 4.1.0(postcss@8.4.26) + postcss-color-functional-notation: 5.1.0(postcss@8.4.26) + postcss-color-hex-alpha: 9.0.2(postcss@8.4.26) + postcss-color-rebeccapurple: 8.0.2(postcss@8.4.26) + postcss-custom-media: 9.1.5(postcss@8.4.26) + postcss-custom-properties: 13.2.0(postcss@8.4.26) + postcss-custom-selectors: 7.1.3(postcss@8.4.26) + postcss-dir-pseudo-class: 7.0.2(postcss@8.4.26) + postcss-double-position-gradients: 4.0.4(postcss@8.4.26) + postcss-focus-visible: 8.0.2(postcss@8.4.26) + postcss-focus-within: 7.0.2(postcss@8.4.26) + postcss-font-variant: 5.0.0(postcss@8.4.26) + postcss-gap-properties: 4.0.1(postcss@8.4.26) + postcss-image-set-function: 5.0.2(postcss@8.4.26) + postcss-initial: 4.0.1(postcss@8.4.26) + postcss-lab-function: 5.2.3(postcss@8.4.26) + postcss-logical: 6.2.0(postcss@8.4.26) + postcss-nesting: 11.3.0(postcss@8.4.26) + postcss-opacity-percentage: 2.0.0(postcss@8.4.26) + postcss-overflow-shorthand: 4.0.1(postcss@8.4.26) + postcss-page-break: 3.0.4(postcss@8.4.26) + postcss-place: 8.0.1(postcss@8.4.26) + postcss-pseudo-class-any-link: 8.0.2(postcss@8.4.26) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.26) + postcss-selector-not: 7.0.1(postcss@8.4.26) postcss-value-parser: 4.2.0 dev: true - /postcss-pseudo-class-any-link@8.0.2(postcss@8.4.24): + /postcss-pseudo-class-any-link@8.0.2(postcss@8.4.26): resolution: {integrity: sha512-FYTIuRE07jZ2CW8POvctRgArQJ43yxhr5vLmImdKUvjFCkR09kh8pIdlCwdx/jbFm7MiW4QP58L4oOUv3grQYA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true - /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.24): + /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.26): resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} peerDependencies: postcss: ^8.0.3 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.24): + /postcss-safe-parser@6.0.0(postcss@8.4.26): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /postcss-scss@4.0.6(postcss@8.4.24): + /postcss-scss@4.0.6(postcss@8.4.26): resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.4.19 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 dev: true - /postcss-selector-not@7.0.1(postcss@8.4.24): + /postcss-selector-not@7.0.1(postcss@8.4.26): resolution: {integrity: sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.24 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true @@ -3349,8 +3354,8 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss@8.4.24: - resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} + /postcss@8.4.26: + resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -3484,8 +3489,8 @@ packages: glob: 7.2.3 dev: true - /rollup@3.21.0: - resolution: {integrity: sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==} + /rollup@3.26.2: + resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -3528,8 +3533,8 @@ packages: immutable: 4.1.0 source-map-js: 1.0.2 - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true dev: true @@ -3549,6 +3554,14 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true @@ -3686,7 +3699,7 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check@2.10.3(postcss-load-config@4.0.1)(postcss@8.4.24)(sass@1.63.6)(svelte@3.59.2): + /svelte-check@2.10.3(postcss-load-config@4.0.1)(postcss@8.4.26)(sass@1.63.6)(svelte@3.59.2): resolution: {integrity: sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==} hasBin: true peerDependencies: @@ -3699,7 +3712,7 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 3.59.2 - svelte-preprocess: 4.10.7(postcss-load-config@4.0.1)(postcss@8.4.24)(sass@1.63.6)(svelte@3.59.2)(typescript@4.9.5) + svelte-preprocess: 4.10.7(postcss-load-config@4.0.1)(postcss@8.4.26)(sass@1.63.6)(svelte@3.59.2)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@babel/core' @@ -3726,8 +3739,8 @@ packages: eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.1 espree: 9.6.0 - postcss: 8.4.24 - postcss-scss: 4.0.6(postcss@8.4.24) + postcss: 8.4.26 + postcss-scss: 4.0.6(postcss@8.4.26) svelte: 3.59.2 dev: true @@ -3762,7 +3775,7 @@ packages: svelte: 3.59.2 dev: false - /svelte-preprocess@4.10.7(postcss-load-config@4.0.1)(postcss@8.4.24)(sass@1.63.6)(svelte@3.59.2)(typescript@4.9.5): + /svelte-preprocess@4.10.7(postcss-load-config@4.0.1)(postcss@8.4.26)(sass@1.63.6)(svelte@3.59.2)(typescript@4.9.5): resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} engines: {node: '>= 9.11.2'} requiresBuild: true @@ -3807,8 +3820,8 @@ packages: '@types/sass': 1.43.1 detect-indent: 6.1.0 magic-string: 0.25.9 - postcss: 8.4.24 - postcss-load-config: 4.0.1(postcss@8.4.24)(ts-node@10.9.1) + postcss: 8.4.26 + postcss-load-config: 4.0.1(postcss@8.4.26)(ts-node@10.9.1) sass: 1.63.6 sorcery: 0.10.0 strip-indent: 3.0.0 @@ -3816,7 +3829,7 @@ packages: typescript: 4.9.5 dev: true - /svelte-preprocess@5.0.4(postcss-load-config@4.0.1)(postcss@8.4.24)(sass@1.63.6)(svelte@3.59.2)(typescript@4.9.5): + /svelte-preprocess@5.0.4(postcss-load-config@4.0.1)(postcss@8.4.26)(sass@1.63.6)(svelte@3.59.2)(typescript@4.9.5): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -3857,8 +3870,8 @@ packages: '@types/pug': 2.0.6 detect-indent: 6.1.0 magic-string: 0.27.0 - postcss: 8.4.24 - postcss-load-config: 4.0.1(postcss@8.4.24)(ts-node@10.9.1) + postcss: 8.4.26 + postcss-load-config: 4.0.1(postcss@8.4.26)(ts-node@10.9.1) sass: 1.63.6 sorcery: 0.11.0 strip-indent: 3.0.0 @@ -3870,42 +3883,42 @@ packages: resolution: {integrity: sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==} engines: {node: '>= 8'} - /sveltekit-flash-message@0.11.3(@sveltejs/kit@1.21.0)(svelte@3.59.2): + /sveltekit-flash-message@0.11.3(@sveltejs/kit@1.22.3)(svelte@3.59.2): resolution: {integrity: sha512-tMKBobVFLYth0z2Kq9M+pi7Ip2OBhOrzivzx64v9+D2bWRwnZ3pmdWStYfQYxlz5CayozRQsmtipNg1vM+JN9Q==} peerDependencies: '@sveltejs/kit': ^1.0.0 svelte: ^3 dependencies: - '@sveltejs/kit': 1.21.0(svelte@3.59.2)(vite@4.3.9) + '@sveltejs/kit': 1.22.3(svelte@3.59.2)(vite@4.4.4) svelte: 3.59.2 dev: false - /sveltekit-superforms@1.1.3(@sveltejs/kit@1.21.0)(svelte@3.59.2)(zod@3.21.4): - resolution: {integrity: sha512-BMyzxYXppdSyzeMPd5VFfJRr0Gr/EpUISz4d97vSFuP+/HTACg7qTI+M0sddJ7IvVw/9PAzIvKFh+FRfmeOmaQ==} + /sveltekit-superforms@1.3.0(@sveltejs/kit@1.22.3)(svelte@3.59.2)(zod@3.21.4): + resolution: {integrity: sha512-4bkTxuy7nr+7qSqtJVCv+CJjiGrLR2Qvy2fIelEF5qvWNkvokOZkEwEtDC2bMVgOILebhGANI3RYOVtGA/qH1w==} peerDependencies: '@sveltejs/kit': 1.x svelte: 3.x || 4.x zod: 3.x dependencies: - '@sveltejs/kit': 1.21.0(svelte@3.59.2)(vite@4.3.9) + '@sveltejs/kit': 1.22.3(svelte@3.59.2)(vite@4.4.4) svelte: 3.59.2 zod: 3.21.4 dev: true - /tailwind-merge@1.13.2: - resolution: {integrity: sha512-R2/nULkdg1VR/EL4RXg4dEohdoxNUJGLMnWIQnPKL+O9Twu7Cn3Rxi4dlXkDzZrEGtR+G+psSXFouWlpTyLhCQ==} + /tailwind-merge@1.14.0: + resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} dev: false - /tailwindcss-animate@1.0.6(tailwindcss@3.3.2): + /tailwindcss-animate@1.0.6(tailwindcss@3.3.3): resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' dependencies: - tailwindcss: 3.3.2(ts-node@10.9.1) + tailwindcss: 3.3.3(ts-node@10.9.1) dev: false - /tailwindcss@3.3.2(ts-node@10.9.1): - resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} + /tailwindcss@3.3.3(ts-node@10.9.1): + resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -3923,13 +3936,12 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.24 - postcss-import: 15.1.0(postcss@8.4.24) - postcss-js: 4.0.1(postcss@8.4.24) - postcss-load-config: 4.0.1(postcss@8.4.24)(ts-node@10.9.1) - postcss-nested: 6.0.1(postcss@8.4.24) + postcss: 8.4.26 + postcss-import: 15.1.0(postcss@8.4.26) + postcss-js: 4.0.1(postcss@8.4.26) + postcss-load-config: 4.0.1(postcss@8.4.26)(ts-node@10.9.1) + postcss-nested: 6.0.1(postcss@8.4.26) postcss-selector-parser: 6.0.13 - postcss-value-parser: 4.2.0 resolve: 1.22.2 sucrase: 3.32.0 transitivePeerDependencies: @@ -4113,13 +4125,14 @@ packages: /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - /vite@4.3.9(@types/node@18.16.19)(sass@1.63.6): - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + /vite@4.4.4(@types/node@18.16.19)(sass@1.63.6): + resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -4129,6 +4142,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -4139,14 +4154,14 @@ packages: optional: true dependencies: '@types/node': 18.16.19 - esbuild: 0.17.18 - postcss: 8.4.24 - rollup: 3.21.0 + esbuild: 0.18.11 + postcss: 8.4.26 + rollup: 3.26.2 sass: 1.63.6 optionalDependencies: fsevents: 2.3.2 - /vitefu@0.2.4(vite@4.3.9): + /vitefu@0.2.4(vite@4.4.4): resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: vite: ^3.0.0 || ^4.0.0 @@ -4154,7 +4169,7 @@ packages: vite: optional: true dependencies: - vite: 4.3.9(@types/node@18.16.19)(sass@1.63.6) + vite: 4.4.4(@types/node@18.16.19)(sass@1.63.6) /vitest@0.25.8(sass@1.63.6): resolution: {integrity: sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==} @@ -4191,9 +4206,10 @@ packages: tinybench: 2.3.1 tinypool: 0.3.0 tinyspy: 1.0.2 - vite: 4.3.9(@types/node@18.16.19)(sass@1.63.6) + vite: 4.4.4(@types/node@18.16.19)(sass@1.63.6) transitivePeerDependencies: - less + - lightningcss - sass - stylus - sugarss @@ -4260,8 +4276,8 @@ packages: engines: {node: '>=10'} dev: true - /zod-to-json-schema@3.21.3(zod@3.21.4): - resolution: {integrity: sha512-09W/9oyxeF1/wWnzCb6MursW+lOzgKi91QwE7eTBbC+t/qgfuLsUVDai3lHemSQnQu/UONAcT/fv3ZnDvbTeKg==} + /zod-to-json-schema@3.21.4(zod@3.21.4): + resolution: {integrity: sha512-fjUZh4nQ1s6HMccgIeE0VP4QG/YRGPmyjO9sAh890aQKPEk3nqbfUXhMFaC+Dr5KvYBm8BCyvfpZf2jY9aGSsw==} peerDependencies: zod: ^3.21.4 dependencies: diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 3806639..e851be7 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -91,9 +91,9 @@ model Collection { model CollectionItem { id String @id @default(cuid()) - collection_id String + collection_id String @unique collection Collection @relation(references: [id], fields: [collection_id], onDelete: Cascade) - game_id String + game_id String @unique game Game @relation(references: [id], fields: [game_id]) times_played Int @@ -104,7 +104,7 @@ model CollectionItem { model Wishlist { id String @id @default(cuid()) name String - user_id String + user_id String @unique auth_user AuthUser @relation(references: [id], fields: [user_id]) items WishlistItem[] @@ -114,9 +114,9 @@ model Wishlist { model WishlistItem { id String @id @default(cuid()) - wishlist_id String + wishlist_id String @unique wishlist Wishlist @relation(references: [id], fields: [wishlist_id], onDelete: Cascade) - game_id String + 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) @@ -184,7 +184,7 @@ model Publisher { primary_publisher Game[] @relation("PrimaryPublishers") created_at DateTime @default(now()) @db.Timestamp(6) updated_at DateTime @updatedAt @db.Timestamp(6) - + @@fulltext([name]) @@map("publishers") } diff --git a/src/app.d.ts b/src/app.d.ts index 0b7dc41..f5c0da5 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -4,7 +4,7 @@ import type { AuthUser } from '@prisma/client'; -type User = Omit; +type User = Omit; // src/app.d.ts declare global { diff --git a/src/lib/components/game/index.svelte b/src/lib/components/game/index.svelte index bc686ab..cf22cb3 100644 --- a/src/lib/components/game/index.svelte +++ b/src/lib/components/game/index.svelte @@ -4,6 +4,7 @@ import { fade } from 'svelte/transition'; import plusCircle from '@iconify-icons/line-md/plus-circle'; import minusCircle from '@iconify-icons/line-md/minus-circle'; + import { superForm } from 'sveltekit-superforms/client'; // import Button from '$lib/components/button/index.svelte'; import type { GameType, SavedGameType } from '$lib/types'; import { collectionStore } from '$lib/stores/collectionStore'; @@ -15,10 +16,16 @@ import { convertToSavedGame } from '$lib/util/gameMapper'; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '$components/ui/card'; import { Button } from '$components/ui/button'; + import type { SuperValidated } from 'sveltekit-superforms'; + import type { ListGameSchema } from '$lib/zodValidation'; + import type { CollectionItem } from '@prisma/client'; - export let game: GameType | SavedGameType; + export let data: SuperValidated; + export let game: GameType | CollectionItem; export let detailed: boolean = false; + const { form, errors, enhance, delayed } = superForm(data); + const dispatch = createEventDispatcher(); function removeGameFromWishlist() { @@ -70,8 +77,10 @@ // } // } - $: existsInCollection = $collectionStore.find((item: SavedGameType) => item.id === game.id); - $: existsInWishlist = $wishlistStore.find((item: SavedGameType) => item.id === game.id); + // $: existsInCollection = $collectionStore.find((item: SavedGameType) => item.id === game.id); + // $: existsInWishlist = $wishlistStore.find((item: SavedGameType) => item.id === game.id); + $: existsInCollection = game.in_collection; + $: existsInWishlist = game.in_wishlist; $: collectionText = existsInCollection ? 'Remove from collection' : 'Add to collection'; $: wishlistText = existsInWishlist ? 'Remove from wishlist' : 'Add to wishlist'; @@ -79,43 +88,55 @@
- {game.name} - + {game.game_name} - {`Image -
- {#if game?.players} -

Players: {game.players}

-

Time: {game.playtime} minutes

- {#if isGameType(game) && game?.min_age} -

Min Age: {game.min_age}

- {/if} - {#if detailed && isGameType(game) && game?.description} -
{@html game.description}
- {/if} - {/if} -
+ + {`Image +
+ {#if game?.players} +

Players: {game.players}

+

Time: {game.playtime} minutes

+ {#if isGameType(game) && game?.min_age} +

Min Age: {game.min_age}

+ {/if} + {#if detailed && isGameType(game) && game?.description} +
{@html game.description}
+ {/if} + {/if} +
+
-
- - -
+
+
+ + +
+
+ + +
+
diff --git a/src/lib/components/header/index.svelte b/src/lib/components/header/index.svelte index fba1156..5d330ce 100644 --- a/src/lib/components/header/index.svelte +++ b/src/lib/components/header/index.svelte @@ -6,7 +6,6 @@ import logo from './bored-game.png'; export let user: any; - console.log('User', user);
diff --git a/src/lib/components/search/textSearch/index.svelte b/src/lib/components/search/textSearch/index.svelte index 6c2d65d..3d266dc 100644 --- a/src/lib/components/search/textSearch/index.svelte +++ b/src/lib/components/search/textSearch/index.svelte @@ -18,22 +18,20 @@ // import SkeletonPlaceholder from '../../SkeletonPlaceholder.svelte'; import RemoveCollectionDialog from '../../dialog/RemoveCollectionDialog.svelte'; import RemoveWishlistDialog from '../../dialog/RemoveWishlistDialog.svelte'; - import type { SearchSchema } from '$lib/zodValidation'; + import type { ListGameSchema, SearchSchema } from '$lib/zodValidation'; interface RemoveGameEvent extends Event { detail: GameType | SavedGameType; } - export let data: SuperValidated; - const { form, constraints, errors } = superForm(data, { - onSubmit: () => { - boredState.update((n) => ({ ...n, loading: true })); - }, - }); - + export let data; + console.log("text search data", data); export let showButton: boolean = false; export let advancedSearch: boolean = false; + const { form, errors, enhance, constraints, message }: SuperValidated = superForm(data.form); + const { form: modifyListForm, errors: listErrors, constraints: listConstraints, enhance: listEnhance, message: listMessage } : SuperValidated = superForm(data.modifyListForm); + let gameToRemove: GameType | SavedGameType; let numberOfGameSkeleton = 1; let submitButton: HTMLElement; @@ -58,11 +56,11 @@ numberOfGameSkeleton = 1; } - let placeholderList = [...Array(numberOfGameSkeleton).keys()]; + // let placeholderList = [...Array(numberOfGameSkeleton).keys()]; - if (form?.error) { - disclosureOpen = true; - } + // if (form?.error) { + // disclosureOpen = true; + // } async function handleNextPageEvent(event: CustomEvent) { if (+event?.detail?.page === page + 1) { @@ -87,53 +85,53 @@ submitButton.click(); } - function handleRemoveCollection(event: RemoveGameEvent) { - gameToRemove = event?.detail; - boredState.update((n) => ({ - ...n, - dialog: { isOpen: true, content: RemoveCollectionDialog, additionalData: gameToRemove } - })); - } + // function handleRemoveCollection(event: RemoveGameEvent) { + // gameToRemove = event?.detail; + // boredState.update((n) => ({ + // ...n, + // dialog: { isOpen: true, content: RemoveCollectionDialog, additionalData: gameToRemove } + // })); + // } - function handleRemoveWishlist(event: RemoveGameEvent) { - gameToRemove = event?.detail; - boredState.update((n) => ({ - ...n, - dialog: { isOpen: true, content: RemoveWishlistDialog, additionalData: gameToRemove } - })); - } + // function handleRemoveWishlist(event: RemoveGameEvent) { + // gameToRemove = event?.detail; + // boredState.update((n) => ({ + // ...n, + // dialog: { isOpen: true, content: RemoveWishlistDialog, additionalData: gameToRemove } + // })); + // } - const submitSearch: SubmitFunction = ({ form, data, action, cancel }) => { - const { name } = Object.fromEntries(data); - if (!disclosureOpen && name?.length === 0) { - toast.send('Please enter a search term', { - duration: 3000, - type: ToastType.ERROR, - dismissible: true - }); - cancel(); - return; - } + // const submitSearch: SubmitFunction = ({ form, data, action, cancel }) => { + // const { name } = Object.fromEntries(data); + // if (!disclosureOpen && name?.length === 0) { + // toast.send('Please enter a search term', { + // duration: 3000, + // type: ToastType.ERROR, + // dismissible: true + // }); + // cancel(); + // return; + // } - gameStore.removeAll(); - boredState.update((n) => ({ ...n, loading: true })); - return async ({ result }) => { - boredState.update((n) => ({ ...n, loading: false })); - // `result` is an `ActionResult` object - if (result.type === 'error') { - toast.send('Error!', { duration: 3000, type: ToastType.ERROR, dismissible: true }); - await applyAction(result); - } else if (result.type === 'success') { - gameStore.removeAll(); - gameStore.addAll(result?.data?.searchData?.games); - totalItems = result?.data?.searchData?.totalCount; - // toast.send('Success!', { duration: 3000, type: ToastType.INFO, dismissible: true }); - await applyAction(result); - } else { - await applyAction(result); - } - }; - }; + // gameStore.removeAll(); + // boredState.update((n) => ({ ...n, loading: true })); + // return async ({ result }) => { + // boredState.update((n) => ({ ...n, loading: false })); + // // `result` is an `ActionResult` object + // if (result.type === 'error') { + // toast.send('Error!', { duration: 3000, type: ToastType.ERROR, dismissible: true }); + // await applyAction(result); + // } else if (result.type === 'success') { + // gameStore.removeAll(); + // gameStore.addAll(result?.data?.searchData?.games); + // totalItems = result?.data?.searchData?.totalCount; + // // toast.send('Success!', { duration: 3000, type: ToastType.INFO, dismissible: true }); + // await applyAction(result); + // } else { + // await applyAction(result); + // } + // }; + // }; const dev = process.env.NODE_ENV !== 'production'; @@ -226,11 +224,7 @@
{#if $gameStore?.length > 0} {#each $gameStore as game (game.id)} - + {/each} {:else}

Sorry no games found!

diff --git a/src/lib/components/ui/avatar/Avatar.svelte b/src/lib/components/ui/avatar/Avatar.svelte new file mode 100644 index 0000000..1e3d76c --- /dev/null +++ b/src/lib/components/ui/avatar/Avatar.svelte @@ -0,0 +1,17 @@ + + + + + diff --git a/src/lib/components/ui/avatar/AvatarFallback.svelte b/src/lib/components/ui/avatar/AvatarFallback.svelte new file mode 100644 index 0000000..379f04a --- /dev/null +++ b/src/lib/components/ui/avatar/AvatarFallback.svelte @@ -0,0 +1,17 @@ + + + + + diff --git a/src/lib/components/ui/avatar/AvatarImage.svelte b/src/lib/components/ui/avatar/AvatarImage.svelte new file mode 100644 index 0000000..0eb91c8 --- /dev/null +++ b/src/lib/components/ui/avatar/AvatarImage.svelte @@ -0,0 +1,17 @@ + + + diff --git a/src/lib/components/ui/avatar/index.ts b/src/lib/components/ui/avatar/index.ts new file mode 100644 index 0000000..f53f994 --- /dev/null +++ b/src/lib/components/ui/avatar/index.ts @@ -0,0 +1,3 @@ +export { default as Avatar } from "./Avatar.svelte"; +export { default as AvatarFallback } from "./AvatarFallback.svelte"; +export { default as AvatarImage } from "./AvatarImage.svelte"; diff --git a/src/lib/config/zod-schemas.ts b/src/lib/config/zod-schemas.ts index df20947..1013c6d 100644 --- a/src/lib/config/zod-schemas.ts +++ b/src/lib/config/zod-schemas.ts @@ -1,5 +1,23 @@ import { z } from 'zod'; +export type ListGame = { + id: string; + game_name: string; + game_id: string; + collection_id: string; + wishlist_id: string; + times_played: number; + thumb_url: string | null; + in_collection: boolean; + in_wishlist: boolean; +}; + +export const modifyListGameSchema = z.object({ + id: z.string() +}); + +export type ModifyListGame = typeof modifyListGameSchema; + export const userSchema = z.object({ firstName: z.string().trim().optional(), lastName: z.string().trim().optional(), diff --git a/src/lib/types.ts b/src/lib/types.ts index 95fdc06..59f86ad 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -1,5 +1,20 @@ +import { Prisma } from '@prisma/client'; import type { SvelteComponent } from 'svelte'; +export const gameInclude = Prisma.validator()({ + game: { + select: { + id: true, + name: true, + thumb_url: true + } + } +}); + +export type CollectionItemWithGame = Prisma.CollectionItemGetPayload<{ + include: typeof gameInclude; +}>; + export type Dialog = { isOpen: boolean; content?: typeof SvelteComponent; @@ -57,6 +72,15 @@ export type SavedGameType = { includeInRandom: boolean; }; +export type ListGameType = { + id: string; + game_id: string; + collection_id: string | undefined; + wishlist_id: string | undefined; + times_played: number; + thumb_url: string; +}; + export type MechanicType = { id: string; }; diff --git a/src/lib/zodValidation.ts b/src/lib/zodValidation.ts index e52d5ea..164c8d8 100644 --- a/src/lib/zodValidation.ts +++ b/src/lib/zodValidation.ts @@ -36,6 +36,20 @@ function IntegerString>(schema ); } +const Search = z.object({ + q: z.string().trim().optional().default(''), + minAge: IntegerString(z.number().min(1).max(120).optional()), + minPlayers: IntegerString(z.number().min(1).max(50).optional()), + maxPlayers: IntegerString(z.number().min(1).max(50).optional()), + exactMinAge: z.preprocess((a) => Boolean(a), z.boolean().optional()), + exactMinPlayers: z.preprocess((a) => Boolean(a), z.boolean().optional()), + exactMaxPlayers: z.preprocess((a) => Boolean(a), z.boolean().optional()), + sort: z.enum(['asc', 'desc']).optional(), + sortBy: z.enum(['name', 'min_players', 'max_players', 'min_age', 'times_played']).optional(), + limit: z.number().min(10).max(100).default(10), + skip: z.number().min(0).default(0) +}); + export const search_schema = z .object({ q: z.string().trim().optional().default(''), @@ -45,6 +59,8 @@ export const search_schema = z exactMinAge: z.preprocess((a) => Boolean(a), z.boolean().optional()), exactMinPlayers: z.preprocess((a) => Boolean(a), z.boolean().optional()), exactMaxPlayers: z.preprocess((a) => Boolean(a), z.boolean().optional()), + sort: z.enum(['asc', 'desc']).optional(), + sortBy: z.enum(['name', 'min_players', 'max_players', 'min_age', 'times_played']).optional(), limit: z.number().min(10).max(100).default(10), skip: z.number().min(0).default(0) }) @@ -92,6 +108,12 @@ export const search_schema = z export type SearchSchema = typeof search_schema; +export const collection_search_schema = Search.extend({ + collection_id: z.string() +}); + +export type CollectionSearchSchema = typeof collection_search_schema; + export const search_result_schema = z.object({ client_id: z.string(), limit: z.number(), diff --git a/src/routes/api/collection/+server.ts b/src/routes/api/collection/+server.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/api/collection/[id]/items/+server.ts b/src/routes/api/collection/[id]/items/+server.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/api/collection/[id]/search/+server.ts b/src/routes/api/collection/[id]/search/+server.ts new file mode 100644 index 0000000..271e33c --- /dev/null +++ b/src/routes/api/collection/[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.id + } + }); + 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/api/game/[id]/+server.ts b/src/routes/api/game/[id]/+server.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/api/game/search/+server.ts b/src/routes/api/game/search/+server.ts new file mode 100644 index 0000000..ab0c3bb --- /dev/null +++ b/src/routes/api/game/search/+server.ts @@ -0,0 +1,58 @@ +import { error, json } from '@sveltejs/kit'; +import { Prisma } from '@prisma/client'; +import z from 'zod'; +import prisma from '$lib/prisma.js'; +import { superValidate } from 'sveltekit-superforms/server'; +import { search_schema } from '$lib/zodValidation.js'; + +// Search a user's collection +export const GET = async ({ url, locals, params, request }) => { + try { + z.parse; + } catch (e) { + console.error(e); + return error(500, { message: 'Something went wrong' }); + } + + const searchParams = Object.fromEntries(url.searchParams); + const q = searchParams?.q || ''; + const limit = parseInt(searchParams?.limit) || 10; + const skip = parseInt(searchParams?.skip) || 0; + const order: Prisma.SortOrder = searchParams?.order || 'asc'; + const sort = searchParams?.sort || 'name'; + const session = await locals.auth.validate(); + console.log('url', url); + console.log('username', locals?.user?.id); + + try { + const orderBy = { [sort]: order }; + let games = await prisma.game.findMany({ + where: { + name: { + contains: q + } + }, + orderBy: [ + { + ...orderBy + } + ], + select: { + id: true, + name: true, + thumb_url: true + }, + skip, + take: limit + }); + + if (!games) { + throw error(404, { message: 'No games found' }); + } + + return json(games); + } 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 b90d764..c099c99 100644 --- a/src/routes/auth/signin/+page.server.ts +++ b/src/routes/auth/signin/+page.server.ts @@ -48,6 +48,32 @@ export const actions = { } } }); + if (user) { + await prisma.collection.upsert({ + where: { + user_id: user.id + }, + create: { + user_id: user.id + }, + update: { + user_id: user.id + } + }); + await prisma.wishlist.upsert({ + where: { + user_id: user.id + }, + create: { + user_id: user.id, + name: 'My Wishlist' + }, + update: { + user_id: user.id, + name: 'My Wishlist' + } + }); + } } catch (e) { // TODO: need to return error message to the client console.error(e); diff --git a/src/routes/auth/signup/+page.server.ts b/src/routes/auth/signup/+page.server.ts index 8014adc..b72ea8d 100644 --- a/src/routes/auth/signup/+page.server.ts +++ b/src/routes/auth/signup/+page.server.ts @@ -3,6 +3,7 @@ import { setError, superValidate } from 'sveltekit-superforms/server'; import { auth } from '$lib/server/lucia'; import { userSchema } from '$lib/config/zod-schemas'; import { add_user_to_role } from '$db/roles'; +import prisma from '$lib/prisma.js'; const signUpSchema = userSchema .pick({ @@ -73,6 +74,17 @@ export const actions = { } }); add_user_to_role(user.id, 'user'); + await prisma.collection.create({ + data: { + user_id: user.id + } + }); + await prisma.wishlist.create({ + data: { + user_id: user.id, + name: 'My Wishlist' + } + }); console.log('User', user); diff --git a/src/routes/auth/signup/+page.svelte b/src/routes/auth/signup/+page.svelte index 7b1f06f..a2f2f3f 100644 --- a/src/routes/auth/signup/+page.svelte +++ b/src/routes/auth/signup/+page.svelte @@ -32,9 +32,7 @@ import { userSchema } from '$lib/config/zod-schemas.js'; Signup for an account - + {#if $errors.firstName}

{$errors.firstName}

{/if} diff --git a/src/routes/collection/+page.server.ts b/src/routes/collection/+page.server.ts index 68103c6..e226504 100644 --- a/src/routes/collection/+page.server.ts +++ b/src/routes/collection/+page.server.ts @@ -1,65 +1,207 @@ -// import { redirect } from '@sveltejs/kit'; -// import { superValidate } from 'sveltekit-superforms/server'; -// import { search_schema } from '$lib/zodValidation'; +import { fail, redirect } from '@sveltejs/kit'; +import { setError, superValidate } from 'sveltekit-superforms/server'; +import type { PageServerLoad } from '../$types.js'; +import prisma from '$lib/prisma.js'; +import { modifyListGameSchema, type ListGame } from '$lib/config/zod-schemas.js'; +import type { CollectionItemWithGame } from '$lib/types.js'; +import { search_schema } from '$lib/zodValidation.js'; -export const load = async ({ fetch, url, locals }) => { - // const session = await locals.auth.validate(); - // if (!session) { - // throw redirect(302, '/auth/signin'); - // } +export const load: PageServerLoad = async ({ fetch, url, locals }) => { + const session = await locals.auth.validate(); + if (!session) { + throw redirect(302, '/auth/signin'); + } - console.log('locals load', locals); - // const searchParams = Object.fromEntries(url?.searchParams); - // const q = searchParams?.q; - // const limit = parseInt(searchParams?.limit) || 10; - // const skip = parseInt(searchParams?.skip) || 0; + // console.log('locals load', locals); + const searchParams = Object.fromEntries(url?.searchParams); + console.log('searchParams', searchParams); + const q = searchParams?.q; + const limit = parseInt(searchParams?.limit) || 10; + const skip = parseInt(searchParams?.skip) || 0; - // const searchData = { - // q, - // limit, - // skip - // }; + const searchData = { + q, + limit, + skip + }; - // const form = await superValidate(searchData, search_schema); + const searchForm = await superValidate(searchData, search_schema); + const listManageForm = await superValidate(modifyListGameSchema); try { - // let collection = await locals.prisma.collection.findUnique({ - // where: { - // user_id: session.userId - // } - // include: { - // collectionItems: { - // where: { - // title: { - // contains: q, - // mode: 'insensitive' - // } - // }, - // take: limit, - // skip - // } - // } - // }); + let collection = await prisma.collection.findUnique({ + where: { + user_id: session.userId + } + }); + console.log('collection', collection); - // console.log('collection', collection); - // if (!collection) { - // collection = await locals.prisma.collection.create({ - // data: { - // user_id: session.userId - // } - // }); - // } + if (!collection) { + console.log('Collection was not found'); + return fail(404, {}); + // collection = await prisma.collection.create({ + // data: { + // user_id: session.userId + // } + // }); + } + + let collection_items: CollectionItemWithGame[] = await prisma.collectionItem.findMany({ + where: { + collection_id: collection.id + }, + include: { + game: { + select: { + id: true, + name: true, + thumb_url: true + } + } + }, + skip, + take: limit + }); + + console.log('collection_items', collection_items); + + let collectionItems: ListGame[] = []; + for (const item of collection_items) { + console.log('item', item); + const game = item.game; + if (game) { + let collectionItem: ListGame = { + id: item.id, + collection_id: item.collection_id, + game_id: game.id, + game_name: game.name, + thumb_url: game.thumb_url, + times_played: item.times_played, + wishlist_id: '', + in_collection: true + }; + collectionItems.push(collectionItem); + } + } return { - // form, - // collection + searchForm, + listManageForm, + collection: collectionItems }; } catch (e) { console.error(e); } return { - // form, - // collection: [] + searchForm, + listManageForm, + collection: [] }; }; + +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 + } + }); + throw redirect(302, '/404'); + } + + if (game) { + const wishlist = await prisma.wishlist.create({ + data: { + user_id: session.userId, + name: form.name + } + }); + } + + 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 (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'); + } + + console.log('form', form); + + let collectionItem = await prisma.collectionItem.findUnique({ + where: { + id: form.data.id + }, + include: { + collection: { + select: { + user_id: true + } + } + } + }); + console.log('collectionItem', collectionItem); + const belongsToUser = collectionItem?.collection?.user_id === session.userId; + console.log('belongsToUser', belongsToUser); + + if (!collectionItem || !belongsToUser) { + // game = await prisma.game.create({ + // data: { + // name: form.name + // } + // }); + throw redirect(302, '/404'); + } + + if (collectionItem) { + console.log('Going to delete'); + await prisma.collectionItem.delete({ + where: { + id: collectionItem.id + } + }); + } + + return { + form, + collection: [] + }; + } +}; diff --git a/src/routes/collection/+page.svelte b/src/routes/collection/+page.svelte index 8cb0e0d..bb86cf9 100644 --- a/src/routes/collection/+page.svelte +++ b/src/routes/collection/+page.svelte @@ -1,6 +1,10 @@