diff --git a/.github/workflows/astro.yml b/.github/workflows/astro.yml index a0b7a52..995b444 100644 --- a/.github/workflows/astro.yml +++ b/.github/workflows/astro.yml @@ -1,8 +1,6 @@ name: Deploy to GitHub Pages on: - # Trigger the workflow every time you push to the `main` branch - # Using a different branch name? Replace `main` with your branch’s name push: branches: [main] # Allows you to run this workflow manually from the Actions tab on GitHub. diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml deleted file mode 100644 index fff6f11..0000000 --- a/.github/workflows/build-test.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Build PR previews - -on: - pull_request: - types: - - opened - - reopened - - synchronize - - closed - workflow_dispatch: - -# Allow this job to clone the repo and create a page deployment -permissions: - contents: read - pages: write - id-token: write - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout your repository using git - uses: actions/checkout@v3 - - name: Install, build, and upload your site output - uses: withastro/action@v1 - with: - path: "frontend" - package-manager: pnpm@latest \ No newline at end of file diff --git a/frontend/astro.config.mjs b/frontend/astro.config.mjs index 4c60302..0b0dc46 100644 --- a/frontend/astro.config.mjs +++ b/frontend/astro.config.mjs @@ -6,8 +6,8 @@ import compress from "astro-compress"; // https://astro.build/config export default defineConfig({ - site: "https://garriga.dev", - base: "/rust-quest", + site: "https://rust-quest.com", + /* base: "/rust-quest", */ integrations: [ starlight({ title: "Rust Quest", @@ -55,5 +55,5 @@ export default defineConfig({ markdown: { remarkPlugins: [], extendDefaultPlugins: true, - } -}); \ No newline at end of file + }, +}); diff --git a/frontend/package.json b/frontend/package.json index aa79264..9484e31 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,24 +19,26 @@ "@codemirror/language": "^6.9.3", "@codemirror/state": "^6.3.3", "@codemirror/theme-one-dark": "^6.1.2", - "@codemirror/view": "^6.22.1", + "@codemirror/view": "^6.22.2", "@ddietr/codemirror-themes": "^1.4.2", "@lezer/highlight": "^1.2.0", "@macfja/svelte-persistent-store": "^2.4.1", "astro": "^4.0.3", "astro-compress": "^2.2.3", + "confettis": "^0.3.0", "svelte": "^4.2.8", "svelte-codemirror-editor": "^1.2.0", + "svelte-confetti-p5": "^0.2.0", "typescript": "^5.3.3" }, "devDependencies": { "@iconify/svelte": "^3.1.4", "@svelte-put/clickoutside": "^3.0.1", "@svelte-put/shortcut": "^3.0.0", - "prettier": "^3.1.0", + "prettier": "^3.1.1", "prettier-plugin-astro": "^0.12.2", "prettier-plugin-svelte": "^3.1.2", - "rollup-plugin-visualizer": "^5.10.0", + "rollup-plugin-visualizer": "^5.11.0", "sharp": "^0.33.0" } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 6c80c3c..447f8c7 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -7,13 +7,13 @@ settings: dependencies: '@astrojs/check': specifier: ^0.3.1 - version: 0.3.1(prettier-plugin-astro@0.12.2)(prettier@3.1.0)(typescript@5.3.3) + version: 0.3.1(prettier-plugin-astro@0.12.2)(prettier@3.1.1)(typescript@5.3.3) '@astrojs/starlight': specifier: ^0.15.0 version: 0.15.0(astro@4.0.3) '@astrojs/svelte': specifier: ^5.0.0 - version: 5.0.0(astro@4.0.3)(svelte@4.2.8)(typescript@5.3.3)(vite@5.0.6) + version: 5.0.0(astro@4.0.3)(svelte@4.2.8)(typescript@5.3.3)(vite@5.0.7) '@codemirror/lang-rust': specifier: ^6.0.1 version: 6.0.1 @@ -27,8 +27,8 @@ dependencies: specifier: ^6.1.2 version: 6.1.2 '@codemirror/view': - specifier: ^6.22.1 - version: 6.22.1 + specifier: ^6.22.2 + version: 6.22.2 '@ddietr/codemirror-themes': specifier: ^1.4.2 version: 1.4.2 @@ -44,12 +44,18 @@ dependencies: astro-compress: specifier: ^2.2.3 version: 2.2.3 + confettis: + specifier: ^0.3.0 + version: 0.3.0 svelte: specifier: ^4.2.8 version: 4.2.8 svelte-codemirror-editor: specifier: ^1.2.0 version: 1.2.0(codemirror@6.0.1)(svelte@4.2.8) + svelte-confetti-p5: + specifier: ^0.2.0 + version: 0.2.0(p5@1.9.0)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -65,17 +71,17 @@ devDependencies: specifier: ^3.0.0 version: 3.0.0 prettier: - specifier: ^3.1.0 - version: 3.1.0 + specifier: ^3.1.1 + version: 3.1.1 prettier-plugin-astro: specifier: ^0.12.2 version: 0.12.2 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.1.0)(svelte@4.2.8) + version: 3.1.2(prettier@3.1.1)(svelte@4.2.8) rollup-plugin-visualizer: - specifier: ^5.10.0 - version: 5.10.0 + specifier: ^5.11.0 + version: 5.11.0 sharp: specifier: ^0.33.0 version: 0.33.0 @@ -89,13 +95,13 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 - /@astrojs/check@0.3.1(prettier-plugin-astro@0.12.2)(prettier@3.1.0)(typescript@5.3.3): + /@astrojs/check@0.3.1(prettier-plugin-astro@0.12.2)(prettier@3.1.1)(typescript@5.3.3): resolution: {integrity: sha512-3LjEUvh7Z4v9NPokaqKMXQ0DwnSXfmtcyAuWVTjNt9yzjv54SxykobV5CTOB3TIko+Rqg59ejamJBxaJN6fvkw==} hasBin: true peerDependencies: typescript: ^5.0.0 dependencies: - '@astrojs/language-server': 2.5.2(prettier-plugin-astro@0.12.2)(prettier@3.1.0)(typescript@5.3.3) + '@astrojs/language-server': 2.5.2(prettier-plugin-astro@0.12.2)(prettier@3.1.1)(typescript@5.3.3) chokidar: 3.5.3 fast-glob: 3.3.2 kleur: 4.1.5 @@ -117,7 +123,7 @@ packages: resolution: {integrity: sha512-06DD2ZnItMwUnH81LBLco3tWjcZ1lGU9rLCCBaeUCGYe9cI0wKyY2W3kDyoW1I6GmcWgt1fu+D1CTvz+FIKf8A==} dev: false - /@astrojs/language-server@2.5.2(prettier-plugin-astro@0.12.2)(prettier@3.1.0)(typescript@5.3.3): + /@astrojs/language-server@2.5.2(prettier-plugin-astro@0.12.2)(prettier@3.1.1)(typescript@5.3.3): resolution: {integrity: sha512-O5SMzoQ65wSxA1KygreI9UJYmHpgt15bSYBxceHwqX7OCDM4Ek8mr6mZn45LGDtwM3dp1uup7kp8exfRPwIFbA==} hasBin: true peerDependencies: @@ -139,12 +145,12 @@ packages: '@volar/typescript': 1.10.10 fast-glob: 3.3.2 muggle-string: 0.3.1 - prettier: 3.1.0 + prettier: 3.1.1 prettier-plugin-astro: 0.12.2 volar-service-css: 0.0.16(@volar/language-service@1.10.10) volar-service-emmet: 0.0.16(@volar/language-service@1.10.10) volar-service-html: 0.0.16(@volar/language-service@1.10.10) - volar-service-prettier: 0.0.16(@volar/language-service@1.10.10)(prettier@3.1.0) + volar-service-prettier: 0.0.16(@volar/language-service@1.10.10)(prettier@3.1.1) volar-service-typescript: 0.0.16(@volar/language-service@1.10.10)(@volar/typescript@1.10.10) volar-service-typescript-twoslash-queries: 0.0.16(@volar/language-service@1.10.10) vscode-html-languageservice: 5.1.1 @@ -245,14 +251,14 @@ packages: - supports-color dev: false - /@astrojs/svelte@5.0.0(astro@4.0.3)(svelte@4.2.8)(typescript@5.3.3)(vite@5.0.6): + /@astrojs/svelte@5.0.0(astro@4.0.3)(svelte@4.2.8)(typescript@5.3.3)(vite@5.0.7): resolution: {integrity: sha512-v8AZU9hSP4JuESDv5pev8S4eZQXulIoS/gBJbhAEBWfkANptsc7CP/qjWk83KWidNXX8hfVLI4VNlShWo3ADRw==} engines: {node: '>=18.14.1'} peerDependencies: astro: ^4.0.0-beta.0 svelte: ^4.0.0 || ^5.0.0-next.1 dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.6) + '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.7) astro: 4.0.3(typescript@5.3.3) svelte: 4.2.8 svelte2tsx: 0.6.27(svelte@4.2.8)(typescript@5.3.3) @@ -504,7 +510,7 @@ packages: to-fast-properties: 2.0.0 dev: false - /@codemirror/autocomplete@6.11.1(@codemirror/language@6.9.3)(@codemirror/state@6.3.3)(@codemirror/view@6.22.1)(@lezer/common@1.1.1): + /@codemirror/autocomplete@6.11.1(@codemirror/language@6.9.3)(@codemirror/state@6.3.3)(@codemirror/view@6.22.2)(@lezer/common@1.1.2): resolution: {integrity: sha512-L5UInv8Ffd6BPw0P3EF7JLYAMeEbclY7+6Q11REt8vhih8RuLreKtPy/xk8wPxs4EQgYqzI7cdgpiYwWlbS/ow==} peerDependencies: '@codemirror/language': ^6.0.0 @@ -514,8 +520,8 @@ packages: dependencies: '@codemirror/language': 6.9.3 '@codemirror/state': 6.3.3 - '@codemirror/view': 6.22.1 - '@lezer/common': 1.1.1 + '@codemirror/view': 6.22.2 + '@lezer/common': 1.1.2 dev: false /@codemirror/commands@6.3.2: @@ -523,8 +529,8 @@ packages: dependencies: '@codemirror/language': 6.9.3 '@codemirror/state': 6.3.3 - '@codemirror/view': 6.22.1 - '@lezer/common': 1.1.1 + '@codemirror/view': 6.22.2 + '@lezer/common': 1.1.2 dev: false /@codemirror/lang-rust@6.0.1: @@ -538,8 +544,8 @@ packages: resolution: {integrity: sha512-qq48pYzoi6ldYWV/52+Z9Ou6QouVI+8YwvxFbUypI33NbjG2UeRHKENRyhwljTTiOqjQ33FjyZj6EREQ9apAOQ==} dependencies: '@codemirror/state': 6.3.3 - '@codemirror/view': 6.22.1 - '@lezer/common': 1.1.1 + '@codemirror/view': 6.22.2 + '@lezer/common': 1.1.2 '@lezer/highlight': 1.2.0 '@lezer/lr': 1.3.14 style-mod: 4.1.0 @@ -549,7 +555,7 @@ packages: resolution: {integrity: sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==} dependencies: '@codemirror/state': 6.3.3 - '@codemirror/view': 6.22.1 + '@codemirror/view': 6.22.2 crelt: 1.0.6 dev: false @@ -557,7 +563,7 @@ packages: resolution: {integrity: sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==} dependencies: '@codemirror/state': 6.3.3 - '@codemirror/view': 6.22.1 + '@codemirror/view': 6.22.2 crelt: 1.0.6 dev: false @@ -570,12 +576,12 @@ packages: dependencies: '@codemirror/language': 6.9.3 '@codemirror/state': 6.3.3 - '@codemirror/view': 6.22.1 + '@codemirror/view': 6.22.2 '@lezer/highlight': 1.2.0 dev: false - /@codemirror/view@6.22.1: - resolution: {integrity: sha512-38BRn1nPqZqiHbmWfI8zri23IbRVbmSpSmh1E/Ysvc+lIGGdBC17K8zlK7ZU6fhfy9x4De9Zyj5JQqScPq5DkA==} + /@codemirror/view@6.22.2: + resolution: {integrity: sha512-cJp64cPXm7QfSBWEXK+76+hsZCGHupUgy8JAbSzMG6Lr0rfK73c1CaWITVW6hZVkOnAFxJTxd0PIuynNbzxYPw==} dependencies: '@codemirror/state': 6.3.3 style-mod: 4.1.0 @@ -592,7 +598,7 @@ packages: dependencies: '@codemirror/language': 6.9.3 '@codemirror/state': 6.3.3 - '@codemirror/view': 6.22.1 + '@codemirror/view': 6.22.2 '@lezer/highlight': 1.2.0 dev: false @@ -629,8 +635,8 @@ packages: dev: false optional: true - /@esbuild/android-arm64@0.19.8: - resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} + /@esbuild/android-arm64@0.19.9: + resolution: {integrity: sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -647,8 +653,8 @@ packages: dev: false optional: true - /@esbuild/android-arm@0.19.8: - resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} + /@esbuild/android-arm@0.19.9: + resolution: {integrity: sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -665,8 +671,8 @@ packages: dev: false optional: true - /@esbuild/android-x64@0.19.8: - resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} + /@esbuild/android-x64@0.19.9: + resolution: {integrity: sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -683,8 +689,8 @@ packages: dev: false optional: true - /@esbuild/darwin-arm64@0.19.8: - resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} + /@esbuild/darwin-arm64@0.19.9: + resolution: {integrity: sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -701,8 +707,8 @@ packages: dev: false optional: true - /@esbuild/darwin-x64@0.19.8: - resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} + /@esbuild/darwin-x64@0.19.9: + resolution: {integrity: sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -719,8 +725,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-arm64@0.19.8: - resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} + /@esbuild/freebsd-arm64@0.19.9: + resolution: {integrity: sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -737,8 +743,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-x64@0.19.8: - resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} + /@esbuild/freebsd-x64@0.19.9: + resolution: {integrity: sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -755,8 +761,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm64@0.19.8: - resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} + /@esbuild/linux-arm64@0.19.9: + resolution: {integrity: sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -773,8 +779,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm@0.19.8: - resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} + /@esbuild/linux-arm@0.19.9: + resolution: {integrity: sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -791,8 +797,8 @@ packages: dev: false optional: true - /@esbuild/linux-ia32@0.19.8: - resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} + /@esbuild/linux-ia32@0.19.9: + resolution: {integrity: sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -809,8 +815,8 @@ packages: dev: false optional: true - /@esbuild/linux-loong64@0.19.8: - resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} + /@esbuild/linux-loong64@0.19.9: + resolution: {integrity: sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -827,8 +833,8 @@ packages: dev: false optional: true - /@esbuild/linux-mips64el@0.19.8: - resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} + /@esbuild/linux-mips64el@0.19.9: + resolution: {integrity: sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -845,8 +851,8 @@ packages: dev: false optional: true - /@esbuild/linux-ppc64@0.19.8: - resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} + /@esbuild/linux-ppc64@0.19.9: + resolution: {integrity: sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -863,8 +869,8 @@ packages: dev: false optional: true - /@esbuild/linux-riscv64@0.19.8: - resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} + /@esbuild/linux-riscv64@0.19.9: + resolution: {integrity: sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -881,8 +887,8 @@ packages: dev: false optional: true - /@esbuild/linux-s390x@0.19.8: - resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} + /@esbuild/linux-s390x@0.19.9: + resolution: {integrity: sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -899,8 +905,8 @@ packages: dev: false optional: true - /@esbuild/linux-x64@0.19.8: - resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} + /@esbuild/linux-x64@0.19.9: + resolution: {integrity: sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -917,8 +923,8 @@ packages: dev: false optional: true - /@esbuild/netbsd-x64@0.19.8: - resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} + /@esbuild/netbsd-x64@0.19.9: + resolution: {integrity: sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -935,8 +941,8 @@ packages: dev: false optional: true - /@esbuild/openbsd-x64@0.19.8: - resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} + /@esbuild/openbsd-x64@0.19.9: + resolution: {integrity: sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -953,8 +959,8 @@ packages: dev: false optional: true - /@esbuild/sunos-x64@0.19.8: - resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} + /@esbuild/sunos-x64@0.19.9: + resolution: {integrity: sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -971,8 +977,8 @@ packages: dev: false optional: true - /@esbuild/win32-arm64@0.19.8: - resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} + /@esbuild/win32-arm64@0.19.9: + resolution: {integrity: sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -989,8 +995,8 @@ packages: dev: false optional: true - /@esbuild/win32-ia32@0.19.8: - resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} + /@esbuild/win32-ia32@0.19.9: + resolution: {integrity: sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1007,8 +1013,8 @@ packages: dev: false optional: true - /@esbuild/win32-x64@0.19.8: - resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} + /@esbuild/win32-x64@0.19.9: + resolution: {integrity: sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1037,7 +1043,7 @@ packages: resolution: {integrity: sha512-1RQOAEwaXyfOYAd0jnjz3jKQVkc2qFrLWEU9Vmy1rglHpNtBDGqP1YRJxevNcXy08014KoHMvkgO8dBdTIirdA==} dependencies: '@expressive-code/core': 0.29.3 - shiki: 0.14.5 + shiki: 0.14.6 dev: false /@expressive-code/plugin-text-markers@0.29.3: @@ -1281,20 +1287,20 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - /@lezer/common@1.1.1: - resolution: {integrity: sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg==} + /@lezer/common@1.1.2: + resolution: {integrity: sha512-V+GqBsga5+cQJMfM0GdnHmg4DgWvLzgMWjbldBg0+jC3k9Gu6nJNZDLJxXEBT1Xj8KhRN4jmbC5CY7SIL++sVw==} dev: false /@lezer/highlight@1.2.0: resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==} dependencies: - '@lezer/common': 1.1.1 + '@lezer/common': 1.1.2 dev: false /@lezer/lr@1.3.14: resolution: {integrity: sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==} dependencies: - '@lezer/common': 1.1.1 + '@lezer/common': 1.1.2 dev: false /@lezer/rust@1.0.1: @@ -1416,96 +1422,104 @@ packages: dev: false optional: true - /@rollup/rollup-android-arm-eabi@4.6.1: - resolution: {integrity: sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==} + /@rollup/rollup-android-arm-eabi@4.8.0: + resolution: {integrity: sha512-zdTObFRoNENrdPpnTNnhOljYIcOX7aI7+7wyrSpPFFIOf/nRdedE6IYsjaBE7tjukphh1tMTojgJ7p3lKY8x6Q==} cpu: [arm] os: [android] requiresBuild: true dev: false optional: true - /@rollup/rollup-android-arm64@4.6.1: - resolution: {integrity: sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==} + /@rollup/rollup-android-arm64@4.8.0: + resolution: {integrity: sha512-aiItwP48BiGpMFS9Znjo/xCNQVwTQVcRKkFKsO81m8exrGjHkCBDvm9PHay2kpa8RPnZzzKcD1iQ9KaLY4fPQQ==} cpu: [arm64] os: [android] requiresBuild: true dev: false optional: true - /@rollup/rollup-darwin-arm64@4.6.1: - resolution: {integrity: sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==} + /@rollup/rollup-darwin-arm64@4.8.0: + resolution: {integrity: sha512-zhNIS+L4ZYkYQUjIQUR6Zl0RXhbbA0huvNIWjmPc2SL0cB1h5Djkcy+RZ3/Bwszfb6vgwUvcVJYD6e6Zkpsi8g==} cpu: [arm64] os: [darwin] requiresBuild: true dev: false optional: true - /@rollup/rollup-darwin-x64@4.6.1: - resolution: {integrity: sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==} + /@rollup/rollup-darwin-x64@4.8.0: + resolution: {integrity: sha512-A/FAHFRNQYrELrb/JHncRWzTTXB2ticiRFztP4ggIUAfa9Up1qfW8aG2w/mN9jNiZ+HB0t0u0jpJgFXG6BfRTA==} cpu: [x64] os: [darwin] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.6.1: - resolution: {integrity: sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.8.0: + resolution: {integrity: sha512-JsidBnh3p2IJJA4/2xOF2puAYqbaczB3elZDT0qHxn362EIoIkq7hrR43Xa8RisgI6/WPfvb2umbGsuvf7E37A==} cpu: [arm] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm64-gnu@4.6.1: - resolution: {integrity: sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==} + /@rollup/rollup-linux-arm64-gnu@4.8.0: + resolution: {integrity: sha512-hBNCnqw3EVCkaPB0Oqd24bv8SklETptQWcJz06kb9OtiShn9jK1VuTgi7o4zPSt6rNGWQOTDEAccbk0OqJmS+g==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm64-musl@4.6.1: - resolution: {integrity: sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==} + /@rollup/rollup-linux-arm64-musl@4.8.0: + resolution: {integrity: sha512-Fw9ChYfJPdltvi9ALJ9wzdCdxGw4wtq4t1qY028b2O7GwB5qLNSGtqMsAel1lfWTZvf4b6/+4HKp0GlSYg0ahA==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-x64-gnu@4.6.1: - resolution: {integrity: sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==} + /@rollup/rollup-linux-riscv64-gnu@4.8.0: + resolution: {integrity: sha512-BH5xIh7tOzS9yBi8dFrCTG8Z6iNIGWGltd3IpTSKp6+pNWWO6qy8eKoRxOtwFbMrid5NZaidLYN6rHh9aB8bEw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-x64-gnu@4.8.0: + resolution: {integrity: sha512-PmvAj8k6EuWiyLbkNpd6BLv5XeYFpqWuRvRNRl80xVfpGXK/z6KYXmAgbI4ogz7uFiJxCnYcqyvZVD0dgFog7Q==} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-x64-musl@4.6.1: - resolution: {integrity: sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==} + /@rollup/rollup-linux-x64-musl@4.8.0: + resolution: {integrity: sha512-mdxnlW2QUzXwY+95TuxZ+CurrhgrPAMveDWI97EQlA9bfhR8tw3Pt7SUlc/eSlCNxlWktpmT//EAA8UfCHOyXg==} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-win32-arm64-msvc@4.6.1: - resolution: {integrity: sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==} + /@rollup/rollup-win32-arm64-msvc@4.8.0: + resolution: {integrity: sha512-ge7saUz38aesM4MA7Cad8CHo0Fyd1+qTaqoIo+Jtk+ipBi4ATSrHWov9/S4u5pbEQmLjgUjB7BJt+MiKG2kzmA==} cpu: [arm64] os: [win32] requiresBuild: true dev: false optional: true - /@rollup/rollup-win32-ia32-msvc@4.6.1: - resolution: {integrity: sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==} + /@rollup/rollup-win32-ia32-msvc@4.8.0: + resolution: {integrity: sha512-p9E3PZlzurhlsN5h9g7zIP1DnqKXJe8ZUkFwAazqSvHuWfihlIISPxG9hCHCoA+dOOspL/c7ty1eeEVFTE0UTw==} cpu: [ia32] os: [win32] requiresBuild: true dev: false optional: true - /@rollup/rollup-win32-x64-msvc@4.6.1: - resolution: {integrity: sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==} + /@rollup/rollup-win32-x64-msvc@4.8.0: + resolution: {integrity: sha512-kb4/auKXkYKqlUYTE8s40FcJIj5soOyRLHKd4ugR0dCq0G2EfcF54eYcfQiGkHzjidZ40daB4ulsFdtqNKZtBg==} cpu: [x64] os: [win32] requiresBuild: true @@ -1520,7 +1534,7 @@ packages: resolution: {integrity: sha512-nZg3pwpTi9wUsvQPlqOzEsxZcF2jmY5j+VBq/20IUjjd2OpM92XqZAga0PCCjE6OuEobOt58UMnC2QZgOvk0tQ==} dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.6): + /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.7): resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -1528,30 +1542,30 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.6) + '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.7) debug: 4.3.4 svelte: 4.2.8 - vite: 5.0.6 + vite: 5.0.7 transitivePeerDependencies: - supports-color dev: false - /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.6): + /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.7): resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.6) + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.7) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.5 svelte: 4.2.8 svelte-hmr: 0.15.3(svelte@4.2.8) - vite: 5.0.6 - vitefu: 0.2.5(vite@5.0.6) + vite: 5.0.7 + vitefu: 0.2.5(vite@5.0.7) transitivePeerDependencies: - supports-color dev: false @@ -1667,6 +1681,10 @@ packages: undici-types: 5.26.5 dev: false + /@types/p5@1.7.4: + resolution: {integrity: sha512-cMF3SvlBSzJV9m3enUYBx9UvJmQP9fxmPS17EDtYJVCQwwNMc/BRrDtHUHaxZH+BhuESNuUnfUKNVpJIjRT+Xw==} + dev: false + /@types/parse5@6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} dev: false @@ -1674,7 +1692,7 @@ packages: /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 20.8.9 + '@types/node': 17.0.45 dev: false /@types/unist@2.0.10: @@ -1904,7 +1922,7 @@ packages: dlv: 1.1.3 dset: 3.1.3 es-module-lexer: 1.4.1 - esbuild: 0.19.8 + esbuild: 0.19.9 estree-walker: 3.0.3 execa: 8.0.1 fast-glob: 3.3.2 @@ -1935,8 +1953,8 @@ packages: tsconfck: 3.0.0(typescript@5.3.3) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.0.6 - vitefu: 0.2.5(vite@5.0.6) + vite: 5.0.7 + vitefu: 0.2.5(vite@5.0.7) which-pm: 2.1.1 yargs-parser: 21.1.1 zod: 3.22.4 @@ -2054,8 +2072,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001566 - electron-to-chromium: 1.4.606 + caniuse-lite: 1.0.30001568 + electron-to-chromium: 1.4.609 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) dev: false @@ -2091,8 +2109,8 @@ packages: engines: {node: '>=14.16'} dev: false - /caniuse-lite@1.0.30001566: - resolution: {integrity: sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==} + /caniuse-lite@1.0.30001568: + resolution: {integrity: sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==} dev: false /ccount@2.0.1: @@ -2213,16 +2231,16 @@ packages: estree-walker: 3.0.3 periscopic: 3.1.0 - /codemirror@6.0.1(@lezer/common@1.1.1): + /codemirror@6.0.1(@lezer/common@1.1.2): resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.11.1(@codemirror/language@6.9.3)(@codemirror/state@6.3.3)(@codemirror/view@6.22.1)(@lezer/common@1.1.1) + '@codemirror/autocomplete': 6.11.1(@codemirror/language@6.9.3)(@codemirror/state@6.3.3)(@codemirror/view@6.22.2)(@lezer/common@1.1.2) '@codemirror/commands': 6.3.2 '@codemirror/language': 6.9.3 '@codemirror/lint': 6.4.2 '@codemirror/search': 6.5.5 '@codemirror/state': 6.3.3 - '@codemirror/view': 6.22.1 + '@codemirror/view': 6.22.2 transitivePeerDependencies: - '@lezer/common' dev: false @@ -2293,6 +2311,10 @@ packages: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} dev: false + /confettis@0.3.0: + resolution: {integrity: sha512-YY7xfM/fGavi8lbL4o65mYw3niF05leeTCbtASm7WiyiquQp40BBh7/hmeNdYNTpgbWuUDfKIaX4XoP+2yFWVQ==} + dev: false + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: false @@ -2325,8 +2347,8 @@ packages: nth-check: 2.1.1 dev: false - /css-selector-parser@3.0.2: - resolution: {integrity: sha512-eA5pvYwgtffuxQlDk0gJRApDUKgfwlsQBMAH6uawKuuilTLfxKIOtzyV63Y3IC0LWnDCeTJ/I1qYmlfYvvMzDg==} + /css-selector-parser@3.0.3: + resolution: {integrity: sha512-HAcgYSBFKo1jnglINdHeBPIscPOCOh8vCDCaOV5xkwMSlGPEnfdynxBuWkgZMwXltMKgFbDcr4EPmDpSWi34MA==} dev: false /css-tree@2.2.1: @@ -2531,8 +2553,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: false - /electron-to-chromium@1.4.606: - resolution: {integrity: sha512-Zdv0XuhfyWZUsQ5Uq59d43ZmZOdoGZNWjeN4WCxxlQaP8crAWdnWcTxfHKcaJl6PW2SWpHx6DsxSx7v6KcGCuw==} + /electron-to-chromium@1.4.609: + resolution: {integrity: sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==} dev: false /emmet@2.4.6: @@ -2611,34 +2633,34 @@ packages: '@esbuild/win32-x64': 0.19.5 dev: false - /esbuild@0.19.8: - resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} + /esbuild@0.19.9: + resolution: {integrity: sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.8 - '@esbuild/android-arm64': 0.19.8 - '@esbuild/android-x64': 0.19.8 - '@esbuild/darwin-arm64': 0.19.8 - '@esbuild/darwin-x64': 0.19.8 - '@esbuild/freebsd-arm64': 0.19.8 - '@esbuild/freebsd-x64': 0.19.8 - '@esbuild/linux-arm': 0.19.8 - '@esbuild/linux-arm64': 0.19.8 - '@esbuild/linux-ia32': 0.19.8 - '@esbuild/linux-loong64': 0.19.8 - '@esbuild/linux-mips64el': 0.19.8 - '@esbuild/linux-ppc64': 0.19.8 - '@esbuild/linux-riscv64': 0.19.8 - '@esbuild/linux-s390x': 0.19.8 - '@esbuild/linux-x64': 0.19.8 - '@esbuild/netbsd-x64': 0.19.8 - '@esbuild/openbsd-x64': 0.19.8 - '@esbuild/sunos-x64': 0.19.8 - '@esbuild/win32-arm64': 0.19.8 - '@esbuild/win32-ia32': 0.19.8 - '@esbuild/win32-x64': 0.19.8 + '@esbuild/android-arm': 0.19.9 + '@esbuild/android-arm64': 0.19.9 + '@esbuild/android-x64': 0.19.9 + '@esbuild/darwin-arm64': 0.19.9 + '@esbuild/darwin-x64': 0.19.9 + '@esbuild/freebsd-arm64': 0.19.9 + '@esbuild/freebsd-x64': 0.19.9 + '@esbuild/linux-arm': 0.19.9 + '@esbuild/linux-arm64': 0.19.9 + '@esbuild/linux-ia32': 0.19.9 + '@esbuild/linux-loong64': 0.19.9 + '@esbuild/linux-mips64el': 0.19.9 + '@esbuild/linux-ppc64': 0.19.9 + '@esbuild/linux-riscv64': 0.19.9 + '@esbuild/linux-s390x': 0.19.9 + '@esbuild/linux-x64': 0.19.9 + '@esbuild/netbsd-x64': 0.19.9 + '@esbuild/openbsd-x64': 0.19.9 + '@esbuild/sunos-x64': 0.19.9 + '@esbuild/win32-arm64': 0.19.9 + '@esbuild/win32-ia32': 0.19.9 + '@esbuild/win32-x64': 0.19.9 dev: false /escalade@3.1.1: @@ -3025,7 +3047,7 @@ packages: '@types/unist': 3.0.2 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 3.0.2 + css-selector-parser: 3.0.3 devlop: 1.1.0 direction: 2.0.1 hast-util-has-property: 3.0.0 @@ -4443,6 +4465,20 @@ packages: engines: {node: '>=6'} dev: false + /p5-svelte@3.1.2(@types/p5@1.7.4)(p5@1.9.0): + resolution: {integrity: sha512-lcfWh+cJ1/wRdIXHnjpYmDgj2h3TCy1QJVQnf/cBcFWS8CSkvyAN5F8u8H2U8qBUtZ4XaD3nd+1NoYUMHaMExQ==} + peerDependencies: + '@types/p5': ^1.4.2 + p5: ^1.4.0 + dependencies: + '@types/p5': 1.7.4 + p5: 1.9.0 + dev: false + + /p5@1.9.0: + resolution: {integrity: sha512-+5/hz0ZokCDf7BMMAeemE7FIo7gFZK7ImL62acHLXZwerGjqj+171bnaAWj4aCFCx6fwysAr2U7/AKuPyPhehA==} + dev: false + /pagefind@1.0.4: resolution: {integrity: sha512-oRIizYe+zSI2Jw4zcMU0ebDZm27751hRFiSOBLwc1OIYMrsZKk+3m8p9EVaOmc6zZdtqwwdilNUNxXvBeHcP9w==} hasBin: true @@ -4620,21 +4656,21 @@ packages: engines: {node: ^14.15.0 || >=16.0.0} dependencies: '@astrojs/compiler': 1.8.2 - prettier: 3.1.0 + prettier: 3.1.1 sass-formatter: 0.7.8 - /prettier-plugin-svelte@3.1.2(prettier@3.1.0)(svelte@4.2.8): + /prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.8): resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 dependencies: - prettier: 3.1.0 + prettier: 3.1.1 svelte: 4.2.8 dev: true - /prettier@3.1.0: - resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} + /prettier@3.1.1: + resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} engines: {node: '>=14'} hasBin: true @@ -4891,8 +4927,8 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: false - /rollup-plugin-visualizer@5.10.0: - resolution: {integrity: sha512-N4AkNL0qFvipegbDJ0kupS+8eKGjL0q+lYwV46NflLX/B8Rh73wz3kCIdg50bR6XVhNcaMA4Eb519xtm90Ckfg==} + /rollup-plugin-visualizer@5.11.0: + resolution: {integrity: sha512-exM0Ms2SN3AgTzMeW7y46neZQcyLY7eKwWAop1ZoRTCZwyrIRdMMJ6JjToAJbML77X/9N8ZEpmXG4Z/Clb9k8g==} engines: {node: '>=14'} hasBin: true peerDependencies: @@ -4907,23 +4943,24 @@ packages: yargs: 17.7.2 dev: true - /rollup@4.6.1: - resolution: {integrity: sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==} + /rollup@4.8.0: + resolution: {integrity: sha512-NpsklK2fach5CdI+PScmlE5R4Ao/FSWtF7LkoIrHDxPACY/xshNasPsbpG0VVHxUTbf74tJbVT4PrP8JsJ6ZDA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.6.1 - '@rollup/rollup-android-arm64': 4.6.1 - '@rollup/rollup-darwin-arm64': 4.6.1 - '@rollup/rollup-darwin-x64': 4.6.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.6.1 - '@rollup/rollup-linux-arm64-gnu': 4.6.1 - '@rollup/rollup-linux-arm64-musl': 4.6.1 - '@rollup/rollup-linux-x64-gnu': 4.6.1 - '@rollup/rollup-linux-x64-musl': 4.6.1 - '@rollup/rollup-win32-arm64-msvc': 4.6.1 - '@rollup/rollup-win32-ia32-msvc': 4.6.1 - '@rollup/rollup-win32-x64-msvc': 4.6.1 + '@rollup/rollup-android-arm-eabi': 4.8.0 + '@rollup/rollup-android-arm64': 4.8.0 + '@rollup/rollup-darwin-arm64': 4.8.0 + '@rollup/rollup-darwin-x64': 4.8.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.8.0 + '@rollup/rollup-linux-arm64-gnu': 4.8.0 + '@rollup/rollup-linux-arm64-musl': 4.8.0 + '@rollup/rollup-linux-riscv64-gnu': 4.8.0 + '@rollup/rollup-linux-x64-gnu': 4.8.0 + '@rollup/rollup-linux-x64-musl': 4.8.0 + '@rollup/rollup-win32-arm64-msvc': 4.8.0 + '@rollup/rollup-win32-ia32-msvc': 4.8.0 + '@rollup/rollup-win32-x64-msvc': 4.8.0 fsevents: 2.3.3 dev: false @@ -5034,8 +5071,8 @@ packages: engines: {node: '>=8'} dev: false - /shiki@0.14.5: - resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} + /shiki@0.14.6: + resolution: {integrity: sha512-R4koBBlQP33cC8cpzX0hAoOURBHJILp4Aaduh2eYi+Vj8ZBqtK/5SWNEHBS3qwUMu8dqOtI/ftno3ESfNeVW9g==} dependencies: ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 @@ -5156,8 +5193,8 @@ packages: - supports-color dev: false - /streamx@2.15.5: - resolution: {integrity: sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==} + /streamx@2.15.6: + resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} requiresBuild: true dependencies: fast-fifo: 1.3.2 @@ -5292,10 +5329,22 @@ packages: codemirror: ^6.0.0 svelte: ^3.0.0 || ^4.0.0 dependencies: - codemirror: 6.0.1(@lezer/common@1.1.1) + codemirror: 6.0.1(@lezer/common@1.1.2) svelte: 4.2.8 dev: false + /svelte-confetti-p5@0.2.0(p5@1.9.0)(svelte@4.2.8): + resolution: {integrity: sha512-TX+t5ueQqzrpYONJiC/35LNJ78XKBynRHJPz0uVcPsJ8LmoC2H/CzbC0Uxg0jeWc17TMNzL9lHz6GKvrEsBTLg==} + peerDependencies: + svelte: ^4.0.0 + dependencies: + '@types/p5': 1.7.4 + p5-svelte: 3.1.2(@types/p5@1.7.4)(p5@1.9.0) + svelte: 4.2.8 + transitivePeerDependencies: + - p5 + dev: false + /svelte-hmr@0.15.3(svelte@4.2.8): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} @@ -5385,7 +5434,7 @@ packages: dependencies: b4a: 1.6.4 fast-fifo: 1.3.2 - streamx: 2.15.5 + streamx: 2.15.6 dev: false /terser@5.24.0: @@ -5502,7 +5551,7 @@ packages: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.3 - shiki: 0.14.5 + shiki: 0.14.6 typescript: 5.3.3 dev: false @@ -5745,8 +5794,8 @@ packages: vfile-message: 4.0.2 dev: false - /vite@5.0.6: - resolution: {integrity: sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ==} + /vite@5.0.7: + resolution: {integrity: sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5773,14 +5822,14 @@ packages: terser: optional: true dependencies: - esbuild: 0.19.8 + esbuild: 0.19.9 postcss: 8.4.32 - rollup: 4.6.1 + rollup: 4.8.0 optionalDependencies: fsevents: 2.3.3 dev: false - /vitefu@0.2.5(vite@5.0.6): + /vitefu@0.2.5(vite@5.0.7): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -5788,7 +5837,7 @@ packages: vite: optional: true dependencies: - vite: 5.0.6 + vite: 5.0.7 dev: false /volar-service-css@0.0.16(@volar/language-service@1.10.10): @@ -5830,7 +5879,7 @@ packages: vscode-uri: 3.0.8 dev: false - /volar-service-prettier@0.0.16(@volar/language-service@1.10.10)(prettier@3.1.0): + /volar-service-prettier@0.0.16(@volar/language-service@1.10.10)(prettier@3.1.1): resolution: {integrity: sha512-Kj2ZdwJGEvfYbsHW8Sjrew/7EB4PgRoas4f8yAJzUUVxIC/kvhUwLDxQc8+N2IibomN76asJGWe+i6VZZvgIkw==} peerDependencies: '@volar/language-service': ~1.10.0 @@ -5842,7 +5891,7 @@ packages: optional: true dependencies: '@volar/language-service': 1.10.10 - prettier: 3.1.0 + prettier: 3.1.1 dev: false /volar-service-typescript-twoslash-queries@0.0.16(@volar/language-service@1.10.10): diff --git a/frontend/src/components/Checkpoint/Checkpoint.astro b/frontend/src/components/Checkpoint/Checkpoint.astro index 418adfa..c673b40 100644 --- a/frontend/src/components/Checkpoint/Checkpoint.astro +++ b/frontend/src/components/Checkpoint/Checkpoint.astro @@ -8,5 +8,5 @@ interface Props { --- - - \ No newline at end of file + + diff --git a/frontend/src/components/Checkpoint/Checkpoint.svelte b/frontend/src/components/Checkpoint/Checkpoint.svelte index 93a3206..772b11f 100644 --- a/frontend/src/components/Checkpoint/Checkpoint.svelte +++ b/frontend/src/components/Checkpoint/Checkpoint.svelte @@ -2,40 +2,42 @@ import { fade } from "svelte/transition"; import { onMount } from "svelte"; - /** Id of the checkpoint. Will only show inside when "id" is present in LocalStorage */ + /** Id of the checkpoint. + * + * The children of this component will only be shown when "id" is present in LocalStorage. */ export let id: string; export let scroll: boolean = true; let loaded = false; let show = false; onMount(async () => { - const { checkpointStore } = await import("./checkpoint"); - checkpointStore.subscribe(async (s) => { - if (!s.has(id)) { - loaded = true; - return; - } - - show = true; - // Avoid scrolling if it's not the first time - if (loaded) { - loaded = false; - await new Promise((resolve) => setTimeout(resolve, 400)); - scroll && scrollBy({top: 400, behavior: "smooth"}); - return; - } + const checkpointStore = await import("./checkpoint"); + checkpointStore.subscribe(id, async (s) => { + if (!s.has(id)) { + loaded = true; + return; + } + + show = true; + // Avoid scrolling if it's not the first time + if (loaded) { + loaded = false; + await new Promise((resolve) => setTimeout(resolve, 400)); + scroll && scrollBy({ top: 400, behavior: "smooth" }); + return; + } }); - }) + }); {#if show} -
- -
+
+ +
{/if} \ No newline at end of file + diff --git a/frontend/src/components/Checkpoint/checkpoint.ts b/frontend/src/components/Checkpoint/checkpoint.ts index 569964d..4d18141 100644 --- a/frontend/src/components/Checkpoint/checkpoint.ts +++ b/frontend/src/components/Checkpoint/checkpoint.ts @@ -1,4 +1,35 @@ -import { writable } from "@macfja/svelte-persistent-store"; +import { + writable +} from "@macfja/svelte-persistent-store"; -export const checkpointStore = writable("checkpoints", new Set()); +const checkpointStore = writable("checkpoints", new Map>()); +export function add(id: string) { + const k = id.split("-")[0]; + if (k === undefined) { + throw "Invalid id"; + } + + checkpointStore.update((checkpoints) => { + const checkpoint = checkpoints.get(k); + if (checkpoint === undefined) { + checkpoints.set(k, new Set([id])); + } else { + checkpoint.add(id); + } + return checkpoints; + }); +} + +export function subscribe(id: string, run: (checkpoint: Set) => void) { + const k = id.split("-")[0]; + if (k === undefined) { + throw "Invalid id"; + } + checkpointStore.update(checkpoints => + !checkpoints.has(k) && checkpoints.set(k, new Set([])) || checkpoints + ); + checkpointStore.subscribe((checkpoints) => { + run(checkpoints.get(k) as Set) + }) +} \ No newline at end of file diff --git a/frontend/src/components/CodeBlock/CodeBlock.svelte b/frontend/src/components/CodeBlock/CodeBlock.svelte index bfe7830..14ff03a 100644 --- a/frontend/src/components/CodeBlock/CodeBlock.svelte +++ b/frontend/src/components/CodeBlock/CodeBlock.svelte @@ -7,7 +7,7 @@ import { derived, writable } from "svelte/store"; import { translation } from "@i18n/CodeBlock.ts"; import { type Langs } from "@i18n/langs"; - + /** Id of the CodeBlock. If provided, when the output's last line is "SUCCESS", a local-storage entry will be created with this id */ export let id: string = ""; /** Code that will be sent to the playground, replaces __VALUE__ with the code in the editor */ @@ -30,7 +30,7 @@ export let lang: Langs = "en"; $: l = translation(lang); - + let value = code; let running = false; let focused = false; @@ -38,8 +38,7 @@ const setResponse = async (response: string) => { const out = response.replace("SUCCESS\n", ""); if (id && response.length !== out.length) { - const { checkpointStore } = await import("../Checkpoint/checkpoint"); - checkpointStore.update(s => { s.add(id); return s}) + (await import("../Checkpoint/checkpoint")).add(id); } playgroundResponse = out; }; @@ -55,7 +54,7 @@ onMount(async () => { theme.set(document.documentElement.dataset.theme || "light"); observer = onThemeChange((t) => theme.set(t)); - lang = window.location.pathname.split("/")[2] as Langs; + lang = window.location.pathname.split("/")[1] as Langs; }); onDestroy(() => observer?.disconnect()); @@ -63,10 +62,10 @@ if (!force_focus && !focused) { return; } - + running = true; playgroundResponse = l.compiling; - + // Wait for the editor to update `value` await new Promise((resolve) => setTimeout(resolve, 125)); @@ -85,7 +84,7 @@ )}\n }`; const { evaluate } = await import("./evaluate"); - + const result = await evaluate(code, lang, errorMsg); await setResponse(result); running = false; @@ -115,7 +114,7 @@ lang={lang.rust()} {theme} basic={showLineNumbers} - editable={editable} + {editable} readonly={!editable || running} placeholder={placeholder || l.placeholder} /> diff --git a/frontend/src/components/CodeBlock/evaluate.ts b/frontend/src/components/CodeBlock/evaluate.ts index 1e435a2..d24df31 100644 --- a/frontend/src/components/CodeBlock/evaluate.ts +++ b/frontend/src/components/CodeBlock/evaluate.ts @@ -7,9 +7,12 @@ export async function evaluate( errorMsg?: string, ): Promise { const error = errorMsg || translation(lang).error; - + if (import.meta.env.MODE.includes("dev")) { - return Promise.race([godbolt(code, error), playground(code, error) /* , server(code, error) */]); + return Promise.race([ + godbolt(code, error), + playground(code, error) /* , server(code, error) */, + ]); } return Promise.race([ @@ -19,7 +22,7 @@ export async function evaluate( new Promise((resolve, _) => setTimeout(() => resolve("Execution timed out, please try again."), 3000), ) as Promise, - ]); + ]).catch(() => "There was an error, please try again."); } async function server(code: string, error: string): Promise { diff --git a/frontend/src/components/CodeQuestion.astro b/frontend/src/components/CodeQuestion.astro index 590fc5f..5d14125 100644 --- a/frontend/src/components/CodeQuestion.astro +++ b/frontend/src/components/CodeQuestion.astro @@ -25,7 +25,7 @@ const { showLineNumbers = true, editable = true, lang = "en", - id = "" + id = "", } = Astro.props; --- diff --git a/frontend/src/components/Highlight.astro b/frontend/src/components/Highlight.astro index 32f8b08..31d032e 100644 --- a/frontend/src/components/Highlight.astro +++ b/frontend/src/components/Highlight.astro @@ -18,13 +18,15 @@ const { bg, bgDark = bgToDark(bg) } = Astro.props; padding: 0; } - :root .highlight *, :root .highlight { + :root .highlight *, + :root .highlight { background-color: var(--bg); border: 1px; - border-radius: .25em; - padding: .2em; + border-radius: 0.25em; + padding: 0.2em; } - :root[data-theme="dark"] .highlight *, :root[data-theme="dark"] .highlight { + :root[data-theme="dark"] .highlight *, + :root[data-theme="dark"] .highlight { background-color: var(--bgDark); } - \ No newline at end of file + diff --git a/frontend/src/components/LanguageDetector.svelte b/frontend/src/components/LanguageDetector.svelte index 823f52d..b3fea04 100644 --- a/frontend/src/components/LanguageDetector.svelte +++ b/frontend/src/components/LanguageDetector.svelte @@ -1,15 +1,20 @@ \ No newline at end of file + }); + diff --git a/frontend/src/components/Portrait/PortraitCard.astro b/frontend/src/components/Portrait/PortraitCard.astro index a744697..115f197 100644 --- a/frontend/src/components/Portrait/PortraitCard.astro +++ b/frontend/src/components/Portrait/PortraitCard.astro @@ -8,7 +8,6 @@ interface Props { const { src } = Astro.props; const { img, bg, bgDark } = portrait(src); - ---
@@ -33,7 +32,7 @@ const { img, bg, bgDark } = portrait(src); grid-template-columns: auto; margin-top: 1.5rem; border: 1px; - border-radius: .25em; + border-radius: 0.25em; } .portrait { width: var(--portrait-size); @@ -58,4 +57,4 @@ const { img, bg, bgDark } = portrait(src); padding-left: 0.25rem; } } - \ No newline at end of file + diff --git a/frontend/src/components/Portrait/PortraitText.astro b/frontend/src/components/Portrait/PortraitText.astro index 40566f1..c8b3ec3 100644 --- a/frontend/src/components/Portrait/PortraitText.astro +++ b/frontend/src/components/Portrait/PortraitText.astro @@ -11,4 +11,4 @@ const { bg, bgDark } = portrait(Astro.props.src); - \ No newline at end of file + diff --git a/frontend/src/components/Portrait/portraits.ts b/frontend/src/components/Portrait/portraits.ts index 5f7932a..55b3bad 100644 --- a/frontend/src/components/Portrait/portraits.ts +++ b/frontend/src/components/Portrait/portraits.ts @@ -1,35 +1,39 @@ -import GuildGirl from "@assets/portraits/AdventurersGuildGirl.svg"; +import GuildGirl from "@assets/portraits/AdventurersGuildGirl.svg"; import Grocery from "@assets/portraits/GroceryStore.svg"; import { bgToDark } from "src/utils/colors"; export const colors = { - purple: "#ede9fe", - green: "#d1fae5", - red: "#fecaca", - yellow: "#fef8c3", - orange: "#ffedd5", - blue: "#e0f2fe", - pink: "#fbcfe8", - gray: "#e5e7eb" -} + purple: "#ede9fe", + green: "#d1fae5", + red: "#fecaca", + yellow: "#fef8c3", + orange: "#ffedd5", + blue: "#e0f2fe", + pink: "#fbcfe8", + gray: "#e5e7eb", +}; const portraits = { - "guild-girl": { - img: GuildGirl, - bg: colors.purple - }, - "grocery": { - img: Grocery, - bg: colors.green - } + "guild-girl": { + img: GuildGirl, + bg: colors.purple, + }, + grocery: { + img: Grocery, + bg: colors.green, + }, }; export type Portrait = keyof typeof portraits; -export function portrait(portrait: Portrait): { img: ImageMetadata, bg: string, bgDark: string } { - const { img, bg } = portraits[portrait]; - const bgDark = bgToDark(bg); - return { img, bg, bgDark }; +export function portrait(portrait: Portrait): { + img: ImageMetadata; + bg: string; + bgDark: string; +} { + const { img, bg } = portraits[portrait]; + const bgDark = bgToDark(bg); + return { img, bg, bgDark }; } /* Purple @@ -39,4 +43,4 @@ export function portrait(portrait: Portrait): { img: ImageMetadata, bg: string, Orange Blue Pink - Gray */ \ No newline at end of file + Gray */ diff --git a/frontend/src/components/Progress.svelte b/frontend/src/components/Progress.svelte new file mode 100644 index 0000000..d075be0 --- /dev/null +++ b/frontend/src/components/Progress.svelte @@ -0,0 +1,40 @@ + + +
+ + +
+ + \ No newline at end of file diff --git a/frontend/src/content/docs/en/first-steps/2-the-adventurers-guild.mdx b/frontend/src/content/docs/en/first-steps/2-the-adventurers-guild.mdx index 334bc2b..a9042b6 100755 --- a/frontend/src/content/docs/en/first-steps/2-the-adventurers-guild.mdx +++ b/frontend/src/content/docs/en/first-steps/2-the-adventurers-guild.mdx @@ -6,6 +6,7 @@ description: The hero registers into the Adventurer's Guild. import CodeQuestion from "@components/CodeQuestion.astro"; import Portrait from "@components/Portrait/PortraitCard.astro"; import Checkpoint from "@components/Checkpoint/Checkpoint.svelte"; +import Progress from "@components/Progress.svelte"; export const code_mess = `Seems like you've messed up the code, click the "Reset" button to return it back to its original state. @@ -189,8 +190,9 @@ export function Q({}) { return ( value.includes("?") && "Hint: Just replace ? with your name!" || undefined`} /> ) @@ -198,4 +200,6 @@ export function Q({}) { - \ No newline at end of file + + + \ No newline at end of file diff --git a/frontend/src/content/docs/en/first-steps/3-the-first-quest.mdx b/frontend/src/content/docs/en/first-steps/3-the-first-quest.mdx index c4f06c7..b3029e5 100644 --- a/frontend/src/content/docs/en/first-steps/3-the-first-quest.mdx +++ b/frontend/src/content/docs/en/first-steps/3-the-first-quest.mdx @@ -9,6 +9,7 @@ import { colors } from "@components/Portrait/portraits"; import PText from "@components/Portrait/PortraitText.astro"; import Highlight from "@components/Highlight.astro"; import Checkpoint from "@components/Checkpoint/Checkpoint.astro"; +import Progress from "@components/Progress.svelte"; export function Grocer(props) { return ( @@ -172,7 +173,7 @@ Sure enough, the panel is red, and says: Anti-theft p `mut` what? What does that mean? Why does a grocery store have anti-theft magical boxes? -Knowing that you are making the owner wait, you hurry and try to fix it. +Knowing that you are making the owner wait, you hurry and try to fix it. The grocer before said `let` to activate the box, maybe you need to do the same with this `mut` thing? { /* TODO: Test if a single ? is enough. If not, put two */ } \ No newline at end of file + + + \ No newline at end of file diff --git a/frontend/src/content/docs/en/index.mdx b/frontend/src/content/docs/en/index.mdx index b840470..d80ad04 100644 --- a/frontend/src/content/docs/en/index.mdx +++ b/frontend/src/content/docs/en/index.mdx @@ -8,7 +8,7 @@ hero: file: ../../../assets/ferris.svg actions: - text: Start Journey! - link: /rust-quest/en/first-steps/1-introduction + link: /en/first-steps/1-introduction icon: right-arrow variant: primary - text: See on Github diff --git a/frontend/src/content/docs/index.mdx b/frontend/src/content/docs/index.mdx index c80e6de..d915698 100644 --- a/frontend/src/content/docs/index.mdx +++ b/frontend/src/content/docs/index.mdx @@ -8,7 +8,7 @@ hero: file: ../../assets/ferris.svg actions: - text: Start Journey! - link: /rust-quest/en/first-steps/1-introduction + link: /en/first-steps/1-introduction icon: right-arrow variant: primary - text: See on Github diff --git a/frontend/src/content/i18n/langs.ts b/frontend/src/content/i18n/langs.ts index 574ec7c..e16d5cb 100644 --- a/frontend/src/content/i18n/langs.ts +++ b/frontend/src/content/i18n/langs.ts @@ -1 +1 @@ -export type Langs = "en" | "ca" | "es"; \ No newline at end of file +export type Langs = "en" | "ca" | "es"; diff --git a/frontend/src/utils/colors.ts b/frontend/src/utils/colors.ts index fe71d73..57fc516 100644 --- a/frontend/src/utils/colors.ts +++ b/frontend/src/utils/colors.ts @@ -1,3 +1,3 @@ export function bgToDark(bg: string): string { - return `#${(parseInt(bg.replace("#", "0x")) - 0xb1b8b8).toString(16)}`; -} \ No newline at end of file + return `#${(parseInt(bg.replace("#", "0x")) - 0xb1b8b8).toString(16)}`; +} diff --git a/frontend/src/utils/getLangFromUrl.ts b/frontend/src/utils/getLangFromUrl.ts deleted file mode 100644 index a655534..0000000 --- a/frontend/src/utils/getLangFromUrl.ts +++ /dev/null @@ -1,13 +0,0 @@ -export const langs = { - en: 0, - ca: 1, - es: 2, -}; - -const defaultLang = "en"; - -export function getLangFromUrl(url: string): keyof typeof langs { - const [, , lang] = new URL(url).pathname.split("/"); - if (lang && lang in Object.keys(langs)) return lang as keyof typeof langs; - return defaultLang; -} diff --git a/frontend/src/utils/langs.ts b/frontend/src/utils/langs.ts new file mode 100644 index 0000000..4bf3581 --- /dev/null +++ b/frontend/src/utils/langs.ts @@ -0,0 +1,5 @@ +export const langs = { + en: 0, + ca: 1, + es: 2, +}; \ No newline at end of file