From bd4a695e74b277f1281be90ace47b54d52dfb70e Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sun, 11 May 2025 16:21:57 +0530 Subject: [PATCH 01/31] first commit --- .gitignore | 23 + .npmrc | 1 + .prettierignore | 4 + .prettierrc | 15 + README.md | 38 + eslint.config.js | 3 + jsconfig.json | 13 + package-lock.json | 4095 +++++++++++++++++++++++++++++++++++++ package.json | 27 + src/app.css | 1 + src/app.html | 12 + src/lib/index.js | 1 + src/routes/+layout.svelte | 6 + src/routes/+page.svelte | 0 static/favicon.png | Bin 0 -> 1571 bytes svelte.config.js | 13 + vite.config.js | 7 + 17 files changed, 4259 insertions(+) create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 README.md create mode 100644 eslint.config.js create mode 100644 jsconfig.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/app.css create mode 100644 src/app.html create mode 100644 src/lib/index.js create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+page.svelte create mode 100644 static/favicon.png create mode 100644 svelte.config.js create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3b462cb --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +node_modules + +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..ab78a95 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Package Managers +package-lock.json +pnpm-lock.yaml +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..7ebb855 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,15 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..b5b2950 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# sv + +Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npx sv create + +# create a new project in my-app +npx sv create my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..489022d --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,3 @@ +import prettier from 'eslint-config-prettier'; +import svelte from 'eslint-plugin-svelte'; +export default [prettier, ...svelte.configs.prettier]; diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..d73b913 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": false, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..27b00e4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4095 @@ +{ + "name": "kahootclone", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "kahootclone", + "version": "0.0.1", + "devDependencies": { + "@sveltejs/adapter-auto": "^4.0.0", + "@sveltejs/kit": "^2.16.0", + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "@tailwindcss/vite": "^4.0.0", + "eslint-config-prettier": "^10.0.1", + "prettier": "^3.4.2", + "prettier-plugin-svelte": "^3.3.3", + "prettier-plugin-tailwindcss": "^0.6.11", + "svelte": "^5.0.0", + "tailwindcss": "^4.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", + "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "peer": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", + "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "dev": true, + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.26.0.tgz", + "integrity": "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint/core": "^0.13.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "peer": true, + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz", + "integrity": "sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==", + "dev": true, + "peer": true, + "dependencies": { + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.3", + "eventsource": "^3.0.2", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz", + "integrity": "sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.2.tgz", + "integrity": "sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.2.tgz", + "integrity": "sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.2.tgz", + "integrity": "sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.2.tgz", + "integrity": "sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.2.tgz", + "integrity": "sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.2.tgz", + "integrity": "sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.2.tgz", + "integrity": "sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.2.tgz", + "integrity": "sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.2.tgz", + "integrity": "sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.2.tgz", + "integrity": "sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz", + "integrity": "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz", + "integrity": "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz", + "integrity": "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz", + "integrity": "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz", + "integrity": "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz", + "integrity": "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz", + "integrity": "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz", + "integrity": "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz", + "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", + "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", + "dev": true, + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/adapter-auto": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-4.0.0.tgz", + "integrity": "sha512-kmuYSQdD2AwThymQF0haQhM8rE5rhutQXG4LNbnbShwhMO4qQGnKaaTy+88DuNSuoQDi58+thpq8XpHc1+oEKQ==", + "dev": true, + "dependencies": { + "import-meta-resolve": "^4.1.0" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.20.8", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.20.8.tgz", + "integrity": "sha512-ep9qTxL7WALhfm0kFecL3VHeuNew8IccbYGqv5TqL/KSqWRKzEgDG8blNlIu1CkLTTua/kHjI+f5T8eCmWIxKw==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0", + "devalue": "^5.1.0", + "esm-env": "^1.2.2", + "import-meta-resolve": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^3.0.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3 || ^6.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.0.3.tgz", + "integrity": "sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", + "debug": "^4.4.0", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.15", + "vitefu": "^1.0.4" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz", + "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==", + "dev": true, + "dependencies": { + "debug": "^4.3.7" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.6.tgz", + "integrity": "sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.29.2", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.6" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.6.tgz", + "integrity": "sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.6", + "@tailwindcss/oxide-darwin-arm64": "4.1.6", + "@tailwindcss/oxide-darwin-x64": "4.1.6", + "@tailwindcss/oxide-freebsd-x64": "4.1.6", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.6", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.6", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.6", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.6", + "@tailwindcss/oxide-linux-x64-musl": "4.1.6", + "@tailwindcss/oxide-wasm32-wasi": "4.1.6", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.6", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.6" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.6.tgz", + "integrity": "sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.6.tgz", + "integrity": "sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.6.tgz", + "integrity": "sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.6.tgz", + "integrity": "sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.6.tgz", + "integrity": "sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.6.tgz", + "integrity": "sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.6.tgz", + "integrity": "sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.6.tgz", + "integrity": "sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.6.tgz", + "integrity": "sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.6.tgz", + "integrity": "sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.9", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.6.tgz", + "integrity": "sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.6.tgz", + "integrity": "sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.6.tgz", + "integrity": "sha512-zjtqjDeY1w3g2beYQtrMAf51n5G7o+UwmyOjtsDMP7t6XyoRMOidcoKP32ps7AkNOHIXEOK0bhIC05dj8oJp4w==", + "dev": true, + "dependencies": { + "@tailwindcss/node": "4.1.6", + "@tailwindcss/oxide": "4.1.6", + "tailwindcss": "4.1.6" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "peer": true + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "peer": true, + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "peer": true + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dev": true, + "peer": true, + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "peer": true + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "peer": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "peer": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", + "dev": true + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "peer": true + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "peer": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.4", + "@esbuild/android-arm": "0.25.4", + "@esbuild/android-arm64": "0.25.4", + "@esbuild/android-x64": "0.25.4", + "@esbuild/darwin-arm64": "0.25.4", + "@esbuild/darwin-x64": "0.25.4", + "@esbuild/freebsd-arm64": "0.25.4", + "@esbuild/freebsd-x64": "0.25.4", + "@esbuild/linux-arm": "0.25.4", + "@esbuild/linux-arm64": "0.25.4", + "@esbuild/linux-ia32": "0.25.4", + "@esbuild/linux-loong64": "0.25.4", + "@esbuild/linux-mips64el": "0.25.4", + "@esbuild/linux-ppc64": "0.25.4", + "@esbuild/linux-riscv64": "0.25.4", + "@esbuild/linux-s390x": "0.25.4", + "@esbuild/linux-x64": "0.25.4", + "@esbuild/netbsd-arm64": "0.25.4", + "@esbuild/netbsd-x64": "0.25.4", + "@esbuild/openbsd-arm64": "0.25.4", + "@esbuild/openbsd-x64": "0.25.4", + "@esbuild/sunos-x64": "0.25.4", + "@esbuild/win32-arm64": "0.25.4", + "@esbuild/win32-ia32": "0.25.4", + "@esbuild/win32-x64": "0.25.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "peer": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.26.0.tgz", + "integrity": "sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.13.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.26.0", + "@eslint/plugin-kit": "^0.2.8", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@modelcontextprotocol/sdk": "^1.8.0", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "zod": "^3.24.2" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", + "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "dev": true + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "peer": true, + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "peer": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrap": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.6.tgz", + "integrity": "sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "dev": true, + "peer": true, + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.1.tgz", + "integrity": "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dev": true, + "peer": true, + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", + "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": "^4.11 || 5 || ^5.0.0-beta.1" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "peer": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "peer": true + }, + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "peer": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "peer": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "peer": true + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "peer": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "peer": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "peer": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "peer": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "peer": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "peer": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "peer": true + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "peer": true + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "peer": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "peer": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "peer": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "peer": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", + "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.2", + "lightningcss-darwin-x64": "1.29.2", + "lightningcss-freebsd-x64": "1.29.2", + "lightningcss-linux-arm-gnueabihf": "1.29.2", + "lightningcss-linux-arm64-gnu": "1.29.2", + "lightningcss-linux-arm64-musl": "1.29.2", + "lightningcss-linux-x64-gnu": "1.29.2", + "lightningcss-linux-x64-musl": "1.29.2", + "lightningcss-win32-arm64-msvc": "1.29.2", + "lightningcss-win32-x64-msvc": "1.29.2" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", + "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", + "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", + "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", + "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", + "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", + "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", + "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", + "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", + "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", + "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "peer": true + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "peer": true, + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dev": true, + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "peer": true + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "peer": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "peer": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "peer": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "peer": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", + "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.3.tgz", + "integrity": "sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==", + "dev": true, + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", + "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", + "dev": true, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "peer": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "peer": true, + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, + "peer": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.2.tgz", + "integrity": "sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.2", + "@rollup/rollup-android-arm64": "4.40.2", + "@rollup/rollup-darwin-arm64": "4.40.2", + "@rollup/rollup-darwin-x64": "4.40.2", + "@rollup/rollup-freebsd-arm64": "4.40.2", + "@rollup/rollup-freebsd-x64": "4.40.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.2", + "@rollup/rollup-linux-arm-musleabihf": "4.40.2", + "@rollup/rollup-linux-arm64-gnu": "4.40.2", + "@rollup/rollup-linux-arm64-musl": "4.40.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2", + "@rollup/rollup-linux-riscv64-gnu": "4.40.2", + "@rollup/rollup-linux-riscv64-musl": "4.40.2", + "@rollup/rollup-linux-s390x-gnu": "4.40.2", + "@rollup/rollup-linux-x64-gnu": "4.40.2", + "@rollup/rollup-linux-x64-musl": "4.40.2", + "@rollup/rollup-win32-arm64-msvc": "4.40.2", + "@rollup/rollup-win32-ia32-msvc": "4.40.2", + "@rollup/rollup-win32-x64-msvc": "4.40.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "peer": true + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dev": true, + "peer": true, + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "peer": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "peer": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sirv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svelte": { + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.28.2.tgz", + "integrity": "sha512-FbWBxgWOpQfhKvoGJv/TFwzqb4EhJbwCD17dB0tEpQiw1XyUEKZJtgm4nA4xq3LLsMo7hu5UY/BOFmroAxKTMg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "esm-env": "^1.2.1", + "esrap": "^1.4.6", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.6.tgz", + "integrity": "sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "dev": true, + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "peer": true, + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz", + "integrity": "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "peer": true + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", + "dev": true + }, + "node_modules/zod": { + "version": "3.24.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", + "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", + "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", + "dev": true, + "peer": true, + "peerDependencies": { + "zod": "^3.24.1" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2735ccf --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "kahootclone", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "prepare": "svelte-kit sync || echo ''", + "format": "prettier --write .", + "lint": "prettier --check . && eslint ." + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^4.0.0", + "@sveltejs/kit": "^2.16.0", + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "@tailwindcss/vite": "^4.0.0", + "eslint-config-prettier": "^10.0.1", + "prettier": "^3.4.2", + "prettier-plugin-svelte": "^3.3.3", + "prettier-plugin-tailwindcss": "^0.6.11", + "svelte": "^5.0.0", + "tailwindcss": "^4.0.0", + "vite": "^6.0.0" + } +} diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..d4b5078 --- /dev/null +++ b/src/app.css @@ -0,0 +1 @@ +@import 'tailwindcss'; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..77a5ff5 --- /dev/null +++ b/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/lib/index.js b/src/lib/index.js new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/src/lib/index.js @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..726b46c --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,6 @@ + + +{@render children()} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH Date: Sun, 11 May 2025 16:59:40 +0530 Subject: [PATCH 02/31] dsaasdsd --- .vscode/settings.json | 7 +++++++ postcss.config.js | 6 ++++++ src/app.html | 6 +++--- src/routes/+layout.svelte | 2 +- src/routes/+page.svelte | 1 + tailwind.config.js | 8 ++++++++ 6 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 postcss.config.js create mode 100644 tailwind.config.js diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2bda783 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "tailwindCSS.emmetCompletions": true, + "editor.inlineSuggest.enabled": true, + "editor.quickSuggestions": { + "strings": true + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2aa7205 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/src/app.html b/src/app.html index 77a5ff5..276ef13 100644 --- a/src/app.html +++ b/src/app.html @@ -1,12 +1,12 @@ - + %sveltekit.head% - -
%sveltekit.body%
+ +
%sveltekit.body%
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 726b46c..88e45e3 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -3,4 +3,4 @@ let { children } = $props(); -{@render children()} +
{@render children()}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index e69de29..30d28c5 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -0,0 +1 @@ +

testing tailwind

diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..efba8f1 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{html,js,svelte}'], + theme: { + extend: {}, + }, + plugins: [], +}; From 5eb9e9d4f6e84165bda2370e3ce47a10c6eed745 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sun, 11 May 2025 19:18:41 +0530 Subject: [PATCH 03/31] made the ui, no funtionality yet! first time using tailwind css. this tooooolllllkkk WAY TOOO LONG --- src/routes/+layout.svelte | 6 +- src/routes/+page.svelte | 20 +++++- src/routes/create/+page.svelte | 119 +++++++++++++++++++++++++++++++++ src/routes/join/+page.svelte | 19 ++++++ static/favicon.png | Bin 1571 -> 0 bytes 5 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 src/routes/create/+page.svelte create mode 100644 src/routes/join/+page.svelte delete mode 100644 static/favicon.png diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 88e45e3..2b7d09f 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -3,4 +3,8 @@ let { children } = $props(); -
{@render children()}
+
{@render children()}
+ + \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 30d28c5..7f94d35 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1 +1,19 @@ -

testing tailwind

+ + +
+
+

DaKahootClone

+

The best eveer kahoot clone.

+ + +
+
diff --git a/src/routes/create/+page.svelte b/src/routes/create/+page.svelte new file mode 100644 index 0000000..82b0550 --- /dev/null +++ b/src/routes/create/+page.svelte @@ -0,0 +1,119 @@ + + +
+
+ {#each questions as question, i} +
+
+
+

Q{i + 1}.

+ +
+
+ {#each question.answers as answer, i2} +
+ +
+ {/each} +
+
+
+ {/each} +
+ + +
+
+
diff --git a/src/routes/join/+page.svelte b/src/routes/join/+page.svelte new file mode 100644 index 0000000..50a4f1a --- /dev/null +++ b/src/routes/join/+page.svelte @@ -0,0 +1,19 @@ + + +
+
+

Join a game here

+ + + +
+
\ No newline at end of file diff --git a/static/favicon.png b/static/favicon.png deleted file mode 100644 index 825b9e65af7c104cfb07089bb28659393b4f2097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH Date: Sun, 11 May 2025 19:22:17 +0530 Subject: [PATCH 04/31] fix bug in vercle i think --- package-lock.json | 169 ++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/app.html | 6 +- src/routes/+layout.svelte | 6 +- src/routes/+page.svelte | 21 +---- 5 files changed, 176 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 27b00e4..0f14117 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", "@tailwindcss/vite": "^4.0.0", + "autoprefixer": "^10.4.21", "eslint-config-prettier": "^10.0.1", "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", @@ -1441,6 +1442,43 @@ "node": ">= 0.4" } }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", @@ -1489,6 +1527,38 @@ "concat-map": "0.0.1" } }, + "node_modules/browserslist": { + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -1540,6 +1610,26 @@ "node": ">=6" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001717", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz", + "integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1753,6 +1843,12 @@ "dev": true, "peer": true }, + "node_modules/electron-to-chromium": { + "version": "1.5.151", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.151.tgz", + "integrity": "sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA==", + "dev": true + }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -1849,6 +1945,15 @@ "@esbuild/win32-x64": "0.25.4" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2272,6 +2377,19 @@ "node": ">= 0.6" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", @@ -3072,6 +3190,21 @@ "node": ">= 0.6" } }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3277,6 +3410,12 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3902,6 +4041,36 @@ "node": ">= 0.8" } }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", diff --git a/package.json b/package.json index 2735ccf..ff65118 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", "@tailwindcss/vite": "^4.0.0", + "autoprefixer": "^10.4.21", "eslint-config-prettier": "^10.0.1", "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", diff --git a/src/app.html b/src/app.html index 276ef13..77a5ff5 100644 --- a/src/app.html +++ b/src/app.html @@ -1,12 +1,12 @@ - + %sveltekit.head% - -
%sveltekit.body%
+ +
%sveltekit.body%
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 2b7d09f..726b46c 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -3,8 +3,4 @@ let { children } = $props(); -
{@render children()}
- - \ No newline at end of file +{@render children()} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 7f94d35..cc88df0 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,19 +1,2 @@ - - -
-
-

DaKahootClone

-

The best eveer kahoot clone.

- - -
-
+

Welcome to SvelteKit

+

Visit svelte.dev/docs/kit to read the documentation

From 16e697b298d7f8656d6d8551ed1f10002cdab44a Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sun, 11 May 2025 19:23:37 +0530 Subject: [PATCH 05/31] try 2 to fix verlcle bug --- package-lock.json | 26 ++++++++++++++++++++++++++ package.json | 1 + postcss.config.js | 4 ++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0f14117..7c3c87f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", + "@tailwindcss/postcss": "^4.1.6", "@tailwindcss/vite": "^4.0.0", "autoprefixer": "^10.4.21", "eslint-config-prettier": "^10.0.1", @@ -22,6 +23,18 @@ "vite": "^6.0.0" } }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -1324,6 +1337,19 @@ "node": ">= 10" } }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.6.tgz", + "integrity": "sha512-ELq+gDMBuRXPJlpE3PEen+1MhnHAQQrh2zF0dI1NXOlEWfr2qWf2CQdr5jl9yANv8RErQaQ2l6nIFO9OSCVq/g==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.6", + "@tailwindcss/oxide": "4.1.6", + "postcss": "^8.4.41", + "tailwindcss": "4.1.6" + } + }, "node_modules/@tailwindcss/vite": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.6.tgz", diff --git a/package.json b/package.json index ff65118..23c775c 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", + "@tailwindcss/postcss": "^4.1.6", "@tailwindcss/vite": "^4.0.0", "autoprefixer": "^10.4.21", "eslint-config-prettier": "^10.0.1", diff --git a/postcss.config.js b/postcss.config.js index 2aa7205..af9d8dc 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,6 +1,6 @@ export default { plugins: { - tailwindcss: {}, + '@tailwindcss/postcss': {}, autoprefixer: {}, }, -}; +} \ No newline at end of file From bf582efc464d326b163d4462be495987c21debfa Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sun, 11 May 2025 19:50:46 +0530 Subject: [PATCH 06/31] fixed vercle fr fr final time! --- src/app.html | 6 +++--- src/routes/+layout.svelte | 8 +++++++- src/routes/+page.svelte | 21 +++++++++++++++++++-- src/routes/create/+page.svelte | 8 ++------ 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/app.html b/src/app.html index 77a5ff5..a158320 100644 --- a/src/app.html +++ b/src/app.html @@ -1,12 +1,12 @@ - + %sveltekit.head% - -
%sveltekit.body%
+ +
%sveltekit.body%
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 726b46c..42146f4 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -3,4 +3,10 @@ let { children } = $props(); -{@render children()} +
{@render children()}
+ + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index cc88df0..7f94d35 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,2 +1,19 @@ -

Welcome to SvelteKit

-

Visit svelte.dev/docs/kit to read the documentation

+ + +
+
+

DaKahootClone

+

The best eveer kahoot clone.

+ + +
+
diff --git a/src/routes/create/+page.svelte b/src/routes/create/+page.svelte index 82b0550..4af0fc9 100644 --- a/src/routes/create/+page.svelte +++ b/src/routes/create/+page.svelte @@ -12,11 +12,7 @@ alert('Please fill in the question for each question.'); return; } - if ( - questions.some((question) => - question.answers.some((answer) => answer === '') - ) - ) { + if (questions.some((question) => question.answers.some((answer) => answer === ''))) { alert('Please fill in each of the options for each question.'); return; } @@ -25,7 +21,7 @@ return; } - alert('Game started!'); + alert('Game started!'); } From f83f50d9b2db49849a49d3fae35e3a2fb06ac78c Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Mon, 12 May 2025 10:22:19 +0530 Subject: [PATCH 07/31] now people can join and leave the game --- .env.example | 2 + .vscode/settings.json | 3 +- package-lock.json | 135 +++++++++++++++++++++++++ package.json | 3 + src/lib/index.js | 1 - src/lib/supabase.js | 6 ++ src/routes/create/+page.svelte | 38 ++++--- src/routes/host/[gamePin]/+page.js | 6 ++ src/routes/host/[gamePin]/+page.svelte | 78 ++++++++++++++ src/routes/join/+page.svelte | 65 ++++++++++-- src/routes/play/[gamePin]/+page.js | 6 ++ src/routes/play/[gamePin]/+page.svelte | 87 ++++++++++++++++ 12 files changed, 408 insertions(+), 22 deletions(-) create mode 100644 .env.example delete mode 100644 src/lib/index.js create mode 100644 src/lib/supabase.js create mode 100644 src/routes/host/[gamePin]/+page.js create mode 100644 src/routes/host/[gamePin]/+page.svelte create mode 100644 src/routes/play/[gamePin]/+page.js create mode 100644 src/routes/play/[gamePin]/+page.svelte diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..8c6153e --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +VITE_SUPABASE_URL=https://yourproject.supabase.co +VITE_SUPABASE_ANON_KEY=your-service-role-key \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 2bda783..0067ed3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,5 +3,6 @@ "editor.inlineSuggest.enabled": true, "editor.quickSuggestions": { "strings": true - } + }, + "cSpell.words": ["SUPABASE"] } diff --git a/package-lock.json b/package-lock.json index 7c3c87f..4569f4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,9 @@ "": { "name": "kahootclone", "version": "0.0.1", + "dependencies": { + "@supabase/supabase-js": "^2.49.4" + }, "devDependencies": { "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/kit": "^2.16.0", @@ -1000,6 +1003,73 @@ "win32" ] }, + "node_modules/@supabase/auth-js": { + "version": "2.69.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.69.1.tgz", + "integrity": "sha512-FILtt5WjCNzmReeRLq5wRs3iShwmnWgBvxHfqapC/VoljJl+W8hDAyFmf1NVw3zH+ZjZ05AKxiKxVeb0HNWRMQ==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.4.tgz", + "integrity": "sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/node-fetch": { + "version": "2.6.15", + "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.19.4.tgz", + "integrity": "sha512-O4soKqKtZIW3olqmbXXbKugUtByD2jPa8kL2m2c1oozAO11uCcGrRhkZL0kVxjBLrXHE0mdSkFsMj7jDSfyNpw==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.11.2.tgz", + "integrity": "sha512-u/XeuL2Y0QEhXSoIPZZwR6wMXgB+RQbJzG9VErA3VghVt7uRfSVsjeqd7m5GhX3JR6dM/WRmLbVR8URpDWG4+w==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14", + "@types/phoenix": "^1.5.4", + "@types/ws": "^8.5.10", + "ws": "^8.18.0" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.7.1.tgz", + "integrity": "sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.49.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.49.4.tgz", + "integrity": "sha512-jUF0uRUmS8BKt37t01qaZ88H9yV1mbGYnqLeuFWLcdV+x1P4fl0yP9DGtaEhFPZcwSom7u16GkLEH9QJZOqOkw==", + "dependencies": { + "@supabase/auth-js": "2.69.1", + "@supabase/functions-js": "2.4.4", + "@supabase/node-fetch": "2.6.15", + "@supabase/postgrest-js": "1.19.4", + "@supabase/realtime-js": "2.11.2", + "@supabase/storage-js": "2.7.1" + } + }, "node_modules/@sveltejs/acorn-typescript": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", @@ -1383,6 +1453,27 @@ "dev": true, "peer": true }, + "node_modules/@types/node": { + "version": "22.15.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", + "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/phoenix": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz", + "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -4029,6 +4120,11 @@ "node": ">=6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4057,6 +4153,11 @@ "node": ">= 0.6" } }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -4205,6 +4306,20 @@ } } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4238,6 +4353,26 @@ "dev": true, "peer": true }, + "node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/yallist": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", diff --git a/package.json b/package.json index 23c775c..7b25e2b 100644 --- a/package.json +++ b/package.json @@ -25,5 +25,8 @@ "svelte": "^5.0.0", "tailwindcss": "^4.0.0", "vite": "^6.0.0" + }, + "dependencies": { + "@supabase/supabase-js": "^2.49.4" } } diff --git a/src/lib/index.js b/src/lib/index.js deleted file mode 100644 index 856f2b6..0000000 --- a/src/lib/index.js +++ /dev/null @@ -1 +0,0 @@ -// place files you want to import through the `$lib` alias in this folder. diff --git a/src/lib/supabase.js b/src/lib/supabase.js new file mode 100644 index 0000000..d12f435 --- /dev/null +++ b/src/lib/supabase.js @@ -0,0 +1,6 @@ +import { createClient } from '@supabase/supabase-js'; + +export const supabase = createClient( + import.meta.env.VITE_SUPABASE_URL, + import.meta.env.VITE_SUPABASE_ANON_KEY +); diff --git a/src/routes/create/+page.svelte b/src/routes/create/+page.svelte index 4af0fc9..2da2a88 100644 --- a/src/routes/create/+page.svelte +++ b/src/routes/create/+page.svelte @@ -1,27 +1,37 @@ diff --git a/src/routes/host/[gamePin]/+page.js b/src/routes/host/[gamePin]/+page.js new file mode 100644 index 0000000..1bfee35 --- /dev/null +++ b/src/routes/host/[gamePin]/+page.js @@ -0,0 +1,6 @@ +// Example of what your +page.js or +page.server.js might need +export function load({ params }) { + return { + gamePin: params.gamePin + }; +} diff --git a/src/routes/host/[gamePin]/+page.svelte b/src/routes/host/[gamePin]/+page.svelte new file mode 100644 index 0000000..c5b9d84 --- /dev/null +++ b/src/routes/host/[gamePin]/+page.svelte @@ -0,0 +1,78 @@ + + +
+
+

HOSTING

+

Game Pin:

+

+ {gamePin} +

+

Players Joined:

+

(Total Players: {players.length})

