From 8303f625be821fc57138fad433cc528c9cfa7e0b Mon Sep 17 00:00:00 2001 From: Roman Krasilnikov Date: Fri, 21 Aug 2026 22:47:59 +0300 Subject: [PATCH 1/3] [app] Migrate to SvelteKit 3 (3.0.0-next.25) - Move adapter and paths config from svelte.config.js into the sveltekit() vite plugin options; delete svelte.config.js - Extend $app/tsconfig in tsconfig.json with explicit include/exclude - Import Handle/Reroute from @sveltejs/kit/hooks where they now live - Cast away read-only event.request for paraglide middleware - Bump vite-plugin-static-copy to 4.1.1: 4.1.0 silently skips copying under rolldown-vite, dropping assets/dotnet and assets/gleam - Keep $lib as a vite/tsconfig alias instead of migrating to #lib subpath imports --- apps/ppp/package.json | 10 +- apps/ppp/src/hooks.server.ts | 6 +- apps/ppp/src/hooks.ts | 3 +- apps/ppp/svelte.config.js | 30 --- apps/ppp/tsconfig.json | 25 ++- apps/ppp/vite.config.ts | 20 +- pnpm-lock.yaml | 380 +++++++++++++++++++---------------- 7 files changed, 251 insertions(+), 223 deletions(-) delete mode 100644 apps/ppp/svelte.config.js diff --git a/apps/ppp/package.json b/apps/ppp/package.json index 024277f9..69b7ec9b 100644 --- a/apps/ppp/package.json +++ b/apps/ppp/package.json @@ -47,8 +47,8 @@ "@iconify-json/lucide": "^1.2.103", "@iconify-json/vscode-icons": "^1.2.46", "@inlang/paraglide-js": "^2.16.1", - "@sveltejs/adapter-static": "^3.0.10", - "@sveltejs/kit": "^2.58.0", + "@sveltejs/adapter-static": "4.0.0-next.4", + "@sveltejs/kit": "3.0.0-next.25", "@sveltejs/vite-plugin-svelte": "^7.0.0", "@tailwindcss/typography": "^0.5.19", "@tailwindcss/vite": "^4.2.4", @@ -64,15 +64,15 @@ "prettier": "^3.8.3", "prettier-plugin-svelte": "^3.5.1", "prettier-plugin-tailwindcss": "^0.7.3", - "svelte": "^5.55.5", + "svelte": "^5.56.10", "svelte-check": "^4.4.6", "tailwindcss": "^4.2.4", "typescript": "^5.9.3", - "typescript-eslint": "^8.59.0", + "typescript-eslint": "^8.67.0", "unplugin-icons": "^23.0.1", "vite": "catalog:", "vite-plugin-devtools-json": "^1.0.0", - "vite-plugin-static-copy": "catalog:", + "vite-plugin-static-copy": "4.1.1", "vitest": "catalog:", "vitest-browser-svelte": "^2.1.1" } diff --git a/apps/ppp/src/hooks.server.ts b/apps/ppp/src/hooks.server.ts index 2d48a207..82e749df 100644 --- a/apps/ppp/src/hooks.server.ts +++ b/apps/ppp/src/hooks.server.ts @@ -1,11 +1,13 @@ -import type { Handle } from '@sveltejs/kit'; +import type { Handle } from '@sveltejs/kit/hooks'; import { paraglideMiddleware } from '$lib/paraglide/server'; import { getTextDirection } from '$lib/paraglide/runtime'; import { sequence } from '@sveltejs/kit/hooks'; const paraglideHandle: Handle = ({ event, resolve }) => paraglideMiddleware(event.request, ({ request: localizedRequest, locale }) => { - event.request = localizedRequest; + // Kit 3 made RequestEvent.request read-only, but paraglide's middleware + // is built around replacing it. + (event as { request: Request }).request = localizedRequest; return resolve(event, { transformPageChunk: ({ html }) => { return html.replace('%lang%', locale).replace('%dir%', getTextDirection(locale)); diff --git a/apps/ppp/src/hooks.ts b/apps/ppp/src/hooks.ts index e75600b3..08593618 100644 --- a/apps/ppp/src/hooks.ts +++ b/apps/ppp/src/hooks.ts @@ -1,3 +1,4 @@ +import type { Reroute } from '@sveltejs/kit/hooks'; import { deLocalizeUrl } from '$lib/paraglide/runtime'; -export const reroute = (request) => deLocalizeUrl(request.url).pathname; +export const reroute: Reroute = (request): string => deLocalizeUrl(request.url).pathname; diff --git a/apps/ppp/svelte.config.js b/apps/ppp/svelte.config.js deleted file mode 100644 index a5123e7b..00000000 --- a/apps/ppp/svelte.config.js +++ /dev/null @@ -1,30 +0,0 @@ -import adapter from '@sveltejs/adapter-static'; -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - // Consult https://svelte.dev/docs/kit/integrations - // for more information about preprocessors - preprocess: vitePreprocess(), - kit: { - adapter: adapter({ - fallback: '404.html', - pages: 'dist' - }), - paths: { - base: process.argv.includes('dev') ? '' : process.env.BASE_PATH, - relative: false - }, - typescript: { - config: (config) => { - config.exclude.push( - '../src/lib/assets/**', - '../src/routes/(app)/problems/**/runtimes/*/code.*' - ); - return config; - } - } - } -}; - -export default config; diff --git a/apps/ppp/tsconfig.json b/apps/ppp/tsconfig.json index 5d2b5716..161d51ff 100644 --- a/apps/ppp/tsconfig.json +++ b/apps/ppp/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "./.svelte-kit/tsconfig.json", + "extends": "$app/tsconfig", "compilerOptions": { "allowImportingTsExtensions": true, "allowJs": true, @@ -10,11 +10,20 @@ "skipLibCheck": true, "sourceMap": true, "strict": 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 - // - // To make changes to top-level options such as include and exclude, we recommend extending - // the generated config; see https://svelte.dev/docs/kit/configuration#typescript + "moduleResolution": "bundler", + "paths": { + "$lib": ["./src/lib"], + "$lib/*": ["./src/lib/*"] + } + }, + "include": [ + "src/**/*.ts", + "src/**/*.js", + "src/**/*.svelte", + "*.d.ts" + ], + "exclude": [ + "src/lib/assets/**", + "src/routes/(app)/problems/**/runtimes/*/code.*" + ] } diff --git a/apps/ppp/vite.config.ts b/apps/ppp/vite.config.ts index b155f10e..73386a86 100644 --- a/apps/ppp/vite.config.ts +++ b/apps/ppp/vite.config.ts @@ -7,6 +7,8 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { viteStaticCopy } from 'vite-plugin-static-copy'; import Icons from 'unplugin-icons/vite'; import { DEV } from 'esm-env'; +import adapter from '@sveltejs/adapter-static'; +import { resolve } from 'path'; const base = DEV ? undefined : process.env.BASE_PATH?.slice(1); @@ -14,6 +16,11 @@ export default defineConfig({ worker: { format: 'es' }, + resolve: { + alias: { + $lib: resolve(__dirname, 'src/lib') + } + }, esbuild: { target: 'es2022' }, @@ -32,7 +39,18 @@ export default defineConfig({ assetsInclude: ['**/*.wasm', '**/*.zip', '**/*.rlib', '**/*.so'], plugins: [ tailwindcss(), - sveltekit(), + sveltekit({ + adapter: adapter({ + fallback: '404.html', + pages: 'dist' + }), + paths: { + base: process.argv.includes('dev') + ? '' + : (process.env.BASE_PATH as `/${string}` | undefined), + relative: false + } + }), Icons({ compiler: 'svelte' }), devtoolsJson(), paraglideVitePlugin({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b0f29a0e..8fd53c5f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,14 +132,14 @@ importers: specifier: ^2.16.1 version: 2.16.1 '@sveltejs/adapter-static': - specifier: ^3.0.10 - version: 3.0.10(@sveltejs/kit@2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.55.5(@typescript-eslint/types@8.59.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1))) + specifier: 4.0.0-next.4 + version: 4.0.0-next.4(@sveltejs/kit@3.0.0-next.25(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1))) '@sveltejs/kit': - specifier: ^2.58.0 - version: 2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.55.5(@typescript-eslint/types@8.59.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + specifier: 3.0.0-next.25 + version: 3.0.0-next.25(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) '@sveltejs/vite-plugin-svelte': specifier: ^7.0.0 - version: 7.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + version: 7.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) '@tailwindcss/typography': specifier: ^0.5.19 version: 0.5.19(tailwindcss@4.2.4) @@ -166,7 +166,7 @@ importers: version: 10.1.8(eslint@10.2.1(jiti@2.6.1)) eslint-plugin-svelte: specifier: ^3.17.1 - version: 3.17.1(eslint@10.2.1(jiti@2.6.1))(svelte@5.55.5(@typescript-eslint/types@8.59.0)) + version: 3.17.1(eslint@10.2.1(jiti@2.6.1))(svelte@5.56.10(@typescript-eslint/types@8.67.0)) globals: specifier: ^17.5.0 version: 17.5.0 @@ -178,16 +178,16 @@ importers: version: 3.8.3 prettier-plugin-svelte: specifier: ^3.5.1 - version: 3.5.1(prettier@3.8.3)(svelte@5.55.5(@typescript-eslint/types@8.59.0)) + version: 3.5.1(prettier@3.8.3)(svelte@5.56.10(@typescript-eslint/types@8.67.0)) prettier-plugin-tailwindcss: specifier: ^0.7.3 - version: 0.7.3(prettier-plugin-svelte@3.5.1(prettier@3.8.3)(svelte@5.55.5(@typescript-eslint/types@8.59.0)))(prettier@3.8.3) + version: 0.7.3(prettier-plugin-svelte@3.5.1(prettier@3.8.3)(svelte@5.56.10(@typescript-eslint/types@8.67.0)))(prettier@3.8.3) svelte: - specifier: ^5.55.5 - version: 5.55.5(@typescript-eslint/types@8.59.0) + specifier: ^5.56.10 + version: 5.56.10(@typescript-eslint/types@8.67.0) svelte-check: specifier: ^4.4.6 - version: 4.4.6(picomatch@4.0.4)(svelte@5.55.5(@typescript-eslint/types@8.59.0))(typescript@5.9.3) + version: 4.4.6(picomatch@4.0.4)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@5.9.3) tailwindcss: specifier: ^4.2.4 version: 4.2.4 @@ -195,11 +195,11 @@ importers: specifier: ^5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.59.0 - version: 8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.67.0 + version: 8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) unplugin-icons: specifier: ^23.0.1 - version: 23.0.1(svelte@5.55.5(@typescript-eslint/types@8.59.0)) + version: 23.0.1(svelte@5.56.10(@typescript-eslint/types@8.67.0)) vite: specifier: 'catalog:' version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) @@ -207,14 +207,14 @@ importers: specifier: ^1.0.0 version: 1.0.0(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) vite-plugin-static-copy: - specifier: 'catalog:' - version: 4.1.0(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + specifier: 4.1.1 + version: 4.1.1(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) vitest: specifier: 'catalog:' version: 4.1.5(@types/node@24.12.2)(@vitest/browser-playwright@4.1.5)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) vitest-browser-svelte: specifier: ^2.1.1 - version: 2.1.1(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vitest@4.1.5) + version: 2.1.1(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.5) packages/dotnet-runtime: dependencies: @@ -227,7 +227,7 @@ importers: version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) vite-plugin-dts: specifier: 'catalog:' - version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) vite-plugin-static-copy: specifier: 'catalog:' version: 4.1.0(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) @@ -243,7 +243,7 @@ importers: version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) vite-plugin-dts: specifier: 'catalog:' - version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) vite-plugin-static-copy: specifier: 'catalog:' version: 4.1.0(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) @@ -262,7 +262,7 @@ importers: version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) vite-plugin-dts: specifier: 'catalog:' - version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) packages/java-runtime: dependencies: @@ -318,7 +318,7 @@ importers: version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) vite-plugin-dts: specifier: 'catalog:' - version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) vite-plugin-static-copy: specifier: 'catalog:' version: 4.1.0(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) @@ -337,7 +337,7 @@ importers: version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) vite-plugin-dts: specifier: 'catalog:' - version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) vite-plugin-static-copy: specifier: 'catalog:' version: 4.1.0(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) @@ -362,7 +362,7 @@ importers: version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) vite-plugin-dts: specifier: 'catalog:' - version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) vite-plugin-static-copy: specifier: 'catalog:' version: 4.1.0(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) @@ -381,7 +381,7 @@ importers: version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) vite-plugin-dts: specifier: 'catalog:' - version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) packages/typescript-runtime: dependencies: @@ -403,7 +403,7 @@ importers: version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) vite-plugin-dts: specifier: 'catalog:' - version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + version: 4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) packages: @@ -864,6 +864,9 @@ packages: '@rolldown/pluginutils@1.0.0-rc.17': resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -1029,26 +1032,26 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@sveltejs/acorn-typescript@1.0.6': - resolution: {integrity: sha512-4awhxtMh4cx9blePWl10HRHj8Iivtqj+2QdDCSMDzxG+XKa9+VCNupQuCuvzEhYPzZSrX+0gC+0lHA/0fFKKQQ==} + '@sveltejs/acorn-typescript@1.0.13': + resolution: {integrity: sha512-wgKggnhZVL9Bfx1OaKKTrYY9BFRk6C8UAkQNUcIv1+llzYrIqy+RZm5HPKzn0NpEBvTVhTqB4kQyllZywsRBRQ==} peerDependencies: acorn: ^8.9.0 - '@sveltejs/adapter-static@3.0.10': - resolution: {integrity: sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==} + '@sveltejs/adapter-static@4.0.0-next.4': + resolution: {integrity: sha512-LpHOHYLQctyUASoxlR+m2NYZ9PgQQEpo7Ij8FVs5arLmnGZ3FmFi6RFs5SBk05hzLhmzsUkVcmw8vn7FmWzVJg==} peerDependencies: - '@sveltejs/kit': ^2.0.0 + '@sveltejs/kit': ^3.0.0-next.0 - '@sveltejs/kit@2.58.0': - resolution: {integrity: sha512-kT9GCN8yJTkCK1W+Gi/bvGooWAM7y7WXP+yd+rf6QOIjyoK1ERPrMwSufXJUNu2pMWIqruhFvmz+LbOqsEmKmA==} - engines: {node: '>=18.13'} + '@sveltejs/kit@3.0.0-next.25': + resolution: {integrity: sha512-3ih37NCbIQUnGzn3fPK7XA9Qn9ipA6D4+6rBfHZfpUc1ga1eLxyJmINPzV1lFlM55LaWjus88rGoUSiKeevRhw==} + engines: {node: '>=22.17'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.0.0 - '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - typescript: ^5.3.3 || ^6.0.0 - vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0 + '@sveltejs/vite-plugin-svelte': ^7.0.0 + svelte: ^5.56.4 + typescript: ^6.0.0 + vite: ^8.0.12 peerDependenciesMeta: '@opentelemetry/api': optional: true @@ -1214,9 +1217,6 @@ packages: '@types/color@4.2.1': resolution: {integrity: sha512-ResWeDLy1vozIMbD6JLRKuNBbIcIlBkjTIxVHHd5Cqtm77T+ahH3BWE/PWv1OhFd1HAwcn8no4ig2uTaRXpYQQ==} - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -1241,63 +1241,63 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@typescript-eslint/eslint-plugin@8.59.0': - resolution: {integrity: sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==} + '@typescript-eslint/eslint-plugin@8.67.0': + resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.59.0 + '@typescript-eslint/parser': ^8.67.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.59.0': - resolution: {integrity: sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==} + '@typescript-eslint/parser@8.67.0': + resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.59.0': - resolution: {integrity: sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==} + '@typescript-eslint/project-service@8.67.0': + resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.59.0': - resolution: {integrity: sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==} + '@typescript-eslint/scope-manager@8.67.0': + resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.59.0': - resolution: {integrity: sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==} + '@typescript-eslint/tsconfig-utils@8.67.0': + resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.59.0': - resolution: {integrity: sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==} + '@typescript-eslint/type-utils@8.67.0': + resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.59.0': - resolution: {integrity: sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==} + '@typescript-eslint/types@8.67.0': + resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.59.0': - resolution: {integrity: sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==} + '@typescript-eslint/typescript-estree@8.67.0': + resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.59.0': - resolution: {integrity: sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==} + '@typescript-eslint/utils@8.67.0': + resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.59.0': - resolution: {integrity: sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==} + '@typescript-eslint/visitor-keys@8.67.0': + resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitest/browser-playwright@4.1.5': @@ -1385,6 +1385,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} + hasBin: true + ajv-draft-04@1.0.0: resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: @@ -1532,9 +1537,9 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} + cookie@2.0.1: + resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==} + engines: {node: '>=22'} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -1582,8 +1587,8 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - devalue@5.7.1: - resolution: {integrity: sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==} + devalue@5.9.1: + resolution: {integrity: sha512-+17vil3EVQRzvtDJSFuTWEb8XJRvXqAiV3qZyQWD398QeXUa6CxsUyMdD1fxzEhUrd4FojitFz7lhIHBTlV4fw==} diff@8.0.2: resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} @@ -1688,8 +1693,8 @@ packages: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} - esrap@2.2.5: - resolution: {integrity: sha512-/yLB1538mag+dn0wsePTe8C0rDIjUOaJpMs2McodSzmM2msWcZsBSdRtg6HOBt0A/r82BN+Md3pgwSc/uWt2Ig==} + esrap@2.3.6: + resolution: {integrity: sha512-yc0OC12UjPqLoc+fe+v5GNs4TOjAigUw3sTikfC+xeBPGUw7gDRz3DtYaqEhxyMVJojcSWJw7jT0QWR+CbuE/A==} peerDependencies: '@typescript-eslint/types': ^8.2.0 peerDependenciesMeta: @@ -1927,10 +1932,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - known-css-properties@0.37.0: resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} @@ -2043,6 +2044,9 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + magic-string@1.2.2: + resolution: {integrity: sha512-veT/+7iXrXzT39XnEN4lOxtNl72dMgJ8Lp+5Bd6YcMSWpb0n0MjBM8Uuooi6jgJr8dhUW2swQgBmoZVMni5SVg==} + marked@14.0.0: resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} engines: {node: '>= 18'} @@ -2104,8 +2108,8 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} ms@2.1.3: @@ -2409,9 +2413,6 @@ packages: engines: {node: '>=10'} hasBin: true - set-cookie-parser@3.0.1: - resolution: {integrity: sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2495,8 +2496,8 @@ packages: svelte: optional: true - svelte@5.55.5: - resolution: {integrity: sha512-2uCs/LZ9us+AktdzYJM8OcxQ8qnPS1kpaO7syGT/MgO+6Qr1Ybl+TqPq+97u7PHqmmMlye5ZkoyXONy5mjjAbw==} + svelte@5.56.10: + resolution: {integrity: sha512-Lcxbj8I/KAbpY+VjtY4ENQBV0dDCipfGAhqb51XQZ67CIQqXgsv/8dPkbILaj4Fb6/b6JAEM/PIVbILXgDQy2g==} engines: {node: '>=18'} tailwindcss@4.2.4: @@ -2527,6 +2528,10 @@ packages: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} @@ -2563,8 +2568,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.59.0: - resolution: {integrity: sha512-BU3ONW9X+v90EcCH9ZS6LMackcVtxRLlI3XrYyqZIwVSHIk7Qf7bFw1z0M9Q0IUxhTMZCf8piY9hTYaNEIASrw==} + typescript-eslint@8.67.0: + resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -2653,6 +2658,12 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite-plugin-static-copy@4.1.1: + resolution: {integrity: sha512-GrlA8YklrAfSyxJ4M3fdQLOo9oNkp56IM9FYgX/WtEgeIFkPwhu4wzpufBCIuNKCa6Fn77FkRdYxkHqV0FwjAw==} + engines: {node: ^22.0.0 || >=24.0.0} + peerDependencies: + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite@8.0.10: resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3203,6 +3214,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.17': {} + '@rolldown/pluginutils@1.0.1': {} + '@rollup/pluginutils@5.1.4(rollup@4.53.2)': dependencies: '@types/estree': 1.0.8 @@ -3331,40 +3344,42 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@sveltejs/acorn-typescript@1.0.6(acorn@8.16.0)': + '@sveltejs/acorn-typescript@1.0.13(acorn@8.16.0)': dependencies: acorn: 8.16.0 - '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.55.5(@typescript-eslint/types@8.59.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))': + '@sveltejs/acorn-typescript@1.0.13(acorn@8.18.0)': + dependencies: + acorn: 8.18.0 + + '@sveltejs/adapter-static@4.0.0-next.4(@sveltejs/kit@3.0.0-next.25(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))': dependencies: - '@sveltejs/kit': 2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.55.5(@typescript-eslint/types@8.59.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + '@sveltejs/kit': 3.0.0-next.25(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) - '@sveltejs/kit@2.58.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.55.5(@typescript-eslint/types@8.59.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1))': + '@sveltejs/kit@3.0.0-next.25(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)))(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1))': dependencies: + '@rolldown/pluginutils': 1.0.1 '@standard-schema/spec': 1.1.0 - '@sveltejs/acorn-typescript': 1.0.6(acorn@8.16.0) - '@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) - '@types/cookie': 0.6.0 - acorn: 8.16.0 - cookie: 0.6.0 - devalue: 5.7.1 + '@sveltejs/acorn-typescript': 1.0.13(acorn@8.18.0) + '@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) + acorn: 8.18.0 + cookie: 2.0.1 + devalue: 5.9.1 esm-env: 1.2.2 - kleur: 4.1.5 - magic-string: 0.30.21 - mrmime: 2.0.0 - set-cookie-parser: 3.0.1 + magic-string: 1.2.2 + mrmime: 2.0.1 sirv: 3.0.2 - svelte: 5.55.5(@typescript-eslint/types@8.59.0) + svelte: 5.56.10(@typescript-eslint/types@8.67.0) vite: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) optionalDependencies: typescript: 5.9.3 - '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1))': + '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1))': dependencies: deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 - svelte: 5.55.5(@typescript-eslint/types@8.59.0) + svelte: 5.56.10(@typescript-eslint/types@8.67.0) vite: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) vitefu: 1.1.3(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) @@ -3441,9 +3456,9 @@ snapshots: tailwindcss: 4.2.4 vite: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) - '@testing-library/svelte-core@1.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0))': + '@testing-library/svelte-core@1.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0))': dependencies: - svelte: 5.55.5(@typescript-eslint/types@8.59.0) + svelte: 5.56.10(@typescript-eslint/types@8.67.0) '@total-typescript/tsconfig@1.0.4': {} @@ -3487,8 +3502,6 @@ snapshots: dependencies: '@types/color-convert': 2.0.3 - '@types/cookie@0.6.0': {} - '@types/deep-eql@4.0.2': {} '@types/emscripten@1.41.5': {} @@ -3507,14 +3520,14 @@ snapshots: '@types/trusted-types@2.0.7': {} - '@typescript-eslint/eslint-plugin@8.59.0(@typescript-eslint/parser@8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/type-utils': 8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.59.0 + '@typescript-eslint/parser': 8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.67.0 eslint: 10.2.1(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -3523,41 +3536,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.59.0 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3 eslint: 10.2.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.59.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.67.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@5.9.3) - '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.9.3) + '@typescript-eslint/types': 8.67.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.59.0': + '@typescript-eslint/scope-manager@8.67.0': dependencies: - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/visitor-keys': 8.59.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 - '@typescript-eslint/tsconfig-utils@8.59.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.67.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 eslint: 10.2.1(jiti@2.6.1) ts-api-utils: 2.5.0(typescript@5.9.3) @@ -3565,14 +3578,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.59.0': {} + '@typescript-eslint/types@8.67.0': {} - '@typescript-eslint/typescript-estree@8.59.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.67.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.59.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.59.0(typescript@5.9.3) - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/visitor-keys': 8.59.0 + '@typescript-eslint/project-service': 8.67.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.9.3) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 @@ -3582,20 +3595,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.59.0 - '@typescript-eslint/types': 8.59.0 - '@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.9.3) eslint: 10.2.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.59.0': + '@typescript-eslint/visitor-keys@8.67.0': dependencies: - '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/types': 8.67.0 eslint-visitor-keys: 5.0.1 '@vitest/browser-playwright@4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1))(vitest@4.1.5)': @@ -3699,7 +3712,7 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - '@vue/language-core@2.2.0(typescript@5.9.3)': + '@vue/language-core@2.2.0(typescript@6.0.3)': dependencies: '@volar/language-core': 2.4.11 '@vue/compiler-dom': 3.5.7 @@ -3710,7 +3723,7 @@ snapshots: muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 '@vue/shared@3.5.7': {} @@ -3724,6 +3737,8 @@ snapshots: acorn@8.16.0: {} + acorn@8.18.0: {} + ajv-draft-04@1.0.0(ajv@8.13.0): optionalDependencies: ajv: 8.13.0 @@ -3868,7 +3883,7 @@ snapshots: convert-source-map@2.0.0: {} - cookie@0.6.0: {} + cookie@2.0.1: {} core-util-is@1.0.3: {} @@ -3896,7 +3911,7 @@ snapshots: detect-libc@2.0.3: {} - devalue@5.7.1: {} + devalue@5.9.1: {} diff@8.0.2: {} @@ -3971,7 +3986,7 @@ snapshots: dependencies: eslint: 10.2.1(jiti@2.6.1) - eslint-plugin-svelte@3.17.1(eslint@10.2.1(jiti@2.6.1))(svelte@5.55.5(@typescript-eslint/types@8.59.0)): + eslint-plugin-svelte@3.17.1(eslint@10.2.1(jiti@2.6.1))(svelte@5.56.10(@typescript-eslint/types@8.67.0)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1(jiti@2.6.1)) '@jridgewell/sourcemap-codec': 1.5.5 @@ -3983,9 +3998,9 @@ snapshots: postcss-load-config: 3.1.4(postcss@8.5.11) postcss-safe-parser: 7.0.1(postcss@8.5.11) semver: 7.7.4 - svelte-eslint-parser: 1.4.0(svelte@5.55.5(@typescript-eslint/types@8.59.0)) + svelte-eslint-parser: 1.4.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) optionalDependencies: - svelte: 5.55.5(@typescript-eslint/types@8.59.0) + svelte: 5.56.10(@typescript-eslint/types@8.67.0) transitivePeerDependencies: - ts-node @@ -4064,11 +4079,11 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@2.2.5(@typescript-eslint/types@8.59.0): + esrap@2.3.6(@typescript-eslint/types@8.67.0): dependencies: '@jridgewell/sourcemap-codec': 1.5.5 optionalDependencies: - '@typescript-eslint/types': 8.59.0 + '@typescript-eslint/types': 8.67.0 esrecurse@4.3.0: dependencies: @@ -4253,8 +4268,6 @@ snapshots: dependencies: json-buffer: 3.0.1 - kleur@4.1.5: {} - known-css-properties@0.37.0: {} kolorist@1.8.0: {} @@ -4343,6 +4356,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + magic-string@1.2.2: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + marked@14.0.0: {} marked@18.0.2: {} @@ -4399,7 +4416,7 @@ snapshots: mri@1.2.0: {} - mrmime@2.0.0: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -4534,16 +4551,16 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.5.1(prettier@3.8.3)(svelte@5.55.5(@typescript-eslint/types@8.59.0)): + prettier-plugin-svelte@3.5.1(prettier@3.8.3)(svelte@5.56.10(@typescript-eslint/types@8.67.0)): dependencies: prettier: 3.8.3 - svelte: 5.55.5(@typescript-eslint/types@8.59.0) + svelte: 5.56.10(@typescript-eslint/types@8.67.0) - prettier-plugin-tailwindcss@0.7.3(prettier-plugin-svelte@3.5.1(prettier@3.8.3)(svelte@5.55.5(@typescript-eslint/types@8.59.0)))(prettier@3.8.3): + prettier-plugin-tailwindcss@0.7.3(prettier-plugin-svelte@3.5.1(prettier@3.8.3)(svelte@5.56.10(@typescript-eslint/types@8.67.0)))(prettier@3.8.3): dependencies: prettier: 3.8.3 optionalDependencies: - prettier-plugin-svelte: 3.5.1(prettier@3.8.3)(svelte@5.55.5(@typescript-eslint/types@8.59.0)) + prettier-plugin-svelte: 3.5.1(prettier@3.8.3)(svelte@5.56.10(@typescript-eslint/types@8.67.0)) prettier@3.8.3: {} @@ -4671,8 +4688,6 @@ snapshots: semver@7.7.4: {} - set-cookie-parser@3.0.1: {} - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -4684,7 +4699,7 @@ snapshots: sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 - mrmime: 2.0.0 + mrmime: 2.0.1 totalist: 3.0.1 source-map-js@1.2.1: {} @@ -4724,19 +4739,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.4.6(picomatch@4.0.4)(svelte@5.55.5(@typescript-eslint/types@8.59.0))(typescript@5.9.3): + svelte-check@4.4.6(picomatch@4.0.4)(svelte@5.56.10(@typescript-eslint/types@8.67.0))(typescript@5.9.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.1 fdir: 6.5.0(picomatch@4.0.4) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.55.5(@typescript-eslint/types@8.59.0) + svelte: 5.56.10(@typescript-eslint/types@8.67.0) typescript: 5.9.3 transitivePeerDependencies: - picomatch - svelte-eslint-parser@1.4.0(svelte@5.55.5(@typescript-eslint/types@8.59.0)): + svelte-eslint-parser@1.4.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)): dependencies: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -4745,22 +4760,22 @@ snapshots: postcss-scss: 4.0.9(postcss@8.5.11) postcss-selector-parser: 7.1.0 optionalDependencies: - svelte: 5.55.5(@typescript-eslint/types@8.59.0) + svelte: 5.56.10(@typescript-eslint/types@8.67.0) - svelte@5.55.5(@typescript-eslint/types@8.59.0): + svelte@5.56.10(@typescript-eslint/types@8.67.0): dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 - '@sveltejs/acorn-typescript': 1.0.6(acorn@8.16.0) + '@sveltejs/acorn-typescript': 1.0.13(acorn@8.16.0) '@types/estree': 1.0.8 '@types/trusted-types': 2.0.7 acorn: 8.16.0 aria-query: 5.3.1 axobject-query: 4.1.0 clsx: 2.1.1 - devalue: 5.7.1 + devalue: 5.9.1 esm-env: 1.2.2 - esrap: 2.2.5(@typescript-eslint/types@8.59.0) + esrap: 2.3.6(@typescript-eslint/types@8.67.0) is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.21 @@ -4803,6 +4818,11 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinyrainbow@3.1.0: {} to-buffer@1.1.1: {} @@ -4834,12 +4854,12 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.0(@typescript-eslint/parser@8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.67.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3) eslint: 10.2.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -4857,7 +4877,7 @@ snapshots: universalify@2.0.1: {} - unplugin-icons@23.0.1(svelte@5.55.5(@typescript-eslint/types@8.59.0)): + unplugin-icons@23.0.1(svelte@5.56.10(@typescript-eslint/types@8.67.0)): dependencies: '@antfu/install-pkg': 1.1.0 '@iconify/utils': 3.1.0 @@ -4865,7 +4885,7 @@ snapshots: obug: 2.1.1 unplugin: 2.3.11 optionalDependencies: - svelte: 5.55.5(@typescript-eslint/types@8.59.0) + svelte: 5.56.10(@typescript-eslint/types@8.67.0) unplugin@2.3.11: dependencies: @@ -4891,18 +4911,18 @@ snapshots: uuid: 11.1.0 vite: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) - vite-plugin-dts@4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@5.9.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)): + vite-plugin-dts@4.5.4(@types/node@24.12.2)(rollup@4.53.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)): dependencies: '@microsoft/api-extractor': 7.54.0(@types/node@24.12.2) '@rollup/pluginutils': 5.1.4(rollup@4.53.2) '@volar/typescript': 2.4.11 - '@vue/language-core': 2.2.0(typescript@5.9.3) + '@vue/language-core': 2.2.0(typescript@6.0.3) compare-versions: 6.1.1 debug: 4.4.3 kolorist: 1.8.0 local-pkg: 1.1.2 magic-string: 0.30.21 - typescript: 5.9.3 + typescript: 6.0.3 optionalDependencies: vite: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) transitivePeerDependencies: @@ -4918,6 +4938,14 @@ snapshots: tinyglobby: 0.2.16 vite: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) + vite-plugin-static-copy@4.1.1(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)): + dependencies: + chokidar: 3.6.0 + p-map: 7.0.4 + picocolors: 1.1.1 + tinyglobby: 0.2.17 + vite: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) + vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1): dependencies: lightningcss: 1.32.0 @@ -4936,10 +4964,10 @@ snapshots: optionalDependencies: vite: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1) - vitest-browser-svelte@2.1.1(svelte@5.55.5(@typescript-eslint/types@8.59.0))(vitest@4.1.5): + vitest-browser-svelte@2.1.1(svelte@5.56.10(@typescript-eslint/types@8.67.0))(vitest@4.1.5): dependencies: - '@testing-library/svelte-core': 1.0.0(svelte@5.55.5(@typescript-eslint/types@8.59.0)) - svelte: 5.55.5(@typescript-eslint/types@8.59.0) + '@testing-library/svelte-core': 1.0.0(svelte@5.56.10(@typescript-eslint/types@8.67.0)) + svelte: 5.56.10(@typescript-eslint/types@8.67.0) vitest: 4.1.5(@types/node@24.12.2)(@vitest/browser-playwright@4.1.5)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)) vitest@4.1.5(@types/node@24.12.2)(@vitest/browser-playwright@4.1.5)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(yaml@2.5.1)): From 0d73e8277a448a3bb0e13c2ae1f09a56641dbaa0 Mon Sep 17 00:00:00 2001 From: Roman Krasilnikov Date: Sat, 22 Aug 2026 01:51:58 +0300 Subject: [PATCH 2/3] [build] Update all packages, migrate to SvelteKit 3, fix runtime asset loading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dependencies: - Bump all workspace packages to latest (vite 8.2, vitest 4.1.11, vite-plugin-dts 5, prettier 3.9 + plugin-svelte 4, monaco 0.56, pyodide 314, @php-wasm 3.1.50, ruby-wasm 2.10.1, eslint 10.9, etc.) - Hold TypeScript at 6.0.3: TS 7 is unsupported by typescript-eslint and breaks the dts toolchain (add @typescript/typescript6 fallback) SvelteKit 3 (3.0.0-next.25): - Move adapter/paths config from svelte.config.js into the sveltekit() vite plugin; extend $app/tsconfig in tsconfig.json - Import Handle/Reroute from @sveltejs/kit/hooks - Keep $lib as a vite/tsconfig alias instead of #lib subpath imports Runtime fixes for updated compilers: - pyodide 314: drop the custom instantiateWasm/global-hook bypass — load stock via a real indexURL (/assets/pyodide/) served from a static copy of the distribution (asm.mjs/.wasm, lock, stdlib) - @php-wasm 3.1.50: wasm dir moved to 8_5_8; enforce "pre" on the ignore-wasm-imports plugin under rolldown - monaco 0.56: alias esm/vs subtree (strict exports map breaks ?worker imports) - dotnet/pyodide/gleam static-copy targets need rename.stripBase to compensate for pnpm symlink path nesting Tooling: - eslint: ignore dist/generated/vendored dirs, fix surfaced rule violations (each-block keys, hook types, Function types) - Replace __dirname with import.meta.dirname in all vite configs --- apps/ppp/.prettierignore | 6 + apps/ppp/eslint.config.js | 33 +- apps/ppp/messages/en.json | 34 +- apps/ppp/messages/ru.json | 54 +- apps/ppp/package.json | 52 +- apps/ppp/src/app.d.ts | 2 +- apps/ppp/src/lib/assets/enable-threads.js | 285 +- apps/ppp/src/lib/components/dropdown.svelte | 137 +- .../lib/components/editor/context.svelte.ts | 24 +- .../editor/controls/checkbox.svelte | 14 +- .../lib/components/editor/controls/index.ts | 4 +- .../components/editor/controls/number.svelte | 22 +- .../components/editor/controls/select.svelte | 46 +- .../src/lib/components/editor/editor.svelte | 94 +- apps/ppp/src/lib/components/editor/index.ts | 10 +- .../components/editor/panel/context.svelte.ts | 18 +- .../src/lib/components/editor/panel/index.ts | 14 +- .../src/lib/components/editor/panel/model.ts | 5 +- .../editor/panel/panel-toggle.svelte | 104 +- .../lib/components/editor/panel/panel.svelte | 46 +- .../editor/panel/tab-content.svelte | 24 +- .../lib/components/editor/panel/tab.svelte | 52 +- .../lib/components/editor/panel/tabs.svelte | 26 +- .../editor/panel/terminal-tab.svelte | 80 +- apps/ppp/src/lib/components/editor/process.ts | 2 +- .../lib/components/editor/run-button.svelte | 40 +- .../ppp/src/lib/components/editor/terminal.ts | 4 +- .../lib/components/editor/vim-status.svelte | 36 +- apps/ppp/src/lib/components/logo.svelte | 10 +- .../src/lib/components/resizable-panel.svelte | 127 +- apps/ppp/src/lib/components/resizer/index.ts | 4 +- apps/ppp/src/lib/components/resizer/model.ts | 8 +- .../src/lib/components/resizer/resizer.svelte | 98 +- apps/ppp/src/lib/components/select.svelte | 24 +- apps/ppp/src/lib/editor-panel-tab.ts | 13 +- apps/ppp/src/lib/editor-provider.svelte | 4 +- apps/ppp/src/lib/gleam/gleam.tmLanguage.json | 350 +- .../src/lib/gleam/language-configuration.ts | 46 +- apps/ppp/src/lib/math.ts | 4 +- apps/ppp/src/lib/problem/content.svelte | 1 + apps/ppp/src/lib/problem/editor.svelte | 30 +- apps/ppp/src/lib/routes.ts | 8 +- .../lib/runtime/dotnet/compiler-factory.ts | 2 +- .../src/lib/runtime/dotnet/description.svelte | 4 +- apps/ppp/src/lib/runtime/dotnet/info.svelte | 28 +- .../runtime/dotnet/test-compiler-factory.ts | 2 +- .../runtime/dotnet/test-description.svelte | 2 +- .../ppp/src/lib/runtime/dotnet/test-worker.ts | 24 +- apps/ppp/src/lib/runtime/dotnet/worker.ts | 4 +- .../src/lib/runtime/gleam/compiler-factory.ts | 2 +- .../src/lib/runtime/gleam/description.svelte | 16 +- .../runtime/gleam/test-compiler-factory.ts | 2 +- apps/ppp/src/lib/runtime/gleam/test-worker.ts | 18 +- apps/ppp/src/lib/runtime/gleam/worker.ts | 4 +- .../ppp/src/lib/runtime/go/description.svelte | 30 +- apps/ppp/src/lib/runtime/go/test-worker.ts | 18 +- apps/ppp/src/lib/runtime/go/worker.ts | 4 +- .../src/lib/runtime/java/description.svelte | 4 +- apps/ppp/src/lib/runtime/java/info.svelte | 11 +- .../lib/runtime/java/test-compiler-factory.ts | 7 +- .../lib/runtime/java/test-description.svelte | 4 +- apps/ppp/src/lib/runtime/java/test-worker.ts | 24 +- apps/ppp/src/lib/runtime/java/worker.ts | 4 +- .../src/lib/runtime/js/compiler-factory.ts | 24 +- .../ppp/src/lib/runtime/js/description.svelte | 10 +- .../lib/runtime/js/test-compiler-factory.ts | 53 +- apps/ppp/src/lib/runtime/js/test-worker.ts | 18 +- apps/ppp/src/lib/runtime/js/worker.ts | 4 +- .../src/lib/runtime/php/description.svelte | 16 +- apps/ppp/src/lib/runtime/php/test-worker.ts | 18 +- apps/ppp/src/lib/runtime/php/worker.ts | 4 +- .../lib/runtime/python/compiler-factory.ts | 20 +- .../src/lib/runtime/python/description.svelte | 13 +- .../runtime/python/test-compiler-factory.ts | 20 +- .../ppp/src/lib/runtime/python/test-worker.ts | 18 +- apps/ppp/src/lib/runtime/python/worker.ts | 4 +- .../src/lib/runtime/ruby/description.svelte | 20 +- apps/ppp/src/lib/runtime/ruby/test-worker.ts | 18 +- apps/ppp/src/lib/runtime/ruby/worker.ts | 4 +- .../src/lib/runtime/rust/description.svelte | 46 +- apps/ppp/src/lib/runtime/rust/test-worker.ts | 12 +- apps/ppp/src/lib/runtime/rust/worker.ts | 4 +- .../ppp/src/lib/runtime/ts/description.svelte | 12 +- .../lib/runtime/ts/test-compiler-factory.ts | 58 +- apps/ppp/src/lib/runtime/ts/test-worker.ts | 18 +- apps/ppp/src/lib/runtime/ts/worker.ts | 4 +- apps/ppp/src/lib/storage.ts | 38 +- apps/ppp/src/lib/sync-storage.svelte.ts | 40 +- apps/ppp/src/lib/zig/zig.tmLanguage.json | 676 ++-- apps/ppp/src/monaco-vim.d.ts | 132 +- .../ppp/src/routes/(app)/editor/+page@.svelte | 34 +- apps/ppp/src/routes/(app)/editor/_program.js | 2 +- apps/ppp/src/routes/(app)/editor/_program.ts | 2 +- .../src/routes/(app)/problems/+page.svelte | 9 +- .../(app)/problems/[problem]/+page@.svelte | 12 +- .../factory/payment-system/reference.ts | 47 +- .../payment-system/runtimes/csharp/index.ts | 4 +- .../payment-system/runtimes/gleam/index.ts | 4 +- .../payment-system/runtimes/go/index.ts | 4 +- .../payment-system/runtimes/java/factory.ts | 8 +- .../payment-system/runtimes/java/index.ts | 4 +- .../runtimes/javascript/code.js | 14 +- .../runtimes/javascript/index.ts | 4 +- .../payment-system/runtimes/php/index.ts | 4 +- .../payment-system/runtimes/python/index.ts | 4 +- .../payment-system/runtimes/ruby/index.ts | 4 +- .../payment-system/runtimes/rust/index.ts | 4 +- .../runtimes/typescript/code.ts | 20 +- .../runtimes/typescript/index.ts | 4 +- .../factory/payment-system/tests-data.ts | 44 +- apps/ppp/src/routes/+layout.svelte | 5 +- apps/ppp/src/routes/layout.css | 12 +- apps/ppp/tsconfig.json | 12 +- apps/ppp/vite.config.ts | 12 +- package.json | 5 +- packages/dotnet-runtime/vite.config.js | 4 +- packages/gleam-runtime/vite.config.js | 4 +- packages/go-runtime/vite.config.js | 4 +- packages/java-runtime/package.json | 2 +- packages/libs/package.json | 4 +- packages/php-runtime/package.json | 4 +- packages/php-runtime/vite.config.js | 7 +- packages/python-runtime/package.json | 2 +- .../python-runtime/src/py-runtime-factory.ts | 61 +- packages/python-runtime/vite.config.js | 14 +- packages/ruby-runtime/package.json | 4 +- packages/ruby-runtime/vite.config.js | 4 +- packages/rust-runtime/vite.config.js | 4 +- packages/zig-runtime/vite.config.js | 4 +- pnpm-lock.yaml | 2892 +++++++++-------- pnpm-workspace.yaml | 14 +- 131 files changed, 3469 insertions(+), 3350 deletions(-) diff --git a/apps/ppp/.prettierignore b/apps/ppp/.prettierignore index 7d74fe24..973ffcf4 100644 --- a/apps/ppp/.prettierignore +++ b/apps/ppp/.prettierignore @@ -7,3 +7,9 @@ bun.lockb # Miscellaneous /static/ + +# Build output +dist/ +messages/ +project.inlang/ +src/lib/paraglide/ diff --git a/apps/ppp/eslint.config.js b/apps/ppp/eslint.config.js index 28b00d37..e24f4f97 100644 --- a/apps/ppp/eslint.config.js +++ b/apps/ppp/eslint.config.js @@ -6,11 +6,24 @@ import svelte from 'eslint-plugin-svelte'; import { defineConfig } from 'eslint/config'; import globals from 'globals'; import ts from 'typescript-eslint'; -import svelteConfig from './svelte.config.js'; const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); export default defineConfig( + { + ignores: [ + 'dist/**', + 'node_modules/**', + '.svelte-kit/**', + 'messages/**', + 'project.inlang/**', + 'src/lib/paraglide/**', + // vendored third-party code + 'src/lib/assets/**', + // problem statement example code, intentionally non-idiomatic + 'src/routes/(app)/problems/**/runtimes/*/code.*' + ] + }, includeIgnoreFile(gitignorePath), js.configs.recommended, ...ts.configs.recommended, @@ -39,14 +52,28 @@ export default defineConfig( ] } }, + { + files: ['**/*.svelte'], + rules: { + // bare reads of reactive variables inside $effect are the idiomatic + // Svelte 5 way of declaring dependencies + '@typescript-eslint/no-unused-expressions': 'off' + } + }, + { + // renders trusted problem-statement markdown + files: ['**/problem/content.svelte'], + rules: { + 'svelte/no-at-html-tags': 'off' + } + }, { files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], languageOptions: { parserOptions: { projectService: true, extraFileExtensions: ['.svelte'], - parser: ts.parser, - svelteConfig + parser: ts.parser } } } diff --git a/apps/ppp/messages/en.json b/apps/ppp/messages/en.json index 33c2d552..22576ce3 100644 --- a/apps/ppp/messages/en.json +++ b/apps/ppp/messages/en.json @@ -1,19 +1,19 @@ { - "$schema": "https://inlang.com/schema/inlang-message-format", - "problems": "problems", - "editor": "editor", - "design_patterns": "design patterns", - "tests": "tests", - "output": "output", - "settings": "settings", - "vim_mode": "Vim mode", - "run": "run", - "stop": "stop", - "force_stop": "force stop", - "execution_timeout": "execution timeout (ms)", - "execution_timeout_description": "use zero to disable", - "untranslated_content": "this content has not yet been translated into your language.", - "input_mode": "input mode", - "problem_name_not_found": "Problem \"{name}\" not found", - "back_to_problems": "Back to problems" + "$schema": "https://inlang.com/schema/inlang-message-format", + "problems": "problems", + "editor": "editor", + "design_patterns": "design patterns", + "tests": "tests", + "output": "output", + "settings": "settings", + "vim_mode": "Vim mode", + "run": "run", + "stop": "stop", + "force_stop": "force stop", + "execution_timeout": "execution timeout (ms)", + "execution_timeout_description": "use zero to disable", + "untranslated_content": "this content has not yet been translated into your language.", + "input_mode": "input mode", + "problem_name_not_found": "Problem \"{name}\" not found", + "back_to_problems": "Back to problems" } diff --git a/apps/ppp/messages/ru.json b/apps/ppp/messages/ru.json index b53c9d30..ddff5cfa 100644 --- a/apps/ppp/messages/ru.json +++ b/apps/ppp/messages/ru.json @@ -1,28 +1,28 @@ { - "$schema": "https://inlang.com/schema/inlang-message-format", - "problems": "проблемы", - "editor": "редактор", - "design_patterns": "паттерны проектирования", - "tests": "Тесты", - "output": "Вывод", - "settings": "Настройки", - "vim_mode": "режим Vim", - "run": "Запустить", - "stop": "Остановить", - "force_stop": "остановить принудительно", - "execution_timeout": "таймаут выполнения (мс)", - "execution_timeout_description": "используйте ноль для отключения", - "untranslated_content": "этот контент пока не переведен на ваш язык", - "hello_world": "Hello, {name} from ru!", - "problemsPageTitle": "Проблемы", - "editorPageTitle": "Редактор", - "designPatterns": "Паттерны проектирования", - "vimMode": "Режим Vim", - "forceStop": "Остановить принудительно", - "executionTimeout": "Таймаут выполнения (мс)", - "executionTimeoutDescription": "Используйте ноль для отключения", - "currently_untranslated_problem": "Данная проблема пока не переведена для вашего языка", - "input_mode": "режим ввода", - "problem_name_not_found": "Проблема \"{name}\" не найдена", - "back_to_problems": "Назад к проблемам" -} \ No newline at end of file + "$schema": "https://inlang.com/schema/inlang-message-format", + "problems": "проблемы", + "editor": "редактор", + "design_patterns": "паттерны проектирования", + "tests": "Тесты", + "output": "Вывод", + "settings": "Настройки", + "vim_mode": "режим Vim", + "run": "Запустить", + "stop": "Остановить", + "force_stop": "остановить принудительно", + "execution_timeout": "таймаут выполнения (мс)", + "execution_timeout_description": "используйте ноль для отключения", + "untranslated_content": "этот контент пока не переведен на ваш язык", + "hello_world": "Hello, {name} from ru!", + "problemsPageTitle": "Проблемы", + "editorPageTitle": "Редактор", + "designPatterns": "Паттерны проектирования", + "vimMode": "Режим Vim", + "forceStop": "Остановить принудительно", + "executionTimeout": "Таймаут выполнения (мс)", + "executionTimeoutDescription": "Используйте ноль для отключения", + "currently_untranslated_problem": "Данная проблема пока не переведена для вашего языка", + "input_mode": "режим ввода", + "problem_name_not_found": "Проблема \"{name}\" не найдена", + "back_to_problems": "Назад к проблемам" +} diff --git a/apps/ppp/package.json b/apps/ppp/package.json index 69b7ec9b..8736b63e 100644 --- a/apps/ppp/package.json +++ b/apps/ppp/package.json @@ -18,7 +18,7 @@ "test": "npm run test:unit -- --run" }, "dependencies": { - "@andrewbranch/untar.js": "^1.0.3", + "@andrewbranch/untar.js": "^1.0.4", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "dotnet-runtime": "workspace:*", @@ -28,8 +28,8 @@ "java-runtime": "workspace:*", "javascript-runtime": "workspace:*", "libs": "workspace:*", - "marked": "^18.0.2", - "monaco-editor": "^0.55.1", + "marked": "^18.0.10", + "monaco-editor": "^0.56.0", "monaco-editor-textmate": "^4.0.0", "monaco-textmate": "^3.0.1", "monaco-vim": "^0.4.4", @@ -42,38 +42,38 @@ "zig-runtime": "workspace:*" }, "devDependencies": { - "@eslint/compat": "^2.0.5", + "@eslint/compat": "^2.1.0", "@eslint/js": "^10.0.1", - "@iconify-json/lucide": "^1.2.103", - "@iconify-json/vscode-icons": "^1.2.46", - "@inlang/paraglide-js": "^2.16.1", + "@iconify-json/lucide": "^1.2.124", + "@iconify-json/vscode-icons": "^1.2.74", + "@inlang/paraglide-js": "^2.24.1", "@sveltejs/adapter-static": "4.0.0-next.4", "@sveltejs/kit": "3.0.0-next.25", - "@sveltejs/vite-plugin-svelte": "^7.0.0", - "@tailwindcss/typography": "^0.5.19", - "@tailwindcss/vite": "^4.2.4", + "@sveltejs/vite-plugin-svelte": "^7.3.0", + "@tailwindcss/typography": "^0.5.20", + "@tailwindcss/vite": "^4.3.3", "@types/color": "^4.2.1", - "@types/node": "^24.12.2", - "@vitest/browser-playwright": "^4.1.5", - "daisyui": "^5.5.19", - "eslint": "^10.2.1", + "@types/node": "^26.2.0", + "@vitest/browser-playwright": "^4.1.11", + "daisyui": "^5.7.20", + "eslint": "^10.9.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-svelte": "^3.17.1", - "globals": "^17.5.0", - "playwright": "^1.59.1", - "prettier": "^3.8.3", - "prettier-plugin-svelte": "^3.5.1", - "prettier-plugin-tailwindcss": "^0.7.3", + "eslint-plugin-svelte": "^3.23.0", + "globals": "^17.11.0", + "playwright": "^1.62.1", + "prettier": "^3.9.6", + "prettier-plugin-svelte": "^4.1.1", + "prettier-plugin-tailwindcss": "^0.8.1", "svelte": "^5.56.10", - "svelte-check": "^4.4.6", - "tailwindcss": "^4.2.4", - "typescript": "^5.9.3", + "svelte-check": "^4.7.6", + "tailwindcss": "^4.3.3", + "typescript": "^6.0.3", "typescript-eslint": "^8.67.0", "unplugin-icons": "^23.0.1", "vite": "catalog:", - "vite-plugin-devtools-json": "^1.0.0", + "vite-plugin-devtools-json": "^1.1.0", "vite-plugin-static-copy": "4.1.1", "vitest": "catalog:", - "vitest-browser-svelte": "^2.1.1" + "vitest-browser-svelte": "^3.0.0" } -} \ No newline at end of file +} diff --git a/apps/ppp/src/app.d.ts b/apps/ppp/src/app.d.ts index a900936a..b87d0fba 100644 --- a/apps/ppp/src/app.d.ts +++ b/apps/ppp/src/app.d.ts @@ -1,6 +1,6 @@ // See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces -import 'unplugin-icons/types/svelte' +import 'unplugin-icons/types/svelte'; declare global { namespace App { diff --git a/apps/ppp/src/lib/assets/enable-threads.js b/apps/ppp/src/lib/assets/enable-threads.js index f3cf211c..5df2ad7b 100644 --- a/apps/ppp/src/lib/assets/enable-threads.js +++ b/apps/ppp/src/lib/assets/enable-threads.js @@ -1,146 +1,147 @@ /*! coi-serviceworker v0.1.7 - Guido Zuidhof and contributors, licensed under MIT */ let coepCredentialless = false; if (typeof window === 'undefined') { - self.addEventListener("install", () => self.skipWaiting()); - self.addEventListener("activate", (event) => event.waitUntil(self.clients.claim())); - - self.addEventListener("message", (ev) => { - if (!ev.data) { - return; - } else if (ev.data.type === "deregister") { - self.registration - .unregister() - .then(() => { - return self.clients.matchAll(); - }) - .then(clients => { - clients.forEach((client) => client.navigate(client.url)); - }); - } else if (ev.data.type === "coepCredentialless") { - coepCredentialless = ev.data.value; - } - }); - - self.addEventListener("fetch", function (event) { - const r = event.request; - if (r.cache === "only-if-cached" && r.mode !== "same-origin") { - return; - } - - const request = (coepCredentialless && r.mode === "no-cors") - ? new Request(r, { - credentials: "omit", - }) - : r; - event.respondWith( - fetch(request) - .then((response) => { - if (response.status === 0) { - return response; - } - - const newHeaders = new Headers(response.headers); - newHeaders.set("Cross-Origin-Embedder-Policy", - coepCredentialless ? "credentialless" : "require-corp" - ); - if (!coepCredentialless) { - newHeaders.set("Cross-Origin-Resource-Policy", "cross-origin"); - } - newHeaders.set("Cross-Origin-Opener-Policy", "same-origin"); - - return new Response(response.body, { - status: response.status, - statusText: response.statusText, - headers: newHeaders, - }); - }) - .catch((e) => console.error(e)) - ); - }); - + self.addEventListener('install', () => self.skipWaiting()); + self.addEventListener('activate', (event) => event.waitUntil(self.clients.claim())); + + self.addEventListener('message', (ev) => { + if (!ev.data) { + return; + } else if (ev.data.type === 'deregister') { + self.registration + .unregister() + .then(() => { + return self.clients.matchAll(); + }) + .then((clients) => { + clients.forEach((client) => client.navigate(client.url)); + }); + } else if (ev.data.type === 'coepCredentialless') { + coepCredentialless = ev.data.value; + } + }); + + self.addEventListener('fetch', function (event) { + const r = event.request; + if (r.cache === 'only-if-cached' && r.mode !== 'same-origin') { + return; + } + + const request = + coepCredentialless && r.mode === 'no-cors' + ? new Request(r, { + credentials: 'omit' + }) + : r; + event.respondWith( + fetch(request) + .then((response) => { + if (response.status === 0) { + return response; + } + + const newHeaders = new Headers(response.headers); + newHeaders.set( + 'Cross-Origin-Embedder-Policy', + coepCredentialless ? 'credentialless' : 'require-corp' + ); + if (!coepCredentialless) { + newHeaders.set('Cross-Origin-Resource-Policy', 'cross-origin'); + } + newHeaders.set('Cross-Origin-Opener-Policy', 'same-origin'); + + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers: newHeaders + }); + }) + .catch((e) => console.error(e)) + ); + }); } else { - (() => { - const reloadedBySelf = window.sessionStorage.getItem("coiReloadedBySelf"); - window.sessionStorage.removeItem("coiReloadedBySelf"); - const coepDegrading = (reloadedBySelf == "coepdegrade"); - - // You can customize the behavior of this script through a global `coi` variable. - const coi = { - shouldRegister: () => !reloadedBySelf, - shouldDeregister: () => false, - coepCredentialless: () => true, - coepDegrade: () => true, - doReload: () => window.location.reload(), - quiet: false, - ...window.coi - }; - - const n = navigator; - const controlling = n.serviceWorker && n.serviceWorker.controller; - - // Record the failure if the page is served by serviceWorker. - if (controlling && !window.crossOriginIsolated) { - window.sessionStorage.setItem("coiCoepHasFailed", "true"); - } - const coepHasFailed = window.sessionStorage.getItem("coiCoepHasFailed"); - - if (controlling) { - // Reload only on the first failure. - const reloadToDegrade = coi.coepDegrade() && !( - coepDegrading || window.crossOriginIsolated - ); - n.serviceWorker.controller.postMessage({ - type: "coepCredentialless", - value: (reloadToDegrade || coepHasFailed && coi.coepDegrade()) - ? false - : coi.coepCredentialless(), - }); - if (reloadToDegrade) { - !coi.quiet && console.log("Reloading page to degrade COEP."); - window.sessionStorage.setItem("coiReloadedBySelf", "coepdegrade"); - coi.doReload("coepdegrade"); - } - - if (coi.shouldDeregister()) { - n.serviceWorker.controller.postMessage({ type: "deregister" }); - } - } - - // If we're already coi: do nothing. Perhaps it's due to this script doing its job, or COOP/COEP are - // already set from the origin server. Also if the browser has no notion of crossOriginIsolated, just give up here. - if (window.crossOriginIsolated !== false || !coi.shouldRegister()) return; - - if (!window.isSecureContext) { - !coi.quiet && console.log("COOP/COEP Service Worker not registered, a secure context is required."); - return; - } - - // In some environments (e.g. Firefox private mode) this won't be available - if (!n.serviceWorker) { - !coi.quiet && console.error("COOP/COEP Service Worker not registered, perhaps due to private mode."); - return; - } - - n.serviceWorker.register(window.document.currentScript.src).then( - (registration) => { - !coi.quiet && console.log("COOP/COEP Service Worker registered", registration.scope); - - registration.addEventListener("updatefound", () => { - !coi.quiet && console.log("Reloading page to make use of updated COOP/COEP Service Worker."); - window.sessionStorage.setItem("coiReloadedBySelf", "updatefound"); - coi.doReload(); - }); - - // If the registration is active, but it's not controlling the page - if (registration.active && !n.serviceWorker.controller) { - !coi.quiet && console.log("Reloading page to make use of COOP/COEP Service Worker."); - window.sessionStorage.setItem("coiReloadedBySelf", "notcontrolling"); - coi.doReload(); - } - }, - (err) => { - !coi.quiet && console.error("COOP/COEP Service Worker failed to register:", err); - } - ); - })(); -} \ No newline at end of file + (() => { + const reloadedBySelf = window.sessionStorage.getItem('coiReloadedBySelf'); + window.sessionStorage.removeItem('coiReloadedBySelf'); + const coepDegrading = reloadedBySelf == 'coepdegrade'; + + // You can customize the behavior of this script through a global `coi` variable. + const coi = { + shouldRegister: () => !reloadedBySelf, + shouldDeregister: () => false, + coepCredentialless: () => true, + coepDegrade: () => true, + doReload: () => window.location.reload(), + quiet: false, + ...window.coi + }; + + const n = navigator; + const controlling = n.serviceWorker && n.serviceWorker.controller; + + // Record the failure if the page is served by serviceWorker. + if (controlling && !window.crossOriginIsolated) { + window.sessionStorage.setItem('coiCoepHasFailed', 'true'); + } + const coepHasFailed = window.sessionStorage.getItem('coiCoepHasFailed'); + + if (controlling) { + // Reload only on the first failure. + const reloadToDegrade = coi.coepDegrade() && !(coepDegrading || window.crossOriginIsolated); + n.serviceWorker.controller.postMessage({ + type: 'coepCredentialless', + value: + reloadToDegrade || (coepHasFailed && coi.coepDegrade()) ? false : coi.coepCredentialless() + }); + if (reloadToDegrade) { + !coi.quiet && console.log('Reloading page to degrade COEP.'); + window.sessionStorage.setItem('coiReloadedBySelf', 'coepdegrade'); + coi.doReload('coepdegrade'); + } + + if (coi.shouldDeregister()) { + n.serviceWorker.controller.postMessage({ type: 'deregister' }); + } + } + + // If we're already coi: do nothing. Perhaps it's due to this script doing its job, or COOP/COEP are + // already set from the origin server. Also if the browser has no notion of crossOriginIsolated, just give up here. + if (window.crossOriginIsolated !== false || !coi.shouldRegister()) return; + + if (!window.isSecureContext) { + !coi.quiet && + console.log('COOP/COEP Service Worker not registered, a secure context is required.'); + return; + } + + // In some environments (e.g. Firefox private mode) this won't be available + if (!n.serviceWorker) { + !coi.quiet && + console.error('COOP/COEP Service Worker not registered, perhaps due to private mode.'); + return; + } + + n.serviceWorker.register(window.document.currentScript.src).then( + (registration) => { + !coi.quiet && console.log('COOP/COEP Service Worker registered', registration.scope); + + registration.addEventListener('updatefound', () => { + !coi.quiet && + console.log('Reloading page to make use of updated COOP/COEP Service Worker.'); + window.sessionStorage.setItem('coiReloadedBySelf', 'updatefound'); + coi.doReload(); + }); + + // If the registration is active, but it's not controlling the page + if (registration.active && !n.serviceWorker.controller) { + !coi.quiet && console.log('Reloading page to make use of COOP/COEP Service Worker.'); + window.sessionStorage.setItem('coiReloadedBySelf', 'notcontrolling'); + coi.doReload(); + } + }, + (err) => { + !coi.quiet && console.error('COOP/COEP Service Worker failed to register:', err); + } + ); + })(); +} diff --git a/apps/ppp/src/lib/components/dropdown.svelte b/apps/ppp/src/lib/components/dropdown.svelte index c445719e..d5711cae 100644 --- a/apps/ppp/src/lib/components/dropdown.svelte +++ b/apps/ppp/src/lib/components/dropdown.svelte @@ -1,89 +1,82 @@ - diff --git a/apps/ppp/src/lib/components/editor/context.svelte.ts b/apps/ppp/src/lib/components/editor/context.svelte.ts index 27c7a00e..7a2bd60c 100644 --- a/apps/ppp/src/lib/components/editor/context.svelte.ts +++ b/apps/ppp/src/lib/components/editor/context.svelte.ts @@ -1,23 +1,23 @@ -import { getContext, setContext } from "svelte"; -import type { editor } from "monaco-editor"; -import type { Terminal } from "@xterm/xterm"; +import { getContext, setContext } from 'svelte'; +import type { editor } from 'monaco-editor'; +import type { Terminal } from '@xterm/xterm'; import type { FitAddon } from '@xterm/addon-fit'; export class EditorContext { - editor = $state(); - constructor( - public model: editor.ITextModel, - public terminal: Terminal, - public terminalFitAddon: FitAddon - ) {} + editor = $state(); + constructor( + public model: editor.ITextModel, + public terminal: Terminal, + public terminalFitAddon: FitAddon + ) {} } -const EDITOR_CONTEXT = Symbol("editor-context"); +const EDITOR_CONTEXT = Symbol('editor-context'); export function setEditorContext(ctx: EditorContext) { - setContext(EDITOR_CONTEXT, ctx); + setContext(EDITOR_CONTEXT, ctx); } export function getEditorContext() { - return getContext(EDITOR_CONTEXT); + return getContext(EDITOR_CONTEXT); } diff --git a/apps/ppp/src/lib/components/editor/controls/checkbox.svelte b/apps/ppp/src/lib/components/editor/controls/checkbox.svelte index c9b260ab..af7e96ed 100644 --- a/apps/ppp/src/lib/components/editor/controls/checkbox.svelte +++ b/apps/ppp/src/lib/components/editor/controls/checkbox.svelte @@ -1,13 +1,13 @@ diff --git a/apps/ppp/src/lib/components/editor/controls/index.ts b/apps/ppp/src/lib/components/editor/controls/index.ts index 8eb88a54..086aa3c2 100644 --- a/apps/ppp/src/lib/components/editor/controls/index.ts +++ b/apps/ppp/src/lib/components/editor/controls/index.ts @@ -1,3 +1,3 @@ -export { default as CheckBox } from "./checkbox.svelte"; -export { default as Number } from "./number.svelte"; +export { default as CheckBox } from './checkbox.svelte'; +export { default as Number } from './number.svelte'; export { default as Select } from './select.svelte'; diff --git a/apps/ppp/src/lib/components/editor/controls/number.svelte b/apps/ppp/src/lib/components/editor/controls/number.svelte index d13d452d..cc957f23 100644 --- a/apps/ppp/src/lib/components/editor/controls/number.svelte +++ b/apps/ppp/src/lib/components/editor/controls/number.svelte @@ -1,17 +1,17 @@
- {title} - - {#if alt} -

{alt}

- {/if} + {title} + + {#if alt} +

{alt}

+ {/if}
diff --git a/apps/ppp/src/lib/components/editor/controls/select.svelte b/apps/ppp/src/lib/components/editor/controls/select.svelte index af3bbccf..c6156775 100644 --- a/apps/ppp/src/lib/components/editor/controls/select.svelte +++ b/apps/ppp/src/lib/components/editor/controls/select.svelte @@ -1,31 +1,31 @@
- {title} - - {#if alt} - {alt} - {/if} + {title} + + {#if alt} + {alt} + {/if}
diff --git a/apps/ppp/src/lib/components/editor/editor.svelte b/apps/ppp/src/lib/components/editor/editor.svelte index 0bb198e7..71eec1af 100644 --- a/apps/ppp/src/lib/components/editor/editor.svelte +++ b/apps/ppp/src/lib/components/editor/editor.svelte @@ -1,51 +1,51 @@
diff --git a/apps/ppp/src/lib/components/editor/index.ts b/apps/ppp/src/lib/components/editor/index.ts index 950e3b22..c8411610 100644 --- a/apps/ppp/src/lib/components/editor/index.ts +++ b/apps/ppp/src/lib/components/editor/index.ts @@ -1,6 +1,6 @@ export * from './process'; -export * from "./terminal"; -export * from "./context.svelte"; -export { default as Editor } from "./editor.svelte"; -export { default as VimStatus } from "./vim-status.svelte"; -export { default as RunButton } from "./run-button.svelte"; +export * from './terminal'; +export * from './context.svelte'; +export { default as Editor } from './editor.svelte'; +export { default as VimStatus } from './vim-status.svelte'; +export { default as RunButton } from './run-button.svelte'; diff --git a/apps/ppp/src/lib/components/editor/panel/context.svelte.ts b/apps/ppp/src/lib/components/editor/panel/context.svelte.ts index 7283945b..29848553 100644 --- a/apps/ppp/src/lib/components/editor/panel/context.svelte.ts +++ b/apps/ppp/src/lib/components/editor/panel/context.svelte.ts @@ -1,21 +1,21 @@ -import { getContext, setContext } from "svelte"; +import { getContext, setContext } from 'svelte'; -import { EditorPanelTab } from "$lib/editor-panel-tab"; +import { EditorPanelTab } from '$lib/editor-panel-tab'; export class EditorPanelContext { - selectedTab = $state(); + selectedTab = $state(); - constructor(selectedTab: EditorPanelTab) { - this.selectedTab = selectedTab; - } + constructor(selectedTab: EditorPanelTab) { + this.selectedTab = selectedTab; + } } -const EDITOR_PANEL_CONTEXT = Symbol("editor-panel-context"); +const EDITOR_PANEL_CONTEXT = Symbol('editor-panel-context'); export function setEditorPanelContext(ctx: EditorPanelContext) { - setContext(EDITOR_PANEL_CONTEXT, ctx); + setContext(EDITOR_PANEL_CONTEXT, ctx); } export function getEditorPanelContext() { - return getContext(EDITOR_PANEL_CONTEXT); + return getContext(EDITOR_PANEL_CONTEXT); } diff --git a/apps/ppp/src/lib/components/editor/panel/index.ts b/apps/ppp/src/lib/components/editor/panel/index.ts index 22cc38da..b2143d2e 100644 --- a/apps/ppp/src/lib/components/editor/panel/index.ts +++ b/apps/ppp/src/lib/components/editor/panel/index.ts @@ -1,7 +1,7 @@ -export * from "./model"; -export { default as Panel } from "./panel.svelte"; -export { default as Tab } from "./tab.svelte"; -export { default as Tabs } from "./tabs.svelte"; -export { default as TerminalTab } from "./terminal-tab.svelte"; -export { default as TabContent } from "./tab-content.svelte"; -export { default as PanelToggle } from "./panel-toggle.svelte"; +export * from './model'; +export { default as Panel } from './panel.svelte'; +export { default as Tab } from './tab.svelte'; +export { default as Tabs } from './tabs.svelte'; +export { default as TerminalTab } from './terminal-tab.svelte'; +export { default as TabContent } from './tab-content.svelte'; +export { default as PanelToggle } from './panel-toggle.svelte'; diff --git a/apps/ppp/src/lib/components/editor/panel/model.ts b/apps/ppp/src/lib/components/editor/panel/model.ts index 29b95688..694eed72 100644 --- a/apps/ppp/src/lib/components/editor/panel/model.ts +++ b/apps/ppp/src/lib/components/editor/panel/model.ts @@ -1,6 +1,3 @@ export const PANEL_BORDER_HEIGHT = 1; export const PANEL_HEADER_VERTICAL_PADDING = 4 * 2; -export const MIN_PANEL_HEIGHT = - 36 /* ??? */ + - PANEL_HEADER_VERTICAL_PADDING + - PANEL_BORDER_HEIGHT; +export const MIN_PANEL_HEIGHT = 36 /* ??? */ + PANEL_HEADER_VERTICAL_PADDING + PANEL_BORDER_HEIGHT; diff --git a/apps/ppp/src/lib/components/editor/panel/panel-toggle.svelte b/apps/ppp/src/lib/components/editor/panel/panel-toggle.svelte index 3915dbd1..871c5f22 100644 --- a/apps/ppp/src/lib/components/editor/panel/panel-toggle.svelte +++ b/apps/ppp/src/lib/components/editor/panel/panel-toggle.svelte @@ -1,68 +1,68 @@ - diff --git a/apps/ppp/src/lib/components/editor/panel/panel.svelte b/apps/ppp/src/lib/components/editor/panel/panel.svelte index 8012ca51..175089e7 100644 --- a/apps/ppp/src/lib/components/editor/panel/panel.svelte +++ b/apps/ppp/src/lib/components/editor/panel/panel.svelte @@ -1,36 +1,32 @@ - {@render children()} + {@render children()} diff --git a/apps/ppp/src/lib/components/editor/panel/tab-content.svelte b/apps/ppp/src/lib/components/editor/panel/tab-content.svelte index 6652381e..9fd1729b 100644 --- a/apps/ppp/src/lib/components/editor/panel/tab-content.svelte +++ b/apps/ppp/src/lib/components/editor/panel/tab-content.svelte @@ -1,20 +1,20 @@ {#if ctx.selectedTab === tab} - {@render children()} + {@render children()} {/if} diff --git a/apps/ppp/src/lib/components/editor/panel/tab.svelte b/apps/ppp/src/lib/components/editor/panel/tab.svelte index 293d562d..5cdea254 100644 --- a/apps/ppp/src/lib/components/editor/panel/tab.svelte +++ b/apps/ppp/src/lib/components/editor/panel/tab.svelte @@ -1,44 +1,40 @@ { - ctx.selectedTab = tab - }} + role="tab" + class={['tab', append && 'tab-with-badge', isSelected && 'tab-active']} + onclick={() => { + ctx.selectedTab = tab; + }} > - {EDITOR_PANEL_TAB_TO_LABEL[tab]()} - {#if append} - {@render append()} - {/if} + {EDITOR_PANEL_TAB_TO_LABEL[tab]()} + {#if append} + {@render append()} + {/if} diff --git a/apps/ppp/src/lib/components/editor/panel/tabs.svelte b/apps/ppp/src/lib/components/editor/panel/tabs.svelte index 3127af75..53c8aaef 100644 --- a/apps/ppp/src/lib/components/editor/panel/tabs.svelte +++ b/apps/ppp/src/lib/components/editor/panel/tabs.svelte @@ -1,22 +1,22 @@ -
- {@render children()} +
+ {@render children()}
diff --git a/apps/ppp/src/lib/components/editor/panel/terminal-tab.svelte b/apps/ppp/src/lib/components/editor/panel/terminal-tab.svelte index ec3ef054..0d9d6a41 100644 --- a/apps/ppp/src/lib/components/editor/panel/terminal-tab.svelte +++ b/apps/ppp/src/lib/components/editor/panel/terminal-tab.svelte @@ -1,51 +1,45 @@ -
+
diff --git a/apps/ppp/src/lib/components/editor/process.ts b/apps/ppp/src/lib/components/editor/process.ts index 1395bec4..8194cb51 100644 --- a/apps/ppp/src/lib/components/editor/process.ts +++ b/apps/ppp/src/lib/components/editor/process.ts @@ -1 +1 @@ -export type ProcessStatus = 'stopped' | 'stopping' | 'running' \ No newline at end of file +export type ProcessStatus = 'stopped' | 'stopping' | 'running'; diff --git a/apps/ppp/src/lib/components/editor/run-button.svelte b/apps/ppp/src/lib/components/editor/run-button.svelte index 5a3907d0..93992ec9 100644 --- a/apps/ppp/src/lib/components/editor/run-button.svelte +++ b/apps/ppp/src/lib/components/editor/run-button.svelte @@ -1,26 +1,26 @@ - diff --git a/apps/ppp/src/lib/components/editor/terminal.ts b/apps/ppp/src/lib/components/editor/terminal.ts index 383e4c68..4f50ca57 100644 --- a/apps/ppp/src/lib/components/editor/terminal.ts +++ b/apps/ppp/src/lib/components/editor/terminal.ts @@ -16,7 +16,7 @@ export enum InputMode { Raw = 'raw' } -export const INPUT_MODS = Object.values(InputMode) +export const INPUT_MODS = Object.values(InputMode); export function createTerminal({ theme = makeTerminalTheme() }: TerminalConfig = {}) { const terminal = new Terminal({ @@ -39,7 +39,7 @@ export function createReadableStream(terminal: Terminal) { }); }, cancel() { - console.log("CANCEL") + console.log('CANCEL'); disposable.dispose(); } }); diff --git a/apps/ppp/src/lib/components/editor/vim-status.svelte b/apps/ppp/src/lib/components/editor/vim-status.svelte index 665942af..cb6a242c 100644 --- a/apps/ppp/src/lib/components/editor/vim-status.svelte +++ b/apps/ppp/src/lib/components/editor/vim-status.svelte @@ -1,28 +1,28 @@
diff --git a/apps/ppp/src/lib/components/logo.svelte b/apps/ppp/src/lib/components/logo.svelte index 4ce05cf0..c981cd4a 100644 --- a/apps/ppp/src/lib/components/logo.svelte +++ b/apps/ppp/src/lib/components/logo.svelte @@ -1,10 +1,10 @@ -
- 3P -
+
+ 3P +
diff --git a/apps/ppp/src/lib/components/resizable-panel.svelte b/apps/ppp/src/lib/components/resizable-panel.svelte index 02bead73..caec1c57 100644 --- a/apps/ppp/src/lib/components/resizable-panel.svelte +++ b/apps/ppp/src/lib/components/resizable-panel.svelte @@ -1,79 +1,80 @@ -
- { - start = { x: size, y: e[coord] }; - }} - onMove={(e) => { - size = normalizeSize(op(start.y, e[coord], start.x), size); - }} - /> - {@render children()} +
+ { + start = { x: size, y: e[coord] }; + }} + onMove={(e) => { + size = normalizeSize(op(start.y, e[coord], start.x), size); + }} + /> + {@render children()}
diff --git a/apps/ppp/src/lib/components/resizer/index.ts b/apps/ppp/src/lib/components/resizer/index.ts index f12e0d38..0db7e5c6 100644 --- a/apps/ppp/src/lib/components/resizer/index.ts +++ b/apps/ppp/src/lib/components/resizer/index.ts @@ -1,2 +1,2 @@ -export * from './model' -export { default as Resizer } from './resizer.svelte' +export * from './model'; +export { default as Resizer } from './resizer.svelte'; diff --git a/apps/ppp/src/lib/components/resizer/model.ts b/apps/ppp/src/lib/components/resizer/model.ts index 1d2710d1..27785064 100644 --- a/apps/ppp/src/lib/components/resizer/model.ts +++ b/apps/ppp/src/lib/components/resizer/model.ts @@ -1,9 +1,9 @@ export enum Orientation { - Vertical = "vertical", - Horizontal = "horizontal", + Vertical = 'vertical', + Horizontal = 'horizontal' } export enum Alignment { - Start = "start", - End = "end", + Start = 'start', + End = 'end' } diff --git a/apps/ppp/src/lib/components/resizer/resizer.svelte b/apps/ppp/src/lib/components/resizer/resizer.svelte index 0ca1155f..0769ec3c 100644 --- a/apps/ppp/src/lib/components/resizer/resizer.svelte +++ b/apps/ppp/src/lib/components/resizer/resizer.svelte @@ -1,61 +1,59 @@
diff --git a/apps/ppp/src/lib/components/select.svelte b/apps/ppp/src/lib/components/select.svelte index 99783e3a..dba389af 100644 --- a/apps/ppp/src/lib/components/select.svelte +++ b/apps/ppp/src/lib/components/select.svelte @@ -1,16 +1,16 @@ - - + {#each options as option (option)} + + {/each} diff --git a/apps/ppp/src/lib/editor-panel-tab.ts b/apps/ppp/src/lib/editor-panel-tab.ts index 88286ab0..ef4f9303 100644 --- a/apps/ppp/src/lib/editor-panel-tab.ts +++ b/apps/ppp/src/lib/editor-panel-tab.ts @@ -1,14 +1,13 @@ import { m } from '$lib/paraglide/messages'; export enum EditorPanelTab { - Tests = "tests", - Output = "output", - Settings = "settings", + Tests = 'tests', + Output = 'output', + Settings = 'settings' } export const EDITOR_PANEL_TAB_TO_LABEL: Record string> = { - [EditorPanelTab.Tests]: m.tests, - [EditorPanelTab.Output]: m.output, - [EditorPanelTab.Settings]: m.settings, + [EditorPanelTab.Tests]: m.tests, + [EditorPanelTab.Output]: m.output, + [EditorPanelTab.Settings]: m.settings }; - diff --git a/apps/ppp/src/lib/editor-provider.svelte b/apps/ppp/src/lib/editor-provider.svelte index 7ba47470..78056afd 100644 --- a/apps/ppp/src/lib/editor-provider.svelte +++ b/apps/ppp/src/lib/editor-provider.svelte @@ -2,8 +2,8 @@ import type { Snippet } from 'svelte'; import 'monaco-editor'; - import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; - import TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; + import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker.js?worker'; + import TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker.js?worker'; import { loadTmGrammars } from '$lib/monaco'; diff --git a/apps/ppp/src/lib/gleam/gleam.tmLanguage.json b/apps/ppp/src/lib/gleam/gleam.tmLanguage.json index c5ab3755..837a3bbc 100644 --- a/apps/ppp/src/lib/gleam/gleam.tmLanguage.json +++ b/apps/ppp/src/lib/gleam/gleam.tmLanguage.json @@ -1,176 +1,176 @@ { - "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", - "name": "Gleam", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#keywords" - }, - { - "include": "#strings" - }, - { - "include": "#constant" - }, - { - "include": "#entity" - }, - { - "include": "#discards" - } - ], - "repository": { - "keywords": { - "patterns": [ - { - "name": "keyword.control.gleam", - "match": "\\b(as|use|case|if|fn|import|let|assert|pub|type|opaque|const|todo|panic)\\b" - }, - { - "name": "keyword.operator.arrow.gleam", - "match": "(<\\-|\\->)" - }, - { - "name": "keyword.operator.pipe.gleam", - "match": "\\|>" - }, - { - "name": "keyword.operator.splat.gleam", - "match": "\\.\\." - }, - { - "name": "keyword.operator.comparison.float.gleam", - "match": "(<=\\.|>=\\.|==\\.|!=\\.|<\\.|>\\.)" - }, - { - "name": "keyword.operator.comparison.int.gleam", - "match": "(<=|>=|==|!=|<|>)" - }, - { - "name": "keyword.operator.logical.gleam", - "match": "(&&|\\|\\|)" - }, - { - "name": "keyword.operator.string.gleam", - "match": "<>" - }, - { - "name": "keyword.operator.other.gleam", - "match": "\\|" - }, - { - "name": "keyword.operator.arithmetic.float.gleam", - "match": "(\\+\\.|\\-\\.|/\\.|\\*\\.|%\\.)" - }, - { - "name": "keyword.operator.arithmetic.int.gleam", - "match": "(\\+|\\-|/|\\*|%)" - }, - { - "name": "keyword.operator.assignment.gleam", - "match": "=" - } - ] - }, - "strings": { - "name": "string.quoted.double.gleam", - "begin": "\"", - "end": "\"", - "patterns": [ - { - "name": "constant.character.escape.gleam", - "match": "\\\\." - } - ] - }, - "comments": { - "patterns": [ - { - "name": "comment.line.gleam", - "match": "\/\/.*" - } - ] - }, - "constant": { - "patterns": [ - { - "include": "#binary_number" - }, - { - "include": "#octal_number" - }, - { - "include": "#hexadecimal_number" - }, - { - "include": "#decimal_number" - }, - { - "include": "#boolean" - }, - { - "name": "entity.name.type.gleam", - "match": "[[:upper:]][[:word:]]*" - } - ] - }, - "binary_number": { - "name": "constant.numeric.binary.gleam", - "match": "\\b0[bB](_?[01])+\\b", - "patterns": [] - }, - "octal_number": { - "name": "constant.numeric.octal.gleam", - "match": "\\b0[oO](_?[0-7])+\\b", - "patterns": [] - }, - "decimal_number": { - "name": "constant.numeric.decimal.gleam", - "match": "\\b[[:digit:]]+(_?[[:digit:]])*(\\.[[:digit:]]*)?(e-?[[:digit:]]*)?\\b", - "patterns": [] - }, - "hexadecimal_number": { - "name": "constant.numeric.hexadecimal.gleam", - "match": "\\b0[xX](_?[[:xdigit:]])+\\b", - "patterns": [] - }, - "boolean": { - "name": "constant.language.boolean.gleam", - "match": "\\b(True|False)\\b", - "patterns": [] - }, - "entity": { - "patterns": [ - { - "begin": "\\b([[:lower:]][[:word:]]*)([[:space:]]*)?\\(", - "end": "\\)", - "patterns": [ - { - "include": "$self" - } - ], - "captures": { - "1": { - "name": "entity.name.function.gleam" - } - } - }, - { - "name": "variable.parameter.gleam", - "match": "\\b([[:lower:]][[:word:]]*):\\s" - }, - { - "name": "entity.name.namespace.gleam", - "match": "\\b([[:lower:]][[:word:]]*):" - } - ] - }, - "discards": { - "name": "comment.unused.gleam", - "match": "\\b_(?:[[:word:]]+)?\\b" - } - }, - "scopeName": "source.gleam" -} \ No newline at end of file + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + "name": "Gleam", + "patterns": [ + { + "include": "#comments" + }, + { + "include": "#keywords" + }, + { + "include": "#strings" + }, + { + "include": "#constant" + }, + { + "include": "#entity" + }, + { + "include": "#discards" + } + ], + "repository": { + "keywords": { + "patterns": [ + { + "name": "keyword.control.gleam", + "match": "\\b(as|use|case|if|fn|import|let|assert|pub|type|opaque|const|todo|panic)\\b" + }, + { + "name": "keyword.operator.arrow.gleam", + "match": "(<\\-|\\->)" + }, + { + "name": "keyword.operator.pipe.gleam", + "match": "\\|>" + }, + { + "name": "keyword.operator.splat.gleam", + "match": "\\.\\." + }, + { + "name": "keyword.operator.comparison.float.gleam", + "match": "(<=\\.|>=\\.|==\\.|!=\\.|<\\.|>\\.)" + }, + { + "name": "keyword.operator.comparison.int.gleam", + "match": "(<=|>=|==|!=|<|>)" + }, + { + "name": "keyword.operator.logical.gleam", + "match": "(&&|\\|\\|)" + }, + { + "name": "keyword.operator.string.gleam", + "match": "<>" + }, + { + "name": "keyword.operator.other.gleam", + "match": "\\|" + }, + { + "name": "keyword.operator.arithmetic.float.gleam", + "match": "(\\+\\.|\\-\\.|/\\.|\\*\\.|%\\.)" + }, + { + "name": "keyword.operator.arithmetic.int.gleam", + "match": "(\\+|\\-|/|\\*|%)" + }, + { + "name": "keyword.operator.assignment.gleam", + "match": "=" + } + ] + }, + "strings": { + "name": "string.quoted.double.gleam", + "begin": "\"", + "end": "\"", + "patterns": [ + { + "name": "constant.character.escape.gleam", + "match": "\\\\." + } + ] + }, + "comments": { + "patterns": [ + { + "name": "comment.line.gleam", + "match": "\/\/.*" + } + ] + }, + "constant": { + "patterns": [ + { + "include": "#binary_number" + }, + { + "include": "#octal_number" + }, + { + "include": "#hexadecimal_number" + }, + { + "include": "#decimal_number" + }, + { + "include": "#boolean" + }, + { + "name": "entity.name.type.gleam", + "match": "[[:upper:]][[:word:]]*" + } + ] + }, + "binary_number": { + "name": "constant.numeric.binary.gleam", + "match": "\\b0[bB](_?[01])+\\b", + "patterns": [] + }, + "octal_number": { + "name": "constant.numeric.octal.gleam", + "match": "\\b0[oO](_?[0-7])+\\b", + "patterns": [] + }, + "decimal_number": { + "name": "constant.numeric.decimal.gleam", + "match": "\\b[[:digit:]]+(_?[[:digit:]])*(\\.[[:digit:]]*)?(e-?[[:digit:]]*)?\\b", + "patterns": [] + }, + "hexadecimal_number": { + "name": "constant.numeric.hexadecimal.gleam", + "match": "\\b0[xX](_?[[:xdigit:]])+\\b", + "patterns": [] + }, + "boolean": { + "name": "constant.language.boolean.gleam", + "match": "\\b(True|False)\\b", + "patterns": [] + }, + "entity": { + "patterns": [ + { + "begin": "\\b([[:lower:]][[:word:]]*)([[:space:]]*)?\\(", + "end": "\\)", + "patterns": [ + { + "include": "$self" + } + ], + "captures": { + "1": { + "name": "entity.name.function.gleam" + } + } + }, + { + "name": "variable.parameter.gleam", + "match": "\\b([[:lower:]][[:word:]]*):\\s" + }, + { + "name": "entity.name.namespace.gleam", + "match": "\\b([[:lower:]][[:word:]]*):" + } + ] + }, + "discards": { + "name": "comment.unused.gleam", + "match": "\\b_(?:[[:word:]]+)?\\b" + } + }, + "scopeName": "source.gleam" +} diff --git a/apps/ppp/src/lib/gleam/language-configuration.ts b/apps/ppp/src/lib/gleam/language-configuration.ts index b4ca0c1a..49de9973 100644 --- a/apps/ppp/src/lib/gleam/language-configuration.ts +++ b/apps/ppp/src/lib/gleam/language-configuration.ts @@ -1,26 +1,26 @@ -import type { languages } from "monaco-editor"; +import type { languages } from 'monaco-editor'; export default { - comments: { - lineComment: "//", - }, - brackets: [ - ["{", "}"], - ["[", "]"], - ["(", ")"], - ], - autoClosingPairs: [ - { open:"{", close:"}" }, - { open:"[", close:"]" }, - { open:"(", close:")" }, - { open:'"', close:'"' }, - { open:"'", close:"'" }, - ], - surroundingPairs: [ - { open:"{", close: "}"}, - { open:"[", close: "]"}, - { open:"(", close: ")"}, - { open:'"', close: '"'}, - { open:"'", close: "'"}, - ], + comments: { + lineComment: '//' + }, + brackets: [ + ['{', '}'], + ['[', ']'], + ['(', ')'] + ], + autoClosingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"' }, + { open: "'", close: "'" } + ], + surroundingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"' }, + { open: "'", close: "'" } + ] } satisfies languages.LanguageConfiguration; diff --git a/apps/ppp/src/lib/math.ts b/apps/ppp/src/lib/math.ts index 48ea69a9..5315bb23 100644 --- a/apps/ppp/src/lib/math.ts +++ b/apps/ppp/src/lib/math.ts @@ -1,4 +1,4 @@ export interface Vec2 { - x: number; - y: number; + x: number; + y: number; } diff --git a/apps/ppp/src/lib/problem/content.svelte b/apps/ppp/src/lib/problem/content.svelte index ebe25d45..91b79c38 100644 --- a/apps/ppp/src/lib/problem/content.svelte +++ b/apps/ppp/src/lib/problem/content.svelte @@ -31,4 +31,5 @@

{meta.titles[lang]}

+ {@html marked.parse(content)} diff --git a/apps/ppp/src/lib/problem/editor.svelte b/apps/ppp/src/lib/problem/editor.svelte index 4c5e6094..12f59670 100644 --- a/apps/ppp/src/lib/problem/editor.svelte +++ b/apps/ppp/src/lib/problem/editor.svelte @@ -37,7 +37,7 @@ createLineInputMode, INPUT_MODS, InputMode, - createRawInputMode, + createRawInputMode } from '$lib/components/editor'; import { Panel, @@ -176,18 +176,22 @@ let executionTimeout = $state(executionTimeoutStorage.load()); debouncedSave(executionTimeoutStorage, () => executionTimeout, 100); - const inputModeStorage = createSyncStorage(localStorage, "test-editor-input-mode", InputMode.Line) - let inputMode = $state(inputModeStorage.load()) - immediateSave(inputModeStorage, () => inputMode) + const inputModeStorage = createSyncStorage( + localStorage, + 'test-editor-input-mode', + InputMode.Line + ); + let inputMode = $state(inputModeStorage.load()); + immediateSave(inputModeStorage, () => inputMode); const { terminal, fitAddon } = createTerminal(); - let lastInput: ReadableStreamOfBytes | undefined + let lastInput: ReadableStreamOfBytes | undefined; const input = $derived.by(() => { - lastInput?.cancel() - return lastInput = createReadableStream(terminal).pipeThrough( + lastInput?.cancel(); + return (lastInput = createReadableStream(terminal).pipeThrough( (inputMode === InputMode.Line ? createLineInputMode : createRawInputMode)(terminal) - ) - }) + )); + }); const terminalLogger = createLogger(terminal); const editorContext = new EditorContext(model, terminal, fitAddon); @@ -258,13 +262,13 @@ -
+
@@ -334,7 +338,7 @@
- {#each testCases as testCase, i} + {#each testCases as testCase, i (i)}
{#if lastTestId === i} @@ -369,8 +373,6 @@
- - e.stopPropagation()}> @@ -229,8 +227,6 @@
- - e.stopPropagation()}>