From fef3c68b7fe82e0125da75c221b1193de4269eb4 Mon Sep 17 00:00:00 2001 From: Exelo Date: Tue, 13 Jan 2026 10:02:05 +0100 Subject: [PATCH] refactor: migrate app to svelte-kit --- .gitignore | 1 + .husky/pre-push | 1 + .prettierrc | 2 +- e2e/demo.test.ts | 6 + eslint.config.js | 2 +- index.html | 13 - messages/en.json | 4 + messages/fr.json | 4 + package.json | 23 +- playwright.config.ts | 6 + pnpm-lock.yaml | 695 +++++++++++++++++- project.inlang/settings.json | 12 + src/App.svelte | 15 - src/app.css | 2 + src/app.d.ts | 13 + src/app.html | 12 + src/components/Menu/MenuButton.svelte | 30 - src/components/Menu/MenuItem.svelte | 17 - .../Widget/ScreenView/ScreenViewWidget.svelte | 3 - src/demo.spec.ts | 5 + src/hooks.server.ts | 13 + src/hooks.ts | 3 + src/{ => lib}/assets/logo.png | Bin src/{ => lib}/assets/svelte.svg | 0 .../components/Entity/Components/types.ts | 0 src/{ => lib}/components/Entity/types.ts | 0 src/{ => lib}/components/Menu/MenuBar.svelte | 2 +- src/lib/components/Menu/MenuButton.svelte | 32 + src/lib/components/Menu/MenuItem.svelte | 19 + src/{ => lib}/components/Panel/Layout.svelte | 0 src/{ => lib}/components/Panel/Panel.svelte | 0 src/{ => lib}/components/Panel/Widget.svelte | 2 +- .../components/Panel/WidgetResizeBar.svelte | 3 +- src/{ => lib}/components/Panel/types.ts | 0 src/{ => lib}/components/Panel/utils.ts | 0 .../Tabs/CodeEditor/CodeEditor.svelte | 0 .../components/Tabs/MainTab/MainTab.svelte | 0 src/{ => lib}/components/Tabs/Tab.svelte | 0 src/{ => lib}/components/Tabs/TabBar.svelte | 2 +- src/{ => lib}/components/Tabs/types.ts | 0 .../Widget/CodeEditor/MonacoEditor.svelte | 8 +- .../ComponentValueEditor.svelte | 22 +- .../ComponentsInspectorWidget.svelte | 6 +- .../ContentBrowserItemCard.svelte | 2 +- .../ContentBrowserListFolder.svelte | 2 +- .../ContentBrowserWidget.svelte | 14 +- .../components/Widget/ContentBrowser/types.ts | 0 .../EntitiesTree/EntitiesTreeWidget.svelte | 8 +- .../Widget/EntitiesTree/EntityItem.svelte | 0 .../Widget/OutputLog/OutputLogWidget.svelte | 12 +- .../Widget/ScreenView/ScreenViewWidget.svelte | 3 + src/{ => lib}/components/Widget/widgets.ts | 0 src/{ => lib}/components/demo/code-example.ts | 0 src/{ => lib}/components/demo/components.ts | 0 src/{ => lib}/components/demo/entities.ts | 0 src/{ => lib}/components/demo/logs.ts | 0 src/{ => lib}/components/demo/tabs.ts | 0 src/{ => lib}/components/utils.ts | 0 src/main.ts | 12 - src/routes.ts | 5 - src/routes/+layout.svelte | 8 + src/routes/+page.svelte | 44 ++ src/routes/+page.ts | 3 + src/routes/Home.svelte | 43 -- src/vite-env.d.ts | 2 - static/favicon.svg | 1 + static/robots.txt | 3 + svelte.config.js | 5 + tsconfig.app.json | 15 - tsconfig.json | 21 +- tsconfig.node.json | 23 - vite.config.ts | 42 +- 72 files changed, 1002 insertions(+), 244 deletions(-) create mode 100644 e2e/demo.test.ts delete mode 100644 index.html create mode 100644 messages/en.json create mode 100644 messages/fr.json create mode 100644 playwright.config.ts create mode 100644 project.inlang/settings.json delete mode 100644 src/App.svelte create mode 100644 src/app.d.ts create mode 100644 src/app.html delete mode 100644 src/components/Menu/MenuButton.svelte delete mode 100644 src/components/Menu/MenuItem.svelte delete mode 100644 src/components/Widget/ScreenView/ScreenViewWidget.svelte create mode 100644 src/demo.spec.ts create mode 100644 src/hooks.server.ts create mode 100644 src/hooks.ts rename src/{ => lib}/assets/logo.png (100%) rename src/{ => lib}/assets/svelte.svg (100%) rename src/{ => lib}/components/Entity/Components/types.ts (100%) rename src/{ => lib}/components/Entity/types.ts (100%) rename src/{ => lib}/components/Menu/MenuBar.svelte (96%) create mode 100644 src/lib/components/Menu/MenuButton.svelte create mode 100644 src/lib/components/Menu/MenuItem.svelte rename src/{ => lib}/components/Panel/Layout.svelte (100%) rename src/{ => lib}/components/Panel/Panel.svelte (100%) rename src/{ => lib}/components/Panel/Widget.svelte (79%) rename src/{ => lib}/components/Panel/WidgetResizeBar.svelte (93%) rename src/{ => lib}/components/Panel/types.ts (100%) rename src/{ => lib}/components/Panel/utils.ts (100%) rename src/{ => lib}/components/Tabs/CodeEditor/CodeEditor.svelte (100%) rename src/{ => lib}/components/Tabs/MainTab/MainTab.svelte (100%) rename src/{ => lib}/components/Tabs/Tab.svelte (100%) rename src/{ => lib}/components/Tabs/TabBar.svelte (93%) rename src/{ => lib}/components/Tabs/types.ts (100%) rename src/{ => lib}/components/Widget/CodeEditor/MonacoEditor.svelte (89%) rename src/{ => lib}/components/Widget/ComponentsInspector/ComponentValueEditor.svelte (72%) rename src/{ => lib}/components/Widget/ComponentsInspector/ComponentsInspectorWidget.svelte (59%) rename src/{ => lib}/components/Widget/ContentBrowser/ContentBrowserItemCard.svelte (82%) rename src/{ => lib}/components/Widget/ContentBrowser/ContentBrowserListFolder.svelte (94%) rename src/{ => lib}/components/Widget/ContentBrowser/ContentBrowserWidget.svelte (74%) rename src/{ => lib}/components/Widget/ContentBrowser/types.ts (100%) rename src/{ => lib}/components/Widget/EntitiesTree/EntitiesTreeWidget.svelte (80%) rename src/{ => lib}/components/Widget/EntitiesTree/EntityItem.svelte (100%) rename src/{ => lib}/components/Widget/OutputLog/OutputLogWidget.svelte (73%) create mode 100644 src/lib/components/Widget/ScreenView/ScreenViewWidget.svelte rename src/{ => lib}/components/Widget/widgets.ts (100%) rename src/{ => lib}/components/demo/code-example.ts (100%) rename src/{ => lib}/components/demo/components.ts (100%) rename src/{ => lib}/components/demo/entities.ts (100%) rename src/{ => lib}/components/demo/logs.ts (100%) rename src/{ => lib}/components/demo/tabs.ts (100%) rename src/{ => lib}/components/utils.ts (100%) delete mode 100644 src/main.ts delete mode 100644 src/routes.ts create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+page.svelte create mode 100644 src/routes/+page.ts delete mode 100644 src/routes/Home.svelte delete mode 100644 src/vite-env.d.ts create mode 100644 static/favicon.svg create mode 100644 static/robots.txt delete mode 100644 tsconfig.app.json delete mode 100644 tsconfig.node.json diff --git a/.gitignore b/.gitignore index e35aa33..b2b5556 100644 --- a/.gitignore +++ b/.gitignore @@ -228,6 +228,7 @@ dist # website: https://kit.svelte.dev/ .svelte-kit/ +test-results/ package public/ \ No newline at end of file diff --git a/.husky/pre-push b/.husky/pre-push index 327ffd0..d39ef50 100644 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,2 +1,3 @@ pnpm lint pnpm build +pnpm test diff --git a/.prettierrc b/.prettierrc index 2053683..f2dc2c2 100644 --- a/.prettierrc +++ b/.prettierrc @@ -4,7 +4,7 @@ "importOrderSeparation": true, "importOrderSortSpecifiers": true, "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], + "importOrder": ["^$app/(.*)$", "^lib/(.*)$", "^~/(.*)$", "^[./]"], "useTabs": false, "singleQuote": true, "trailingComma": "all", diff --git a/e2e/demo.test.ts b/e2e/demo.test.ts new file mode 100644 index 0000000..0ab7ad2 --- /dev/null +++ b/e2e/demo.test.ts @@ -0,0 +1,6 @@ +import { expect, test } from '@playwright/test'; + +test('home page has expected span', async ({ page }) => { + await page.goto('/'); + await expect(page.locator('span')).toBeVisible(); +}); diff --git a/eslint.config.js b/eslint.config.js index d939609..b0700d1 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -9,13 +9,13 @@ import svelteConfig from './svelte.config.js'; export default [ { files: ['src/**/*.{ts}'] }, { languageOptions: { globals: globals.browser } }, - { ignores: ['commitlint.config.cjs'] }, pluginJs.configs.recommended, ...tseslint.configs.recommended, ...tseslint.configs.strict, eslintConfigPrettier, ...svelte.configs.recommended, + ...svelte.configs.prettier, { files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], diff --git a/index.html b/index.html deleted file mode 100644 index 1a1cff7..0000000 --- a/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Vite + Svelte + TS - - -
- - - diff --git a/messages/en.json b/messages/en.json new file mode 100644 index 0000000..97efb22 --- /dev/null +++ b/messages/en.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "hello_world": "Hello, {name} from en!" +} diff --git a/messages/fr.json b/messages/fr.json new file mode 100644 index 0000000..45f5fef --- /dev/null +++ b/messages/fr.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "hello_world": "Hello, {name} from fr!" +} diff --git a/package.json b/package.json index 2a1535f..8c127c6 100644 --- a/package.json +++ b/package.json @@ -38,17 +38,19 @@ "dev": "vite", "build": "vite build", "preview": "vite preview", - "check": "svelte-check --tsconfig tsconfig.app.json && tsc -p tsconfig.node.json", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check . && eslint --format=pretty src", "format": "prettier --write . && eslint --fix --format=pretty src", + "test": "pnpm run test:unit --run", + "test:unit": "vitest", + "test:e2e": "playwright test", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r . --include-path '.'", "release": "cliff-jumper", "prepare": "husky" }, - "dependencies": { - "monaco-editor": "0.55.1" - }, "devDependencies": { + "@alexanderniebuhr/prettier-plugin-unocss": "^0.0.4", "@commitlint/cli": "^19.8.0", "@commitlint/config-conventional": "^19.8.0", "@eslint/js": "^9.23.0", @@ -56,14 +58,20 @@ "@iconify-json/ic": "^1.2.4", "@iconify-json/material-icon-theme": "^1.2.27", "@iconify-json/solar": "^1.2.4", + "@inlang/paraglide-js": "^2.8.0", "@nanoforge-dev/actions": "^1.0.2", + "@playwright/test": "^1.57.0", + "@sveltejs/adapter-auto": "^7.0.0", + "@sveltejs/kit": "^2.49.4", "@sveltejs/vite-plugin-svelte": "^5.0.3", "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@tsconfig/svelte": "^5.0.4", + "@unocss/extractor-svelte": "^66.5.12", "@unocss/preset-icons": "^66.5.1", "@unocss/preset-web-fonts": "66.1.0-beta.6", "@unocss/preset-wind4": "^66.5.1", "@unocss/svelte-scoped": "66.1.0-beta.6", + "@vitest/browser-playwright": "^4.0.17", "eslint": "^9.23.0", "eslint-config-prettier": "^10.1.1", "eslint-formatter-pretty": "^7.0.0", @@ -75,16 +83,19 @@ "globals": "^16.0.0", "husky": "^9.1.7", "lint-staged": "^15.5.0", + "monaco-editor": "^0.55.1", + "playwright": "^1.57.0", "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "svelte": "^5.20.2", "svelte-check": "^4.1.4", - "svelte-routing": "^2.13.0", "svelte-sonner": "^1.0.5", "typescript": "~5.7.2", "typescript-eslint": "^8.27.0", "unocss": "66.1.0-beta.6", - "vite": "6.3.4" + "vite": "6.3.4", + "vitest": "^4.0.17", + "vitest-browser-svelte": "^2.0.1" }, "packageManager": "pnpm@10.6.2", "engines": { diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..e1a161a --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from '@playwright/test'; + +export default defineConfig({ + webServer: { command: 'npm run build && npm run preview', port: 4173 }, + testDir: 'e2e', +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 432470e..be0f504 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,11 +7,10 @@ settings: importers: .: - dependencies: - monaco-editor: - specifier: 0.55.1 - version: 0.55.1 devDependencies: + '@alexanderniebuhr/prettier-plugin-unocss': + specifier: ^0.0.4 + version: 0.0.4 '@commitlint/cli': specifier: ^19.8.0 version: 19.8.1(@types/node@25.0.5)(typescript@5.7.3) @@ -33,9 +32,21 @@ importers: '@iconify-json/solar': specifier: ^1.2.4 version: 1.2.5 + '@inlang/paraglide-js': + specifier: ^2.8.0 + version: 2.8.0 '@nanoforge-dev/actions': specifier: ^1.0.2 version: 1.0.2 + '@playwright/test': + specifier: ^1.57.0 + version: 1.57.0 + '@sveltejs/adapter-auto': + specifier: ^7.0.0 + version: 7.0.0(@sveltejs/kit@2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.46.1)(typescript@5.7.3)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2))) + '@sveltejs/kit': + specifier: ^2.49.4 + version: 2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.46.1)(typescript@5.7.3)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 version: 5.1.1(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)) @@ -45,6 +56,9 @@ importers: '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.6 + '@unocss/extractor-svelte': + specifier: ^66.5.12 + version: 66.5.12 '@unocss/preset-icons': specifier: ^66.5.1 version: 66.5.12 @@ -57,6 +71,9 @@ importers: '@unocss/svelte-scoped': specifier: 66.1.0-beta.6 version: 66.1.0-beta.6 + '@vitest/browser-playwright': + specifier: ^4.0.17 + version: 4.0.17(playwright@1.57.0)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2))(vitest@4.0.17) eslint: specifier: ^9.23.0 version: 9.39.2(jiti@2.6.1) @@ -90,6 +107,12 @@ importers: lint-staged: specifier: ^15.5.0 version: 15.5.2 + monaco-editor: + specifier: ^0.55.1 + version: 0.55.1 + playwright: + specifier: ^1.57.0 + version: 1.57.0 prettier: specifier: ^3.5.3 version: 3.7.4 @@ -102,9 +125,6 @@ importers: svelte-check: specifier: ^4.1.4 version: 4.3.5(picomatch@4.0.3)(svelte@5.46.1)(typescript@5.7.3) - svelte-routing: - specifier: ^2.13.0 - version: 2.13.0 svelte-sonner: specifier: ^1.0.5 version: 1.0.7(svelte@5.46.1) @@ -120,6 +140,12 @@ importers: vite: specifier: 6.3.4 version: 6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2) + vitest: + specifier: ^4.0.17 + version: 4.0.17(@types/node@25.0.5)(@vitest/browser-playwright@4.0.17)(jiti@2.6.1)(yaml@2.8.2) + vitest-browser-svelte: + specifier: ^2.0.1 + version: 2.0.1(svelte@5.46.1)(vitest@4.0.17) packages: @@ -141,6 +167,9 @@ packages: '@actions/io@2.0.0': resolution: {integrity: sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==} + '@alexanderniebuhr/prettier-plugin-unocss@0.0.4': + resolution: {integrity: sha512-uuuNFjp+WNGsP7V5C7F7uot4a8imccsRf9DYXuQquzXzxLEfzWfqYy/cZUNUk4+fOpLbXGlPUxrJvPAcPau0Ow==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -528,6 +557,17 @@ packages: '@iconify/utils@3.1.0': resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + '@inlang/paraglide-js@2.8.0': + resolution: {integrity: sha512-ataaSmV53zz+tIr+KJLdC3tTB1uikS79hvtLlZk2ikbGRB/kcyQeg+lsqzjsXCAvy0/O28ucCRjxbHsTzOVQVg==} + hasBin: true + + '@inlang/recommend-sherlock@0.2.1': + resolution: {integrity: sha512-ckv8HvHy/iTqaVAEKrr+gnl+p3XFNwe5D2+6w6wJk2ORV2XkcRkKOJ/XsTUJbPSiyi4PI+p+T3bqbmNx/rDUlg==} + + '@inlang/sdk@2.6.0': + resolution: {integrity: sha512-f4iVHVXyzOi0CXlXSAT7XPrReLBaVXy/po/qrOPf2OHh+hUwyD1bDx2EYC5KgrZ16z3ylWfqWVuc7o4l7/tuUQ==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -544,6 +584,13 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@lix-js/sdk@0.4.7': + resolution: {integrity: sha512-pRbW+joG12L0ULfMiWYosIW0plmW4AsUdiPCp+Z8rAsElJ+wJ6in58zhD3UwUcd4BNcpldEGjg6PdA7e0RgsDQ==} + engines: {node: '>=18'} + + '@lix-js/server-protocol-schema@0.1.1': + resolution: {integrity: sha512-jBeALB6prAbtr5q4vTuxnRZZv1M2rKe8iNqRQhFJ4Tv7150unEa0vKyz0hs8Gl3fUGsWaNJBh3J8++fpbrpRBQ==} + '@nanoforge-dev/actions@1.0.2': resolution: {integrity: sha512-LLlqow0omtoEETYejCLEAiPoLdxTYhonezUxvZvORbdb7or+DUjfIYFgZAxfcX9TNt+oE6wXPrAcOlOauvWkLg==} engines: {node: 24.11.0} @@ -636,6 +683,11 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@playwright/test@1.57.0': + resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==} + engines: {node: '>=18'} + hasBin: true + '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -799,15 +851,46 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@sinclair/typebox@0.31.28': + resolution: {integrity: sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==} + '@sindresorhus/merge-streams@4.0.0': resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} + '@sqlite.org/sqlite-wasm@3.48.0-build4': + resolution: {integrity: sha512-hI6twvUkzOmyGZhQMza1gpfqErZxXRw6JEsiVjUbo7tFanVD+8Oil0Ih3l2nGzHdxPI41zFmfUQG7GHqhciKZQ==} + hasBin: true + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@sveltejs/acorn-typescript@1.0.8': resolution: {integrity: sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==} peerDependencies: acorn: ^8.9.0 + '@sveltejs/adapter-auto@7.0.0': + resolution: {integrity: sha512-ImDWaErTOCkRS4Gt+5gZuymKFBobnhChXUZ9lhUZLahUgvA4OOvRzi3sahzYgbxGj5nkA6OV0GAW378+dl/gyw==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + + '@sveltejs/kit@2.49.4': + resolution: {integrity: sha512-JFtOqDoU0DI/+QSG8qnq5bKcehVb3tCHhOG4amsSYth5/KgO4EkJvi42xSAiyKmXAAULW1/Zdb6lkgGEgSxdZg==} + engines: {node: '>=18.13'} + 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 + svelte: ^4.0.0 || ^5.0.0-next.0 + typescript: ^5.3.3 + vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + typescript: + optional: true + '@sveltejs/vite-plugin-svelte-inspector@4.0.1': resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} @@ -867,9 +950,18 @@ packages: '@tsconfig/svelte@5.0.6': resolution: {integrity: sha512-yGxYL0I9eETH1/DR9qVJey4DAsCdeau4a9wYPKuXfEhm8lFO8wg+LLYJjIpAm6Fw7HSlhepPhYPDop75485yWQ==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/conventional-commits-parser@5.0.2': resolution: {integrity: sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==} + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} @@ -967,6 +1059,9 @@ packages: resolution: {integrity: sha512-jLAxHSgMCEhIjCwOwfENtFM3gevU4QDQeaG4VVEYGFJ/oj27JJrl/j6HlUBdhFiR0Q7yf6QFCXlKTP/+put0/Q==} engines: {node: '>=14'} + '@unocss/core@0.25.1': + resolution: {integrity: sha512-YYX40KA2rhsm6aTKTGpE0bi9E7RoAcuqMo/L+f6DmBSwtTXdflckoa903rxgOa6HOLH9fXgOJP9jHt3O/5ysPA==} + '@unocss/core@66.1.0-beta.6': resolution: {integrity: sha512-TQLxpBZPl6m4HhS6/FMr0Vbn22tGWgbGPyfJyjTSYY/LTug42aIUPnTQnqFSRwGiUnBfp3+oAhG/t/lZ6U74tw==} @@ -979,6 +1074,9 @@ packages: '@unocss/extractor-arbitrary-variants@66.5.12': resolution: {integrity: sha512-UGzHhLaaSu/YT0rmXtdoE1ttLvwWsI/RVTwNNy3QnL/y4Hvmo7T1MtG5Ri5btfqfDWPzrQLQiTvI8loGCD8lFQ==} + '@unocss/extractor-svelte@66.5.12': + resolution: {integrity: sha512-BXCTtmdr8Ydj+NKwk5pHOyq/duqSKFXbp39uAf7NuM9GykY6vAZ3wnzt92yyOzo2mOPeNTI2VB2Opz2hT672QQ==} + '@unocss/inspector@66.1.0-beta.6': resolution: {integrity: sha512-YjK017dGMtN8Q067d9n9aCKFXGB8jD13PomKmKOWs3YfmPQE1qQjqQUXH4Zf/jhGMvaB72BHevqctLRHguHfww==} @@ -997,6 +1095,9 @@ packages: '@unocss/preset-icons@66.5.12': resolution: {integrity: sha512-3bgkN8tTrcOSGuBcJSDrtDfBt7WU3chFjfw7zo4ign+Z0L6qANB2O62AOdOMJOxKjlppJ6a8AceHthhPZP2PDA==} + '@unocss/preset-mini@0.25.1': + resolution: {integrity: sha512-NBfa2/t0TIAT//L8OVskDDQJ3OREjLwDzWMBNO86rvM0VPCIBvCmkKuFR3zxQcWK+aegISeScJA9Zcdk3qJjHA==} + '@unocss/preset-mini@66.1.0-beta.6': resolution: {integrity: sha512-MoF32nio5jzKi40VOeOU4k2uZvYUm2GKIxTRZ8C8mb7bFFphoMQD0/Pfr9oWpNC7jl7msuKt8i4xUknK5GAVDQ==} @@ -1006,6 +1107,9 @@ packages: '@unocss/preset-typography@66.1.0-beta.6': resolution: {integrity: sha512-M6o4oXUMXo6RmclqsnUCXYJCW9cBJYYZcl4M2ofejNkCaqplAwWvc7X7TPvUjcURfwHf+CiXx42DXB0k+FCmlA==} + '@unocss/preset-uno@0.25.1': + resolution: {integrity: sha512-e5lvCF5GD52nD/7l/k4TJedw5AgsVGTs/6rKxE9DP0G5oGszKjx+oHLzoYvCP2aQAcallnZ/CxXTbOvqCQCVxQ==} + '@unocss/preset-uno@66.1.0-beta.6': resolution: {integrity: sha512-zFvQ8sxSGcHoZBkMNngQIdQTFJgoNx5UosydUynLMzs86NFkwd/BAcS2cZBy+buLiuqV1oM2uSyxjLeAqury8g==} @@ -1021,6 +1125,9 @@ packages: '@unocss/preset-wind4@66.5.12': resolution: {integrity: sha512-JVddnLJ6NOk7hOXA0Y8SYbQEu+JpURbE9o/IHVCkRClVRkE81b9KgJf7WQa/8KIr1O20wRRFdt9QRH4m3pZJ/A==} + '@unocss/preset-wind@0.25.1': + resolution: {integrity: sha512-y5gkCCNiGsonqI8OOmtMVXgEMjPDtr+ihxnS3oDptYR4CcBE1cREhLgZocChHHQNEMN9Qx2GsoMN9l6RsoExiA==} + '@unocss/preset-wind@66.1.0-beta.6': resolution: {integrity: sha512-1H1YH5OQTGG3mFo54BZELkKWO4iE0UgH4W2+RdnWHEKYIpXImk8JtAkiO5iK0gJafoSQjx592fZ70krQKmNamQ==} @@ -1055,6 +1162,46 @@ packages: peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + '@vitest/browser-playwright@4.0.17': + resolution: {integrity: sha512-CE9nlzslHX6Qz//MVrjpulTC9IgtXTbJ+q7Rx1HD+IeSOWv4NHIRNHPA6dB4x01d9paEqt+TvoqZfmgq40DxEQ==} + peerDependencies: + playwright: '*' + vitest: 4.0.17 + + '@vitest/browser@4.0.17': + resolution: {integrity: sha512-cgf2JZk2fv5or3efmOrRJe1V9Md89BPgz4ntzbf84yAb+z2hW6niaGFinl9aFzPZ1q3TGfWZQWZ9gXTFThs2Qw==} + peerDependencies: + vitest: 4.0.17 + + '@vitest/expect@4.0.17': + resolution: {integrity: sha512-mEoqP3RqhKlbmUmntNDDCJeTDavDR+fVYkSOw8qRwJFaW/0/5zA9zFeTrHqNtcmwh6j26yMmwx2PqUDPzt5ZAQ==} + + '@vitest/mocker@4.0.17': + resolution: {integrity: sha512-+ZtQhLA3lDh1tI2wxe3yMsGzbp7uuJSWBM1iTIKCbppWTSBN09PUC+L+fyNlQApQoR+Ps8twt2pbSSXg2fQVEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.0.17': + resolution: {integrity: sha512-Ah3VAYmjcEdHg6+MwFE17qyLqBHZ+ni2ScKCiW2XrlSBV4H3Z7vYfPfz7CWQ33gyu76oc0Ai36+kgLU3rfF4nw==} + + '@vitest/runner@4.0.17': + resolution: {integrity: sha512-JmuQyf8aMWoo/LmNFppdpkfRVHJcsgzkbCA+/Bk7VfNH7RE6Ut2qxegeyx2j3ojtJtKIbIGy3h+KxGfYfk28YQ==} + + '@vitest/snapshot@4.0.17': + resolution: {integrity: sha512-npPelD7oyL+YQM2gbIYvlavlMVWUfNNGZPcu0aEUQXt7FXTuqhmgiYupPnAanhKvyP6Srs2pIbWo30K0RbDtRQ==} + + '@vitest/spy@4.0.17': + resolution: {integrity: sha512-I1bQo8QaP6tZlTomQNWKJE6ym4SHf3oLS7ceNjozxxgzavRAgZDc06T7kD8gb9bXKEgcLNt00Z+kZO6KaJ62Ew==} + + '@vitest/utils@4.0.17': + resolution: {integrity: sha512-RG6iy+IzQpa9SB8HAFHJ9Y+pTzI+h8553MrciN9eC6TFBErqrQaTas4vG+MVj8S4uKk8uTT2p0vgZPnTdxd96w==} + '@vue/compiler-core@3.5.26': resolution: {integrity: sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==} @@ -1144,6 +1291,13 @@ packages: array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -1182,6 +1336,10 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1224,6 +1382,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + commander@13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} @@ -1232,6 +1394,10 @@ packages: resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} + comment-json@4.5.1: + resolution: {integrity: sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==} + engines: {node: '>= 6'} + compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -1244,6 +1410,10 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + consola@3.4.0: + resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} + engines: {node: ^14.18.0 || >=16.10.0} + consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -1279,6 +1449,13 @@ packages: engines: {node: '>=18'} hasBin: true + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cosmiconfig-typescript-loader@6.2.0: resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} engines: {node: '>=v18'} @@ -1328,6 +1505,14 @@ packages: supports-color: optional: true + dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1378,6 +1563,9 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} @@ -1470,6 +1658,11 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} @@ -1488,6 +1681,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -1503,6 +1699,10 @@ packages: resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} engines: {node: ^18.19.0 || >=20.5.0} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + exsolve@1.0.8: resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} @@ -1575,6 +1775,11 @@ packages: flowbite@3.1.2: resolution: {integrity: sha512-MkwSgbbybCYgMC+go6Da5idEKUFfMqc/AmSjm/2ZbdmvoKf5frLPq/eIhXc9P+rC8t9boZtUXzHDgt5whZ6A/Q==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1679,6 +1884,10 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + human-id@4.1.3: + resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} + hasBin: true + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -1700,6 +1909,10 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -1794,6 +2007,9 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + js-sha256@0.11.1: + resolution: {integrity: sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1821,6 +2037,11 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} @@ -1838,6 +2059,10 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + kysely@0.27.6: + resolution: {integrity: sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==} + engines: {node: '>=14.0.0'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2003,6 +2228,9 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} @@ -2093,16 +2321,34 @@ packages: engines: {node: '>=0.10'} hasBin: true + pixelmatch@7.1.0: + resolution: {integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==} + hasBin: true + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + playwright-core@1.57.0: + resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.57.0: + resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} + engines: {node: '>=18'} + hasBin: true + plur@5.1.0: resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} + postcss-load-config@3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -2149,6 +2395,11 @@ packages: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier@2.5.1: + resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} + engines: {node: '>=10.13.0'} + hasBin: true + prettier@3.7.4: resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} @@ -2223,6 +2474,9 @@ packages: engines: {node: '>=10'} hasBin: true + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2231,6 +2485,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -2259,6 +2516,17 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + sqlite-wasm-kysely@0.3.0: + resolution: {integrity: sha512-TzjBNv7KwRw6E3pdKdlRyZiTmUIE0UttT/Sl56MVwVARl/u5gp978KepazCJZewFUnlWHz9i3NQd4kOtP/Afdg==} + peerDependencies: + kysely: '*' + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -2328,9 +2596,6 @@ packages: svelte: optional: true - svelte-routing@2.13.0: - resolution: {integrity: sha512-/NTxqTwLc7Dq306hARJrH2HLXOBtKd7hu8nxgoFDlK0AC4SOKnzisiX/9m8Uksei1QAWtlAEdF91YphNM8iDMg==} - svelte-sonner@1.0.7: resolution: {integrity: sha512-1EUFYmd7q/xfs2qCHwJzGPh9n5VJ3X6QjBN10fof2vxgy8fYE7kVfZ7uGnd7i6fQaWIr5KvXcwYXE/cmTEjk5A==} peerDependencies: @@ -2367,6 +2632,9 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -2375,6 +2643,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyrainbow@3.0.3: + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} + engines: {node: '>=14.0.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2455,12 +2727,27 @@ packages: resolution: {integrity: sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==} engines: {node: '>=18.12.0'} + unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} + engines: {node: '>=18.12.0'} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + urlpattern-polyfill@10.1.0: + resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + uuid@13.0.0: + resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} + hasBin: true + vite@6.3.4: resolution: {integrity: sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -2509,6 +2796,46 @@ packages: vite: optional: true + vitest-browser-svelte@2.0.1: + resolution: {integrity: sha512-z7GFio7vxaOolY+xwPUMEKuwL4KcPzB8+bepA9F0Phqag/TJ4j7IAGSwm4Y/FBh7KznsP+7aEIllMay0qDpFXw==} + peerDependencies: + svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 + vitest: ^4.0.0 + + vitest@4.0.17: + resolution: {integrity: sha512-FQMeF0DJdWY0iOnbv466n/0BudNdKj1l5jYgl5JVTwjSsZSlqyXFt/9+1sEyhR6CLowbZpV7O1sCHrzBhucKKg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.17 + '@vitest/browser-preview': 4.0.17 + '@vitest/browser-webdriverio': 4.0.17 + '@vitest/ui': 4.0.17 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vue-flow-layout@0.1.1: resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==} peerDependencies: @@ -2522,11 +2849,19 @@ packages: typescript: optional: true + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -2542,6 +2877,18 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -2611,6 +2958,12 @@ snapshots: '@actions/io@2.0.0': {} + '@alexanderniebuhr/prettier-plugin-unocss@0.0.4': + dependencies: + '@unocss/preset-uno': 0.25.1 + import-fresh: 3.3.0 + prettier: 2.5.1 + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -2996,6 +3349,32 @@ snapshots: '@iconify/types': 2.0.0 mlly: 1.8.0 + '@inlang/paraglide-js@2.8.0': + dependencies: + '@inlang/recommend-sherlock': 0.2.1 + '@inlang/sdk': 2.6.0 + commander: 11.1.0 + consola: 3.4.0 + json5: 2.2.3 + unplugin: 2.3.11 + urlpattern-polyfill: 10.1.0 + transitivePeerDependencies: + - babel-plugin-macros + + '@inlang/recommend-sherlock@0.2.1': + dependencies: + comment-json: 4.5.1 + + '@inlang/sdk@2.6.0': + dependencies: + '@lix-js/sdk': 0.4.7 + '@sinclair/typebox': 0.31.28 + kysely: 0.27.6 + sqlite-wasm-kysely: 0.3.0(kysely@0.27.6) + uuid: 13.0.0 + transitivePeerDependencies: + - babel-plugin-macros + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3015,6 +3394,20 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@lix-js/sdk@0.4.7': + dependencies: + '@lix-js/server-protocol-schema': 0.1.1 + dedent: 1.5.1 + human-id: 4.1.3 + js-sha256: 0.11.1 + kysely: 0.27.6 + sqlite-wasm-kysely: 0.3.0(kysely@0.27.6) + uuid: 10.0.0 + transitivePeerDependencies: + - babel-plugin-macros + + '@lix-js/server-protocol-schema@0.1.1': {} + '@nanoforge-dev/actions@1.0.2': dependencies: '@actions/core': 2.0.2 @@ -3129,6 +3522,10 @@ snapshots: '@pkgr/core@0.2.9': {} + '@playwright/test@1.57.0': + dependencies: + playwright: 1.57.0 + '@polka/url@1.0.0-next.29': {} '@popperjs/core@2.11.8': {} @@ -3236,12 +3633,43 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} + '@sinclair/typebox@0.31.28': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@sqlite.org/sqlite-wasm@3.48.0-build4': {} + + '@standard-schema/spec@1.1.0': {} + '@sveltejs/acorn-typescript@1.0.8(acorn@8.15.0)': dependencies: acorn: 8.15.0 + '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.46.1)(typescript@5.7.3)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)))': + dependencies: + '@sveltejs/kit': 2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.46.1)(typescript@5.7.3)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)) + + '@sveltejs/kit@2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.46.1)(typescript@5.7.3)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2))': + dependencies: + '@standard-schema/spec': 1.1.0 + '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)) + '@types/cookie': 0.6.0 + acorn: 8.15.0 + cookie: 0.6.0 + devalue: 5.6.1 + esm-env: 1.2.2 + kleur: 4.1.5 + magic-string: 0.30.21 + mrmime: 2.0.1 + sade: 1.8.1 + set-cookie-parser: 2.7.2 + sirv: 3.0.2 + svelte: 5.46.1 + vite: 6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2) + optionalDependencies: + typescript: 5.7.3 + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)))(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2))': dependencies: '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.46.1)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)) @@ -3301,10 +3729,19 @@ snapshots: '@tsconfig/svelte@5.0.6': {} + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + '@types/conventional-commits-parser@5.0.2': dependencies: '@types/node': 25.0.5 + '@types/cookie@0.6.0': {} + + '@types/deep-eql@4.0.2': {} + '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.8 @@ -3447,6 +3884,8 @@ snapshots: '@unocss/core': 66.1.0-beta.6 unconfig: 7.4.2 + '@unocss/core@0.25.1': {} + '@unocss/core@66.1.0-beta.6': {} '@unocss/core@66.5.12': {} @@ -3459,6 +3898,8 @@ snapshots: dependencies: '@unocss/core': 66.5.12 + '@unocss/extractor-svelte@66.5.12': {} + '@unocss/inspector@66.1.0-beta.6(vue@3.5.26(typescript@5.7.3))': dependencies: '@unocss/core': 66.1.0-beta.6 @@ -3497,6 +3938,10 @@ snapshots: '@unocss/core': 66.5.12 ofetch: 1.5.1 + '@unocss/preset-mini@0.25.1': + dependencies: + '@unocss/core': 0.25.1 + '@unocss/preset-mini@66.1.0-beta.6': dependencies: '@unocss/core': 66.1.0-beta.6 @@ -3513,6 +3958,12 @@ snapshots: '@unocss/preset-mini': 66.1.0-beta.6 '@unocss/rule-utils': 66.1.0-beta.6 + '@unocss/preset-uno@0.25.1': + dependencies: + '@unocss/core': 0.25.1 + '@unocss/preset-mini': 0.25.1 + '@unocss/preset-wind': 0.25.1 + '@unocss/preset-uno@66.1.0-beta.6': dependencies: '@unocss/core': 66.1.0-beta.6 @@ -3541,6 +3992,11 @@ snapshots: '@unocss/extractor-arbitrary-variants': 66.5.12 '@unocss/rule-utils': 66.5.12 + '@unocss/preset-wind@0.25.1': + dependencies: + '@unocss/core': 0.25.1 + '@unocss/preset-mini': 0.25.1 + '@unocss/preset-wind@66.1.0-beta.6': dependencies: '@unocss/core': 66.1.0-beta.6 @@ -3598,6 +4054,75 @@ snapshots: transitivePeerDependencies: - vue + '@vitest/browser-playwright@4.0.17(playwright@1.57.0)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2))(vitest@4.0.17)': + dependencies: + '@vitest/browser': 4.0.17(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2))(vitest@4.0.17) + '@vitest/mocker': 4.0.17(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)) + playwright: 1.57.0 + tinyrainbow: 3.0.3 + vitest: 4.0.17(@types/node@25.0.5)(@vitest/browser-playwright@4.0.17)(jiti@2.6.1)(yaml@2.8.2) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/browser@4.0.17(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2))(vitest@4.0.17)': + dependencies: + '@vitest/mocker': 4.0.17(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)) + '@vitest/utils': 4.0.17 + magic-string: 0.30.21 + pixelmatch: 7.1.0 + pngjs: 7.0.0 + sirv: 3.0.2 + tinyrainbow: 3.0.3 + vitest: 4.0.17(@types/node@25.0.5)(@vitest/browser-playwright@4.0.17)(jiti@2.6.1)(yaml@2.8.2) + ws: 8.19.0 + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/expect@4.0.17': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.0.17 + '@vitest/utils': 4.0.17 + chai: 6.2.2 + tinyrainbow: 3.0.3 + + '@vitest/mocker@4.0.17(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2))': + dependencies: + '@vitest/spy': 4.0.17 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2) + + '@vitest/pretty-format@4.0.17': + dependencies: + tinyrainbow: 3.0.3 + + '@vitest/runner@4.0.17': + dependencies: + '@vitest/utils': 4.0.17 + pathe: 2.0.3 + + '@vitest/snapshot@4.0.17': + dependencies: + '@vitest/pretty-format': 4.0.17 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.0.17': {} + + '@vitest/utils@4.0.17': + dependencies: + '@vitest/pretty-format': 4.0.17 + tinyrainbow: 3.0.3 + '@vue/compiler-core@3.5.26': dependencies: '@babel/parser': 7.28.5 @@ -3713,6 +4238,10 @@ snapshots: array-ify@1.0.0: {} + array-timsort@1.0.3: {} + + assertion-error@2.0.1: {} + axobject-query@4.1.0: {} balanced-match@1.0.2: {} @@ -3742,6 +4271,8 @@ snapshots: callsites@3.1.0: {} + chai@6.2.2: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -3790,10 +4321,18 @@ snapshots: colorette@2.0.20: {} + commander@11.1.0: {} + commander@13.1.0: {} commander@14.0.2: {} + comment-json@4.5.1: + dependencies: + array-timsort: 1.0.3 + core-util-is: 1.0.3 + esprima: 4.0.1 + compare-func@2.0.0: dependencies: array-ify: 1.0.0 @@ -3805,6 +4344,8 @@ snapshots: confbox@0.2.2: {} + consola@3.4.0: {} + consola@3.4.2: {} conventional-changelog-angular@7.0.0: @@ -3838,6 +4379,10 @@ snapshots: conventional-commits-parser: 6.2.1 meow: 13.2.0 + cookie@0.6.0: {} + + core-util-is@1.0.3: {} + cosmiconfig-typescript-loader@6.2.0(@types/node@25.0.5)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): dependencies: '@types/node': 25.0.5 @@ -3877,6 +4422,8 @@ snapshots: dependencies: ms: 2.1.3 + dedent@1.5.1: {} + deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -3913,6 +4460,8 @@ snapshots: dependencies: is-arrayish: 0.2.1 + es-module-lexer@1.7.0: {} + esbuild@0.25.12: optionalDependencies: '@esbuild/aix-ppc64': 0.25.12 @@ -4067,6 +4616,8 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 + esprima@4.0.1: {} + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -4083,6 +4634,10 @@ snapshots: estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + esutils@2.0.3: {} eventemitter3@5.0.1: {} @@ -4114,6 +4669,8 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.2 + expect-type@1.3.0: {} + exsolve@1.0.8: {} fast-content-type-parse@2.0.1: {} @@ -4202,6 +4759,9 @@ snapshots: transitivePeerDependencies: - rollup + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -4283,6 +4843,8 @@ snapshots: dependencies: function-bind: 1.1.2 + human-id@4.1.3: {} + human-signals@5.0.0: {} human-signals@8.0.1: {} @@ -4293,6 +4855,11 @@ snapshots: ignore@7.0.5: {} + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -4358,6 +4925,8 @@ snapshots: jiti@2.6.1: {} + js-sha256@0.11.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.1: @@ -4376,6 +4945,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json5@2.2.3: {} + jsonparse@1.3.1: {} keyv@4.5.4: @@ -4388,6 +4959,8 @@ snapshots: kolorist@1.8.0: {} + kysely@0.27.6: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -4542,6 +5115,8 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 + obug@2.1.1: {} + ofetch@1.5.1: dependencies: destr: 2.0.5 @@ -4622,6 +5197,10 @@ snapshots: pidtree@0.6.0: {} + pixelmatch@7.1.0: + dependencies: + pngjs: 7.0.0 + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -4634,10 +5213,20 @@ snapshots: exsolve: 1.0.8 pathe: 2.0.3 + playwright-core@1.57.0: {} + + playwright@1.57.0: + dependencies: + playwright-core: 1.57.0 + optionalDependencies: + fsevents: 2.3.2 + plur@5.1.0: dependencies: irregular-plurals: 3.5.0 + pngjs@7.0.0: {} + postcss-load-config@3.1.4(postcss@8.5.6): dependencies: lilconfig: 2.1.0 @@ -4675,6 +5264,8 @@ snapshots: prettier: 3.7.4 svelte: 5.46.1 + prettier@2.5.1: {} + prettier@3.7.4: {} pretty-ms@9.3.0: @@ -4756,12 +5347,16 @@ snapshots: semver@7.7.3: {} + set-cookie-parser@2.7.2: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@3.0.0: {} + siginfo@2.0.0: {} + signal-exit@4.1.0: {} sirv@3.0.2: @@ -4786,6 +5381,15 @@ snapshots: split2@4.2.0: {} + sqlite-wasm-kysely@0.3.0(kysely@0.27.6): + dependencies: + '@sqlite.org/sqlite-wasm': 3.48.0-build4 + kysely: 0.27.6 + + stackback@0.0.2: {} + + std-env@3.10.0: {} + string-argv@0.3.2: {} string-width@4.2.3: @@ -4855,8 +5459,6 @@ snapshots: optionalDependencies: svelte: 5.46.1 - svelte-routing@2.13.0: {} - svelte-sonner@1.0.7(svelte@5.46.1): dependencies: runed: 0.28.0(svelte@5.46.1) @@ -4898,6 +5500,8 @@ snapshots: through@2.3.8: {} + tinybench@2.9.0: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -4905,6 +5509,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinyrainbow@3.0.3: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -4996,12 +5602,25 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.3 + unplugin@2.3.11: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.15.0 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + uri-js@4.4.1: dependencies: punycode: 2.3.1 + urlpattern-polyfill@10.1.0: {} + util-deprecate@1.0.2: {} + uuid@10.0.0: {} + + uuid@13.0.0: {} + vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2): dependencies: esbuild: 0.25.12 @@ -5020,6 +5639,49 @@ snapshots: optionalDependencies: vite: 6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2) + vitest-browser-svelte@2.0.1(svelte@5.46.1)(vitest@4.0.17): + dependencies: + svelte: 5.46.1 + vitest: 4.0.17(@types/node@25.0.5)(@vitest/browser-playwright@4.0.17)(jiti@2.6.1)(yaml@2.8.2) + + vitest@4.0.17(@types/node@25.0.5)(@vitest/browser-playwright@4.0.17)(jiti@2.6.1)(yaml@2.8.2): + dependencies: + '@vitest/expect': 4.0.17 + '@vitest/mocker': 4.0.17(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.17 + '@vitest/runner': 4.0.17 + '@vitest/snapshot': 4.0.17 + '@vitest/spy': 4.0.17 + '@vitest/utils': 4.0.17 + es-module-lexer: 1.7.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.0.5 + '@vitest/browser-playwright': 4.0.17(playwright@1.57.0)(vite@6.3.4(@types/node@25.0.5)(jiti@2.6.1)(yaml@2.8.2))(vitest@4.0.17) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + vue-flow-layout@0.1.1(vue@3.5.26(typescript@5.7.3)): dependencies: vue: 3.5.26(typescript@5.7.3) @@ -5034,10 +5696,17 @@ snapshots: optionalDependencies: typescript: 5.7.3 + webpack-virtual-modules@0.6.2: {} + which@2.0.2: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -5054,6 +5723,8 @@ snapshots: wrappy@1.0.2: {} + ws@8.19.0: {} + y18n@5.0.8: {} yaml@1.10.2: {} diff --git a/project.inlang/settings.json b/project.inlang/settings.json new file mode 100644 index 0000000..f135c20 --- /dev/null +++ b/project.inlang/settings.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://inlang.com/schema/project-settings", + "modules": [ + "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2/dist/index.js" + ], + "plugin.inlang.messageFormat": { + "pathPattern": "./messages/{locale}.json" + }, + "baseLocale": "en", + "locales": ["en", "fr"] +} diff --git a/src/App.svelte b/src/App.svelte deleted file mode 100644 index c6cf38a..0000000 --- a/src/App.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - -
- - {#each Object.keys(routes) as route (route)} - - - - {/each} - -
diff --git a/src/app.css b/src/app.css index 6779202..7f2621f 100644 --- a/src/app.css +++ b/src/app.css @@ -19,4 +19,6 @@ text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + + @apply color-neutral-200 bg-neutral-900; } diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..520c421 --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://svelte.dev/docs/kit/types#app.d.ts +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..6bf0857 --- /dev/null +++ b/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/components/Menu/MenuButton.svelte b/src/components/Menu/MenuButton.svelte deleted file mode 100644 index 2e259c4..0000000 --- a/src/components/Menu/MenuButton.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - - - - {@render children?.()} - diff --git a/src/components/Menu/MenuItem.svelte b/src/components/Menu/MenuItem.svelte deleted file mode 100644 index 4358039..0000000 --- a/src/components/Menu/MenuItem.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - - - {@render children?.()} - diff --git a/src/components/Widget/ScreenView/ScreenViewWidget.svelte b/src/components/Widget/ScreenView/ScreenViewWidget.svelte deleted file mode 100644 index 7055e05..0000000 --- a/src/components/Widget/ScreenView/ScreenViewWidget.svelte +++ /dev/null @@ -1,3 +0,0 @@ -
-
-
diff --git a/src/demo.spec.ts b/src/demo.spec.ts new file mode 100644 index 0000000..e2efa47 --- /dev/null +++ b/src/demo.spec.ts @@ -0,0 +1,5 @@ +import { expect, it } from 'vitest'; + +it('expect 1 + 2 = 3', async () => { + expect(1 + 2).equal(3); +}); diff --git a/src/hooks.server.ts b/src/hooks.server.ts new file mode 100644 index 0000000..917ce46 --- /dev/null +++ b/src/hooks.server.ts @@ -0,0 +1,13 @@ +import { paraglideMiddleware } from '$lib/paraglide/server'; +import type { Handle } from '@sveltejs/kit'; + +const handleParaglide: Handle = ({ event, resolve }) => + paraglideMiddleware(event.request, ({ request, locale }) => { + event.request = request; + + return resolve(event, { + transformPageChunk: ({ html }) => html.replace('%paraglide.lang%', locale), + }); + }); + +export const handle: Handle = handleParaglide; diff --git a/src/hooks.ts b/src/hooks.ts new file mode 100644 index 0000000..e75600b --- /dev/null +++ b/src/hooks.ts @@ -0,0 +1,3 @@ +import { deLocalizeUrl } from '$lib/paraglide/runtime'; + +export const reroute = (request) => deLocalizeUrl(request.url).pathname; diff --git a/src/assets/logo.png b/src/lib/assets/logo.png similarity index 100% rename from src/assets/logo.png rename to src/lib/assets/logo.png diff --git a/src/assets/svelte.svg b/src/lib/assets/svelte.svg similarity index 100% rename from src/assets/svelte.svg rename to src/lib/assets/svelte.svg diff --git a/src/components/Entity/Components/types.ts b/src/lib/components/Entity/Components/types.ts similarity index 100% rename from src/components/Entity/Components/types.ts rename to src/lib/components/Entity/Components/types.ts diff --git a/src/components/Entity/types.ts b/src/lib/components/Entity/types.ts similarity index 100% rename from src/components/Entity/types.ts rename to src/lib/components/Entity/types.ts diff --git a/src/components/Menu/MenuBar.svelte b/src/lib/components/Menu/MenuBar.svelte similarity index 96% rename from src/components/Menu/MenuBar.svelte rename to src/lib/components/Menu/MenuBar.svelte index cd21820..0800a5d 100644 --- a/src/components/Menu/MenuBar.svelte +++ b/src/lib/components/Menu/MenuBar.svelte @@ -3,7 +3,7 @@ import MenuItem from './MenuItem.svelte'; -
+
Save Export diff --git a/src/lib/components/Menu/MenuButton.svelte b/src/lib/components/Menu/MenuButton.svelte new file mode 100644 index 0000000..31ddc26 --- /dev/null +++ b/src/lib/components/Menu/MenuButton.svelte @@ -0,0 +1,32 @@ + + +
+ + + {@render children?.()} + +
diff --git a/src/lib/components/Menu/MenuItem.svelte b/src/lib/components/Menu/MenuItem.svelte new file mode 100644 index 0000000..940db92 --- /dev/null +++ b/src/lib/components/Menu/MenuItem.svelte @@ -0,0 +1,19 @@ + + +
+ + + {@render children?.()} + +
diff --git a/src/components/Panel/Layout.svelte b/src/lib/components/Panel/Layout.svelte similarity index 100% rename from src/components/Panel/Layout.svelte rename to src/lib/components/Panel/Layout.svelte diff --git a/src/components/Panel/Panel.svelte b/src/lib/components/Panel/Panel.svelte similarity index 100% rename from src/components/Panel/Panel.svelte rename to src/lib/components/Panel/Panel.svelte diff --git a/src/components/Panel/Widget.svelte b/src/lib/components/Panel/Widget.svelte similarity index 79% rename from src/components/Panel/Widget.svelte rename to src/lib/components/Panel/Widget.svelte index ee94cea..46426c0 100644 --- a/src/components/Panel/Widget.svelte +++ b/src/lib/components/Panel/Widget.svelte @@ -14,7 +14,7 @@
diff --git a/src/components/Panel/WidgetResizeBar.svelte b/src/lib/components/Panel/WidgetResizeBar.svelte similarity index 93% rename from src/components/Panel/WidgetResizeBar.svelte rename to src/lib/components/Panel/WidgetResizeBar.svelte index 4cf47f3..520b159 100644 --- a/src/components/Panel/WidgetResizeBar.svelte +++ b/src/lib/components/Panel/WidgetResizeBar.svelte @@ -8,6 +8,7 @@ let { direction, onResize, onDragStart, onDragEnd }: Props = $props(); + // svelte-ignore state_referenced_locally const isHorizontal = direction === 'row'; let isDragging = $state(false); let startPos = $state(0); @@ -90,7 +91,7 @@ diff --git a/src/components/Widget/ContentBrowser/ContentBrowserItemCard.svelte b/src/lib/components/Widget/ContentBrowser/ContentBrowserItemCard.svelte similarity index 82% rename from src/components/Widget/ContentBrowser/ContentBrowserItemCard.svelte rename to src/lib/components/Widget/ContentBrowser/ContentBrowserItemCard.svelte index efcb437..b3e8a6a 100644 --- a/src/components/Widget/ContentBrowser/ContentBrowserItemCard.svelte +++ b/src/lib/components/Widget/ContentBrowser/ContentBrowserItemCard.svelte @@ -9,7 +9,7 @@ {#if index + 1 < selected.length} - + {/if} {/each}
-
+
{#if selectedContent && selectedContent.children} {#each selectedContent.children as item (item)} -
+
-
+
{#each entities as entity (entity.id)} (selected = [id])} bind:selected /> {/each} diff --git a/src/components/Widget/EntitiesTree/EntityItem.svelte b/src/lib/components/Widget/EntitiesTree/EntityItem.svelte similarity index 100% rename from src/components/Widget/EntitiesTree/EntityItem.svelte rename to src/lib/components/Widget/EntitiesTree/EntityItem.svelte diff --git a/src/components/Widget/OutputLog/OutputLogWidget.svelte b/src/lib/components/Widget/OutputLog/OutputLogWidget.svelte similarity index 73% rename from src/components/Widget/OutputLog/OutputLogWidget.svelte rename to src/lib/components/Widget/OutputLog/OutputLogWidget.svelte index 289cffe..f31a2f7 100644 --- a/src/components/Widget/OutputLog/OutputLogWidget.svelte +++ b/src/lib/components/Widget/OutputLog/OutputLogWidget.svelte @@ -28,24 +28,24 @@ }; -
+
-
+
{#each filteredLogs as log (log.id)}
- + [{log.time}] {#if log.source} - + [{log.source}] {/if} @@ -57,7 +57,7 @@ {/each} {#if filteredLogs.length === 0} -
No logs matching your search
+
No logs matching your search
{/if}
diff --git a/src/lib/components/Widget/ScreenView/ScreenViewWidget.svelte b/src/lib/components/Widget/ScreenView/ScreenViewWidget.svelte new file mode 100644 index 0000000..f91c1c1 --- /dev/null +++ b/src/lib/components/Widget/ScreenView/ScreenViewWidget.svelte @@ -0,0 +1,3 @@ +
+
+
diff --git a/src/components/Widget/widgets.ts b/src/lib/components/Widget/widgets.ts similarity index 100% rename from src/components/Widget/widgets.ts rename to src/lib/components/Widget/widgets.ts diff --git a/src/components/demo/code-example.ts b/src/lib/components/demo/code-example.ts similarity index 100% rename from src/components/demo/code-example.ts rename to src/lib/components/demo/code-example.ts diff --git a/src/components/demo/components.ts b/src/lib/components/demo/components.ts similarity index 100% rename from src/components/demo/components.ts rename to src/lib/components/demo/components.ts diff --git a/src/components/demo/entities.ts b/src/lib/components/demo/entities.ts similarity index 100% rename from src/components/demo/entities.ts rename to src/lib/components/demo/entities.ts diff --git a/src/components/demo/logs.ts b/src/lib/components/demo/logs.ts similarity index 100% rename from src/components/demo/logs.ts rename to src/lib/components/demo/logs.ts diff --git a/src/components/demo/tabs.ts b/src/lib/components/demo/tabs.ts similarity index 100% rename from src/components/demo/tabs.ts rename to src/lib/components/demo/tabs.ts diff --git a/src/components/utils.ts b/src/lib/components/utils.ts similarity index 100% rename from src/components/utils.ts rename to src/lib/components/utils.ts diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index d3a30a7..0000000 --- a/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { mount } from 'svelte'; -import 'uno.css'; - -import App from './App.svelte'; -import './app.css'; - -const app = mount(App, { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - target: document.getElementById('app')!, -}); - -export default app; diff --git a/src/routes.ts b/src/routes.ts deleted file mode 100644 index 5d4211e..0000000 --- a/src/routes.ts +++ /dev/null @@ -1,5 +0,0 @@ -import Home from './routes/Home.svelte'; - -export const routes: Record = { - '/': Home, -}; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..2394612 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,8 @@ + + +{@render children()} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..ef24d60 --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,44 @@ + + +
+
+
+ + Logo + +
+ + +
+
+
+ + +
+
+
+ +
+
diff --git a/src/routes/+page.ts b/src/routes/+page.ts new file mode 100644 index 0000000..a72419a --- /dev/null +++ b/src/routes/+page.ts @@ -0,0 +1,3 @@ +// since there's no dynamic data here, we can prerender +// it so that it gets served as a static asset in production +export const prerender = true; diff --git a/src/routes/Home.svelte b/src/routes/Home.svelte deleted file mode 100644 index 7f1ea5b..0000000 --- a/src/routes/Home.svelte +++ /dev/null @@ -1,43 +0,0 @@ - - -
-
-
- Logo -
- - -
-
-
- - -
-
-
- -
-
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts deleted file mode 100644 index 4078e74..0000000 --- a/src/vite-env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// diff --git a/static/favicon.svg b/static/favicon.svg new file mode 100644 index 0000000..cc5dc66 --- /dev/null +++ b/static/favicon.svg @@ -0,0 +1 @@ +svelte-logo \ No newline at end of file diff --git a/static/robots.txt b/static/robots.txt new file mode 100644 index 0000000..b6dd667 --- /dev/null +++ b/static/robots.txt @@ -0,0 +1,3 @@ +# allow crawling everything by default +User-agent: * +Disallow: diff --git a/svelte.config.js b/svelte.config.js index 152ba42..34a3fc2 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,10 +1,15 @@ +import adapter from '@sveltejs/adapter-auto'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; import UnoCSS from '@unocss/svelte-scoped/preprocess'; +/** @type {import('@sveltejs/kit').Config} */ export default { preprocess: [vitePreprocess(), UnoCSS()], onwarn: (warning, handler) => { if (['css_unused_selector'].includes(warning.code)) return; handler(warning); }, + kit: { + adapter: adapter(), + }, }; diff --git a/tsconfig.app.json b/tsconfig.app.json deleted file mode 100644 index 0d30217..0000000 --- a/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "@tsconfig/svelte/tsconfig.json", - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "module": "ESNext", - "resolveJsonModule": true, - "allowJs": true, - "checkJs": true, - "isolatedModules": true, - "moduleDetection": "force" - }, - "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"] -} diff --git a/tsconfig.json b/tsconfig.json index 2ebc5ad..c7b9df5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,20 @@ { - "$schema": "https://json.schemastore.org/tsconfig.json", - "files": [], - "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }] + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "rewriteRelativeImportExtensions": true, + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "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 } diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index 8c97dfe..0000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig.json", - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2022", - "lib": ["ES2023"], - "module": "ESNext", - "skipLibCheck": true, - - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "isolatedModules": true, - "moduleDetection": "force", - "noEmit": true, - - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/vite.config.ts b/vite.config.ts index 52b2ef2..2256b96 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,8 +1,44 @@ -import { svelte } from '@sveltejs/vite-plugin-svelte'; +import { paraglideVitePlugin } from '@inlang/paraglide-js'; +import { sveltekit } from '@sveltejs/kit/vite'; +import extractorSvelte from '@unocss/extractor-svelte'; +import { playwright } from '@vitest/browser-playwright'; import UnoCSS from 'unocss/vite'; -import { defineConfig } from 'vite'; +import { defineConfig } from 'vitest/config'; // https://vite.dev/config/ export default defineConfig({ - plugins: [UnoCSS(), svelte()], + plugins: [ + UnoCSS({ + extractors: [extractorSvelte()], + }), + sveltekit(), + paraglideVitePlugin({ project: './project.inlang', outdir: './src/lib/paraglide' }), + ], + test: { + expect: { requireAssertions: true }, + projects: [ + { + extends: './vite.config.ts', + test: { + name: 'client', + browser: { + enabled: true, + provider: playwright(), + instances: [{ browser: 'chromium', headless: true }], + }, + include: ['src/**/*.svelte.{test,spec}.{js,ts}'], + exclude: ['src/lib/server/**'], + }, + }, + { + extends: './vite.config.ts', + test: { + name: 'server', + environment: 'node', + include: ['src/**/*.{test,spec}.{js,ts}'], + exclude: ['src/**/*.svelte.{test,spec}.{js,ts}'], + }, + }, + ], + }, });