+
+ {#each players as player} + {player.name} + {/each} +
+ +
+
diff --git a/src/routes/join/+page.svelte b/src/routes/join/+page.svelte index 50a4f1a..b3c3b62 100644 --- a/src/routes/join/+page.svelte +++ b/src/routes/join/+page.svelte @@ -1,19 +1,72 @@

Join a game here

- + + + - + + {#if !Checking} + + {:else}{/if}
-
\ No newline at end of file + diff --git a/src/routes/play/[gamePin]/+page.js b/src/routes/play/[gamePin]/+page.js new file mode 100644 index 0000000..1bfee35 --- /dev/null +++ b/src/routes/play/[gamePin]/+page.js @@ -0,0 +1,6 @@ +// Example of what your +page.js or +page.server.js might need +export function load({ params }) { + return { + gamePin: params.gamePin + }; +} diff --git a/src/routes/play/[gamePin]/+page.svelte b/src/routes/play/[gamePin]/+page.svelte new file mode 100644 index 0000000..3b50975 --- /dev/null +++ b/src/routes/play/[gamePin]/+page.svelte @@ -0,0 +1,87 @@ + + +
+
+

PLAYING

+

Game Pin:

+

+ {gamePin} +

+

Players Joined:

+

(Total Players: {players.length})

+
+ {#each players as player} + {player.name} + {/each} +
+
+
From 9ac813c6993894bba36a9d9a07ca5e0b7a85b445 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Mon, 12 May 2025 21:46:36 +0530 Subject: [PATCH 08/31] AGHHH, now finaly the actual playing of the game works! now time to add a leader board! --- jsconfig.json | 1 + src/lib/supabase.js | 2 +- src/routes/create/+page.svelte | 59 +++++++- src/routes/host/[gamePin]/+page.svelte | 11 +- src/routes/hostgame/[gamePin]/+page.js | 6 + src/routes/hostgame/[gamePin]/+page.svelte | 100 +++++++++++++ src/routes/join/+page.svelte | 2 +- src/routes/play-lobby/[gamePin]/+page.js | 6 + src/routes/play-lobby/[gamePin]/+page.svelte | 112 +++++++++++++++ src/routes/play/[gamePin]/+page.js | 1 - src/routes/play/[gamePin]/+page.svelte | 143 ++++++++++++------- 11 files changed, 381 insertions(+), 62 deletions(-) create mode 100644 src/routes/hostgame/[gamePin]/+page.js create mode 100644 src/routes/hostgame/[gamePin]/+page.svelte create mode 100644 src/routes/play-lobby/[gamePin]/+page.js create mode 100644 src/routes/play-lobby/[gamePin]/+page.svelte diff --git a/jsconfig.json b/jsconfig.json index d73b913..a86a4fd 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -10,4 +10,5 @@ // // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes // from the referenced tsconfig.json - TypeScript does not merge them in + } diff --git a/src/lib/supabase.js b/src/lib/supabase.js index d12f435..0a5ac16 100644 --- a/src/lib/supabase.js +++ b/src/lib/supabase.js @@ -3,4 +3,4 @@ import { createClient } from '@supabase/supabase-js'; export const supabase = createClient( import.meta.env.VITE_SUPABASE_URL, import.meta.env.VITE_SUPABASE_ANON_KEY -); +); \ No newline at end of file diff --git a/src/routes/create/+page.svelte b/src/routes/create/+page.svelte index 2da2a88..ab613bd 100644 --- a/src/routes/create/+page.svelte +++ b/src/routes/create/+page.svelte @@ -1,13 +1,14 @@ + +
+
+

HOSTING

+
+

Question {currentQuestion + 1} of {totalQuetions} is beeing awnsered

+
+
+
+
+
+

{PeopleAwnseredQ} out of {Totalplayers} have awnsered the quetion

+
+
+
+
+
+
diff --git a/src/routes/join/+page.svelte b/src/routes/join/+page.svelte index b3c3b62..5a10102 100644 --- a/src/routes/join/+page.svelte +++ b/src/routes/join/+page.svelte @@ -32,7 +32,7 @@ return; } - goto('/play/' + pin, { + goto('/play-lobby/' + pin, { state: { name } diff --git a/src/routes/play-lobby/[gamePin]/+page.js b/src/routes/play-lobby/[gamePin]/+page.js new file mode 100644 index 0000000..1bfee35 --- /dev/null +++ b/src/routes/play-lobby/[gamePin]/+page.js @@ -0,0 +1,6 @@ +// Example of what your +page.js or +page.server.js might need +export function load({ params }) { + return { + gamePin: params.gamePin + }; +} diff --git a/src/routes/play-lobby/[gamePin]/+page.svelte b/src/routes/play-lobby/[gamePin]/+page.svelte new file mode 100644 index 0000000..5405f1d --- /dev/null +++ b/src/routes/play-lobby/[gamePin]/+page.svelte @@ -0,0 +1,112 @@ + + +
+
+

PLAYING

+

Game Pin:

+

+ {gamePin} +

+

Players Joined:

+

(Total Players: {players.length})

+
+ {#each players as player} + {player.name} + {/each} +
+
+
diff --git a/src/routes/play/[gamePin]/+page.js b/src/routes/play/[gamePin]/+page.js index 1bfee35..aea5dc3 100644 --- a/src/routes/play/[gamePin]/+page.js +++ b/src/routes/play/[gamePin]/+page.js @@ -1,4 +1,3 @@ -// Example of what your +page.js or +page.server.js might need export function load({ params }) { return { gamePin: params.gamePin diff --git a/src/routes/play/[gamePin]/+page.svelte b/src/routes/play/[gamePin]/+page.svelte index 3b50975..3283028 100644 --- a/src/routes/play/[gamePin]/+page.svelte +++ b/src/routes/play/[gamePin]/+page.svelte @@ -1,36 +1,19 @@
-

PLAYING

-

Game Pin:

-

- {gamePin} -

-

Players Joined:

-

(Total Players: {players.length})

-
- {#each players as player} - {player.name} - {/each} +
+

Question {currentQuestion + 1} of {question.length}

+
+
+
+ {#if isWait != true} +

+ Q{currentQuestion + 1}. {question[currentQuestion].name} +

+
+ {#each question[currentQuestion].answers as answer, index} +
+ + +
+ {/each} +
+ {#if Selected != null} + + {:else} + + {/if} + {:else}

+ Please wait for everyone else to answer the question. +

{/if}
From a34bd9eaab837d71afa9f4d05440137f37e35ad6 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Tue, 13 May 2025 16:45:17 +0530 Subject: [PATCH 09/31] added leader board --- src/routes/hostgame/[gamePin]/+page.svelte | 19 ++++-- src/routes/play/[gamePin]/+page.svelte | 16 +++-- src/routes/results/[gamePin]/+page.js | 5 ++ src/routes/results/[gamePin]/+page.svelte | 71 ++++++++++++++++++++++ 4 files changed, 102 insertions(+), 9 deletions(-) create mode 100644 src/routes/results/[gamePin]/+page.js create mode 100644 src/routes/results/[gamePin]/+page.svelte diff --git a/src/routes/hostgame/[gamePin]/+page.svelte b/src/routes/hostgame/[gamePin]/+page.svelte index 980a609..1c47d33 100644 --- a/src/routes/hostgame/[gamePin]/+page.svelte +++ b/src/routes/hostgame/[gamePin]/+page.svelte @@ -16,14 +16,23 @@ async function NewUpdate(question) { if (question[currentQuestion].playersCompelted == Totalplayers) { currentQuestion++; - await supabase - .from('games') - .update({ gameStatus: `${currentQuestion}` }) - .eq('gamePIN', Number(data.gamePin)); + + if (currentQuestion > questions.length) { + await supabase + .from('games') + .update({ gameStatus: `completed` }) + .eq('gamePIN', Number(data.gamePin)); + goto(`/results/${gamePin}`); + } else { + await supabase + .from('games') + .update({ gameStatus: `${currentQuestion}` }) + .eq('gamePIN', Number(data.gamePin)); + } + PeopleAwnseredQ = 0; } else { PeopleAwnseredQ = question[currentQuestion].playersCompelted; - } } diff --git a/src/routes/play/[gamePin]/+page.svelte b/src/routes/play/[gamePin]/+page.svelte index 3283028..a0a13c3 100644 --- a/src/routes/play/[gamePin]/+page.svelte +++ b/src/routes/play/[gamePin]/+page.svelte @@ -26,10 +26,18 @@ }, (payload) => { if (payload.new.gameStatus != gameStatus) { - gameStatus = payload.new.gameStatus; - isWait = false; - Selected = null; - currentQuestion = Number(gameStatus); + if (payload.new.questions == 'completed') { + goto(`/results/${gamePin}`, { + state: { + name + } + }); + } else { + gameStatus = payload.new.gameStatus; + isWait = false; + Selected = null; + currentQuestion = Number(gameStatus); + } } } ) diff --git a/src/routes/results/[gamePin]/+page.js b/src/routes/results/[gamePin]/+page.js new file mode 100644 index 0000000..aea5dc3 --- /dev/null +++ b/src/routes/results/[gamePin]/+page.js @@ -0,0 +1,5 @@ +export function load({ params }) { + return { + gamePin: params.gamePin + }; +} diff --git a/src/routes/results/[gamePin]/+page.svelte b/src/routes/results/[gamePin]/+page.svelte new file mode 100644 index 0000000..972b002 --- /dev/null +++ b/src/routes/results/[gamePin]/+page.svelte @@ -0,0 +1,71 @@ + + +
+
+

Leaderboard

+ + {#if players} + {#each players as player, i} + {#if name == player.name} +
+
+ {i + 1} +
+
{player.name}
+
+
+
{player.score} points
+
+
+
+ {:else}
+
+ {i + 1} +
+
{player.name}
+
+
+
+
{player.score} points
+
+ {/if} + {/each} + {/if} + + +
+
From 736059646dfa4a952f4d981b4d0b5a0e32ffc065 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Thu, 15 May 2025 06:27:40 +0530 Subject: [PATCH 10/31] made the filestructure better and migrated the game creation from the old type of db to the newer relational db type! --- .vscode/settings.json | 10 +- README.md | 69 +++---- jsconfig.json | 8 +- package-lock.json | 10 ++ package.json | 1 + src/app.css | 1 - src/routes/+layout.svelte | 3 +- src/routes/+page.svelte | 25 ++- src/routes/create/+page.svelte | 170 ++---------------- .../components/Questions/answers.svelte | 23 +++ .../components/Questions/question.svelte | 30 ++++ .../components/buttons/DeleteQuestion.svelte | 20 +++ .../components/buttons/NewQuestion.svelte | 15 ++ .../components/buttons/StartGame.svelte | 18 ++ .../buttons/UseDemoQuestions.svelte | 15 ++ .../create/logic/GameCreateData.svelte.js | 54 ++++++ src/routes/create/logic/InsertGameInDB.js | 58 ++++++ src/routes/create/logic/StartGame.js | 17 ++ src/routes/host/[gamePin]/+page.js | 6 - src/routes/host/[gamePin]/+page.svelte | 81 --------- src/routes/hostgame/[gamePin]/+page.js | 6 - src/routes/hostgame/[gamePin]/+page.svelte | 100 ----------- src/routes/join/+page.svelte | 72 -------- src/routes/play-lobby/[gamePin]/+page.js | 6 - src/routes/play-lobby/[gamePin]/+page.svelte | 112 ------------ src/routes/play/[gamePin]/+page.js | 5 - src/routes/play/[gamePin]/+page.svelte | 134 -------------- svelte.config.js | 10 +- 28 files changed, 343 insertions(+), 736 deletions(-) delete mode 100644 src/app.css create mode 100644 src/routes/create/components/Questions/answers.svelte create mode 100644 src/routes/create/components/Questions/question.svelte create mode 100644 src/routes/create/components/buttons/DeleteQuestion.svelte create mode 100644 src/routes/create/components/buttons/NewQuestion.svelte create mode 100644 src/routes/create/components/buttons/StartGame.svelte create mode 100644 src/routes/create/components/buttons/UseDemoQuestions.svelte create mode 100644 src/routes/create/logic/GameCreateData.svelte.js create mode 100644 src/routes/create/logic/InsertGameInDB.js create mode 100644 src/routes/create/logic/StartGame.js delete mode 100644 src/routes/host/[gamePin]/+page.js delete mode 100644 src/routes/host/[gamePin]/+page.svelte delete mode 100644 src/routes/hostgame/[gamePin]/+page.js delete mode 100644 src/routes/hostgame/[gamePin]/+page.svelte delete mode 100644 src/routes/join/+page.svelte delete mode 100644 src/routes/play-lobby/[gamePin]/+page.js delete mode 100644 src/routes/play-lobby/[gamePin]/+page.svelte delete mode 100644 src/routes/play/[gamePin]/+page.js delete mode 100644 src/routes/play/[gamePin]/+page.svelte diff --git a/.vscode/settings.json b/.vscode/settings.json index 0067ed3..8a9beca 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,13 @@ "editor.quickSuggestions": { "strings": true }, - "cSpell.words": ["SUPABASE"] + "cSpell.words": [ + "correctanswer", + "creationdate", + "gameid", + "kahoot", + "questionid", + "questionstext", + "SUPABASE" + ] } diff --git a/README.md b/README.md index b5b2950..321f964 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,45 @@ -# sv +# DB Diagrams -Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). +## Current DB Diagram -## Creating a project - -If you're seeing this, you've probably already done this step. Congrats! - -```bash -# create a new project in the current directory -npx sv create - -# create a new project in my-app -npx sv create my-app +```mermaid + erDiagram + GAMES { + int GamePIN PK + string gameStatus + json questions + jsonb players + } ``` -## Developing +## Goal MVP DB Diagram -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: +```mermaid + erDiagram + GAMES { + int ID PK + string creator + date creationDate + string status + } + QUESTIONS { + int ID PK + int GameID FK + string QuestionsText + string CorrectAnswer + } + ANSWERS { + int ID PK + int QuestionID FK + string content + } + PLAYERS { + int ID PK + int GameID FK + int Score + } -```bash -npm run dev - -# or start the server and open the app in a new browser tab -npm run dev -- --open + GAMES ||--o{ QUESTIONS : contains + QUESTIONS ||--o{ ANSWERS : has + GAMES ||--o{ PLAYERS : participated_by ``` - -## Building - -To create a production version of your app: - -```bash -npm run build -``` - -You can preview the production build with `npm run preview`. - -> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/jsconfig.json b/jsconfig.json index a86a4fd..428e42f 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -2,13 +2,7 @@ "extends": "./.svelte-kit/tsconfig.json", "compilerOptions": { "allowJs": true, - "checkJs": false, + "checkJs": true, "moduleResolution": "bundler" } - // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias - // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in - } diff --git a/package-lock.json b/package-lock.json index 4569f4e..95b6d82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ }, "devDependencies": { "@sveltejs/adapter-auto": "^4.0.0", + "@sveltejs/adapter-static": "^3.0.8", "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", "@tailwindcss/postcss": "^4.1.6", @@ -1091,6 +1092,15 @@ "@sveltejs/kit": "^2.0.0" } }, + "node_modules/@sveltejs/adapter-static": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.8.tgz", + "integrity": "sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==", + "dev": true, + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, "node_modules/@sveltejs/kit": { "version": "2.20.8", "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.20.8.tgz", diff --git a/package.json b/package.json index 7b25e2b..d04f917 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ }, "devDependencies": { "@sveltejs/adapter-auto": "^4.0.0", + "@sveltejs/adapter-static": "^3.0.8", "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", "@tailwindcss/postcss": "^4.1.6", diff --git a/src/app.css b/src/app.css deleted file mode 100644 index d4b5078..0000000 --- a/src/app.css +++ /dev/null @@ -1 +0,0 @@ -@import 'tailwindcss'; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 42146f4..1fde110 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,11 +1,12 @@
{@render children()}
+{@render children()} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 4ad9622..cc88df0 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,18 +1,2 @@ -
-
-

DaKahootClone

-

The best ever kahoot clone.

- - - - - -
-
\ No newline at end of file +

Welcome to SvelteKit

+

Visit svelte.dev/docs/kit to read the documentation

diff --git a/src/routes/host/[gamePin]/+page.svelte b/src/routes/host/[gamePin]/+page.svelte index 5808a7b..2719c2e 100644 --- a/src/routes/host/[gamePin]/+page.svelte +++ b/src/routes/host/[gamePin]/+page.svelte @@ -1,46 +1,18 @@ @@ -48,35 +20,10 @@
-

HOSTING

-

Game Pin:

-

- {gamePin} -

-

Players Joined:

-

(Total Players: {players.length})

-
- {#each players as player} - {player.name} - {/each} -
- + {#if Status.v == "lobby"} + + {:else if Status.v == "started"} + + {/if}
-
\ No newline at end of file + diff --git a/src/routes/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte b/src/routes/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte new file mode 100644 index 0000000..672183b --- /dev/null +++ b/src/routes/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte @@ -0,0 +1,13 @@ + + +
+

{PeopleAwnseredQ.v} out of {Totalplayers.v} have awnsered the quetion

+
+
+
+
diff --git a/src/routes/host/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte b/src/routes/host/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte new file mode 100644 index 0000000..c51c04d --- /dev/null +++ b/src/routes/host/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte @@ -0,0 +1,13 @@ + + +
+

Question {currentQuestion.v + 1} of {totalQuetions.v} is beeing awnsered

+
+
+
+
diff --git a/src/routes/host/[gamePin]/components/DuringGame/display.svelte b/src/routes/host/[gamePin]/components/DuringGame/display.svelte new file mode 100644 index 0000000..c6d1a1b --- /dev/null +++ b/src/routes/host/[gamePin]/components/DuringGame/display.svelte @@ -0,0 +1,9 @@ + + +

HOSTING

+ + diff --git a/src/routes/host/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte b/src/routes/host/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte new file mode 100644 index 0000000..ced3664 --- /dev/null +++ b/src/routes/host/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte @@ -0,0 +1,6 @@ + + +{playerName} diff --git a/src/routes/host/[gamePin]/components/lobby/PlayersGUI/players.svelte b/src/routes/host/[gamePin]/components/lobby/PlayersGUI/players.svelte new file mode 100644 index 0000000..de8b651 --- /dev/null +++ b/src/routes/host/[gamePin]/components/lobby/PlayersGUI/players.svelte @@ -0,0 +1,12 @@ + + +

Players Joined:

+

(Total Players: {players.v.length})

+
+ {#each players.v as playerName} + + {/each} +
diff --git a/src/routes/host/[gamePin]/components/lobby/buttons/startGame.svelte b/src/routes/host/[gamePin]/components/lobby/buttons/startGame.svelte new file mode 100644 index 0000000..4c6e8ac --- /dev/null +++ b/src/routes/host/[gamePin]/components/lobby/buttons/startGame.svelte @@ -0,0 +1,12 @@ + + + diff --git a/src/routes/host/[gamePin]/components/lobby/display.svelte b/src/routes/host/[gamePin]/components/lobby/display.svelte new file mode 100644 index 0000000..3cccce9 --- /dev/null +++ b/src/routes/host/[gamePin]/components/lobby/display.svelte @@ -0,0 +1,15 @@ + + +

HOSTING

+

Game Pin:

+

+ {gamePin} +

+ + diff --git a/src/routes/host/[gamePin]/logic/GetCurrentPlayers.js b/src/routes/host/[gamePin]/logic/GetCurrentPlayers.js new file mode 100644 index 0000000..1eac14a --- /dev/null +++ b/src/routes/host/[gamePin]/logic/GetCurrentPlayers.js @@ -0,0 +1,18 @@ +import { supabase } from "$lib/supabase.js"; +import { players } from "./HostsData.svelte.js"; + +export async function GetCurrentPlayers(gamePin) { + const { data, error } = await supabase + .from("players") + .select("playername") + .eq("gameid", Number(gamePin)); + + console.log("Current players data:", JSON.stringify(data)); + + if (error) { + console.error("Error fetching players:", error); + return; + } + + players.v = data ? data.map(player => player.playername) : []; +} diff --git a/src/routes/host/[gamePin]/logic/HostsData.svelte.js b/src/routes/host/[gamePin]/logic/HostsData.svelte.js new file mode 100644 index 0000000..c1d8316 --- /dev/null +++ b/src/routes/host/[gamePin]/logic/HostsData.svelte.js @@ -0,0 +1,9 @@ +export let players = $state({ v: [] }); +export let Status = $state({ v: "lobby" }); +export let questions = $state({ v: [] }); +export let CurrentQuestion = $state({ v: -1 }); + +export let currentQuestion = $state({ v: 0 }); +export let totalQuetions = $state({ v: 3 }); +export let PeopleAwnseredQ = $state({ v: 0 }); +export let Totalplayers = $state({ v: 3 }); diff --git a/src/routes/host/[gamePin]/logic/UpdatePlayersList.js b/src/routes/host/[gamePin]/logic/UpdatePlayersList.js new file mode 100644 index 0000000..757ca4b --- /dev/null +++ b/src/routes/host/[gamePin]/logic/UpdatePlayersList.js @@ -0,0 +1,26 @@ +import { supabase } from "$lib/supabase.js"; +import { players } from "./HostsData.svelte.js"; + +export let LobbyConnection; + +function onNewPlayer(Newplayers) { + players.v.push(Newplayers.playername); +} + +export async function AutoUpdatePlayersList(gamePin) { + LobbyConnection = supabase + .channel("players-realtime") + .on( + "postgres_changes", + { + event: "INSERT", + schema: "public", + table: "players", + filter: `gameid=eq.${gamePin}`, + }, + (payload) => { + onNewPlayer(payload.new); + }, + ) + .subscribe(); +} diff --git a/src/routes/host/[gamePin]/logic/startGame.js b/src/routes/host/[gamePin]/logic/startGame.js new file mode 100644 index 0000000..5941e99 --- /dev/null +++ b/src/routes/host/[gamePin]/logic/startGame.js @@ -0,0 +1,25 @@ +import { supabase } from "$lib/supabase.js"; +import { LobbyConnection } from "./UpdatePlayersList.js"; +import { questions, Status, CurrentQuestion, currentQuestion } from "./HostsData.svelte.js"; + +export async function startGame(gamePin) { + await supabase.removeChannel(LobbyConnection); + + Status.v = "started"; + + const { data } = await supabase + .from("questions") + .select("*") + .eq("gameid", Number(gamePin)) + .order("id", { ascending: true }); + questions.v = data; + + CurrentQuestion.v = 0; + + await supabase + .from("games") + .update({ status: `question-${currentQuestion.v}` }) + .eq("gamepin", gamePin); + + +} diff --git a/src/routes/join/+page.svelte b/src/routes/join/+page.svelte index bf7df82..f92c8b0 100644 --- a/src/routes/join/+page.svelte +++ b/src/routes/join/+page.svelte @@ -1,13 +1,15 @@
-
+

Join a game here

{:else} - + + + +
+
diff --git a/src/routes/play/[gamePin]/components/lobby/display.svelte b/src/routes/play/[gamePin]/components/lobby/display.svelte index eb04623..aeb8f44 100644 --- a/src/routes/play/[gamePin]/components/lobby/display.svelte +++ b/src/routes/play/[gamePin]/components/lobby/display.svelte @@ -5,7 +5,7 @@ let gamePin = props.gamePin; -

HOSTING

+

PLAYING

Game Pin:

{gamePin} From 63bd6cb8ef4c18e794be5dcd6d54aa58bc3dca25 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sat, 17 May 2025 14:11:22 +0530 Subject: [PATCH 14/31] fix vercle 2 --- src/app.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app.html b/src/app.html index 77a5ff5..a158320 100644 --- a/src/app.html +++ b/src/app.html @@ -1,12 +1,12 @@ - + %sveltekit.head% - -
%sveltekit.body%
+ +
%sveltekit.body%
From 3ad30b476a4219a28d2ea93645634e4a2b1b76b8 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sat, 17 May 2025 14:12:52 +0530 Subject: [PATCH 15/31] fix vercle 3 --- .prettierrc | 8 +++++--- package.json | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.prettierrc b/.prettierrc index 7ebb855..69660f4 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,7 +1,7 @@ { "useTabs": true, - "singleQuote": true, - "trailingComma": "none", + "singleQuote": false, + "trailingComma": "all", "printWidth": 100, "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], "overrides": [ @@ -11,5 +11,7 @@ "parser": "svelte" } } - ] + ], + "tabWidth": 4, + "svelteAllowShorthand": true } diff --git a/package.json b/package.json index 2735ccf..7b25e2b 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", + "@tailwindcss/postcss": "^4.1.6", "@tailwindcss/vite": "^4.0.0", + "autoprefixer": "^10.4.21", "eslint-config-prettier": "^10.0.1", "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", @@ -23,5 +25,8 @@ "svelte": "^5.0.0", "tailwindcss": "^4.0.0", "vite": "^6.0.0" + }, + "dependencies": { + "@supabase/supabase-js": "^2.49.4" } } From 8e1cfbcb6f8e98bc37ffa4270c61943b4588b7c1 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sun, 18 May 2025 12:42:44 +0530 Subject: [PATCH 16/31] rBD IS WORKING!!!! at least for now! --- jsconfig.json | 3 +- package.json | 2 +- src/routes/create/logic/InsertGameInDB.js | 2 +- src/routes/create/logic/StartGame.js | 17 ++-- .../DuringGame/QuetionsAwnsred.svelte | 2 +- src/routes/host/[gamePin]/logic/GameOver.js | 7 ++ .../host/[gamePin]/logic/HostsData.svelte.js | 2 +- .../host/[gamePin]/logic/WaitForAwnser.js | 32 ++++++++ .../[gamePin]/logic/onNewPlayerAwnsered.js | 23 ++++++ src/routes/host/[gamePin]/logic/startGame.js | 9 +-- src/routes/join/logic/InsertPlayerInDB.js | 15 ++-- src/routes/join/logic/joinGame.js | 9 +-- src/routes/play/[gamePin]/+page.js | 2 +- src/routes/play/[gamePin]/+page.svelte | 11 ++- .../DuringGame/PeopleAwnsered.svelte | 13 --- .../DuringGame/QuetionsAwnsred.svelte | 13 --- .../components/DuringGame/display.svelte | 9 --- .../awnseringQuetions/Awnsers.svelte | 22 +++++ .../awnseringQuetions/ProgressBar.svelte | 13 +++ .../buttons/SelectFirst.svelte | 4 + .../buttons/submitAwnser.svelte | 9 +++ .../awnseringQuetions/display.svelte | 28 +++++++ .../awnseringQuetions/text/Quetion.svelte | 7 ++ .../awnseringQuetions/text/wait.svelte | 1 + .../play/[gamePin]/logic/HostsData.svelte.js | 16 ++-- .../[gamePin]/logic/IntializeGameStart.js | 22 +++++ src/routes/play/[gamePin]/logic/NewStatus.js | 41 ++++++++++ .../play/[gamePin]/logic/SubmitAnswer.js | 31 +++++++ src/routes/play/[gamePin]/logic/startGame.js | 4 +- src/routes/results/[gamePin]/+page.js | 5 ++ src/routes/results/[gamePin]/+page.svelte | 81 +++++++++++++++++++ 31 files changed, 374 insertions(+), 81 deletions(-) create mode 100644 src/routes/host/[gamePin]/logic/GameOver.js create mode 100644 src/routes/host/[gamePin]/logic/WaitForAwnser.js create mode 100644 src/routes/host/[gamePin]/logic/onNewPlayerAwnsered.js delete mode 100644 src/routes/play/[gamePin]/components/DuringGame/PeopleAwnsered.svelte delete mode 100644 src/routes/play/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte delete mode 100644 src/routes/play/[gamePin]/components/DuringGame/display.svelte create mode 100644 src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte create mode 100644 src/routes/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte create mode 100644 src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte create mode 100644 src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte create mode 100644 src/routes/play/[gamePin]/components/awnseringQuetions/display.svelte create mode 100644 src/routes/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte create mode 100644 src/routes/play/[gamePin]/components/awnseringQuetions/text/wait.svelte create mode 100644 src/routes/play/[gamePin]/logic/IntializeGameStart.js create mode 100644 src/routes/play/[gamePin]/logic/NewStatus.js create mode 100644 src/routes/play/[gamePin]/logic/SubmitAnswer.js create mode 100644 src/routes/results/[gamePin]/+page.js create mode 100644 src/routes/results/[gamePin]/+page.svelte diff --git a/jsconfig.json b/jsconfig.json index d99405d..fd2b2b8 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -7,6 +7,5 @@ "module": "es2015", "types": ["svelte"] }, - "include": ["src/**/*"], - "exclude": ["node_modules/*"], + "exclude": ["**/node_modules/**", "**/build/**", "**/.svelte-kit/**", "**/out/**", "!src/**"], } diff --git a/package.json b/package.json index 7b25e2b..42d38d1 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.0.1", "type": "module", "scripts": { - "dev": "vite dev", + "dev": "vite dev --host", "build": "vite build", "preview": "vite preview", "prepare": "svelte-kit sync || echo ''", diff --git a/src/routes/create/logic/InsertGameInDB.js b/src/routes/create/logic/InsertGameInDB.js index 229396f..8502ced 100644 --- a/src/routes/create/logic/InsertGameInDB.js +++ b/src/routes/create/logic/InsertGameInDB.js @@ -1,7 +1,7 @@ import { supabase } from '$lib/supabase'; export async function createGame(questions, gamePin) { - // Insert the game into the GAMES table + const { data: gameData, error: gameError } = await supabase.from('games').insert({ creator: 'anonymous', creationdate: new Date().toISOString(), diff --git a/src/routes/create/logic/StartGame.js b/src/routes/create/logic/StartGame.js index eaa080e..d734c7a 100644 --- a/src/routes/create/logic/StartGame.js +++ b/src/routes/create/logic/StartGame.js @@ -1,18 +1,17 @@ -import { goto } from '$app/navigation'; -import { createGame } from './InsertGameInDB.js'; -import { questions } from './GameCreateData.svelte.js'; +import { createGame } from "./InsertGameInDB.js"; +import { questions } from "./GameCreateData.svelte.js"; export async function startGame() { - if (questions.v.some((q) => q.name === '')) return alert('Please fill all questions'); - if (questions.v.some((q) => q.answers.some((a) => a === ''))) return alert('Fill all options'); + if (questions.v.some((q) => q.name === "")) return alert("Please fill all questions"); + if (questions.v.some((q) => q.answers.some((a) => a === ""))) return alert("Fill all options"); if (questions.v.some((q) => q.correctAnswer === undefined)) - return alert('Select correct answers'); + return alert("Select correct answers"); const gamePin = Math.floor(Math.random() * 1000000) .toString() - .padStart(6, '0'); + .padStart(6, "0"); - createGame(questions.v, gamePin); + await createGame(questions.v, gamePin); - goto('/host/' + gamePin); + window.location.href = "/host/" + gamePin; } diff --git a/src/routes/host/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte b/src/routes/host/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte index c51c04d..b12bb08 100644 --- a/src/routes/host/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte +++ b/src/routes/host/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte @@ -7,7 +7,7 @@

diff --git a/src/routes/host/[gamePin]/logic/GameOver.js b/src/routes/host/[gamePin]/logic/GameOver.js new file mode 100644 index 0000000..6749660 --- /dev/null +++ b/src/routes/host/[gamePin]/logic/GameOver.js @@ -0,0 +1,7 @@ +import { supabase } from "$lib/supabase.js"; + +export async function GameOver(GamePin) { + await supabase.from("games").update({ status: `completed` }).eq("gamepin", GamePin); + + window.location.replace("/results/" + GamePin + "?playerID=host-null"); +} diff --git a/src/routes/host/[gamePin]/logic/HostsData.svelte.js b/src/routes/host/[gamePin]/logic/HostsData.svelte.js index c1d8316..fae9f0f 100644 --- a/src/routes/host/[gamePin]/logic/HostsData.svelte.js +++ b/src/routes/host/[gamePin]/logic/HostsData.svelte.js @@ -1,6 +1,6 @@ export let players = $state({ v: [] }); export let Status = $state({ v: "lobby" }); -export let questions = $state({ v: [] }); +export let questions = { v: [] }; export let CurrentQuestion = $state({ v: -1 }); export let currentQuestion = $state({ v: 0 }); diff --git a/src/routes/host/[gamePin]/logic/WaitForAwnser.js b/src/routes/host/[gamePin]/logic/WaitForAwnser.js new file mode 100644 index 0000000..1812132 --- /dev/null +++ b/src/routes/host/[gamePin]/logic/WaitForAwnser.js @@ -0,0 +1,32 @@ +import { supabase } from "$lib/supabase.js"; +import { onNewPlayerAwnsered } from "./onNewPlayerAwnsered.js"; +import { currentQuestion, questions } from "./HostsData.svelte.js"; + +let WaitingForAwnserConection; + +export async function WaitForAwnser(questionid, gamePin) { + if (questionid != 0) { + await supabase.removeChannel(WaitingForAwnserConection); + } + + await supabase + .from("games") + .update({ status: `question-${currentQuestion.v}` }) + .eq("gamepin", gamePin); + + WaitingForAwnserConection = supabase + .channel("answeredby-realtime") + .on( + "postgres_changes", + { + event: "INSERT", + schema: "public", + table: "answeredby", + filter: `questionid=eq.${questions.v[questionid].id}`, + }, + (payload) => { + onNewPlayerAwnsered(gamePin); + }, + ) + .subscribe(); +} diff --git a/src/routes/host/[gamePin]/logic/onNewPlayerAwnsered.js b/src/routes/host/[gamePin]/logic/onNewPlayerAwnsered.js new file mode 100644 index 0000000..8c1176d --- /dev/null +++ b/src/routes/host/[gamePin]/logic/onNewPlayerAwnsered.js @@ -0,0 +1,23 @@ +import { + Totalplayers, + PeopleAwnseredQ, + currentQuestion, + totalQuetions, +} from "./HostsData.svelte.js"; +import { GameOver } from "./GameOver.js"; +import { WaitForAwnser } from "./WaitForAwnser.js"; + +export async function onNewPlayerAwnsered(GamePin) { + PeopleAwnseredQ.v++; + + if (PeopleAwnseredQ.v == Totalplayers.v) { + currentQuestion.v++; + if (currentQuestion.v == totalQuetions.v) { + GameOver(GamePin); + return; + } + PeopleAwnseredQ.v = 0; + + WaitForAwnser(currentQuestion.v, GamePin); + } +} diff --git a/src/routes/host/[gamePin]/logic/startGame.js b/src/routes/host/[gamePin]/logic/startGame.js index 5941e99..f0c88b1 100644 --- a/src/routes/host/[gamePin]/logic/startGame.js +++ b/src/routes/host/[gamePin]/logic/startGame.js @@ -1,6 +1,7 @@ import { supabase } from "$lib/supabase.js"; import { LobbyConnection } from "./UpdatePlayersList.js"; import { questions, Status, CurrentQuestion, currentQuestion } from "./HostsData.svelte.js"; +import { WaitForAwnser } from "./WaitForAwnser.js"; export async function startGame(gamePin) { await supabase.removeChannel(LobbyConnection); @@ -12,14 +13,10 @@ export async function startGame(gamePin) { .select("*") .eq("gameid", Number(gamePin)) .order("id", { ascending: true }); + questions.v = data; CurrentQuestion.v = 0; - await supabase - .from("games") - .update({ status: `question-${currentQuestion.v}` }) - .eq("gamepin", gamePin); - - + WaitForAwnser(0, gamePin); } diff --git a/src/routes/join/logic/InsertPlayerInDB.js b/src/routes/join/logic/InsertPlayerInDB.js index 8669847..9c696c7 100644 --- a/src/routes/join/logic/InsertPlayerInDB.js +++ b/src/routes/join/logic/InsertPlayerInDB.js @@ -1,14 +1,19 @@ import { supabase } from "$lib/supabase"; export async function addPlayer(name, gamePin) { - const { error } = await supabase.from("players").insert({ - gameid: gamePin, - score: 0, - playername: name, - }); + const { data, error } = await supabase + .from("players") + .insert({ + gameid: gamePin, + score: 0, + playername: name, + }) + .select("id"); if (error) { alert("Failed to join game: " + error.message + "\n\nPlease try again."); return; } + + return data[0].id; } diff --git a/src/routes/join/logic/joinGame.js b/src/routes/join/logic/joinGame.js index bb80720..dacf139 100644 --- a/src/routes/join/logic/joinGame.js +++ b/src/routes/join/logic/joinGame.js @@ -1,4 +1,3 @@ -import { goto } from "$app/navigation"; import { addPlayer } from "./InsertPlayerInDB.js"; import { validateGamePin } from "./validateGamePin.js"; import { Checking } from "./JoinGameData.svelte.js"; @@ -12,11 +11,9 @@ export async function joinGame(pin, name) { return; } - addPlayer(name, pin); - + let id = await addPlayer(name, pin); + Checking.v = false; - goto("/play/" + pin, { - state: { name }, - }); + window.location.href = `./play/${pin}?name=${name}&playerid=${id}`; } diff --git a/src/routes/play/[gamePin]/+page.js b/src/routes/play/[gamePin]/+page.js index 43d524c..aea5dc3 100644 --- a/src/routes/play/[gamePin]/+page.js +++ b/src/routes/play/[gamePin]/+page.js @@ -2,4 +2,4 @@ export function load({ params }) { return { gamePin: params.gamePin }; -} \ No newline at end of file +} diff --git a/src/routes/play/[gamePin]/+page.svelte b/src/routes/play/[gamePin]/+page.svelte index 2719c2e..d102bb5 100644 --- a/src/routes/play/[gamePin]/+page.svelte +++ b/src/routes/play/[gamePin]/+page.svelte @@ -1,11 +1,12 @@ @@ -23,7 +28,7 @@ {#if Status.v == "lobby"} {:else if Status.v == "started"} - + {/if} diff --git a/src/routes/play/[gamePin]/components/DuringGame/PeopleAwnsered.svelte b/src/routes/play/[gamePin]/components/DuringGame/PeopleAwnsered.svelte deleted file mode 100644 index 672183b..0000000 --- a/src/routes/play/[gamePin]/components/DuringGame/PeopleAwnsered.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - -
-

{PeopleAwnseredQ.v} out of {Totalplayers.v} have awnsered the quetion

-
-
-
-
diff --git a/src/routes/play/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte b/src/routes/play/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte deleted file mode 100644 index c51c04d..0000000 --- a/src/routes/play/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - -
-

Question {currentQuestion.v + 1} of {totalQuetions.v} is beeing awnsered

-
-
-
-
diff --git a/src/routes/play/[gamePin]/components/DuringGame/display.svelte b/src/routes/play/[gamePin]/components/DuringGame/display.svelte deleted file mode 100644 index c6d1a1b..0000000 --- a/src/routes/play/[gamePin]/components/DuringGame/display.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -

HOSTING

- - diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte new file mode 100644 index 0000000..b8b3e9b --- /dev/null +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte @@ -0,0 +1,22 @@ + + +
+ {#each questions.v.answers as answer, index} +
+ + +
+ {/each} +
diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte new file mode 100644 index 0000000..34de775 --- /dev/null +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte @@ -0,0 +1,13 @@ + + +
+

Question {CurrentQuestion.v + 1} of {TotalQuestions.v}

+
+
+
+
diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte new file mode 100644 index 0000000..7e6470e --- /dev/null +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte @@ -0,0 +1,4 @@ + diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte new file mode 100644 index 0000000..d461b19 --- /dev/null +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte @@ -0,0 +1,9 @@ + + + diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/display.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/display.svelte new file mode 100644 index 0000000..3b77ab0 --- /dev/null +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/display.svelte @@ -0,0 +1,28 @@ + + +
+
+ + {#if CurrentQuestion.v != null} + + + {#if Selected.v != null} + + {:else} + + {/if} + {:else} + + {/if} +
+
diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte new file mode 100644 index 0000000..b5d79fa --- /dev/null +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte @@ -0,0 +1,7 @@ + + +

+ Q{CurrentQuestion.v + 1}. {questions.v.question} +

diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/text/wait.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/text/wait.svelte new file mode 100644 index 0000000..32d5985 --- /dev/null +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/text/wait.svelte @@ -0,0 +1 @@ +

Please wait for everyone else to answer the question.

diff --git a/src/routes/play/[gamePin]/logic/HostsData.svelte.js b/src/routes/play/[gamePin]/logic/HostsData.svelte.js index c1d8316..d596117 100644 --- a/src/routes/play/[gamePin]/logic/HostsData.svelte.js +++ b/src/routes/play/[gamePin]/logic/HostsData.svelte.js @@ -1,9 +1,9 @@ -export let players = $state({ v: [] }); +export let players = $state({ v: {} }); export let Status = $state({ v: "lobby" }); -export let questions = $state({ v: [] }); -export let CurrentQuestion = $state({ v: -1 }); - -export let currentQuestion = $state({ v: 0 }); -export let totalQuetions = $state({ v: 3 }); -export let PeopleAwnseredQ = $state({ v: 0 }); -export let Totalplayers = $state({ v: 3 }); +export let questions = $state({ v: {} }); +export let CurrentQuestion = $state({ v: null }); +export let TotalQuestions = $state({ v: 0 }); +export let Selected = $state({ v: null }); +export let isWait = $state({ v: true }); +export let name = $state({ v: "" }); +export let playerid = $state({ v: null }); diff --git a/src/routes/play/[gamePin]/logic/IntializeGameStart.js b/src/routes/play/[gamePin]/logic/IntializeGameStart.js new file mode 100644 index 0000000..cdd12c8 --- /dev/null +++ b/src/routes/play/[gamePin]/logic/IntializeGameStart.js @@ -0,0 +1,22 @@ +import { supabase } from "$lib/supabase.js"; +import { NewStatus } from "./NewStatus.js"; + +export async function IntializeGameStart(gamepin) { + supabase + .channel(`game_status_${gamepin}`) + .on( + "postgres_changes", + { + event: "UPDATE", + schema: "public", + table: "games", + filter: `gamepin=eq.${gamepin}`, + }, + (payload) => { + if (payload.new.status) { + NewStatus(payload.new.status, gamepin); + } + }, + ) + .subscribe(); +} diff --git a/src/routes/play/[gamePin]/logic/NewStatus.js b/src/routes/play/[gamePin]/logic/NewStatus.js new file mode 100644 index 0000000..9e427ba --- /dev/null +++ b/src/routes/play/[gamePin]/logic/NewStatus.js @@ -0,0 +1,41 @@ +import { + CurrentQuestion, + Status, + questions, + isWait, + Selected, + playerid, +} from "./HostsData.svelte.js"; +import { supabase } from "$lib/supabase.js"; + +export async function NewStatus(NewStatus, gamePin) { + if (NewStatus == "completed") { + window.location.replace("/results/" + gamePin + "?playerID=" + playerid.v); + return; + } + + Status.v = "started"; + CurrentQuestion.v = Number(NewStatus.replace("question-", "")); + + const { data: questionsData } = await supabase + .from("questions") + .select("id,questionstext,correctanswer") + .eq("gameid", Number(gamePin)) + .order("id", { ascending: true }); + + const { data: answers } = await supabase + .from("answers") + .select("content") + .eq("questionid", Number(questionsData[CurrentQuestion.v].id)) + .order("id", { ascending: true }); + + questions.v = { + question: questionsData[CurrentQuestion.v].questionstext, + correctAnswer: questionsData[CurrentQuestion.v].correctanswer, + answers: answers.map((answer) => answer.content), + questionid: questionsData[CurrentQuestion.v].id, + }; + + isWait.v = false; + Selected.v = null; +} diff --git a/src/routes/play/[gamePin]/logic/SubmitAnswer.js b/src/routes/play/[gamePin]/logic/SubmitAnswer.js new file mode 100644 index 0000000..add80c2 --- /dev/null +++ b/src/routes/play/[gamePin]/logic/SubmitAnswer.js @@ -0,0 +1,31 @@ +import { CurrentQuestion, Selected, questions, playerid } from "./HostsData.svelte.js"; +import { supabase } from "$lib/supabase.js"; + +export async function SubmitAnswer() { + CurrentQuestion.v = null; + + if (Selected.v == questions.v.correctAnswer) { + await supabase + .from("answeredby") + .insert([ + { questionid: questions.v.questionid, nameofanswerer: playerid.v, correct: true }, + ]) + .select(); + + let { data: score } = await supabase.from("players").select("score").eq("id", playerid.v); + + await supabase + .from("players") + .update({ score: score[0].score + 1 }) + .eq("id", playerid.v) + .select(); + + } else { + await supabase + .from("answeredby") + .insert([ + { questionid: questions.v.questionid, nameofanswerer: playerid.v, correct: false }, + ]) + .select(); + } +} diff --git a/src/routes/play/[gamePin]/logic/startGame.js b/src/routes/play/[gamePin]/logic/startGame.js index 5941e99..8a2fe31 100644 --- a/src/routes/play/[gamePin]/logic/startGame.js +++ b/src/routes/play/[gamePin]/logic/startGame.js @@ -1,6 +1,6 @@ import { supabase } from "$lib/supabase.js"; import { LobbyConnection } from "./UpdatePlayersList.js"; -import { questions, Status, CurrentQuestion, currentQuestion } from "./HostsData.svelte.js"; +import { questions, Status, CurrentQuestion } from "./HostsData.svelte.js"; export async function startGame(gamePin) { await supabase.removeChannel(LobbyConnection); @@ -18,7 +18,7 @@ export async function startGame(gamePin) { await supabase .from("games") - .update({ status: `question-${currentQuestion.v}` }) + .update({ status: `question-${CurrentQuestion.v}` }) .eq("gamepin", gamePin); diff --git a/src/routes/results/[gamePin]/+page.js b/src/routes/results/[gamePin]/+page.js new file mode 100644 index 0000000..aea5dc3 --- /dev/null +++ b/src/routes/results/[gamePin]/+page.js @@ -0,0 +1,5 @@ +export function load({ params }) { + return { + gamePin: params.gamePin + }; +} diff --git a/src/routes/results/[gamePin]/+page.svelte b/src/routes/results/[gamePin]/+page.svelte new file mode 100644 index 0000000..33e76a1 --- /dev/null +++ b/src/routes/results/[gamePin]/+page.svelte @@ -0,0 +1,81 @@ + + +
+
+

Leaderboard

+ + {#each players as player, i} + {#if player.id == playerID} +
+
+ {i + 1} +
+ +
{player.playername}
+ +
+
+
+ +
{player.score} points
+
+ {:else} +
+
+ {i + 1} +
+ +
{player.playername}
+ +
+
+
+ +
{player.score} points
+
+ {/if} + {/each} + + +
+
From 29dc84e643194da394fd3ec9a4801f5b0ae77f8f Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sun, 18 May 2025 18:25:11 +0530 Subject: [PATCH 17/31] adding readme --- README.md | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index d0a8db1..c9e8381 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,26 @@ -# DB Diagrams +# DaKahootClone + +![DaKahootClone's logo](https://placehold.co/400x400?text=logo+[tba]) + +The best ever kahoot clone. + +A project by [RezHackXYZ](https://rezhack.xyz) for [Neighborhood](https://neighborhood.hackclub.com/) + +(⚠️ This project is one of a bunch of tools that are part of a larger project. +See the [original project repo](https://github.com/RezHackXYZ/ClassRoomStuff) for the full collection.) + +👉 **[Try It Now](https://kahoot-clone-rezhackxyz.vercel.app/)** + +--- + +## Tech Stack + +- SvelteKit +- JavaScript +- Supabase ## Current DB Diagram -```mermaid - erDiagram - GAMES { - int GamePIN PK - string gameStatus - json questions - jsonb players - } -``` - -## Goal MVP DB Diagram - ```mermaid erDiagram GAMES { @@ -48,6 +55,4 @@ QUESTIONS ||--o{ ANSWERS : has_answers QUESTIONS ||--o{ ANSWEREDBY : has_answeredby GAMES ||--o{ PLAYERS : has_players - - ``` From 2a4102438af894ed807f8e07dd714c19b9a9e16c Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sun, 18 May 2025 19:24:24 +0530 Subject: [PATCH 18/31] added logo to the readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c9e8381..b639930 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # DaKahootClone -![DaKahootClone's logo](https://placehold.co/400x400?text=logo+[tba]) +![DaKahootClone's logo](https://hc-cdn.hel1.your-objectstorage.com/s/v3/ddf135d610705bd8bb75ea59bd4e232e2b294e4b_group_12.svg) The best ever kahoot clone. From ad959266a574f24b7f63a67ab7e59d1eba4ee416 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sat, 24 May 2025 07:26:49 +0530 Subject: [PATCH 19/31] added 3 things: min 2 max 8 options in quetion, the quetion and awnser in the host panle too, clour coded and symbol for awnsers. --- src/app.css | 1 - src/lib/config.json | 60 +++++++++++++++++++ src/routes/+layout.svelte | 6 +- .../components/Questions/question.svelte | 33 ++++++++-- .../components/buttons/WaitStartGame.svelte | 18 ++++++ src/routes/create/logic/StartGame.js | 2 + src/routes/host/[gamePin]/+page.svelte | 2 +- .../DuringGame/PeopleAwnsered.svelte | 4 +- .../DuringGame/QuetionsAwnsred.svelte | 13 ---- .../awnseringQuetions/Awnsers.svelte | 23 +++++++ .../awnseringQuetions/ProgressBar.svelte | 13 ++++ .../awnseringQuetions/display.svelte | 9 +++ .../awnseringQuetions/text/Quetion.svelte | 7 +++ .../components/DuringGame/display.svelte | 5 +- .../host/[gamePin]/logic/HostsData.svelte.js | 5 +- .../host/[gamePin]/logic/WaitForAwnser.js | 21 ++++++- src/routes/host/[gamePin]/logic/startGame.js | 23 ++++++- .../awnseringQuetions/Awnsers.svelte | 18 +++++- .../buttons/SelectFirst.svelte | 17 ++++-- .../buttons/submitAwnser.svelte | 4 +- .../lobby/PlayersGUI/players.svelte | 2 +- .../[gamePin]/components/lobby/display.svelte | 9 ++- src/routes/play/[gamePin]/logic/NewStatus.js | 3 + src/routes/play/[gamePin]/logic/startGame.js | 6 +- 24 files changed, 259 insertions(+), 45 deletions(-) delete mode 100644 src/app.css create mode 100644 src/lib/config.json create mode 100644 src/routes/create/components/buttons/WaitStartGame.svelte delete mode 100644 src/routes/host/[gamePin]/components/DuringGame/QuetionsAwnsred.svelte create mode 100644 src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte create mode 100644 src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte create mode 100644 src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte create mode 100644 src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte diff --git a/src/app.css b/src/app.css deleted file mode 100644 index d4b5078..0000000 --- a/src/app.css +++ /dev/null @@ -1 +0,0 @@ -@import 'tailwindcss'; diff --git a/src/lib/config.json b/src/lib/config.json new file mode 100644 index 0000000..a08017a --- /dev/null +++ b/src/lib/config.json @@ -0,0 +1,60 @@ +{ + "AnswersSymbolAndColor": [ + { + "Color": "#6E0000", + "SelectedColor": "#AA2222", + "HoverBorderColor": "#FF5D5D", + "SelectedBorderColor": "#FF0000", + "Symbol": "nf-md-triangle" + }, + { + "Color": "#00316E", + "SelectedColor": "#2255AA", + "HoverBorderColor": "#5D9CFF", + "SelectedBorderColor": "#0000FF", + "Symbol": "nf-fa-square" + }, + { + "Color": "#6E6E00", + "SelectedColor": "#AAAA22", + "HoverBorderColor": "#FFFF5D", + "SelectedBorderColor": "#DDFF00", + "Symbol": "nf-fa-circle" + }, + { + "Color": "#006E00", + "SelectedColor": "#22AA22", + "HoverBorderColor": "#5DFF5D", + "SelectedBorderColor": "#00ff00", + "Symbol": "nf-fa-diamond" + }, + { + "Color": "#4B0082", + "SelectedColor": "#7F33B5", + "HoverBorderColor": "#B066FF", + "SelectedBorderColor": "#9932CC", + "Symbol": "nf-md-star" + }, + { + "Color": "#FF8C00", + "SelectedColor": "#FFB347", + "HoverBorderColor": "#FFD580", + "SelectedBorderColor": "#FFA500", + "Symbol": "nf-md-hexagon" + }, + { + "Color": "#008B8B", + "SelectedColor": "#33CCCC", + "HoverBorderColor": "#66FFFF", + "SelectedBorderColor": "#00CED1", + "Symbol": "nf-md-octagon" + }, + { + "Color": "#8B4513", + "SelectedColor": "#CD853F", + "HoverBorderColor": "#DEB887", + "SelectedBorderColor": "#A0522D", + "Symbol": "nf-md-heart" + } + ] +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 1fde110..6e6f01f 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -5,9 +5,13 @@
{@render children()}
diff --git a/src/routes/create/components/Questions/question.svelte b/src/routes/create/components/Questions/question.svelte index 33c5db0..272977d 100644 --- a/src/routes/create/components/Questions/question.svelte +++ b/src/routes/create/components/Questions/question.svelte @@ -1,7 +1,7 @@ + + diff --git a/src/routes/create/logic/StartGame.js b/src/routes/create/logic/StartGame.js index d734c7a..3615863 100644 --- a/src/routes/create/logic/StartGame.js +++ b/src/routes/create/logic/StartGame.js @@ -2,6 +2,8 @@ import { createGame } from "./InsertGameInDB.js"; import { questions } from "./GameCreateData.svelte.js"; export async function startGame() { + + if (questions.v.some((q) => q.name === "")) return alert("Please fill all questions"); if (questions.v.some((q) => q.answers.some((a) => a === ""))) return alert("Fill all options"); if (questions.v.some((q) => q.correctAnswer === undefined)) diff --git a/src/routes/host/[gamePin]/+page.svelte b/src/routes/host/[gamePin]/+page.svelte index 2719c2e..a57c47e 100644 --- a/src/routes/host/[gamePin]/+page.svelte +++ b/src/routes/host/[gamePin]/+page.svelte @@ -26,4 +26,4 @@ {/if} - + \ No newline at end of file diff --git a/src/routes/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte b/src/routes/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte index 672183b..c94ad33 100644 --- a/src/routes/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte +++ b/src/routes/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte @@ -2,8 +2,8 @@ import { PeopleAwnseredQ, Totalplayers } from "./../../logic/HostsData.svelte.js"; -
-

{PeopleAwnseredQ.v} out of {Totalplayers.v} have awnsered the quetion

+
+

{PeopleAwnseredQ.v} out of {Totalplayers.v} have answered the question

- import { currentQuestion, totalQuetions } from "./../../logic/HostsData.svelte.js"; - - -
-

Question {currentQuestion.v + 1} of {totalQuetions.v} is beeing awnsered

-
-
-
-
diff --git a/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte b/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte new file mode 100644 index 0000000..0ba2cbe --- /dev/null +++ b/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte @@ -0,0 +1,23 @@ + + +
+ {#each CurrentQuestionDetails.v.answers as answer, index} +
+ + +
+ {/each} +
diff --git a/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte b/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte new file mode 100644 index 0000000..c2eed42 --- /dev/null +++ b/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte @@ -0,0 +1,13 @@ + + +
+

Question {currentQuestion.v + 1} of {totalQuetions.v}

+
+
+
+
diff --git a/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte b/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte new file mode 100644 index 0000000..b92f42b --- /dev/null +++ b/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte @@ -0,0 +1,9 @@ + + + + + diff --git a/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte b/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte new file mode 100644 index 0000000..8fd3606 --- /dev/null +++ b/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte @@ -0,0 +1,7 @@ + + +

+ Q{currentQuestion.v + 1}. {CurrentQuestionDetails.v.question} +

diff --git a/src/routes/host/[gamePin]/components/DuringGame/display.svelte b/src/routes/host/[gamePin]/components/DuringGame/display.svelte index c6d1a1b..9952173 100644 --- a/src/routes/host/[gamePin]/components/DuringGame/display.svelte +++ b/src/routes/host/[gamePin]/components/DuringGame/display.svelte @@ -1,9 +1,8 @@

HOSTING

- + diff --git a/src/routes/host/[gamePin]/logic/HostsData.svelte.js b/src/routes/host/[gamePin]/logic/HostsData.svelte.js index fae9f0f..f384d09 100644 --- a/src/routes/host/[gamePin]/logic/HostsData.svelte.js +++ b/src/routes/host/[gamePin]/logic/HostsData.svelte.js @@ -1,9 +1,10 @@ export let players = $state({ v: [] }); export let Status = $state({ v: "lobby" }); -export let questions = { v: [] }; -export let CurrentQuestion = $state({ v: -1 }); +export let questions = { v: {} }; export let currentQuestion = $state({ v: 0 }); export let totalQuetions = $state({ v: 3 }); export let PeopleAwnseredQ = $state({ v: 0 }); export let Totalplayers = $state({ v: 3 }); + +export let CurrentQuestionDetails = $state({ v: {} }); diff --git a/src/routes/host/[gamePin]/logic/WaitForAwnser.js b/src/routes/host/[gamePin]/logic/WaitForAwnser.js index 1812132..39f6cce 100644 --- a/src/routes/host/[gamePin]/logic/WaitForAwnser.js +++ b/src/routes/host/[gamePin]/logic/WaitForAwnser.js @@ -1,6 +1,6 @@ import { supabase } from "$lib/supabase.js"; import { onNewPlayerAwnsered } from "./onNewPlayerAwnsered.js"; -import { currentQuestion, questions } from "./HostsData.svelte.js"; +import { currentQuestion, questions, CurrentQuestionDetails } from "./HostsData.svelte.js"; let WaitingForAwnserConection; @@ -29,4 +29,23 @@ export async function WaitForAwnser(questionid, gamePin) { }, ) .subscribe(); + + const { data: questionsData } = await supabase + .from("questions") + .select("id,questionstext,correctanswer") + .eq("gameid", Number(gamePin)) + .order("id", { ascending: true }); + + const { data: answers } = await supabase + .from("answers") + .select("content") + .eq("questionid", Number(questionsData[currentQuestion.v].id)) + .order("id", { ascending: true }); + + CurrentQuestionDetails.v = { + question: questionsData[currentQuestion.v].questionstext, + correctAnswer: questionsData[currentQuestion.v].correctanswer, + answers: answers.map((answer) => answer.content), + questionid: questionsData[currentQuestion.v].id, + }; } diff --git a/src/routes/host/[gamePin]/logic/startGame.js b/src/routes/host/[gamePin]/logic/startGame.js index f0c88b1..cbc2edc 100644 --- a/src/routes/host/[gamePin]/logic/startGame.js +++ b/src/routes/host/[gamePin]/logic/startGame.js @@ -1,9 +1,20 @@ import { supabase } from "$lib/supabase.js"; import { LobbyConnection } from "./UpdatePlayersList.js"; -import { questions, Status, CurrentQuestion, currentQuestion } from "./HostsData.svelte.js"; +import { + questions, + Status, + Totalplayers, + totalQuetions, + players, +} from "./HostsData.svelte.js"; import { WaitForAwnser } from "./WaitForAwnser.js"; export async function startGame(gamePin) { + if (players.v.length == 0) { + alert("you need at least 1 person to start the game!"); + return; + } + await supabase.removeChannel(LobbyConnection); Status.v = "started"; @@ -16,7 +27,15 @@ export async function startGame(gamePin) { questions.v = data; - CurrentQuestion.v = 0; + totalQuetions.v = data.length; + + const { data: playersData } = await supabase + .from("players") + .select("id") + .eq("gameid", Number(gamePin)) + .order("id", { ascending: true }); + + Totalplayers.v = playersData.length; WaitForAwnser(0, gamePin); } diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte index b8b3e9b..65fb34a 100644 --- a/src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte @@ -1,5 +1,6 @@
@@ -13,10 +14,23 @@ value={index} bind:group={Selected.v} /> + + + {answer} +
{/each}
diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte index 7e6470e..e57ee47 100644 --- a/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte @@ -1,4 +1,13 @@ - +
+ + +
diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte b/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte index d461b19..51b1633 100644 --- a/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte +++ b/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte @@ -5,5 +5,5 @@ + >Submit + \ No newline at end of file diff --git a/src/routes/play/[gamePin]/components/lobby/PlayersGUI/players.svelte b/src/routes/play/[gamePin]/components/lobby/PlayersGUI/players.svelte index de8b651..bcc3e2a 100644 --- a/src/routes/play/[gamePin]/components/lobby/PlayersGUI/players.svelte +++ b/src/routes/play/[gamePin]/components/lobby/PlayersGUI/players.svelte @@ -3,7 +3,7 @@ import PlayerBadge from "./playerBadge.svelte"; -

Players Joined:

+

Players Joined:

(Total Players: {players.v.length})

{#each players.v as playerName} diff --git a/src/routes/play/[gamePin]/components/lobby/display.svelte b/src/routes/play/[gamePin]/components/lobby/display.svelte index aeb8f44..9dcc0db 100644 --- a/src/routes/play/[gamePin]/components/lobby/display.svelte +++ b/src/routes/play/[gamePin]/components/lobby/display.svelte @@ -2,12 +2,17 @@ import Players from "./PlayersGUI/players.svelte"; let props = $props(); - let gamePin = props.gamePin; + let gamePin = props.gamePin;

PLAYING

+ +

Waiting for host to start the game

+ + + diff --git a/src/routes/play/[gamePin]/logic/NewStatus.js b/src/routes/play/[gamePin]/logic/NewStatus.js index 9e427ba..1788e07 100644 --- a/src/routes/play/[gamePin]/logic/NewStatus.js +++ b/src/routes/play/[gamePin]/logic/NewStatus.js @@ -5,6 +5,7 @@ import { isWait, Selected, playerid, + TotalQuestions, } from "./HostsData.svelte.js"; import { supabase } from "$lib/supabase.js"; @@ -23,6 +24,8 @@ export async function NewStatus(NewStatus, gamePin) { .eq("gameid", Number(gamePin)) .order("id", { ascending: true }); + TotalQuestions.v = questionsData.length; + const { data: answers } = await supabase .from("answers") .select("content") diff --git a/src/routes/play/[gamePin]/logic/startGame.js b/src/routes/play/[gamePin]/logic/startGame.js index 8a2fe31..74e752f 100644 --- a/src/routes/play/[gamePin]/logic/startGame.js +++ b/src/routes/play/[gamePin]/logic/startGame.js @@ -1,6 +1,6 @@ import { supabase } from "$lib/supabase.js"; import { LobbyConnection } from "./UpdatePlayersList.js"; -import { questions, Status, CurrentQuestion } from "./HostsData.svelte.js"; +import { questions, Status, CurrentQuestion, TotalQuestions } from "./HostsData.svelte.js"; export async function startGame(gamePin) { await supabase.removeChannel(LobbyConnection); @@ -12,7 +12,7 @@ export async function startGame(gamePin) { .select("*") .eq("gameid", Number(gamePin)) .order("id", { ascending: true }); - questions.v = data; + TotalQuestions.v = data.length; CurrentQuestion.v = 0; @@ -20,6 +20,4 @@ export async function startGame(gamePin) { .from("games") .update({ status: `question-${CurrentQuestion.v}` }) .eq("gamepin", gamePin); - - } From d1c8ae269b2b0b6748f669a4062171c2880d0dcf Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Sun, 25 May 2025 12:28:14 +0530 Subject: [PATCH 20/31] added ai! --- package.json | 2 +- src/lib/config.js | 133 ++++++++++++++++++ src/lib/config.json | 60 -------- src/routes/create/+page.svelte | 26 ++-- .../components/Questions/question.svelte | 12 +- .../buttons/GenerateOptionsUsingAI.svelte | 19 +++ .../buttons/GenerateQuetionsUsingAI.svelte | 14 ++ .../components/buttons/WaitStartGame.svelte | 4 +- .../create/logic/GameCreateData.svelte.js | 50 +++---- .../create/logic/GenerateOptionsUsingAI.js | 34 +++++ .../create/logic/GenerateQuestionsUsingAI.js | 38 +++++ src/routes/create/logic/InsertGameInDB.js | 29 ++-- src/routes/create/logic/StartGame.js | 9 +- .../awnseringQuetions/Awnsers.svelte | 9 +- .../awnseringQuetions/Awnsers.svelte | 18 +-- 15 files changed, 311 insertions(+), 146 deletions(-) create mode 100644 src/lib/config.js delete mode 100644 src/lib/config.json create mode 100644 src/routes/create/components/buttons/GenerateOptionsUsingAI.svelte create mode 100644 src/routes/create/components/buttons/GenerateQuetionsUsingAI.svelte create mode 100644 src/routes/create/logic/GenerateOptionsUsingAI.js create mode 100644 src/routes/create/logic/GenerateQuestionsUsingAI.js diff --git a/package.json b/package.json index 42d38d1..7b25e2b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.0.1", "type": "module", "scripts": { - "dev": "vite dev --host", + "dev": "vite dev", "build": "vite build", "preview": "vite preview", "prepare": "svelte-kit sync || echo ''", diff --git a/src/lib/config.js b/src/lib/config.js new file mode 100644 index 0000000..45391e8 --- /dev/null +++ b/src/lib/config.js @@ -0,0 +1,133 @@ +export let AnswersSymbolAndColorScheme = [ + { + color: "#6E0000", + selectedColor: "#AA2222", + hoverBorderColor: "#FF5D5D", + selectedBorderColor: "#FF0000", + symbol: "nf-md-triangle", + }, + { + color: "#00316E", + selectedColor: "#2255AA", + hoverBorderColor: "#5D9CFF", + selectedBorderColor: "#0000FF", + symbol: "nf-fa-square", + }, + { + color: "#6E6E00", + selectedColor: "#AAAA22", + hoverBorderColor: "#FFFF5D", + selectedBorderColor: "#DDFF00", + symbol: "nf-fa-circle", + }, + { + color: "#006E00", + selectedColor: "#22AA22", + hoverBorderColor: "#5DFF5D", + selectedBorderColor: "#00FF00", + symbol: "nf-fa-diamond", + }, + { + color: "#4B0082", + selectedColor: "#7F33B5", + hoverBorderColor: "#B066FF", + selectedBorderColor: "#9932CC", + symbol: "nf-md-star", + }, + { + color: "#FF8C00", + selectedColor: "#FFB347", + hoverBorderColor: "#FFD580", + selectedBorderColor: "#FFA500", + symbol: "nf-md-hexagon", + }, + { + color: "#008B8B", + selectedColor: "#33CCCC", + hoverBorderColor: "#66FFFF", + selectedBorderColor: "#00CED1", + symbol: "nf-md-octagon", + }, + { + color: "#8B4513", + selectedColor: "#CD853F", + hoverBorderColor: "#DEB887", + selectedBorderColor: "#A0522D", + symbol: "nf-md-heart", + }, +]; + +export let DefaultQuestions = [ + { + name: "What should you do when you're free?", + answers: ["Do something in real life!", "Play video games", "Code!", "Touch grass!"], + correctAnswer: 2, + }, + { + name: "Is RezHackXYZ the best programmer in the world?", + answers: ["Yes :)", "No :("], + correctAnswer: 0, + }, + { + name: "Best place in the world?", + answers: [ + "Google", + "Microsoft", + "Apple", + "Samsung", + "Hack Club!! :D", + "Amazon", + "Facebook", + "Twitter", + ], + correctAnswer: 4, + }, +]; + +export let AiPrompts = { + GenerateQuestionsUsingAI: ` +You are the AI of a quiz game. +Generate a list of quiz questions with possible answers and the correct answer index. +Each question must have: +- A "name" (question text) +- An "answers" array (minimum 2, maximum 8 options) +- A "correctAnswer" (index starting from 0) +Ensure the questions are diverse. +Example format: +{ +"name": "What is the capital of France?", +"answers": [ + "Paris", + "London", + "Berlin", + "Madrid" +], +"correctAnswer": 0 +} +JUST PROVIDE THE JSON AND NOTHING ELSE. + +The user's topic of interest is: +[topic]`, +GenerateOptionsUsingAI: ` +You are the AI of a quiz game. +Generate a list of answers relevant to the Question the correct answer index. +generate 2 things for the question: +- An "answers" array (minimum 2, maximum 8 options) +- A "correctAnswer" (index starting from 0) +Ensure the questions are diverse. +Example format if the question is "What is the capital of France?": +{ +"answers": [ + "Paris", + "London", + "Berlin", + "Madrid" +], +"correctAnswer": 0 +} +JUST PROVIDE THE JSON AND NOTHING ELSE. + +The user's Question that they want to generate options for is: +[question] +` +}; \ No newline at end of file diff --git a/src/lib/config.json b/src/lib/config.json deleted file mode 100644 index a08017a..0000000 --- a/src/lib/config.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "AnswersSymbolAndColor": [ - { - "Color": "#6E0000", - "SelectedColor": "#AA2222", - "HoverBorderColor": "#FF5D5D", - "SelectedBorderColor": "#FF0000", - "Symbol": "nf-md-triangle" - }, - { - "Color": "#00316E", - "SelectedColor": "#2255AA", - "HoverBorderColor": "#5D9CFF", - "SelectedBorderColor": "#0000FF", - "Symbol": "nf-fa-square" - }, - { - "Color": "#6E6E00", - "SelectedColor": "#AAAA22", - "HoverBorderColor": "#FFFF5D", - "SelectedBorderColor": "#DDFF00", - "Symbol": "nf-fa-circle" - }, - { - "Color": "#006E00", - "SelectedColor": "#22AA22", - "HoverBorderColor": "#5DFF5D", - "SelectedBorderColor": "#00ff00", - "Symbol": "nf-fa-diamond" - }, - { - "Color": "#4B0082", - "SelectedColor": "#7F33B5", - "HoverBorderColor": "#B066FF", - "SelectedBorderColor": "#9932CC", - "Symbol": "nf-md-star" - }, - { - "Color": "#FF8C00", - "SelectedColor": "#FFB347", - "HoverBorderColor": "#FFD580", - "SelectedBorderColor": "#FFA500", - "Symbol": "nf-md-hexagon" - }, - { - "Color": "#008B8B", - "SelectedColor": "#33CCCC", - "HoverBorderColor": "#66FFFF", - "SelectedBorderColor": "#00CED1", - "Symbol": "nf-md-octagon" - }, - { - "Color": "#8B4513", - "SelectedColor": "#CD853F", - "HoverBorderColor": "#DEB887", - "SelectedBorderColor": "#A0522D", - "Symbol": "nf-md-heart" - } - ] -} diff --git a/src/routes/create/+page.svelte b/src/routes/create/+page.svelte index 88aaf5c..06798db 100644 --- a/src/routes/create/+page.svelte +++ b/src/routes/create/+page.svelte @@ -1,22 +1,28 @@
-
- +
+
{#each questions.v as question, index} {/each}
- + {#if Wait.v == false} + + {:else} + + {/if}
diff --git a/src/routes/create/components/Questions/question.svelte b/src/routes/create/components/Questions/question.svelte index 272977d..b622e72 100644 --- a/src/routes/create/components/Questions/question.svelte +++ b/src/routes/create/components/Questions/question.svelte @@ -1,5 +1,6 @@ + +{#if questions.v[index].answers.every((answer) => answer === "")} + +{/if} diff --git a/src/routes/create/components/buttons/GenerateQuetionsUsingAI.svelte b/src/routes/create/components/buttons/GenerateQuetionsUsingAI.svelte new file mode 100644 index 0000000..8932152 --- /dev/null +++ b/src/routes/create/components/buttons/GenerateQuetionsUsingAI.svelte @@ -0,0 +1,14 @@ + + +{#if questions.v.length === 0 || (questions.v.length === 1 && questions.v[0].name === "" && questions.v[0].answers.every((answer) => answer === "") && questions.v[0].correctAnswer === undefined)} + +{/if} diff --git a/src/routes/create/components/buttons/WaitStartGame.svelte b/src/routes/create/components/buttons/WaitStartGame.svelte index 863d359..0102b86 100644 --- a/src/routes/create/components/buttons/WaitStartGame.svelte +++ b/src/routes/create/components/buttons/WaitStartGame.svelte @@ -1,10 +1,10 @@ + +

A collection of awesome tools, games, and more — made to be used in any classroom!

+

MAIN

+ + +

OTHERS

+
+ +
+ Made by RezHackXYZ for + Neighborhood! + Contribute here if you + want. +
+ + diff --git a/src/routes/Confetti.js b/src/routes/Confetti.js new file mode 100644 index 0000000..f6ebf90 --- /dev/null +++ b/src/routes/Confetti.js @@ -0,0 +1,316 @@ +export function confettiAnimation() { + (() => { + "use strict"; + + // Utility functions grouped into a single object + const Utils = { + // Parse pixel values to numeric values + parsePx: (value) => parseFloat(value.replace(/px/, "")), + + // Generate a random number between two values, optionally with a fixed precision + getRandomInRange: (min, max, precision = 0) => { + const multiplier = Math.pow(10, precision); + const randomValue = Math.random() * (max - min) + min; + return Math.floor(randomValue * multiplier) / multiplier; + }, + + // Pick a random item from an array + getRandomItem: (array) => + array[Math.floor(Math.random() * array.length)], + + // Scaling factor based on screen width + getScaleFactor: () => Math.log(window.innerWidth) / Math.log(1920), + + // Debounce function to limit event firing frequency + debounce: (func, delay) => { + let timeout; + return (...args) => { + clearTimeout(timeout); + timeout = setTimeout(() => func(...args), delay); + }; + }, + }; + + // Precomputed constants + const DEG_TO_RAD = Math.PI / 180; + + // Centralized configuration for default values + const defaultConfettiConfig = { + confettiesNumber: 250, + confettiRadius: 6, + confettiColors: [ + "#fcf403", + "#62fc03", + "#f4fc03", + "#03e7fc", + "#03fca5", + "#a503fc", + "#fc03ad", + "#fc03c2", + ], + emojies: [], + svgIcon: null, // Example SVG link + }; + + // Confetti class representing individual confetti pieces + class Confetti { + constructor({ + initialPosition, + direction, + radius, + colors, + emojis, + svgIcon, + }) { + const speedFactor = + Utils.getRandomInRange(0.9, 1.7, 3) * + Utils.getScaleFactor(); + this.speed = { x: speedFactor, y: speedFactor }; + this.finalSpeedX = Utils.getRandomInRange(0.2, 0.6, 3); + this.rotationSpeed = + emojis.length || svgIcon + ? 0.01 + : Utils.getRandomInRange(0.03, 0.07, 3) * + Utils.getScaleFactor(); + this.dragCoefficient = Utils.getRandomInRange( + 0.0005, + 0.0009, + 6 + ); + this.radius = { x: radius, y: radius }; + this.initialRadius = radius; + this.rotationAngle = + direction === "left" + ? Utils.getRandomInRange(0, 0.2, 3) + : Utils.getRandomInRange(-0.2, 0, 3); + this.emojiRotationAngle = Utils.getRandomInRange( + 0, + 2 * Math.PI + ); + this.radiusYDirection = "down"; + + const angle = + direction === "left" + ? Utils.getRandomInRange(82, 15) * DEG_TO_RAD + : Utils.getRandomInRange(-15, -82) * DEG_TO_RAD; + this.absCos = Math.abs(Math.cos(angle)); + this.absSin = Math.abs(Math.sin(angle)); + + const offset = Utils.getRandomInRange(-150, 0); + const position = { + x: + initialPosition.x + + (direction === "left" ? -offset : offset) * this.absCos, + y: initialPosition.y - offset * this.absSin, + }; + + this.position = { ...position }; + this.initialPosition = { ...position }; + this.color = + emojis.length || svgIcon + ? null + : Utils.getRandomItem(colors); + this.emoji = emojis.length ? Utils.getRandomItem(emojis) : null; + this.svgIcon = null; + + // Preload SVG if provided + if (svgIcon) { + this.svgImage = new Image(); + this.svgImage.src = svgIcon; + this.svgImage.onload = () => { + this.svgIcon = this.svgImage; // Mark as ready once loaded + }; + } + + this.createdAt = Date.now(); + this.direction = direction; + } + + draw(context) { + const { x, y } = this.position; + const { x: radiusX, y: radiusY } = this.radius; + const scale = window.devicePixelRatio; + + if (this.svgIcon) { + context.save(); + context.translate(scale * x, scale * y); + context.rotate(this.emojiRotationAngle); + context.drawImage( + this.svgIcon, + -radiusX, + -radiusY, + radiusX * 2, + radiusY * 2 + ); + context.restore(); + } else if (this.color) { + context.fillStyle = this.color; + context.beginPath(); + context.ellipse( + x * scale, + y * scale, + radiusX * scale, + radiusY * scale, + this.rotationAngle, + 0, + 2 * Math.PI + ); + context.fill(); + } else if (this.emoji) { + context.font = `${radiusX * scale}px serif`; + context.save(); + context.translate(scale * x, scale * y); + context.rotate(this.emojiRotationAngle); + context.textAlign = "center"; + context.fillText(this.emoji, 0, radiusY / 2); // Adjust vertical alignment + context.restore(); + } + } + + updatePosition(deltaTime, currentTime) { + const elapsed = currentTime - this.createdAt; + + if (this.speed.x > this.finalSpeedX) { + this.speed.x -= this.dragCoefficient * deltaTime; + } + + this.position.x += + this.speed.x * + (this.direction === "left" ? -this.absCos : this.absCos) * + deltaTime; + this.position.y = + this.initialPosition.y - + this.speed.y * this.absSin * elapsed + + (0.00125 * Math.pow(elapsed, 2)) / 2; + + if (!this.emoji && !this.svgIcon) { + this.rotationSpeed -= 1e-5 * deltaTime; + this.rotationSpeed = Math.max(this.rotationSpeed, 0); + + if (this.radiusYDirection === "down") { + this.radius.y -= deltaTime * this.rotationSpeed; + if (this.radius.y <= 0) { + this.radius.y = 0; + this.radiusYDirection = "up"; + } + } else { + this.radius.y += deltaTime * this.rotationSpeed; + if (this.radius.y >= this.initialRadius) { + this.radius.y = this.initialRadius; + this.radiusYDirection = "down"; + } + } + } + } + + isVisible(canvasHeight) { + return this.position.y < canvasHeight + 100; + } + } + + class ConfettiManager { + constructor() { + this.canvas = document.createElement("canvas"); + // @ts-ignore + this.canvas.style = + "position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 1000; pointer-events: none;"; + document.body.appendChild(this.canvas); + this.context = this.canvas.getContext("2d"); + this.confetti = []; + this.lastUpdated = Date.now(); + window.addEventListener( + "resize", + Utils.debounce(() => this.resizeCanvas(), 200) + ); + this.resizeCanvas(); + requestAnimationFrame(() => this.loop()); + } + + resizeCanvas() { + this.canvas.width = window.innerWidth * window.devicePixelRatio; + this.canvas.height = + window.innerHeight * window.devicePixelRatio; + } + + addConfetti(config = {}) { + const { + confettiesNumber, + confettiRadius, + confettiColors, + emojies, + svgIcon, + } = { + ...defaultConfettiConfig, + ...config, + }; + + const baseY = (5 * window.innerHeight) / 7; + for (let i = 0; i < confettiesNumber / 2; i++) { + this.confetti.push( + new Confetti({ + initialPosition: { x: 0, y: baseY }, + direction: "right", + radius: confettiRadius, + colors: confettiColors, + emojis: emojies, + svgIcon, + }) + ); + this.confetti.push( + new Confetti({ + initialPosition: { x: window.innerWidth, y: baseY }, + direction: "left", + radius: confettiRadius, + colors: confettiColors, + emojis: emojies, + svgIcon, + }) + ); + } + } + + resetAndStart(config = {}) { + // Clear existing confetti + this.confetti = []; + // Add new confetti + this.addConfetti(config); + } + + loop() { + const currentTime = Date.now(); + const deltaTime = currentTime - this.lastUpdated; + this.lastUpdated = currentTime; + + this.context.clearRect( + 0, + 0, + this.canvas.width, + this.canvas.height + ); + + this.confetti = this.confetti.filter((item) => { + item.updatePosition(deltaTime, currentTime); + item.draw(this.context); + return item.isVisible(this.canvas.height); + }); + + requestAnimationFrame(() => this.loop()); + } + } + + const manager = new ConfettiManager(); + manager.addConfetti(); + + const triggerButton = document.getElementById("show-again"); + if (triggerButton) { + triggerButton.addEventListener("click", () => + manager.addConfetti() + ); + } + + const resetInput = document.getElementById("reset"); + if (resetInput) { + resetInput.addEventListener("input", () => manager.resetAndStart()); + } + })(); +} diff --git a/src/routes/IdleScreen/+page.svelte b/src/routes/IdleScreen/+page.svelte new file mode 100644 index 0000000..bdcb86c --- /dev/null +++ b/src/routes/IdleScreen/+page.svelte @@ -0,0 +1,180 @@ + + +
+ + +
+
+
+ +{#if TabOpen.v !== false} +
+
+ + +
+
+{/if} + + diff --git a/src/routes/IdleScreen/EditTimetable.svelte b/src/routes/IdleScreen/EditTimetable.svelte new file mode 100644 index 0000000..d21080b --- /dev/null +++ b/src/routes/IdleScreen/EditTimetable.svelte @@ -0,0 +1,348 @@ + + +
+
+
+
+ + {#each table.Times as time} + { + newTable(table); + }} + bind:value={time} + /> + {/each} +
+
+ Monday + {#each table.Monday as time} + { + newTable(table); + }} + bind:value={time} + /> + {/each} +
+
+ Tuesday + {#each table.Tuesday as time} + { + newTable(table); + }} + bind:value={time} + /> + {/each} +
+
+ Wednesday + {#each table.Wednesday as time} + { + newTable(table); + }} + bind:value={time} + /> + {/each} +
+
+ Thursday + {#each table.Thursday as time} + { + newTable(table); + }} + bind:value={time} + /> + {/each} +
+
+ Friday + {#each table.Friday as time} + { + newTable(table); + }} + bind:value={time} + /> + {/each} +
+
+ +
+
+ +{#if TabOpen !== false} +
+
+
+

Paste CSV here:

+

+ +
+
+ + +
+
+
+{/if} + + diff --git a/src/routes/IdleScreen/time.svelte b/src/routes/IdleScreen/time.svelte new file mode 100644 index 0000000..75e1ba3 --- /dev/null +++ b/src/routes/IdleScreen/time.svelte @@ -0,0 +1,231 @@ + + +
+
+
+
+

0

+

1

+

0

+
+
+

0

+

1

+

2

+

3

+

4

+

5

+

6

+

7

+

8

+

9

+

0

+
+

:

+
+

0

+

1

+

2

+

3

+

4

+

5

+

0

+
+
+

0

+

1

+

2

+

3

+

4

+

5

+

6

+

7

+

8

+

9

+

0

+
+ {#if ShowSeconds.v} +

.

+
+

0

+

1

+

2

+

3

+

4

+

5

+

0

+
+
+

0

+

1

+

2

+

3

+

4

+

5

+

6

+

7

+

8

+

9

+

0

+
{/if} +

{AmOrPm}

+
+
+

+ {new Date().toLocaleString("en-US", { weekday: "short" })} + {new Date().getDate()}, + {new Date().toLocaleString("en-US", { month: "short" })} + {new Date().getFullYear()} +

+
+
+
+ + diff --git a/src/routes/IdleScreen/timeTable.svelte b/src/routes/IdleScreen/timeTable.svelte new file mode 100644 index 0000000..7eeb45d --- /dev/null +++ b/src/routes/IdleScreen/timeTable.svelte @@ -0,0 +1,198 @@ + + +
+
+
+ + {#each table.Times as time} + {time} + {/each} +
+
+ {#if new Date().getDay() == 1} + Monday + {:else} + Monday + {/if} + {#each table.Monday as time} + {#if new Date().getDay() == 1} + {time} + {:else} + {time} + {/if} + {/each} +
+
+ {#if new Date().getDay() == 2} + Tuesday + {:else} + Tuesday + {/if} + {#each table.Tuesday as time} + {#if new Date().getDay() == 2} + {time} + {:else} + {time} + {/if} + {/each} +
+
+ {#if new Date().getDay() == 3} + Wednesday + {:else} + Wednesday + {/if} + {#each table.Wednesday as time} + {#if new Date().getDay() == 3} + {time} + {:else} + {time} + {/if} + {/each} +
+
+ {#if new Date().getDay() == 4} + Thursday + {:else} + Thursday + {/if} + {#each table.Thursday as time} + {#if new Date().getDay() == 4} + {time} + {:else} + {time} + {/if} + {/each} +
+
+ {#if new Date().getDay() == 5} + Friday + {:else} + Friday + {/if} + {#each table.Friday as time} + {#if new Date().getDay() == 5} + {time} + {:else} + {time} + {/if} + {/each} +
+
+
+ + diff --git a/src/routes/KahhotClone/+page.svelte b/src/routes/KahhotClone/+page.svelte new file mode 100644 index 0000000..6bd1214 --- /dev/null +++ b/src/routes/KahhotClone/+page.svelte @@ -0,0 +1,18 @@ +
+
+

DaKahootClone

+

The best ever kahoot clone.

+ + + + + +
+
diff --git a/src/routes/create/+page.svelte b/src/routes/KahhotClone/create/+page.svelte similarity index 100% rename from src/routes/create/+page.svelte rename to src/routes/KahhotClone/create/+page.svelte diff --git a/src/routes/create/components/Questions/answers.svelte b/src/routes/KahhotClone/create/components/Questions/answers.svelte similarity index 100% rename from src/routes/create/components/Questions/answers.svelte rename to src/routes/KahhotClone/create/components/Questions/answers.svelte diff --git a/src/routes/create/components/Questions/question.svelte b/src/routes/KahhotClone/create/components/Questions/question.svelte similarity index 98% rename from src/routes/create/components/Questions/question.svelte rename to src/routes/KahhotClone/create/components/Questions/question.svelte index b622e72..99bc687 100644 --- a/src/routes/create/components/Questions/question.svelte +++ b/src/routes/KahhotClone/create/components/Questions/question.svelte @@ -49,7 +49,6 @@ {/each}
-
diff --git a/src/routes/create/components/buttons/DeleteQuestion.svelte b/src/routes/KahhotClone/create/components/buttons/DeleteQuestion.svelte similarity index 100% rename from src/routes/create/components/buttons/DeleteQuestion.svelte rename to src/routes/KahhotClone/create/components/buttons/DeleteQuestion.svelte diff --git a/src/routes/create/components/buttons/GenerateOptionsUsingAI.svelte b/src/routes/KahhotClone/create/components/buttons/GenerateOptionsUsingAI.svelte similarity index 100% rename from src/routes/create/components/buttons/GenerateOptionsUsingAI.svelte rename to src/routes/KahhotClone/create/components/buttons/GenerateOptionsUsingAI.svelte diff --git a/src/routes/create/components/buttons/GenerateQuetionsUsingAI.svelte b/src/routes/KahhotClone/create/components/buttons/GenerateQuetionsUsingAI.svelte similarity index 100% rename from src/routes/create/components/buttons/GenerateQuetionsUsingAI.svelte rename to src/routes/KahhotClone/create/components/buttons/GenerateQuetionsUsingAI.svelte diff --git a/src/routes/create/components/buttons/NewQuestion.svelte b/src/routes/KahhotClone/create/components/buttons/NewQuestion.svelte similarity index 100% rename from src/routes/create/components/buttons/NewQuestion.svelte rename to src/routes/KahhotClone/create/components/buttons/NewQuestion.svelte diff --git a/src/routes/create/components/buttons/StartGame.svelte b/src/routes/KahhotClone/create/components/buttons/StartGame.svelte similarity index 100% rename from src/routes/create/components/buttons/StartGame.svelte rename to src/routes/KahhotClone/create/components/buttons/StartGame.svelte diff --git a/src/routes/create/components/buttons/UseDemoQuestions.svelte b/src/routes/KahhotClone/create/components/buttons/UseDemoQuestions.svelte similarity index 100% rename from src/routes/create/components/buttons/UseDemoQuestions.svelte rename to src/routes/KahhotClone/create/components/buttons/UseDemoQuestions.svelte diff --git a/src/routes/create/components/buttons/WaitStartGame.svelte b/src/routes/KahhotClone/create/components/buttons/WaitStartGame.svelte similarity index 100% rename from src/routes/create/components/buttons/WaitStartGame.svelte rename to src/routes/KahhotClone/create/components/buttons/WaitStartGame.svelte diff --git a/src/routes/create/logic/GameCreateData.svelte.js b/src/routes/KahhotClone/create/logic/GameCreateData.svelte.js similarity index 100% rename from src/routes/create/logic/GameCreateData.svelte.js rename to src/routes/KahhotClone/create/logic/GameCreateData.svelte.js diff --git a/src/routes/create/logic/GenerateOptionsUsingAI.js b/src/routes/KahhotClone/create/logic/GenerateOptionsUsingAI.js similarity index 100% rename from src/routes/create/logic/GenerateOptionsUsingAI.js rename to src/routes/KahhotClone/create/logic/GenerateOptionsUsingAI.js diff --git a/src/routes/create/logic/GenerateQuestionsUsingAI.js b/src/routes/KahhotClone/create/logic/GenerateQuestionsUsingAI.js similarity index 100% rename from src/routes/create/logic/GenerateQuestionsUsingAI.js rename to src/routes/KahhotClone/create/logic/GenerateQuestionsUsingAI.js diff --git a/src/routes/create/logic/InsertGameInDB.js b/src/routes/KahhotClone/create/logic/InsertGameInDB.js similarity index 100% rename from src/routes/create/logic/InsertGameInDB.js rename to src/routes/KahhotClone/create/logic/InsertGameInDB.js diff --git a/src/routes/create/logic/StartGame.js b/src/routes/KahhotClone/create/logic/StartGame.js similarity index 100% rename from src/routes/create/logic/StartGame.js rename to src/routes/KahhotClone/create/logic/StartGame.js diff --git a/src/routes/host/[gamePin]/+page.js b/src/routes/KahhotClone/host/[gamePin]/+page.js similarity index 100% rename from src/routes/host/[gamePin]/+page.js rename to src/routes/KahhotClone/host/[gamePin]/+page.js diff --git a/src/routes/host/[gamePin]/+page.svelte b/src/routes/KahhotClone/host/[gamePin]/+page.svelte similarity index 100% rename from src/routes/host/[gamePin]/+page.svelte rename to src/routes/KahhotClone/host/[gamePin]/+page.svelte diff --git a/src/routes/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte b/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte diff --git a/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte b/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte diff --git a/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte b/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte diff --git a/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte b/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte diff --git a/src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte b/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte diff --git a/src/routes/host/[gamePin]/components/DuringGame/display.svelte b/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/display.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/DuringGame/display.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/DuringGame/display.svelte diff --git a/src/routes/host/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte b/src/routes/KahhotClone/host/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte diff --git a/src/routes/host/[gamePin]/components/lobby/PlayersGUI/players.svelte b/src/routes/KahhotClone/host/[gamePin]/components/lobby/PlayersGUI/players.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/lobby/PlayersGUI/players.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/lobby/PlayersGUI/players.svelte diff --git a/src/routes/host/[gamePin]/components/lobby/buttons/startGame.svelte b/src/routes/KahhotClone/host/[gamePin]/components/lobby/buttons/startGame.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/lobby/buttons/startGame.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/lobby/buttons/startGame.svelte diff --git a/src/routes/host/[gamePin]/components/lobby/display.svelte b/src/routes/KahhotClone/host/[gamePin]/components/lobby/display.svelte similarity index 100% rename from src/routes/host/[gamePin]/components/lobby/display.svelte rename to src/routes/KahhotClone/host/[gamePin]/components/lobby/display.svelte diff --git a/src/routes/host/[gamePin]/logic/GameOver.js b/src/routes/KahhotClone/host/[gamePin]/logic/GameOver.js similarity index 100% rename from src/routes/host/[gamePin]/logic/GameOver.js rename to src/routes/KahhotClone/host/[gamePin]/logic/GameOver.js diff --git a/src/routes/host/[gamePin]/logic/GetCurrentPlayers.js b/src/routes/KahhotClone/host/[gamePin]/logic/GetCurrentPlayers.js similarity index 100% rename from src/routes/host/[gamePin]/logic/GetCurrentPlayers.js rename to src/routes/KahhotClone/host/[gamePin]/logic/GetCurrentPlayers.js diff --git a/src/routes/host/[gamePin]/logic/HostsData.svelte.js b/src/routes/KahhotClone/host/[gamePin]/logic/HostsData.svelte.js similarity index 100% rename from src/routes/host/[gamePin]/logic/HostsData.svelte.js rename to src/routes/KahhotClone/host/[gamePin]/logic/HostsData.svelte.js diff --git a/src/routes/host/[gamePin]/logic/UpdatePlayersList.js b/src/routes/KahhotClone/host/[gamePin]/logic/UpdatePlayersList.js similarity index 100% rename from src/routes/host/[gamePin]/logic/UpdatePlayersList.js rename to src/routes/KahhotClone/host/[gamePin]/logic/UpdatePlayersList.js diff --git a/src/routes/host/[gamePin]/logic/WaitForAwnser.js b/src/routes/KahhotClone/host/[gamePin]/logic/WaitForAwnser.js similarity index 100% rename from src/routes/host/[gamePin]/logic/WaitForAwnser.js rename to src/routes/KahhotClone/host/[gamePin]/logic/WaitForAwnser.js diff --git a/src/routes/host/[gamePin]/logic/onNewPlayerAwnsered.js b/src/routes/KahhotClone/host/[gamePin]/logic/onNewPlayerAwnsered.js similarity index 100% rename from src/routes/host/[gamePin]/logic/onNewPlayerAwnsered.js rename to src/routes/KahhotClone/host/[gamePin]/logic/onNewPlayerAwnsered.js diff --git a/src/routes/host/[gamePin]/logic/startGame.js b/src/routes/KahhotClone/host/[gamePin]/logic/startGame.js similarity index 100% rename from src/routes/host/[gamePin]/logic/startGame.js rename to src/routes/KahhotClone/host/[gamePin]/logic/startGame.js diff --git a/src/routes/join/+page.svelte b/src/routes/KahhotClone/join/+page.svelte similarity index 100% rename from src/routes/join/+page.svelte rename to src/routes/KahhotClone/join/+page.svelte diff --git a/src/routes/join/logic/InsertPlayerInDB.js b/src/routes/KahhotClone/join/logic/InsertPlayerInDB.js similarity index 100% rename from src/routes/join/logic/InsertPlayerInDB.js rename to src/routes/KahhotClone/join/logic/InsertPlayerInDB.js diff --git a/src/routes/join/logic/JoinGameData.svelte.js b/src/routes/KahhotClone/join/logic/JoinGameData.svelte.js similarity index 100% rename from src/routes/join/logic/JoinGameData.svelte.js rename to src/routes/KahhotClone/join/logic/JoinGameData.svelte.js diff --git a/src/routes/join/logic/joinGame.js b/src/routes/KahhotClone/join/logic/joinGame.js similarity index 100% rename from src/routes/join/logic/joinGame.js rename to src/routes/KahhotClone/join/logic/joinGame.js diff --git a/src/routes/join/logic/validateGamePin.js b/src/routes/KahhotClone/join/logic/validateGamePin.js similarity index 100% rename from src/routes/join/logic/validateGamePin.js rename to src/routes/KahhotClone/join/logic/validateGamePin.js diff --git a/src/routes/play/[gamePin]/+page.js b/src/routes/KahhotClone/play/[gamePin]/+page.js similarity index 100% rename from src/routes/play/[gamePin]/+page.js rename to src/routes/KahhotClone/play/[gamePin]/+page.js diff --git a/src/routes/play/[gamePin]/+page.svelte b/src/routes/KahhotClone/play/[gamePin]/+page.svelte similarity index 100% rename from src/routes/play/[gamePin]/+page.svelte rename to src/routes/KahhotClone/play/[gamePin]/+page.svelte diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte b/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte b/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte b/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte b/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/display.svelte b/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/display.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/awnseringQuetions/display.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/display.svelte diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte b/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte diff --git a/src/routes/play/[gamePin]/components/awnseringQuetions/text/wait.svelte b/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/text/wait.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/awnseringQuetions/text/wait.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/text/wait.svelte diff --git a/src/routes/play/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte b/src/routes/KahhotClone/play/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte diff --git a/src/routes/play/[gamePin]/components/lobby/PlayersGUI/players.svelte b/src/routes/KahhotClone/play/[gamePin]/components/lobby/PlayersGUI/players.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/lobby/PlayersGUI/players.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/lobby/PlayersGUI/players.svelte diff --git a/src/routes/play/[gamePin]/components/lobby/display.svelte b/src/routes/KahhotClone/play/[gamePin]/components/lobby/display.svelte similarity index 100% rename from src/routes/play/[gamePin]/components/lobby/display.svelte rename to src/routes/KahhotClone/play/[gamePin]/components/lobby/display.svelte diff --git a/src/routes/play/[gamePin]/logic/GetCurrentPlayers.js b/src/routes/KahhotClone/play/[gamePin]/logic/GetCurrentPlayers.js similarity index 100% rename from src/routes/play/[gamePin]/logic/GetCurrentPlayers.js rename to src/routes/KahhotClone/play/[gamePin]/logic/GetCurrentPlayers.js diff --git a/src/routes/play/[gamePin]/logic/HostsData.svelte.js b/src/routes/KahhotClone/play/[gamePin]/logic/HostsData.svelte.js similarity index 100% rename from src/routes/play/[gamePin]/logic/HostsData.svelte.js rename to src/routes/KahhotClone/play/[gamePin]/logic/HostsData.svelte.js diff --git a/src/routes/play/[gamePin]/logic/IntializeGameStart.js b/src/routes/KahhotClone/play/[gamePin]/logic/IntializeGameStart.js similarity index 100% rename from src/routes/play/[gamePin]/logic/IntializeGameStart.js rename to src/routes/KahhotClone/play/[gamePin]/logic/IntializeGameStart.js diff --git a/src/routes/play/[gamePin]/logic/NewStatus.js b/src/routes/KahhotClone/play/[gamePin]/logic/NewStatus.js similarity index 100% rename from src/routes/play/[gamePin]/logic/NewStatus.js rename to src/routes/KahhotClone/play/[gamePin]/logic/NewStatus.js diff --git a/src/routes/play/[gamePin]/logic/SubmitAnswer.js b/src/routes/KahhotClone/play/[gamePin]/logic/SubmitAnswer.js similarity index 100% rename from src/routes/play/[gamePin]/logic/SubmitAnswer.js rename to src/routes/KahhotClone/play/[gamePin]/logic/SubmitAnswer.js diff --git a/src/routes/play/[gamePin]/logic/UpdatePlayersList.js b/src/routes/KahhotClone/play/[gamePin]/logic/UpdatePlayersList.js similarity index 100% rename from src/routes/play/[gamePin]/logic/UpdatePlayersList.js rename to src/routes/KahhotClone/play/[gamePin]/logic/UpdatePlayersList.js diff --git a/src/routes/play/[gamePin]/logic/startGame.js b/src/routes/KahhotClone/play/[gamePin]/logic/startGame.js similarity index 100% rename from src/routes/play/[gamePin]/logic/startGame.js rename to src/routes/KahhotClone/play/[gamePin]/logic/startGame.js diff --git a/src/routes/results/[gamePin]/+page.js b/src/routes/KahhotClone/results/[gamePin]/+page.js similarity index 100% rename from src/routes/results/[gamePin]/+page.js rename to src/routes/KahhotClone/results/[gamePin]/+page.js diff --git a/src/routes/results/[gamePin]/+page.svelte b/src/routes/KahhotClone/results/[gamePin]/+page.svelte similarity index 100% rename from src/routes/results/[gamePin]/+page.svelte rename to src/routes/KahhotClone/results/[gamePin]/+page.svelte diff --git a/src/routes/RandomName/EditNameOfStudents.svelte b/src/routes/RandomName/EditNameOfStudents.svelte new file mode 100644 index 0000000..577ad43 --- /dev/null +++ b/src/routes/RandomName/EditNameOfStudents.svelte @@ -0,0 +1,51 @@ + + +
+
+

Edit Names

+

+ +
+
+ + diff --git a/src/routes/RandomName/TopDisplay.svelte b/src/routes/RandomName/TopDisplay.svelte new file mode 100644 index 0000000..624b36c --- /dev/null +++ b/src/routes/RandomName/TopDisplay.svelte @@ -0,0 +1,163 @@ + + +
+
{ + event.preventDefault(); + if (DragTempName !== "na") { + RandomNamesState.Selected.push(DragTempName); + DragTempName = "na"; + } + }} + > +

Selected

+
+ {#each RandomNamesState.Selected as name, i} + { + setTimeout(() => { + RandomNamesState.Selected.splice(i, 1); + DragTempName = name; + }, 100); + }} + > + {name} + + {/each} +
+
+
+
{ + event.preventDefault(); + if (DragTempName !== "na") { + RandomNamesState.NotSelectedYet.push(DragTempName); + DragTempName = "na"; + } + }} + > +

Not Selected Yet

+
+ {#each RandomNamesState.NotSelectedYet as name, i} + { + setTimeout(() => { + RandomNamesState.NotSelectedYet.splice(i, 1); + DragTempName = name; + }, 100); + }} + > + {name} + + {/each} +
+
+
+
{ + event.preventDefault(); + if (DragTempName !== "na") { + RandomNamesState.Absent.push(DragTempName); + DragTempName = "na"; + } + }} + > +

Absent

+
+ {#each RandomNamesState.Absent as name, i} + { + setTimeout(() => { + RandomNamesState.Absent.splice(i, 1); + DragTempName = name; + }, 100); + }} + > + {name} + + {/each} +
+
+
+ + diff --git a/src/routes/RandomName/main.svelte b/src/routes/RandomName/main.svelte new file mode 100644 index 0000000..32330c8 --- /dev/null +++ b/src/routes/RandomName/main.svelte @@ -0,0 +1,220 @@ + + +
+ +
+ +
+
+
+ +{#if TabOpen.v !== false} +
+
+ + +
+
+{/if} + + diff --git a/src/routes/RandomName/selector.svelte b/src/routes/RandomName/selector.svelte new file mode 100644 index 0000000..966491e --- /dev/null +++ b/src/routes/RandomName/selector.svelte @@ -0,0 +1,135 @@ + + +
+

The latest selected student is:

+

{RandomNamesState.selectedStudent}

+ +
+ +
+ {#if RandomNamesState.Selected.length > 0} + {/if} + {#if RandomNamesState.Absent.length > 0} + {/if} +
+
+
+ + diff --git a/src/routes/announcer/ActualAnnouncer.svelte b/src/routes/announcer/ActualAnnouncer.svelte new file mode 100644 index 0000000..98fc832 --- /dev/null +++ b/src/routes/announcer/ActualAnnouncer.svelte @@ -0,0 +1,182 @@ + + +
+
+

Most Announced announcements

+ +
+ {#each CommonAnounce as anouncement, i} +
+ + +
+ {/each} +
+ +
+ +

Or announce something else

+
+ + +
+ {#if text} + + {/if} +
+ + +
+ + diff --git a/src/routes/announcer/main.svelte b/src/routes/announcer/main.svelte new file mode 100644 index 0000000..1c2008c --- /dev/null +++ b/src/routes/announcer/main.svelte @@ -0,0 +1,100 @@ + + +
+ +
+ +
+
+ + diff --git a/src/routes/wordle/InfoAndSetings/WordLegnthSetings.svelte b/src/routes/wordle/InfoAndSetings/WordLegnthSetings.svelte new file mode 100644 index 0000000..0038576 --- /dev/null +++ b/src/routes/wordle/InfoAndSetings/WordLegnthSetings.svelte @@ -0,0 +1,45 @@ + + +
+

Select The Word legnth (between 3 and 10 letters)

+ + +
+ + diff --git a/src/routes/wordle/InfoAndSetings/main.svelte b/src/routes/wordle/InfoAndSetings/main.svelte new file mode 100644 index 0000000..a7055ee --- /dev/null +++ b/src/routes/wordle/InfoAndSetings/main.svelte @@ -0,0 +1,58 @@ + + +{#if TabOpen.v !== "none"} +
+
+ {#if TabOpen.v == "WordLength"} + + {:else if TabOpen.v == "Stats"} + + {/if} + +
+
+{/if} + + diff --git a/src/routes/wordle/InfoAndSetings/stats.svelte b/src/routes/wordle/InfoAndSetings/stats.svelte new file mode 100644 index 0000000..00c75ef --- /dev/null +++ b/src/routes/wordle/InfoAndSetings/stats.svelte @@ -0,0 +1,155 @@ + + +
+

+ Stats For: + +

+ +
+
+

Total WINS

+

{TotalWins}

+
+
+

Avg No. of guesses

+

{Avgguesses}

+
+
+ +
+ + diff --git a/src/routes/wordle/game.svelte b/src/routes/wordle/game.svelte new file mode 100644 index 0000000..a215366 --- /dev/null +++ b/src/routes/wordle/game.svelte @@ -0,0 +1,148 @@ + + + +
+
+ + +
+ +
+ + diff --git a/src/routes/wordle/game/display.svelte b/src/routes/wordle/game/display.svelte new file mode 100644 index 0000000..fd1cc16 --- /dev/null +++ b/src/routes/wordle/game/display.svelte @@ -0,0 +1,73 @@ + + +
+ {#each words.v as word} +
+ {#each word as letter} + {letter[0]} + {/each} +
+ {/each} +
+ {#each Array(WordLegnth.v) as _, i} + {CurrentWord.v[i] || ""} + {/each} +
+
+ + diff --git a/src/routes/wordle/game/keyboard.svelte b/src/routes/wordle/game/keyboard.svelte new file mode 100644 index 0000000..84eff1e --- /dev/null +++ b/src/routes/wordle/game/keyboard.svelte @@ -0,0 +1,71 @@ + + +
+
+ {#each keys.v.slice(0, 10) as key} + + {/each} +
+ +
+ {#each keys.v.slice(10, 19) as key} + + {/each} +
+
+ {#each keys.v.slice(19) as key} + + {/each} +
+
+ + diff --git a/src/routes/wordle/logic.svelte.js b/src/routes/wordle/logic.svelte.js new file mode 100644 index 0000000..c681862 --- /dev/null +++ b/src/routes/wordle/logic.svelte.js @@ -0,0 +1,220 @@ +import wordExists from "word-exists"; +import { generate } from "random-words"; +import { ShowAlert } from "../+layout.svelte"; + +export let WordLegnth = $state({ v: 5 }); + +let CorrectWord = generate({ + minLength: WordLegnth.v, + maxLength: WordLegnth.v, +}); + +console.log("CorrectWord: ", CorrectWord); +export let words = $state({ v: [] }); +export let CurrentWord = $state({ v: [] }); +export let keys = $state({ + v: [ + ["Q", "n"], + ["W", "n"], + ["E", "n"], + ["R", "n"], + ["T", "n"], + ["Y", "n"], + ["U", "n"], + ["I", "n"], + ["O", "n"], + ["P", "n"], + ["A", "n"], + ["S", "n"], + ["D", "n"], + ["F", "n"], + ["G", "n"], + ["H", "n"], + ["J", "n"], + ["K", "n"], + ["L", "n"], + ["⌫", "o"], + ["Z", "n"], + ["X", "n"], + ["C", "n"], + ["V", "n"], + ["B", "n"], + ["N", "n"], + ["M", "n"], + ["⏎", "o"], + ], +}); + +export function newGame() { + CorrectWord = generate({ + minLength: WordLegnth.v, + maxLength: WordLegnth.v, + }); + console.log("CorrectWord: ", CorrectWord); + words.v = []; + CurrentWord.v = []; + keys.v = [ + ["Q", "n"], + ["W", "n"], + ["E", "n"], + ["R", "n"], + ["T", "n"], + ["Y", "n"], + ["U", "n"], + ["I", "n"], + ["O", "n"], + ["P", "n"], + ["A", "n"], + ["S", "n"], + ["D", "n"], + ["F", "n"], + ["G", "n"], + ["H", "n"], + ["J", "n"], + ["K", "n"], + ["L", "n"], + ["⌫", "o"], + ["Z", "n"], + ["X", "n"], + ["C", "n"], + ["V", "n"], + ["B", "n"], + ["N", "n"], + ["M", "n"], + ["⏎", "o"], + ]; +} + +function GameWin() { + ShowAlert("You win!", "success"); + data.value[WordLegnth.v].push(words.v.length); + localStorage.setItem("WordleGamesData", JSON.stringify(data.value)); + newGame(); +} + +function SendWord(word) { + let result = Array(word.length).fill(null); + let used = Array(CorrectWord.length).fill(false); + + // First pass: exact matches + for (let i = 0; i < word.length; i++) { + if (word[i].toLowerCase() === CorrectWord[i].toLowerCase()) { + result[i] = [word[i].toUpperCase(), "c"]; + used[i] = true; + } + } + + // Second pass: wrong place but correct letter + for (let i = 0; i < word.length; i++) { + if (result[i]) continue; + + let found = false; + for (let j = 0; j < CorrectWord.length; j++) { + if (!used[j] && word[i].toLowerCase() === CorrectWord[j].toLowerCase()) { + found = true; + used[j] = true; + break; + } + } + + result[i] = found ? [word[i].toUpperCase(), "d"] : [word[i].toUpperCase(), "w"]; + } + + words.v.push(result); + + setTimeout(() => { + document.getElementById("DisplayOfWords").scrollTo({ + top: document.getElementById("DisplayOfWords").scrollHeight, + behavior: "smooth", + }); + }, 100); + + // Update keyboard status + for (let [letter, status] of result) { + let keyIndex = keys.v.findIndex((k) => k[0].toLowerCase() === letter.toLowerCase()); + if (keyIndex !== -1) { + let current = keys.v[keyIndex][1]; + if (status === "c") { + keys.v[keyIndex][1] = "c"; + } else if (status === "d" && current === "n") { + keys.v[keyIndex][1] = "d"; + } else if (status === "w" && current === "n") { + keys.v[keyIndex][1] = "w"; + } + } + } + + // Check for win + if (result.every(([_, status]) => status === "c")) { + GameWin(); + } +} + +export function ButtonPressed(key) { + document.getElementById("DisplayOfWords").scrollTo({ + top: document.getElementById("DisplayOfWords").scrollHeight, + behavior: "smooth", + }); + + if (key === "⏎") { + if (CurrentWord.v.length === WordLegnth.v) { + let word = CurrentWord.v.join("").toUpperCase(); + if (wordExists(word)) { + SendWord(CurrentWord.v); + CurrentWord.v = []; + } else { + ShowAlert("Not a valid word", "error"); + } + } + return; + } else if (key === "⌫") { + CurrentWord.v.pop(); + return; + } + if (CurrentWord.v.length === WordLegnth.v) { + return; + } + + CurrentWord.v.push(key); +} +export function handleKey(event) { + const key = event.key.toLowerCase(); + + if (key === "enter") { + ButtonPressed("⏎"); + } else if (key === "backspace") { + ButtonPressed("⌫"); + } else if (/^[a-z]$/.test(key)) { + ButtonPressed(key.toUpperCase()); + } +} + +export let data = $state({ + value: { + 3: [], + 4: [], + 5: [], + 6: [], + 7: [], + 8: [], + 9: [], + 10: [], + }, +}); + +let WordleGamesData = localStorage.getItem("WordleGamesData") || ""; + +if (WordleGamesData != "") { + data.value = JSON.parse(WordleGamesData); +} else { + data.value = { + 3: [], + 4: [], + 5: [], + 6: [], + 7: [], + 8: [], + 9: [], + 10: [], + }; +} From 08ef5545cf05d877392df200b049403629c5d425 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Mon, 26 May 2025 12:18:07 +0530 Subject: [PATCH 22/31] sucses full merged and made the anouncer feature, i convered it to tailwind and diffrent comonents! --- package.json | 7 +- src/app.css | 1 + src/app.html | 2 +- src/lib/showAlert.js | 2 + src/routes/+layout.svelte | 29 +- src/routes/+page.svelte | 13 +- src/routes/Confetti.js | 316 ------------------ src/routes/IdleScreen/+page.svelte | 2 +- .../KahhotClone/host/[gamePin]/+page.js | 5 - .../KahhotClone/play/[gamePin]/+page.js | 5 - .../KahhotClone/results/[gamePin]/+page.js | 5 - .../RandomName/{main.svelte => +page.svelte} | 2 +- .../RandomName/EditNameOfStudents.svelte | 6 +- src/routes/RandomName/TopDisplay.svelte | 4 +- src/routes/RandomName/selector.svelte | 2 +- src/routes/announcer/+page.svelte | 20 ++ src/routes/announcer/ActualAnnouncer.svelte | 182 ---------- .../CommonAnounceedTexts/delete.svelte | 14 + .../CommonAnounceedTexts/list.svelte | 12 + .../CommonAnounceedTexts/text.svelte | 13 + .../components/CustomText/CustomText.svelte | 9 + .../components/CustomText/add.svelte | 16 + .../components/CustomText/input.svelte | 9 + .../components/CustomText/play.svelte | 11 + .../AddAndDeleteMostUsedAnnouncements.js | 13 + .../announcer/logic/AnnounceUsingTTS.js | 7 + .../logic/LoadMostUsedAnnouncement.js | 12 + .../announcer/logic/announcerData.svelte.js | 2 + src/routes/announcer/main.svelte | 100 ------ .../{KahhotClone => kahootclone}/+page.svelte | 4 +- .../create/+page.svelte | 0 .../components/Questions/answers.svelte | 0 .../components/Questions/question.svelte | 0 .../components/buttons/DeleteQuestion.svelte | 0 .../buttons/GenerateOptionsUsingAI.svelte | 0 .../buttons/GenerateQuetionsUsingAI.svelte | 0 .../components/buttons/NewQuestion.svelte | 0 .../components/buttons/StartGame.svelte | 0 .../buttons/UseDemoQuestions.svelte | 0 .../components/buttons/WaitStartGame.svelte | 0 .../create/logic/GameCreateData.svelte.js | 0 .../create/logic/GenerateOptionsUsingAI.js | 0 .../create/logic/GenerateQuestionsUsingAI.js | 0 .../create/logic/InsertGameInDB.js | 2 +- .../create/logic/StartGame.js | 0 .../host}/+page.svelte | 7 +- .../DuringGame/PeopleAwnsered.svelte | 0 .../awnseringQuetions/Awnsers.svelte | 0 .../awnseringQuetions/ProgressBar.svelte | 0 .../awnseringQuetions/display.svelte | 0 .../awnseringQuetions/text/Quetion.svelte | 0 .../components/DuringGame/display.svelte | 0 .../lobby/PlayersGUI/playerBadge.svelte | 0 .../lobby/PlayersGUI/players.svelte | 0 .../components/lobby/buttons/startGame.svelte | 0 .../host}/components/lobby/display.svelte | 0 .../host}/logic/GameOver.js | 2 +- .../host}/logic/GetCurrentPlayers.js | 0 .../host}/logic/HostsData.svelte.js | 0 .../host}/logic/UpdatePlayersList.js | 0 .../host}/logic/WaitForAwnser.js | 0 .../host}/logic/onNewPlayerAwnsered.js | 0 .../host}/logic/startGame.js | 0 .../join/+page.svelte | 0 .../join/logic/InsertPlayerInDB.js | 0 .../join/logic/JoinGameData.svelte.js | 0 .../join/logic/joinGame.js | 2 +- .../join/logic/validateGamePin.js | 0 .../play}/+page.svelte | 10 +- .../awnseringQuetions/Awnsers.svelte | 0 .../awnseringQuetions/ProgressBar.svelte | 0 .../buttons/SelectFirst.svelte | 0 .../buttons/submitAwnser.svelte | 0 .../awnseringQuetions/display.svelte | 0 .../awnseringQuetions/text/Quetion.svelte | 0 .../awnseringQuetions/text/wait.svelte | 0 .../lobby/PlayersGUI/playerBadge.svelte | 0 .../lobby/PlayersGUI/players.svelte | 0 .../play}/components/lobby/display.svelte | 0 .../play}/logic/GetCurrentPlayers.js | 0 .../play}/logic/HostsData.svelte.js | 0 .../play}/logic/IntializeGameStart.js | 0 .../play}/logic/NewStatus.js | 2 +- .../play}/logic/SubmitAnswer.js | 0 .../play}/logic/UpdatePlayersList.js | 0 .../play}/logic/startGame.js | 0 .../results}/+page.svelte | 5 +- src/routes/wordle/logic.svelte.js | 4 +- svelte.config.js | 12 +- 89 files changed, 186 insertions(+), 685 deletions(-) create mode 100644 src/app.css create mode 100644 src/lib/showAlert.js delete mode 100644 src/routes/Confetti.js delete mode 100644 src/routes/KahhotClone/host/[gamePin]/+page.js delete mode 100644 src/routes/KahhotClone/play/[gamePin]/+page.js delete mode 100644 src/routes/KahhotClone/results/[gamePin]/+page.js rename src/routes/RandomName/{main.svelte => +page.svelte} (99%) create mode 100644 src/routes/announcer/+page.svelte delete mode 100644 src/routes/announcer/ActualAnnouncer.svelte create mode 100644 src/routes/announcer/components/CommonAnounceedTexts/delete.svelte create mode 100644 src/routes/announcer/components/CommonAnounceedTexts/list.svelte create mode 100644 src/routes/announcer/components/CommonAnounceedTexts/text.svelte create mode 100644 src/routes/announcer/components/CustomText/CustomText.svelte create mode 100644 src/routes/announcer/components/CustomText/add.svelte create mode 100644 src/routes/announcer/components/CustomText/input.svelte create mode 100644 src/routes/announcer/components/CustomText/play.svelte create mode 100644 src/routes/announcer/logic/AddAndDeleteMostUsedAnnouncements.js create mode 100644 src/routes/announcer/logic/AnnounceUsingTTS.js create mode 100644 src/routes/announcer/logic/LoadMostUsedAnnouncement.js create mode 100644 src/routes/announcer/logic/announcerData.svelte.js delete mode 100644 src/routes/announcer/main.svelte rename src/routes/{KahhotClone => kahootclone}/+page.svelte (90%) rename src/routes/{KahhotClone => kahootclone}/create/+page.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/components/Questions/answers.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/components/Questions/question.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/components/buttons/DeleteQuestion.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/components/buttons/GenerateOptionsUsingAI.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/components/buttons/GenerateQuetionsUsingAI.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/components/buttons/NewQuestion.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/components/buttons/StartGame.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/components/buttons/UseDemoQuestions.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/components/buttons/WaitStartGame.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/create/logic/GameCreateData.svelte.js (100%) rename src/routes/{KahhotClone => kahootclone}/create/logic/GenerateOptionsUsingAI.js (100%) rename src/routes/{KahhotClone => kahootclone}/create/logic/GenerateQuestionsUsingAI.js (100%) rename src/routes/{KahhotClone => kahootclone}/create/logic/InsertGameInDB.js (96%) rename src/routes/{KahhotClone => kahootclone}/create/logic/StartGame.js (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/+page.svelte (87%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/DuringGame/PeopleAwnsered.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/DuringGame/awnseringQuetions/Awnsers.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/DuringGame/awnseringQuetions/ProgressBar.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/DuringGame/awnseringQuetions/display.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/DuringGame/awnseringQuetions/text/Quetion.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/DuringGame/display.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/lobby/PlayersGUI/playerBadge.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/lobby/PlayersGUI/players.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/lobby/buttons/startGame.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/components/lobby/display.svelte (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/logic/GameOver.js (68%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/logic/GetCurrentPlayers.js (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/logic/HostsData.svelte.js (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/logic/UpdatePlayersList.js (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/logic/WaitForAwnser.js (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/logic/onNewPlayerAwnsered.js (100%) rename src/routes/{KahhotClone/host/[gamePin] => kahootclone/host}/logic/startGame.js (100%) rename src/routes/{KahhotClone => kahootclone}/join/+page.svelte (100%) rename src/routes/{KahhotClone => kahootclone}/join/logic/InsertPlayerInDB.js (100%) rename src/routes/{KahhotClone => kahootclone}/join/logic/JoinGameData.svelte.js (100%) rename src/routes/{KahhotClone => kahootclone}/join/logic/joinGame.js (84%) rename src/routes/{KahhotClone => kahootclone}/join/logic/validateGamePin.js (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/+page.svelte (91%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/awnseringQuetions/Awnsers.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/awnseringQuetions/ProgressBar.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/awnseringQuetions/buttons/SelectFirst.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/awnseringQuetions/buttons/submitAwnser.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/awnseringQuetions/display.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/awnseringQuetions/text/Quetion.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/awnseringQuetions/text/wait.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/lobby/PlayersGUI/playerBadge.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/lobby/PlayersGUI/players.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/components/lobby/display.svelte (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/logic/GetCurrentPlayers.js (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/logic/HostsData.svelte.js (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/logic/IntializeGameStart.js (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/logic/NewStatus.js (92%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/logic/SubmitAnswer.js (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/logic/UpdatePlayersList.js (100%) rename src/routes/{KahhotClone/play/[gamePin] => kahootclone/play}/logic/startGame.js (100%) rename src/routes/{KahhotClone/results/[gamePin] => kahootclone/results}/+page.svelte (95%) diff --git a/package.json b/package.json index 7d882f6..def688c 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "lint": "prettier --check . && eslint ." }, "devDependencies": { - "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", "@tailwindcss/postcss": "^4.1.6", @@ -28,11 +27,11 @@ }, "dependencies": { "@supabase/supabase-js": "^2.49.4", + "@sveltejs/adapter-static": "^3.0.8", "chart.js": "^4.4.9", - "drag-drop-touch": "^1.3.1", - "kokoro-js": "^1.2.1", + "js-confetti": "^0.12.0", "random-words": "^2.0.1", - "svelte-spa-router": "^4.0.1", + "svelte-5-french-toast": "^2.0.4", "word-exists": "^1.0.0" } } diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..a461c50 --- /dev/null +++ b/src/app.css @@ -0,0 +1 @@ +@import "tailwindcss"; \ No newline at end of file diff --git a/src/app.html b/src/app.html index a158320..a9aea08 100644 --- a/src/app.html +++ b/src/app.html @@ -9,4 +9,4 @@
%sveltekit.body%
- + \ No newline at end of file diff --git a/src/lib/showAlert.js b/src/lib/showAlert.js new file mode 100644 index 0000000..957e3d4 --- /dev/null +++ b/src/lib/showAlert.js @@ -0,0 +1,2 @@ +import JSConfetti from "js-confetti"; +const jsConfetti = new JSConfetti(); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 492c4ed..65c6221 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,38 +1,17 @@ +
{@render children()}
-{#if ShowAlertDiv == true} -
-

{ShowAlertText}

-
-{/if} diff --git a/src/routes/announcer/components/CommonAnounceedTexts/delete.svelte b/src/routes/announcer/components/CommonAnounceedTexts/delete.svelte new file mode 100644 index 0000000..a8363a1 --- /dev/null +++ b/src/routes/announcer/components/CommonAnounceedTexts/delete.svelte @@ -0,0 +1,14 @@ + + + diff --git a/src/routes/announcer/components/CommonAnounceedTexts/list.svelte b/src/routes/announcer/components/CommonAnounceedTexts/list.svelte new file mode 100644 index 0000000..01db9c0 --- /dev/null +++ b/src/routes/announcer/components/CommonAnounceedTexts/list.svelte @@ -0,0 +1,12 @@ + + +{#each MostUsedAnnouncements.v as announcementText, announcementID} +
+ + +
+{/each} diff --git a/src/routes/announcer/components/CommonAnounceedTexts/text.svelte b/src/routes/announcer/components/CommonAnounceedTexts/text.svelte new file mode 100644 index 0000000..371e9c4 --- /dev/null +++ b/src/routes/announcer/components/CommonAnounceedTexts/text.svelte @@ -0,0 +1,13 @@ + + + diff --git a/src/routes/announcer/components/CustomText/CustomText.svelte b/src/routes/announcer/components/CustomText/CustomText.svelte new file mode 100644 index 0000000..0cde2e9 --- /dev/null +++ b/src/routes/announcer/components/CustomText/CustomText.svelte @@ -0,0 +1,9 @@ + + +
+ + +
diff --git a/src/routes/announcer/components/CustomText/add.svelte b/src/routes/announcer/components/CustomText/add.svelte new file mode 100644 index 0000000..8807c4d --- /dev/null +++ b/src/routes/announcer/components/CustomText/add.svelte @@ -0,0 +1,16 @@ + + +{#if CurrentText.v} +
+ +
+{/if} diff --git a/src/routes/announcer/components/CustomText/input.svelte b/src/routes/announcer/components/CustomText/input.svelte new file mode 100644 index 0000000..b7f9189 --- /dev/null +++ b/src/routes/announcer/components/CustomText/input.svelte @@ -0,0 +1,9 @@ + + + diff --git a/src/routes/announcer/components/CustomText/play.svelte b/src/routes/announcer/components/CustomText/play.svelte new file mode 100644 index 0000000..5bcf593 --- /dev/null +++ b/src/routes/announcer/components/CustomText/play.svelte @@ -0,0 +1,11 @@ + + + diff --git a/src/routes/announcer/logic/AddAndDeleteMostUsedAnnouncements.js b/src/routes/announcer/logic/AddAndDeleteMostUsedAnnouncements.js new file mode 100644 index 0000000..099014b --- /dev/null +++ b/src/routes/announcer/logic/AddAndDeleteMostUsedAnnouncements.js @@ -0,0 +1,13 @@ +import { MostUsedAnnouncements } from "./announcerData.svelte.js"; + +export function AddMostUsedAnnouncement(announcementText) { + MostUsedAnnouncements.v.push(announcementText); + localStorage.setItem("MostUsedAnnouncements", JSON.stringify(MostUsedAnnouncements.v)); +} + +export function DeleteMostUsedAnnouncement(announcementID) { + if (confirm("Are you sure you want to delete this announcement?")) { + MostUsedAnnouncements.v.splice(announcementID, 1); + localStorage.setItem("MostUsedAnnouncements", JSON.stringify(MostUsedAnnouncements.v)); + } +} diff --git a/src/routes/announcer/logic/AnnounceUsingTTS.js b/src/routes/announcer/logic/AnnounceUsingTTS.js new file mode 100644 index 0000000..6927bff --- /dev/null +++ b/src/routes/announcer/logic/AnnounceUsingTTS.js @@ -0,0 +1,7 @@ +export function AnnounceUsingTTS(text) { + window.speechSynthesis.speak( + Object.assign(new SpeechSynthesisUtterance(text), { + rate: 0.5, + }), + ); +} \ No newline at end of file diff --git a/src/routes/announcer/logic/LoadMostUsedAnnouncement.js b/src/routes/announcer/logic/LoadMostUsedAnnouncement.js new file mode 100644 index 0000000..a9dc3c7 --- /dev/null +++ b/src/routes/announcer/logic/LoadMostUsedAnnouncement.js @@ -0,0 +1,12 @@ +import { MostUsedAnnouncements } from "./announcerData.svelte.js"; + +export function LoadMostUsedAnnouncement() { + let TempMostUsedAnnouncements = JSON.parse(localStorage.getItem("MostUsedAnnouncements")) || ""; + + if (TempMostUsedAnnouncements == "") { + MostUsedAnnouncements.v = ["Please be quiet"]; + localStorage.setItem("MostUsedAnnouncements", JSON.stringify(MostUsedAnnouncements.v)); + } else { + MostUsedAnnouncements.v = TempMostUsedAnnouncements; + } +} diff --git a/src/routes/announcer/logic/announcerData.svelte.js b/src/routes/announcer/logic/announcerData.svelte.js new file mode 100644 index 0000000..74f019e --- /dev/null +++ b/src/routes/announcer/logic/announcerData.svelte.js @@ -0,0 +1,2 @@ +export let CurrentText = $state({ v: "" }); +export let MostUsedAnnouncements = $state({ v: [] }); \ No newline at end of file diff --git a/src/routes/announcer/main.svelte b/src/routes/announcer/main.svelte deleted file mode 100644 index 1c2008c..0000000 --- a/src/routes/announcer/main.svelte +++ /dev/null @@ -1,100 +0,0 @@ - - -
- -
- -
-
- - diff --git a/src/routes/KahhotClone/+page.svelte b/src/routes/kahootclone/+page.svelte similarity index 90% rename from src/routes/KahhotClone/+page.svelte rename to src/routes/kahootclone/+page.svelte index 6bd1214..e37c4d3 100644 --- a/src/routes/KahhotClone/+page.svelte +++ b/src/routes/kahootclone/+page.svelte @@ -2,13 +2,13 @@ -
\ No newline at end of file + diff --git a/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte b/src/routes/kahootclone/host/components/DuringGame/PeopleAwnsered.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/DuringGame/PeopleAwnsered.svelte rename to src/routes/kahootclone/host/components/DuringGame/PeopleAwnsered.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte b/src/routes/kahootclone/host/components/DuringGame/awnseringQuetions/Awnsers.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/Awnsers.svelte rename to src/routes/kahootclone/host/components/DuringGame/awnseringQuetions/Awnsers.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte b/src/routes/kahootclone/host/components/DuringGame/awnseringQuetions/ProgressBar.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/ProgressBar.svelte rename to src/routes/kahootclone/host/components/DuringGame/awnseringQuetions/ProgressBar.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte b/src/routes/kahootclone/host/components/DuringGame/awnseringQuetions/display.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/display.svelte rename to src/routes/kahootclone/host/components/DuringGame/awnseringQuetions/display.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte b/src/routes/kahootclone/host/components/DuringGame/awnseringQuetions/text/Quetion.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/DuringGame/awnseringQuetions/text/Quetion.svelte rename to src/routes/kahootclone/host/components/DuringGame/awnseringQuetions/text/Quetion.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/components/DuringGame/display.svelte b/src/routes/kahootclone/host/components/DuringGame/display.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/DuringGame/display.svelte rename to src/routes/kahootclone/host/components/DuringGame/display.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte b/src/routes/kahootclone/host/components/lobby/PlayersGUI/playerBadge.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte rename to src/routes/kahootclone/host/components/lobby/PlayersGUI/playerBadge.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/components/lobby/PlayersGUI/players.svelte b/src/routes/kahootclone/host/components/lobby/PlayersGUI/players.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/lobby/PlayersGUI/players.svelte rename to src/routes/kahootclone/host/components/lobby/PlayersGUI/players.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/components/lobby/buttons/startGame.svelte b/src/routes/kahootclone/host/components/lobby/buttons/startGame.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/lobby/buttons/startGame.svelte rename to src/routes/kahootclone/host/components/lobby/buttons/startGame.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/components/lobby/display.svelte b/src/routes/kahootclone/host/components/lobby/display.svelte similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/components/lobby/display.svelte rename to src/routes/kahootclone/host/components/lobby/display.svelte diff --git a/src/routes/KahhotClone/host/[gamePin]/logic/GameOver.js b/src/routes/kahootclone/host/logic/GameOver.js similarity index 68% rename from src/routes/KahhotClone/host/[gamePin]/logic/GameOver.js rename to src/routes/kahootclone/host/logic/GameOver.js index 6749660..48d22cb 100644 --- a/src/routes/KahhotClone/host/[gamePin]/logic/GameOver.js +++ b/src/routes/kahootclone/host/logic/GameOver.js @@ -3,5 +3,5 @@ import { supabase } from "$lib/supabase.js"; export async function GameOver(GamePin) { await supabase.from("games").update({ status: `completed` }).eq("gamepin", GamePin); - window.location.replace("/results/" + GamePin + "?playerID=host-null"); + window.location.replace("/results?gamepin=" + GamePin + "&playerID=host-null"); } diff --git a/src/routes/KahhotClone/host/[gamePin]/logic/GetCurrentPlayers.js b/src/routes/kahootclone/host/logic/GetCurrentPlayers.js similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/logic/GetCurrentPlayers.js rename to src/routes/kahootclone/host/logic/GetCurrentPlayers.js diff --git a/src/routes/KahhotClone/host/[gamePin]/logic/HostsData.svelte.js b/src/routes/kahootclone/host/logic/HostsData.svelte.js similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/logic/HostsData.svelte.js rename to src/routes/kahootclone/host/logic/HostsData.svelte.js diff --git a/src/routes/KahhotClone/host/[gamePin]/logic/UpdatePlayersList.js b/src/routes/kahootclone/host/logic/UpdatePlayersList.js similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/logic/UpdatePlayersList.js rename to src/routes/kahootclone/host/logic/UpdatePlayersList.js diff --git a/src/routes/KahhotClone/host/[gamePin]/logic/WaitForAwnser.js b/src/routes/kahootclone/host/logic/WaitForAwnser.js similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/logic/WaitForAwnser.js rename to src/routes/kahootclone/host/logic/WaitForAwnser.js diff --git a/src/routes/KahhotClone/host/[gamePin]/logic/onNewPlayerAwnsered.js b/src/routes/kahootclone/host/logic/onNewPlayerAwnsered.js similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/logic/onNewPlayerAwnsered.js rename to src/routes/kahootclone/host/logic/onNewPlayerAwnsered.js diff --git a/src/routes/KahhotClone/host/[gamePin]/logic/startGame.js b/src/routes/kahootclone/host/logic/startGame.js similarity index 100% rename from src/routes/KahhotClone/host/[gamePin]/logic/startGame.js rename to src/routes/kahootclone/host/logic/startGame.js diff --git a/src/routes/KahhotClone/join/+page.svelte b/src/routes/kahootclone/join/+page.svelte similarity index 100% rename from src/routes/KahhotClone/join/+page.svelte rename to src/routes/kahootclone/join/+page.svelte diff --git a/src/routes/KahhotClone/join/logic/InsertPlayerInDB.js b/src/routes/kahootclone/join/logic/InsertPlayerInDB.js similarity index 100% rename from src/routes/KahhotClone/join/logic/InsertPlayerInDB.js rename to src/routes/kahootclone/join/logic/InsertPlayerInDB.js diff --git a/src/routes/KahhotClone/join/logic/JoinGameData.svelte.js b/src/routes/kahootclone/join/logic/JoinGameData.svelte.js similarity index 100% rename from src/routes/KahhotClone/join/logic/JoinGameData.svelte.js rename to src/routes/kahootclone/join/logic/JoinGameData.svelte.js diff --git a/src/routes/KahhotClone/join/logic/joinGame.js b/src/routes/kahootclone/join/logic/joinGame.js similarity index 84% rename from src/routes/KahhotClone/join/logic/joinGame.js rename to src/routes/kahootclone/join/logic/joinGame.js index dacf139..524f1d2 100644 --- a/src/routes/KahhotClone/join/logic/joinGame.js +++ b/src/routes/kahootclone/join/logic/joinGame.js @@ -15,5 +15,5 @@ export async function joinGame(pin, name) { Checking.v = false; - window.location.href = `./play/${pin}?name=${name}&playerid=${id}`; + window.location.href = `./play?gamepin=${pin}&name=${name}&playerid=${id}`; } diff --git a/src/routes/KahhotClone/join/logic/validateGamePin.js b/src/routes/kahootclone/join/logic/validateGamePin.js similarity index 100% rename from src/routes/KahhotClone/join/logic/validateGamePin.js rename to src/routes/kahootclone/join/logic/validateGamePin.js diff --git a/src/routes/KahhotClone/play/[gamePin]/+page.svelte b/src/routes/kahootclone/play/+page.svelte similarity index 91% rename from src/routes/KahhotClone/play/[gamePin]/+page.svelte rename to src/routes/kahootclone/play/+page.svelte index d102bb5..0a6054c 100644 --- a/src/routes/KahhotClone/play/[gamePin]/+page.svelte +++ b/src/routes/kahootclone/play/+page.svelte @@ -8,16 +8,16 @@ import { onMount } from "svelte"; import { name,playerid } from "./logic/HostsData.svelte.js"; - export let data; - const gamePin = data.gamePin; + let gamePin; onMount(() => { + name.v = new URLSearchParams(new URL(window.location.href).search).get("name"); + playerid.v = new URLSearchParams(new URL(window.location.href).search).get("playerid"); + gamePin = new URLSearchParams(new URL(window.location.href).search).get("gamepin"); + GetCurrentPlayers(gamePin); AutoUpdatePlayersList(gamePin); IntializeGameStart(gamePin); - - name.v = new URLSearchParams(new URL(window.location.href).search).get("name"); - playerid.v = new URLSearchParams(new URL(window.location.href).search).get("playerid"); }); diff --git a/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte b/src/routes/kahootclone/play/components/awnseringQuetions/Awnsers.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/Awnsers.svelte rename to src/routes/kahootclone/play/components/awnseringQuetions/Awnsers.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte b/src/routes/kahootclone/play/components/awnseringQuetions/ProgressBar.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/ProgressBar.svelte rename to src/routes/kahootclone/play/components/awnseringQuetions/ProgressBar.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte b/src/routes/kahootclone/play/components/awnseringQuetions/buttons/SelectFirst.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/buttons/SelectFirst.svelte rename to src/routes/kahootclone/play/components/awnseringQuetions/buttons/SelectFirst.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte b/src/routes/kahootclone/play/components/awnseringQuetions/buttons/submitAwnser.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/buttons/submitAwnser.svelte rename to src/routes/kahootclone/play/components/awnseringQuetions/buttons/submitAwnser.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/display.svelte b/src/routes/kahootclone/play/components/awnseringQuetions/display.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/display.svelte rename to src/routes/kahootclone/play/components/awnseringQuetions/display.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte b/src/routes/kahootclone/play/components/awnseringQuetions/text/Quetion.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/text/Quetion.svelte rename to src/routes/kahootclone/play/components/awnseringQuetions/text/Quetion.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/text/wait.svelte b/src/routes/kahootclone/play/components/awnseringQuetions/text/wait.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/awnseringQuetions/text/wait.svelte rename to src/routes/kahootclone/play/components/awnseringQuetions/text/wait.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte b/src/routes/kahootclone/play/components/lobby/PlayersGUI/playerBadge.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/lobby/PlayersGUI/playerBadge.svelte rename to src/routes/kahootclone/play/components/lobby/PlayersGUI/playerBadge.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/components/lobby/PlayersGUI/players.svelte b/src/routes/kahootclone/play/components/lobby/PlayersGUI/players.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/lobby/PlayersGUI/players.svelte rename to src/routes/kahootclone/play/components/lobby/PlayersGUI/players.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/components/lobby/display.svelte b/src/routes/kahootclone/play/components/lobby/display.svelte similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/components/lobby/display.svelte rename to src/routes/kahootclone/play/components/lobby/display.svelte diff --git a/src/routes/KahhotClone/play/[gamePin]/logic/GetCurrentPlayers.js b/src/routes/kahootclone/play/logic/GetCurrentPlayers.js similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/logic/GetCurrentPlayers.js rename to src/routes/kahootclone/play/logic/GetCurrentPlayers.js diff --git a/src/routes/KahhotClone/play/[gamePin]/logic/HostsData.svelte.js b/src/routes/kahootclone/play/logic/HostsData.svelte.js similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/logic/HostsData.svelte.js rename to src/routes/kahootclone/play/logic/HostsData.svelte.js diff --git a/src/routes/KahhotClone/play/[gamePin]/logic/IntializeGameStart.js b/src/routes/kahootclone/play/logic/IntializeGameStart.js similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/logic/IntializeGameStart.js rename to src/routes/kahootclone/play/logic/IntializeGameStart.js diff --git a/src/routes/KahhotClone/play/[gamePin]/logic/NewStatus.js b/src/routes/kahootclone/play/logic/NewStatus.js similarity index 92% rename from src/routes/KahhotClone/play/[gamePin]/logic/NewStatus.js rename to src/routes/kahootclone/play/logic/NewStatus.js index 1788e07..9dc22d7 100644 --- a/src/routes/KahhotClone/play/[gamePin]/logic/NewStatus.js +++ b/src/routes/kahootclone/play/logic/NewStatus.js @@ -11,7 +11,7 @@ import { supabase } from "$lib/supabase.js"; export async function NewStatus(NewStatus, gamePin) { if (NewStatus == "completed") { - window.location.replace("/results/" + gamePin + "?playerID=" + playerid.v); + window.location.replace("/results?gamepin" + gamePin + "&playerID=" + playerid.v); return; } diff --git a/src/routes/KahhotClone/play/[gamePin]/logic/SubmitAnswer.js b/src/routes/kahootclone/play/logic/SubmitAnswer.js similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/logic/SubmitAnswer.js rename to src/routes/kahootclone/play/logic/SubmitAnswer.js diff --git a/src/routes/KahhotClone/play/[gamePin]/logic/UpdatePlayersList.js b/src/routes/kahootclone/play/logic/UpdatePlayersList.js similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/logic/UpdatePlayersList.js rename to src/routes/kahootclone/play/logic/UpdatePlayersList.js diff --git a/src/routes/KahhotClone/play/[gamePin]/logic/startGame.js b/src/routes/kahootclone/play/logic/startGame.js similarity index 100% rename from src/routes/KahhotClone/play/[gamePin]/logic/startGame.js rename to src/routes/kahootclone/play/logic/startGame.js diff --git a/src/routes/KahhotClone/results/[gamePin]/+page.svelte b/src/routes/kahootclone/results/+page.svelte similarity index 95% rename from src/routes/KahhotClone/results/[gamePin]/+page.svelte rename to src/routes/kahootclone/results/+page.svelte index 33e76a1..a1e9253 100644 --- a/src/routes/KahhotClone/results/[gamePin]/+page.svelte +++ b/src/routes/kahootclone/results/+page.svelte @@ -2,14 +2,15 @@ import { supabase } from "$lib/supabase"; import { onMount } from "svelte"; - export let data; - const gamePin = data.gamePin; + let gamePin; let playerID; let players = []; onMount(async () => { playerID = new URLSearchParams(new URL(window.location.href).search).get("playerID"); + gamePin = new URLSearchParams(new URL(window.location.href).search).get("gamepin"); + let { data: fetchedPlayers } = await supabase .from("players") diff --git a/src/routes/wordle/logic.svelte.js b/src/routes/wordle/logic.svelte.js index c681862..57713d3 100644 --- a/src/routes/wordle/logic.svelte.js +++ b/src/routes/wordle/logic.svelte.js @@ -1,6 +1,6 @@ import wordExists from "word-exists"; import { generate } from "random-words"; -import { ShowAlert } from "../+layout.svelte"; +import toast from "svelte-5-french-toast"; export let WordLegnth = $state({ v: 5 }); @@ -87,6 +87,8 @@ export function newGame() { function GameWin() { ShowAlert("You win!", "success"); + toast.success("You win!"); + data.value[WordLegnth.v].push(words.v.length); localStorage.setItem("WordleGamesData", JSON.stringify(data.value)); newGame(); diff --git a/svelte.config.js b/svelte.config.js index 10c4eeb..ce37073 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,13 +1,7 @@ -import adapter from '@sveltejs/adapter-auto'; +import adapter from '@sveltejs/adapter-static'; -/** @type {import('@sveltejs/kit').Config} */ -const config = { +export default { kit: { - // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. - // If your environment is not supported, or you settled on a specific environment, switch out the adapter. - // See https://svelte.dev/docs/kit/adapters for more information about adapters. adapter: adapter() } -}; - -export default config; +}; \ No newline at end of file From 959f2441aef75740795d0a8397440bbdf0888106 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Mon, 26 May 2025 21:17:47 +0530 Subject: [PATCH 23/31] made the time display work in idle screen! --- package.json | 1 + src/app.css | 7 + src/routes/+layout.svelte | 39 +-- src/routes/IdleScreen/+page.svelte | 185 ++------------ src/routes/IdleScreen/EditTimetable.svelte | 2 +- .../components/time/DisplayCollsOfTime.svelte | 38 +++ .../IdleScreen/components/time/digit.svelte | 9 + .../IdleScreen/components/time/row.svelte | 29 +++ .../logic/TimeAndTableData.svelte.js | 0 src/routes/IdleScreen/logic/updateTime.js | 31 +++ src/routes/IdleScreen/time.svelte | 231 ------------------ src/routes/IdleScreen/timeTable.svelte | 4 +- 12 files changed, 138 insertions(+), 438 deletions(-) create mode 100644 src/routes/IdleScreen/components/time/DisplayCollsOfTime.svelte create mode 100644 src/routes/IdleScreen/components/time/digit.svelte create mode 100644 src/routes/IdleScreen/components/time/row.svelte create mode 100644 src/routes/IdleScreen/logic/TimeAndTableData.svelte.js create mode 100644 src/routes/IdleScreen/logic/updateTime.js delete mode 100644 src/routes/IdleScreen/time.svelte diff --git a/package.json b/package.json index def688c..066c3c1 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.11", + "sv-popup": "^0.5.3", "svelte": "^5.0.0", "tailwindcss": "^4.0.0", "vite": "^6.0.0" diff --git a/src/app.css b/src/app.css index a461c50..e2cfb8a 100644 --- a/src/app.css +++ b/src/app.css @@ -1 +1,8 @@ +/* + +This file literally only exist so that tailwind intellisense stats to work +there is no other use of it, you can delete it if you want! + +*/ + @import "tailwindcss"; \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 65c6221..945f689 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -5,47 +5,10 @@ -
-
{@render children()}
-
+
{@render children()}
diff --git a/src/routes/IdleScreen/+page.svelte b/src/routes/IdleScreen/+page.svelte index 07b67aa..4a9da74 100644 --- a/src/routes/IdleScreen/+page.svelte +++ b/src/routes/IdleScreen/+page.svelte @@ -1,180 +1,33 @@
-
-
- -{#if TabOpen.v !== false} -
-
- - -
-
-{/if} - - diff --git a/src/routes/IdleScreen/EditTimetable.svelte b/src/routes/IdleScreen/EditTimetable.svelte index d21080b..186b69d 100644 --- a/src/routes/IdleScreen/EditTimetable.svelte +++ b/src/routes/IdleScreen/EditTimetable.svelte @@ -12,7 +12,7 @@
- + {#each table.Times as time} + import { onMount } from "svelte"; + import Row from "./row.svelte"; + + let ShowSeconds; + let ampm; + + onMount(() => { + ShowSeconds = localStorage.getItem("ShowSeconds") || "true" == "true" ? true : false; + + setInterval(() => { + ampm = new Date().getHours() >= 12 ? "PM" : "AM"; + }, 1000); + }); + + +
+ + +

:

+ + + + {#if ShowSeconds} + + + {/if} + +

{ampm}

+
+
+

+ {new Date().toLocaleString("en-US", { weekday: "short" })} + {new Date().getDate()}, + {new Date().toLocaleString("en-US", { month: "short" })} + {new Date().getFullYear()} +

+
diff --git a/src/routes/IdleScreen/components/time/digit.svelte b/src/routes/IdleScreen/components/time/digit.svelte new file mode 100644 index 0000000..fd91b91 --- /dev/null +++ b/src/routes/IdleScreen/components/time/digit.svelte @@ -0,0 +1,9 @@ + + +{#if props.size == "small"} +

{props.digit}

+{:else if props.size == "large"} +

{props.digit}

+{/if} diff --git a/src/routes/IdleScreen/components/time/row.svelte b/src/routes/IdleScreen/components/time/row.svelte new file mode 100644 index 0000000..bc81e23 --- /dev/null +++ b/src/routes/IdleScreen/components/time/row.svelte @@ -0,0 +1,29 @@ + + +
+ {#each Array(digits) as _, i} + + {/each} + +
diff --git a/src/routes/IdleScreen/logic/TimeAndTableData.svelte.js b/src/routes/IdleScreen/logic/TimeAndTableData.svelte.js new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/IdleScreen/logic/updateTime.js b/src/routes/IdleScreen/logic/updateTime.js new file mode 100644 index 0000000..0d4927a --- /dev/null +++ b/src/routes/IdleScreen/logic/updateTime.js @@ -0,0 +1,31 @@ +export function updateTime(RowsObject, Digit, type) { + let DigitsHeight = parseInt(type == "sec" ? "75" : "200"); + let LastZeroPos = Digit == 1 ? 10 : Digit == 0 && type == "hour" ? 2 : 6; + let currentTime; + + if (type == "hour") { + if (new Date().getHours() > 12) { + currentTime = parseInt((new Date().getHours() - 12).toString().padStart(2, "0")[Digit]); + } else { + currentTime = parseInt(new Date().getHours().toString().padStart(2, "0")[Digit]); + } + } else if (type == "min") { + currentTime = parseInt(new Date().getMinutes().toString().padStart(2, "0")[Digit]); + } else if (type == "sec") { + currentTime = parseInt(new Date().getSeconds().toString().padStart(2, "0")[Digit]); + } + + if (currentTime == 0) { + if (RowsObject.scrollTop != 0) { + RowsObject.scrollTop = LastZeroPos * DigitsHeight; + setTimeout(() => { + RowsObject.scroll({ + top: 0, + behavior: "instant", + }); + }, 500); + } + } else { + RowsObject.scrollTop = currentTime * DigitsHeight; + } +} diff --git a/src/routes/IdleScreen/time.svelte b/src/routes/IdleScreen/time.svelte deleted file mode 100644 index 75e1ba3..0000000 --- a/src/routes/IdleScreen/time.svelte +++ /dev/null @@ -1,231 +0,0 @@ - - -
-
-
-
-

0

-

1

-

0

-
-
-

0

-

1

-

2

-

3

-

4

-

5

-

6

-

7

-

8

-

9

-

0

-
-

:

-
-

0

-

1

-

2

-

3

-

4

-

5

-

0

-
-
-

0

-

1

-

2

-

3

-

4

-

5

-

6

-

7

-

8

-

9

-

0

-
- {#if ShowSeconds.v} -

.

-
-

0

-

1

-

2

-

3

-

4

-

5

-

0

-
-
-

0

-

1

-

2

-

3

-

4

-

5

-

6

-

7

-

8

-

9

-

0

-
{/if} -

{AmOrPm}

-
-
-

- {new Date().toLocaleString("en-US", { weekday: "short" })} - {new Date().getDate()}, - {new Date().toLocaleString("en-US", { month: "short" })} - {new Date().getFullYear()} -

-
-
-
- - diff --git a/src/routes/IdleScreen/timeTable.svelte b/src/routes/IdleScreen/timeTable.svelte index 7eeb45d..67374c8 100644 --- a/src/routes/IdleScreen/timeTable.svelte +++ b/src/routes/IdleScreen/timeTable.svelte @@ -63,13 +63,13 @@ let table = $state(); - let TempTimeTable = localStorage.getItem("TimeTable") || ""; + /*let TempTimeTable = localStorage.getItem("TimeTable") || ""; if (TempTimeTable != "") { table = JSON.parse(TempTimeTable); } else { newTable($state.snapshot(TemplateTable)); - } + }*/
From 46ccd7b1392501e6261c57e68eb75315bb72773b Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Tue, 27 May 2025 20:42:07 +0530 Subject: [PATCH 24/31] made the whole time table working and improved the styles of the time and tinkered with daisy ui but in the end dicided to add my own utility classes --- .vscode/settings.json | 1 + .vscode/tailwind.json | 95 +++++ package.json | 4 +- src/app.css | 8 - src/routes/+layout.svelte | 11 +- src/routes/+page.svelte | 6 - src/routes/IdleScreen/+page.svelte | 19 +- src/routes/IdleScreen/EditTimetable.svelte | 348 ------------------ .../components/time/DisplayCollsOfTime.svelte | 42 ++- .../IdleScreen/components/time/digit.svelte | 8 +- .../IdleScreen/components/time/row.svelte | 2 +- .../timetable/DisplayRowsOfTimetable.svelte | 37 ++ .../components/timetable/EditTimetable.svelte | 58 +++ .../logic/TimeAndTableData.svelte.js | 20 + src/routes/IdleScreen/timeTable.svelte | 198 ---------- src/routes/app.css | 17 + 16 files changed, 274 insertions(+), 600 deletions(-) create mode 100644 .vscode/tailwind.json delete mode 100644 src/app.css delete mode 100644 src/routes/IdleScreen/EditTimetable.svelte create mode 100644 src/routes/IdleScreen/components/timetable/DisplayRowsOfTimetable.svelte create mode 100644 src/routes/IdleScreen/components/timetable/EditTimetable.svelte delete mode 100644 src/routes/IdleScreen/timeTable.svelte create mode 100644 src/routes/app.css diff --git a/.vscode/settings.json b/.vscode/settings.json index 4fc4d43..204668b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,7 @@ "editor.quickSuggestions": { "strings": true }, + "css.customData": [".vscode/tailwind.json"], "cSpell.words": [ "correctanswer", "creationdate", diff --git a/.vscode/tailwind.json b/.vscode/tailwind.json new file mode 100644 index 0000000..d634f37 --- /dev/null +++ b/.vscode/tailwind.json @@ -0,0 +1,95 @@ +{ + "version": 1.2, + "atDirectives": [ + { + "name": "@theme", + "description": "Use the `@theme` directive to define your project's custom design tokens, like fonts, colors, and breakpoints.", + "references": [ + { + "name": "Tailwind Documentation", + "url": "https://tailwindcss.com/docs/functions-and-directives#theme-directive" + } + ] + }, + { + "name": "@source", + "description": "Use the `@source` directive to explicitly specify source files that aren't picked up by Tailwind's automatic content detection.", + "references": [ + { + "name": "Tailwind Documentation", + "url": "https://tailwindcss.com/docs/functions-and-directives#source-directive" + } + ] + }, + { + "name": "@utility", + "description": "Use the `@utility` directive to add custom utilities to your project that work with variants like `hover`, `focus` and `lg`.", + "references": [ + { + "name": "Tailwind Documentation", + "url": "https://tailwindcss.com/docs/functions-and-directives#utility-directive" + } + ] + }, + { + "name": "@variant", + "description": "Use the `@variant` directive to apply a Tailwind variant to styles in your CSS.", + "references": [ + { + "name": "Tailwind Documentation", + "url": "https://tailwindcss.com/docs/functions-and-directives#variant-directive" + } + ] + }, + { + "name": "@custom-variant", + "description": "Use the `@custom-variant` directive to add a custom variant in your project.", + "references": [ + { + "name": "Tailwind Documentation", + "url": "https://tailwindcss.com/docs/functions-and-directives#custom-variant-directive" + } + ] + }, + { + "name": "@apply", + "description": "Use the `@apply` directive to inline any existing utility classes into your own custom CSS.", + "references": [ + { + "name": "Tailwind Documentation", + "url": "https://tailwindcss.com/docs/functions-and-directives#apply-directive" + } + ] + }, + { + "name": "@reference", + "description": "If you want to use `@apply` or `@variant` in the ` +
{@render children()}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 330c0df..91e914c 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -120,12 +120,6 @@ justify-content: center; } - h1 { - text-align: center; - margin: 0; - font-size: 60px; - } - h2 { text-align: center; margin: 0; diff --git a/src/routes/IdleScreen/+page.svelte b/src/routes/IdleScreen/+page.svelte index 4a9da74..9090bc0 100644 --- a/src/routes/IdleScreen/+page.svelte +++ b/src/routes/IdleScreen/+page.svelte @@ -2,32 +2,35 @@ import { Modal, Content, Trigger } from "sv-popup"; import Time from "./components/time/DisplayCollsOfTime.svelte"; - import TimeTable from "./timeTable.svelte"; - import EditTimetableDiv from "./EditTimetable.svelte"; + import TimeTable from "./components/timetable/DisplayRowsOfTimetable.svelte"; + import EditTimetableDiv from "./components/timetable/EditTimetable.svelte"; + import { colseModal } from "./logic/TimeAndTableData.svelte.js"; export let ShowSeconds = $state({ v: true }); -
+
- + {#if ShowSeconds.v}Disable Seconds{:else}Enable Seconds{/if} + - +
-
-
diff --git a/src/routes/IdleScreen/EditTimetable.svelte b/src/routes/IdleScreen/EditTimetable.svelte deleted file mode 100644 index 186b69d..0000000 --- a/src/routes/IdleScreen/EditTimetable.svelte +++ /dev/null @@ -1,348 +0,0 @@ - - -
-
-
-
- - {#each table.Times as time} - { - newTable(table); - }} - bind:value={time} - /> - {/each} -
-
- Monday - {#each table.Monday as time} - { - newTable(table); - }} - bind:value={time} - /> - {/each} -
-
- Tuesday - {#each table.Tuesday as time} - { - newTable(table); - }} - bind:value={time} - /> - {/each} -
-
- Wednesday - {#each table.Wednesday as time} - { - newTable(table); - }} - bind:value={time} - /> - {/each} -
-
- Thursday - {#each table.Thursday as time} - { - newTable(table); - }} - bind:value={time} - /> - {/each} -
-
- Friday - {#each table.Friday as time} - { - newTable(table); - }} - bind:value={time} - /> - {/each} -
-
- -
-
- -{#if TabOpen !== false} -
-
-
-

Paste CSV here:

-

- -
-
- - -
-
-
-{/if} - - diff --git a/src/routes/IdleScreen/components/time/DisplayCollsOfTime.svelte b/src/routes/IdleScreen/components/time/DisplayCollsOfTime.svelte index 047c2b5..69afb40 100644 --- a/src/routes/IdleScreen/components/time/DisplayCollsOfTime.svelte +++ b/src/routes/IdleScreen/components/time/DisplayCollsOfTime.svelte @@ -7,32 +7,34 @@ onMount(() => { ShowSeconds = localStorage.getItem("ShowSeconds") || "true" == "true" ? true : false; - setInterval(() => { ampm = new Date().getHours() >= 12 ? "PM" : "AM"; }, 1000); }); -
- - -

:

- - +
+
+ + +

:

+ + - {#if ShowSeconds} - - - {/if} + {#if ShowSeconds} +

.

-

{ampm}

-
-
-

- {new Date().toLocaleString("en-US", { weekday: "short" })} - {new Date().getDate()}, - {new Date().toLocaleString("en-US", { month: "short" })} - {new Date().getFullYear()} -

+ + + {/if} +

{ampm}

+
+
+

+ {new Date().toLocaleString("en-US", { weekday: "short" })} + {new Date().getDate()}, + {new Date().toLocaleString("en-US", { month: "short" })} + {new Date().getFullYear()} +

+
diff --git a/src/routes/IdleScreen/components/time/digit.svelte b/src/routes/IdleScreen/components/time/digit.svelte index fd91b91..98c8dc2 100644 --- a/src/routes/IdleScreen/components/time/digit.svelte +++ b/src/routes/IdleScreen/components/time/digit.svelte @@ -3,7 +3,9 @@ {#if props.size == "small"} -

{props.digit}

+

+ {props.digit} +

{:else if props.size == "large"} -

{props.digit}

-{/if} +

{props.digit}

+{/if} \ No newline at end of file diff --git a/src/routes/IdleScreen/components/time/row.svelte b/src/routes/IdleScreen/components/time/row.svelte index bc81e23..fa94570 100644 --- a/src/routes/IdleScreen/components/time/row.svelte +++ b/src/routes/IdleScreen/components/time/row.svelte @@ -19,7 +19,7 @@
{#each Array(digits) as _, i} diff --git a/src/routes/IdleScreen/components/timetable/DisplayRowsOfTimetable.svelte b/src/routes/IdleScreen/components/timetable/DisplayRowsOfTimetable.svelte new file mode 100644 index 0000000..2230b1b --- /dev/null +++ b/src/routes/IdleScreen/components/timetable/DisplayRowsOfTimetable.svelte @@ -0,0 +1,37 @@ + + +
+ {#each timetableData.v as row, RowIndex} + {#each row as time, timeIndex} + {#if RowIndex == 0 && timeIndex == 0} + + {:else if RowIndex == 0} + {time} + {:else if RowIndex == new Date().getDay() && timeIndex == 0} + {legend[RowIndex]} + {:else if RowIndex == new Date().getDay()} + {time} + {:else if timeIndex == 0} + {legend[RowIndex]} + {:else} + {time} + {/if} + {/each} + {/each} +
diff --git a/src/routes/IdleScreen/components/timetable/EditTimetable.svelte b/src/routes/IdleScreen/components/timetable/EditTimetable.svelte new file mode 100644 index 0000000..2ca0e2f --- /dev/null +++ b/src/routes/IdleScreen/components/timetable/EditTimetable.svelte @@ -0,0 +1,58 @@ + + +
+
+ {#each data as row, RowIndex} +
+ {#each row as _, timeIndex} + {#if RowIndex == 0 && timeIndex == 0} + + {:else if timeIndex == 0} + + {:else if RowIndex == 0} + + {:else} + + {/if} + {/each} +
+ {/each} +
+ +
+ +
+
diff --git a/src/routes/IdleScreen/logic/TimeAndTableData.svelte.js b/src/routes/IdleScreen/logic/TimeAndTableData.svelte.js index e69de29..d480d89 100644 --- a/src/routes/IdleScreen/logic/TimeAndTableData.svelte.js +++ b/src/routes/IdleScreen/logic/TimeAndTableData.svelte.js @@ -0,0 +1,20 @@ +export let timetableData = $state({ + v: [ + [ + "07:50 - 08:50", + "08:50 - 09:40", + "09:40 - 10:30 ", + "10:30 - 11:00", + "11:00 - 12:00", + "12:00 - 01:00", + "01:00 - 02:00", + ], + ["English", "Sanskrit", "Math", "Lunch", "Hindi", "Social Science", "Science"], + ["English", "Art & Craft", "Math", "Lunch", "Hindi", "Social Science", "Science"], + ["English", "GK", "Math", "Lunch", "Hindi", "Social Science", "Science"], + ["English", "Sanskrit", "Math", "Lunch", "Hindi", "Social Science", "Science"], + ["English", "Computers", "Math", "Lunch", "Hindi", "Social Science", "Science"], + ], +}); + +export let colseModal = $state({ v: false }); diff --git a/src/routes/IdleScreen/timeTable.svelte b/src/routes/IdleScreen/timeTable.svelte deleted file mode 100644 index 67374c8..0000000 --- a/src/routes/IdleScreen/timeTable.svelte +++ /dev/null @@ -1,198 +0,0 @@ - - -
-
-
- - {#each table.Times as time} - {time} - {/each} -
-
- {#if new Date().getDay() == 1} - Monday - {:else} - Monday - {/if} - {#each table.Monday as time} - {#if new Date().getDay() == 1} - {time} - {:else} - {time} - {/if} - {/each} -
-
- {#if new Date().getDay() == 2} - Tuesday - {:else} - Tuesday - {/if} - {#each table.Tuesday as time} - {#if new Date().getDay() == 2} - {time} - {:else} - {time} - {/if} - {/each} -
-
- {#if new Date().getDay() == 3} - Wednesday - {:else} - Wednesday - {/if} - {#each table.Wednesday as time} - {#if new Date().getDay() == 3} - {time} - {:else} - {time} - {/if} - {/each} -
-
- {#if new Date().getDay() == 4} - Thursday - {:else} - Thursday - {/if} - {#each table.Thursday as time} - {#if new Date().getDay() == 4} - {time} - {:else} - {time} - {/if} - {/each} -
-
- {#if new Date().getDay() == 5} - Friday - {:else} - Friday - {/if} - {#each table.Friday as time} - {#if new Date().getDay() == 5} - {time} - {:else} - {time} - {/if} - {/each} -
-
-
- - diff --git a/src/routes/app.css b/src/routes/app.css new file mode 100644 index 0000000..47fa6dc --- /dev/null +++ b/src/routes/app.css @@ -0,0 +1,17 @@ +@import "https://www.nerdfonts.com/assets/css/webfont.css"; +@import url("https://fonts.googleapis.com/css2?family=Comfortaa:wght@300..700&family=JetBrains+Mono:wght@200&family=Sour+Gummy:wght@300&display=swap"); +@import "tailwindcss"; + +:root { + @apply bg-gray-950 p-5 text-white; +} + + + +.btn { + @apply cursor-pointer rounded border-2 border-white bg-gray-600 px-4 py-2 font-bold text-white transition-all hover:scale-105 hover:-rotate-5 hover:bg-gray-500 hover:shadow-lg; + + &.green { + @apply bg-green-600 hover:bg-green-500; + } +} \ No newline at end of file From 753d95c48fa7b6b9d03c9252356a9767bef11c78 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Wed, 28 May 2025 06:53:14 +0530 Subject: [PATCH 25/31] fix bug --- src/routes/IdleScreen/components/timetable/EditTimetable.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/IdleScreen/components/timetable/EditTimetable.svelte b/src/routes/IdleScreen/components/timetable/EditTimetable.svelte index 2ca0e2f..147446e 100644 --- a/src/routes/IdleScreen/components/timetable/EditTimetable.svelte +++ b/src/routes/IdleScreen/components/timetable/EditTimetable.svelte @@ -49,7 +49,7 @@ Date: Wed, 28 May 2025 09:24:10 +0530 Subject: [PATCH 26/31] made the front page nothing mutch just the landing page with the easret eg where you can add ?ascii to the url! --- package.json | 1 - src/app.html | 2 +- src/routes/+HomePage/ascii.svelte | 87 +++++++++ src/routes/+HomePage/landingPage.svelte | 25 +++ src/routes/+layout.js | 1 + src/routes/+layout.svelte | 2 - src/routes/+page.svelte | 241 +----------------------- src/routes/RandomName/+page.svelte | 4 +- src/routes/old +page.svelte | 112 +++++++++++ 9 files changed, 232 insertions(+), 243 deletions(-) create mode 100644 src/routes/+HomePage/ascii.svelte create mode 100644 src/routes/+HomePage/landingPage.svelte create mode 100644 src/routes/+layout.js create mode 100644 src/routes/old +page.svelte diff --git a/package.json b/package.json index 5bb1a2d..bfb942f 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "@tailwindcss/postcss": "^4.1.6", "@tailwindcss/vite": "^4.0.0", "autoprefixer": "^10.4.21", - "daisyui": "^5.0.38", "eslint-config-prettier": "^10.0.1", "postcss": "^8.5.3", "prettier": "^3.4.2", diff --git a/src/app.html b/src/app.html index a9aea08..37331cd 100644 --- a/src/app.html +++ b/src/app.html @@ -2,7 +2,7 @@ - + %sveltekit.head% diff --git a/src/routes/+HomePage/ascii.svelte b/src/routes/+HomePage/ascii.svelte new file mode 100644 index 0000000..92fdb89 --- /dev/null +++ b/src/routes/+HomePage/ascii.svelte @@ -0,0 +1,87 @@ +
+                       ##########%#%                                                                           ############%#                                                                                                  
+                   #%#################%                                                                       %###################%#%%                                                                                         
+                %%######################                                                                     ###########################%                                                                                      
+               ##########################                                                                    %###########################%#                                                                                    
+             %###########################%                                                                   %#############################%#                                                                                  
+            ##############################%                                                                  ######%##########################                                                                                 
+          %%###############%##%############                                                                 %#################################%                                                                                
+         ###############*+=-----=+*%#######%                                                                #######+--=+**#####################%                                                                               
+        %%###########+=-------------*######%                                                                %######=--------=-----=*############%                                                                              
+       ############+----------------.######%                                                                #######------------------=*###########                                                                             
+       ##########+------------------.######% %#######%                                                      ######*----------------::::=##########%                                                                            
+      %#########=-----------------::.######%############%%                                                 %######+--------------::::::-=##########                                                                            
+      ########*-----------------:::.:######################%                                               %######=------------::::::-====*#########                                                                           
+     %#######*:---------------:::::.-########################                                              %######=----------::::::-=======*########                                                                           
+     #######*:::------------::::::-:=########################%                                             #######---------::::::-======+++=########%                                                                          
+    ########=::::----------:::::-==.+#########################%                                            ######*-------::::::-======++++++=#######%                                                                          
+    #######+==:::::------::...:--==.*#########################%                                           %######+-----:::::.:-=====++++++++=+######%                                                                          
+   %#######+===-:::::-::...:===--:.:################%##########                                           %######=---::::::=.-==-=+++++++++++-#######%                                                                         
+   #######*++====::::::. =#######################+++++*######## %%%%                  %%             #%%% #######=-::::::===.####++++++++++++-*####### #%#%###%%           #%%####%#                   %%#%####%%#             
+   #######++++====::::..*#######################*++++++==##############            #%#####%%     %###############::::::====-.#####*++++++++++==##################%     %#%############%%        %%%%%###############           
+   #######+++++=====-..*#######################%**+++++-:##################%    %############  #################*::::======--######+++++++++++-###################%%  #################### %%%######################%%         
+   ######*+++++++====.=##############%##########****+++--#####################%%################################+::=======+-=######+++++++++++:######################%#################################################        
+   ######*++++++++==-.##########################*****++:=#######################################################========+++:+######++++++++**+:#########################################################################       
+   ######*++++++++++--##########################******+:+#######################################################+=====+++++.######*+++++*****+:##########################################################################      
+   ######*++++++++++=-##########################*******.*#######################################################====+++++++.######++++*******=-##########################################################################%     
+   ######*++++++++++==########################%#*******.########################################################==+++++++++=*###*+++*********-=##########***#############################################**+**#############    
+   ######***++++++++=-########################%#******+.#####*++++++*###############*++++*#########*+===#######*++++++++++++++++++***********.*########*********############********##################*++++++++++##########    
+   ######****++++++++:#################*+######*******+:####+++++++++++**########%*++++++-#######*+++==-+######*++++++++++++++++************=.#######************#########***********+#######%#+++++=======+++++++*########%   
+   #######****+++++++:################***+#####*******=-###++++++++++++++++++####+++++++++=#####++++++++-######*++++++++++++++*************+.+#####**************+*######***********+++*##%**+++=============+++++++########   
+   #######*****++++++=+##############****+*####++++***-=##**+++++++++++++++++:##++++++++++-####++++++++++-#####+++++++++++++***************::#####****************=#####*********++++++=*##++==================++++=*#######%  
+   #######*******+++++=#############******+*###+++++**:+##***++++++++++++++++.#********+=:.=##+++++++++-: #####+++++++++++****************::######*******+=+*******=###******+++++++++++-##+=========-----=======+++-########  
+   #######********+++++=###########******++=###++++++*.*##****+++=-=********=-#********+.=####++++++++::*######+++++++++*****************=.######*+*****-.:==******-###***++++-.:-=+++====#*=====-----------:======+=+#######  
+   %######**********+++*+*#######*******++++=##==+++++.##*******-.=*+*******:+#*********-#####++++++++-*######*+++++++***=+************+++-######++++++=.*###******==##++++++:.*###======:#*==---------------+=======-#######% 
+   ########***************************++++++-=*====++=.##******+.*###*******.###**********####+++++++++=######*+++++*****.==-=*******+++++:######++++++:=####*++++++-#*++++++.*####======:*#------::--------:#=--====:########%
+    #######*************************+++++++=.=+=====+=:##******=-####******+:###**********+####**++++++++*####++++******* ###*=****+++++++-+#####++++++:*####*+++++=:#*+++++=.#####+===--:+#--------#-------.#+----==-*#######%
+    %#######**********************+++++++==::#+======--##******==####******=-####+*********+###+***++++++++###++********+:#####**+++++++===-#####=====+-*####*+++++=:#*++====:#####=-----:+#=------:#+------.**-------=########
+    %#######********************+++++++===- *#=----==:=##+******=####******:+#####+*********=###+*****++++=*##**********=-#####*++++++=====:#####========####++++++:-#*======:####+------.+#=-----:.#*:::---:+#--------########
+     ########+****************+++++++====:.+##------=:+##++*****+*##*******:*######+********-####********++-##**********:=######++++=======:#####+========*+=======.*##======--**+-------.*#+--::::.*#:::::::=#=--------#######
+     %########+**************++++++=====:.*###-------.*###++***************:*#######********-+####*********.#***********.*######++=======--:+####*--==============::###===--------------::##*::::::.+#:::::::-##--------.######
+      ########%=***********++++++======:.*###*-------.####+++**************=*######++++*****.*####********=:##********** ########======------#####=----------====-.*####---------------:.+###:::::::=#-::::::.##+------.-######
+      ##########=+*******+++++++=====-.:#####+-------.#####=++++++++++++++++-####+++++++++*-.###*********+.+##*********=:########====-------:######--------------.=#####+------------::.-####::::::::#=::::::.##%+:---.:#######
+       %#########*=+***+++++++=====-:.=######+::----::######=+++++++++++++++:+###+++++++++-.*###********+.-###-=+****++--#########=---------.######*-----------:.=#######+-------::::..-#####-::::::.#+::::::.*%##*-:..########
+        %##########=-+++++++=====-:.:*#######=::::--:-#######=-=+++++=+++++-.####*+++++++:.*####*******=.=####*+-::--=+:=#########=---------.#######*::-------..+#########*::-:::::...=######=::::::.#*:::::..=#####*+#########
+         ############=--======-:..-*##########=:..::.=########*-::::.:=====.+#####====-:.:#######***+=..+###########*=--##########*------::..#########=::::...-#############+:.....:+########+::::::.*#=...--+################ 
+          %#############+=--::-=*#################*+=##################===.-#######-:..=#########*-:.-+############################----:..:=############*==+*################################*::....:*##*##################### 
+           #############################################################*-:#########+*############*+################################:..:=*####################################################*:=+*##########################  
+             ########################################################################################################################**####################################################################################%   
+               #######################%@%##############################################################+++*#######################################*#######################################################################%    
+                 ###################%@@@@@%##############################################**+++########*++++++++###############################+=-::=###############*+-:::*########################################%%###%%      
+                   ################%@@@@@@@@%##################++++*############**+==---------:#######++++++==-:#########################*+=:::::::.=#########*+=-:::::::.######%%%%%#################%%%%#######%             
+                   ##############%@@@@%#%@@@@@%############*+---------###*+=------------------:+######========-:#########*##########*+=-::::::::::::-#####+=-::::::::::::.######%@@@@@@%###########%@@@@@@#######%             
+                   ############%@@@@%%####%@@@@%##########------------.##=------:::::---------:=######========:=########+::-+*#####:::::::::::::::::.###=::::::::::::::::.+#####%@@@@@@@@%#######%@@@@@@@@########             
+                   ##########%@@@@@%########%@@@@%#######::::---::::::.##=:::::::::::::-------:=#####*-======-.+########-::::::-*##:::::::::::::::::.###=:::::::::::::::::=#####%@@@@@@@@@@%###%@@@@@@@@@@#######%             
+                   #########@@@@@%############%@@@@%####-:::::::::::::.*#=::::::::::::::::----:-#####+-------- #########:::::::::*#:::::::::::::::::.+##+::::::::::::::::::#####%@@%**%@@@@@%#%@@@@@#**@@@########             
+                   #########%@@@@@%##########%@@@@@@###*::::::::::::::.*#+::::::::::::::::::--::#####=--------.########*::::::::.=#=:::::::::::::::::=##*:::::::::::::::::.#####%@@%****%@@@@@@@@@#****@@@#######%             
+                   %##########%@@@@@%######%@@@@@@@@###=::::::::::::::.*#*:::::::::::::::::::::.#####--------:-########+::::::::.*#+::::.........:::.:###::::::::::::::::..*####%@@%******%@@@@@%******@@@########             
+                    %###########@@@@@%###%@@@@@%#@@@###-::::::::::::::.*#*:::::::::::::::......-#####--------.=########-:::::::: ##*::...............+###::::::::::::.....:#####%@@%*******#@@@%*******@@@#######%             
+                    ############@@@@@@@%@@@@%@@%#@@@###:::::::::::..:::*##:::::::::::::::.=+**######+-------:.*########::::::::.:###...........:-=*######=...........:=+*#######%@@%********%@@#*******@@@#######%             
+                     %##########@@#*%@@@@@%#*@@%#@@@###-:::::::::.=#######+....::::::::::.##########=:----:::.########*::::::::.=###:........=###########+........:#############%@@%********#@@#*******@@@#######%             
+                      %#########@@#***%@@#***@@%#@@@###-::::::::.:#########**###+::::::::.*#########-:::::::.:########=::::::::.*###=........=#*+=-+#####*.........##*+==#######%@@%********#@@#*******@@@########             
+                       %########@@#***#@#****@@%#@@@###+:::::::::-##############+::::::::.*#########::::::::.=########-:::::::. ####+........:......+#####:........:.....:######%@@%********%@@#*******@@@#######%             
+                        ########@@@#**#@#***%@@%#@@@####.::::::::-##############*::::::::.+########*::::::::.+########::::::...:####*...::::::::....-#####-.............:.*#####%@@%********%@@#*******@@@%#######             
+                        ########@@@@%*#@#*#@@@@%#%%%####-.:::::::.###############::::::::.=########+:::::::: ########*::::.....=#####::::::::::::::::#####=..........::::.*#####%@@@@%#*****%@@#****%%@@@@#######              
+                        #########%@@@@%@#@@@@%##########+..::::::.*##############.....::::-########=:::::::::########=::.......*#####=::::::::::::::.#####*:::::..::::::::+#####%@@@@@@@%#**%@@#*#%@@@@@@@#######              
+                        %##########%@@@@@@@@%############.........-##############:......:::########-:::::::.-########:........ ######+:::--:::::::::.######:::::::::::::::=#####%@@@@@@@@@%*%@@#%@@@@@@@@@#######              
+                         #########%#%%@@@@%##############-.........##############-........:########::::::::.=#######*.........:######*:------------:.*#####-:::::::::::----#########%%@@@@@@@@@@@@@@@%%##########              
+                         %############%@%################=.........=#############-.........########::::::::.=#######=.........=#######--------------.+#####=::::::::-----::#############%@@@@@@@@@%##############              
+                          %##############################=.........-#############=.........########:::::::::=#######:......::.*#######---------...:-=######+--------:...:-*##############%%@@@@@%###############               
+                           #######################%######:..........#############+.........*#######-:::::::::######-.....::::.########+-------:-###########*--------.*#####################%@@@%################               
+                            ###########################*-::.........#############*:::......+#######=:::::::..:###+-....:::::.=########+---------############--------.########################%#################                
+                             #%###################%=----:::::::::::.####%########*::::::...+#######*.................::::::: *########*--------:############=-------:+######################################%%                 
+                               %%##################=-----:::::::::::##############::::::::.=########:..............:::::::-:-##########--------.############+-------:=###########%%####################%#%                     
+                                 #%########%%######=------::::::::.=##############-::::::::-########*............:::::::--- *##########=-------:+###########*--------:########%    #%#################%                        
+                                     #%%    #######=-------:::::::.###############=---::::::#########-.........:::::::----.-###########+-------:=############--------.#######%       ###############%                          
+                                            %######=------------:.+###############=-----::::##########:......:::::::-----:.*###########*--------:############--------.*######%         %##########%                            
+                                            #######+-----------:.+################=--------.###########-...:::::::------:.*#############--------.############=-------:=######            #%####%#                              
+                                            %######+---------:.-##################+--------.############=:::::::------:.:*##############--------:*###########+---------######                                                  
+                                            %#######+::::...:=*##########   ######*-----::: ##############-:::------:..+################=-------.+###########*-------::######                                                  
+                                             ##########*+*#############%    #######+..:--=+*################=::::...:=##################+--::..:-#############--::..:-*#####%                                                  
+                                             ##########################      %###################%#############***#######################=:-+*#################:-=*#########                                                   
+                                              %######################%       ###################% %###########################%   #########################################%                                                   
+                                               ######################         #################%%  %#########################%%    ####################%##################%                                                    
+                                                #%#################            ###############%     %########################      %##################% %################%                                                     
+                                                  ###############               %#############        ####################%%         ################%   %###############                                                      
+                                                     #%##%%%#%                    %#######%##            %%%###########%%%            #############%       ###########%%                                                       
+
diff --git a/src/routes/+HomePage/landingPage.svelte b/src/routes/+HomePage/landingPage.svelte new file mode 100644 index 0000000..1370257 --- /dev/null +++ b/src/routes/+HomePage/landingPage.svelte @@ -0,0 +1,25 @@ + + +
+
+ {#if FlagAscii == true} + + {:else} + ClassRoomStuff Logo + {/if} +

🎓 Your One-Stop Toolkit for Interactive Classrooms!

+ +
+
diff --git a/src/routes/+layout.js b/src/routes/+layout.js new file mode 100644 index 0000000..c8cacf0 --- /dev/null +++ b/src/routes/+layout.js @@ -0,0 +1 @@ +export const prerender = true; \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 37f8234..2174ac7 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,6 +1,4 @@ -
- Made by RezHackXYZ for - Neighborhood! - Contribute here if you - want. -
- - + \ No newline at end of file diff --git a/src/routes/RandomName/+page.svelte b/src/routes/RandomName/+page.svelte index 18369a3..7f778c9 100644 --- a/src/routes/RandomName/+page.svelte +++ b/src/routes/RandomName/+page.svelte @@ -2,7 +2,7 @@ import Selector from "./selector.svelte"; import TopDisplay from "./TopDisplay.svelte"; import EditNameOfStudents from "./EditNameOfStudents.svelte"; - import {ShowAlert} from "../+page.svelte"; + //import {ShowAlert} from "../+page.svelte"; export let RandomNamesState = $state({ NotSelectedYet: [], @@ -25,7 +25,7 @@ ]; RandomNamesState.NotSelectedYet.splice(randomIndex, 1); } else { - ShowAlert("All students have been selected.", "warning"); + //ShowAlert("All students have been selected.", "warning"); } } diff --git a/src/routes/old +page.svelte b/src/routes/old +page.svelte new file mode 100644 index 0000000..98147ed --- /dev/null +++ b/src/routes/old +page.svelte @@ -0,0 +1,112 @@ + + +
+ Made by RezHackXYZ for + Neighborhood! + Contribute here if you + want. +
\ No newline at end of file From ec403139830b9929d442a171bd4b1bfd49c3e484 Mon Sep 17 00:00:00 2001 From: RezHackXYZ Date: Wed, 28 May 2025 10:04:57 +0530 Subject: [PATCH 27/31] abc! --- .gitignore | 2 - .prettierrc | 8 +- .vscode/settings.json | 22 - .vscode/tailwind.json | 95 - eslint.config.js | 2 +- jsconfig.json | 14 +- other-package.json | 32 + package-lock.json | 3303 +++++++++++++++++++++++ package.json | 2 +- postcss.config.js | 6 - src/app.html | 7 +- src/routes/+HomePage/ToolsBelt.svelte | 7 + src/routes/+HomePage/landingPage.svelte | 2 +- src/routes/+layout.svelte | 2 +- src/routes/+page.svelte | 4 +- src/routes/{app.css => tailwind.css} | 0 svelte.config.js | 7 +- tailwind.config.js | 8 - 18 files changed, 3370 insertions(+), 153 deletions(-) delete mode 100644 .vscode/settings.json delete mode 100644 .vscode/tailwind.json create mode 100644 other-package.json create mode 100644 package-lock.json delete mode 100644 postcss.config.js create mode 100644 src/routes/+HomePage/ToolsBelt.svelte rename src/routes/{app.css => tailwind.css} (100%) delete mode 100644 tailwind.config.js diff --git a/.gitignore b/.gitignore index 70f61e8..3b462cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ node_modules -package-lock.json # Output .output @@ -22,4 +21,3 @@ Thumbs.db # Vite vite.config.js.timestamp-* vite.config.ts.timestamp-* - diff --git a/.prettierrc b/.prettierrc index 69660f4..7ebb855 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,7 +1,7 @@ { "useTabs": true, - "singleQuote": false, - "trailingComma": "all", + "singleQuote": true, + "trailingComma": "none", "printWidth": 100, "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], "overrides": [ @@ -11,7 +11,5 @@ "parser": "svelte" } } - ], - "tabWidth": 4, - "svelteAllowShorthand": true + ] } diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 204668b..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "tailwindCSS.emmetCompletions": true, - "editor.inlineSuggest.enabled": true, - "editor.quickSuggestions": { - "strings": true - }, - "css.customData": [".vscode/tailwind.json"], - "cSpell.words": [ - "correctanswer", - "creationdate", - "gameid", - "gamepin", - "hostgame", - "kahoot", - "kahootclone", - "Newplayers", - "playername", - "questionid", - "questionstext", - "SUPABASE" - ] -} diff --git a/.vscode/tailwind.json b/.vscode/tailwind.json deleted file mode 100644 index d634f37..0000000 --- a/.vscode/tailwind.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "version": 1.2, - "atDirectives": [ - { - "name": "@theme", - "description": "Use the `@theme` directive to define your project's custom design tokens, like fonts, colors, and breakpoints.", - "references": [ - { - "name": "Tailwind Documentation", - "url": "https://tailwindcss.com/docs/functions-and-directives#theme-directive" - } - ] - }, - { - "name": "@source", - "description": "Use the `@source` directive to explicitly specify source files that aren't picked up by Tailwind's automatic content detection.", - "references": [ - { - "name": "Tailwind Documentation", - "url": "https://tailwindcss.com/docs/functions-and-directives#source-directive" - } - ] - }, - { - "name": "@utility", - "description": "Use the `@utility` directive to add custom utilities to your project that work with variants like `hover`, `focus` and `lg`.", - "references": [ - { - "name": "Tailwind Documentation", - "url": "https://tailwindcss.com/docs/functions-and-directives#utility-directive" - } - ] - }, - { - "name": "@variant", - "description": "Use the `@variant` directive to apply a Tailwind variant to styles in your CSS.", - "references": [ - { - "name": "Tailwind Documentation", - "url": "https://tailwindcss.com/docs/functions-and-directives#variant-directive" - } - ] - }, - { - "name": "@custom-variant", - "description": "Use the `@custom-variant` directive to add a custom variant in your project.", - "references": [ - { - "name": "Tailwind Documentation", - "url": "https://tailwindcss.com/docs/functions-and-directives#custom-variant-directive" - } - ] - }, - { - "name": "@apply", - "description": "Use the `@apply` directive to inline any existing utility classes into your own custom CSS.", - "references": [ - { - "name": "Tailwind Documentation", - "url": "https://tailwindcss.com/docs/functions-and-directives#apply-directive" - } - ] - }, - { - "name": "@reference", - "description": "If you want to use `@apply` or `@variant` in the `