From 1f21c0aa6152ab2736bc19c76554f3d669cda1fc Mon Sep 17 00:00:00 2001 From: HeavenVR Date: Thu, 20 Aug 2026 14:07:15 +0200 Subject: [PATCH 1/3] feat: migrate to SvelteKit 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ran `sv migrate sveltekit-3` and worked through the manual tasks it collected. Config: - `experimental.tracing` -> top-level `tracing.server`, and `experimental.instrumentation` is gone (instrumentation.server.ts is picked up automatically now) - `vitePlugin.inspector` moves to the top level of the sveltekit() options - `KitConfig` is no longer exported from `@sveltejs/kit`; take `Config` from `@sveltejs/kit/vite` instead - tsconfig extends `$app/tsconfig`, mirrors the new `#lib` subpath imports in `paths` (svelte-check resolves .svelte imports itself and only understands tsconfig paths, not package.json imports) and keeps type-checking the config, plugin and e2e sources Paths: - `Path` no longer carries a leading slash, so pathname literals, breadcrumb and sidebar entries drop it - `prefixBase()` still takes a union-typed pathname, which `resolve()` cannot (it is generic over a single literal path), and derives the base path from PUBLIC_SITE_URL the same way vite.config.ts does — `resolve()` returns a path relative to the page being rendered, which cannot be compared against page.url.pathname nor back the absolute URLs in the sitemap and canonical tags Environment, hooks and navigation: - `$env/static|dynamic/*` -> `$app/env/*` through the generated src/env.ts; the previously dynamic variables keep an empty-string fallback, which every consumer treats exactly like the old `undefined` - `handleError` discriminates on `kind`, so expected app and framework errors (404s and friends, which SvelteKit 3 also routes through the hook) log at warn instead of drowning real defects in telemetry - `replaceState()` -> shallow `goto()`, `keepFocus`/`noScroll` -> `reset` - parameter matchers consolidated into src/params.ts Also fixes three bugs the type checker surfaced on the way: - the logo asset is `logo.svg`, not `Logo.svg`, so the social preview image and the welcome screen preload were 404ing - public-routes.ts cast its computed paths to `Path`, which hid the leading-slash change from the compiler — sitemap.xml and llms.txt would have emitted `https://home/`-style URLs - redirectLegacyHashRoute() was handed `resolve('')`, yielding the protocol-relative `//home` --- package.json | 14 +- pnpm-lock.yaml | 557 +++++++++++------- src/app.d.ts | 2 +- src/env.ts | 29 + src/hooks.client.ts | 46 +- src/hooks.server.ts | 8 +- src/instrumentation.server.ts | 4 +- src/lib/api/internal/runtime-config.ts | 4 +- src/lib/api/next/base.ts | 2 +- src/lib/api/next/oauth.ts | 2 +- src/lib/comparers/ShockerLimitsComparer.ts | 2 +- .../comparers/ShockerPermissionsComparer.ts | 2 +- src/lib/comparers/UserShareComparer.ts | 4 +- .../ClassicControlModule.svelte | 6 +- .../ControlModules/LiveButton.svelte | 2 +- .../ControlModules/LiveControlModule.svelte | 4 +- .../ControlModules/MapControlModule.svelte | 2 +- .../PublicShareClassicControlModule.svelte | 12 +- .../ControlModules/RichControlModule.svelte | 12 +- .../SharedShockerControlModule.svelte | 12 +- .../ControlModules/SimpleControlHeader.svelte | 2 +- .../ControlModules/SimpleControlModule.svelte | 10 +- .../dialogs/dialog-shocker-add.svelte | 8 +- .../ControlModules/impl/ActionButtons.svelte | 4 +- .../ControlModules/impl/LiveSlider.svelte | 2 +- .../ControlModules/impl/ShockerMenu.svelte | 32 +- .../impl/ShockerPauseButton.svelte | 6 +- src/lib/components/ExpirationPicker.svelte | 2 +- .../components/FirmwareChannelSelector.svelte | 4 +- src/lib/components/Table/ColumnUtils.ts | 4 +- .../components/TelemetryConsentToast.svelte | 4 +- src/lib/components/Turnstile.svelte | 4 +- src/lib/components/auth/oauth-buttons.svelte | 2 +- src/lib/components/input/UsernameInput.svelte | 8 +- .../shares/permission-tooltip.svelte | 4 +- .../components/shares/user-selector.svelte | 6 +- .../components/utils/MultiPauseToggle.svelte | 6 +- src/lib/components/utils/PauseToggle.svelte | 6 +- src/lib/errorhandling/apiErrorHandling.ts | 11 +- src/lib/hooks/shocker-events.svelte.ts | 6 +- src/lib/index.ts | 2 +- .../inputvalidation/usernameValidator.test.ts | 2 +- src/lib/inputvalidation/usernameValidator.ts | 4 +- src/lib/metadata.ts | 21 +- src/lib/signalr/handlers/DeviceStatus.ts | 4 +- src/lib/signalr/handlers/DeviceUpdate.ts | 4 +- src/lib/signalr/handlers/Log.ts | 4 +- src/lib/signalr/handlers/OtaInstallFailed.ts | 2 +- .../signalr/handlers/OtaInstallProgress.ts | 4 +- src/lib/signalr/handlers/OtaInstallStarted.ts | 2 +- .../signalr/handlers/OtaInstallSucceeded.ts | 2 +- src/lib/signalr/handlers/OtaRollback.ts | 2 +- src/lib/signalr/models/Control.ts | 2 +- src/lib/signalr/sharelink.svelte.ts | 4 +- src/lib/signalr/user.svelte.ts | 2 +- src/lib/state/auth-state.svelte.ts | 6 +- .../state/backend-metadata-state.svelte.ts | 2 +- src/lib/state/breadcrumbs-state.svelte.ts | 6 +- src/lib/state/hubs-state.svelte.ts | 8 +- src/lib/state/live-control-state.svelte.ts | 6 +- src/lib/state/shared-hubs-state.svelte.ts | 6 +- .../state/telemetry-consent-state.svelte.ts | 2 +- src/lib/state/user-shares-state.svelte.ts | 6 +- src/lib/state/user-state.svelte.ts | 6 +- src/lib/telemetry/common.ts | 7 +- src/lib/telemetry/consent-prompt.ts | 6 +- src/lib/telemetry/tracer.ts | 2 +- src/lib/tour/onboarding-state.ts | 2 +- src/lib/tour/welcome-tour.ts | 2 +- src/lib/typeguards/errorGuards.ts | 2 +- src/lib/types/ApiUser.ts | 2 +- src/lib/types/TurnstileInstance.ts | 2 +- src/lib/utils/public-routes.test.ts | 38 +- src/lib/utils/public-routes.ts | 13 +- src/lib/utils/serial-context.svelte.ts | 2 +- src/lib/utils/url.test.ts | 145 +++-- src/lib/utils/url.ts | 85 ++- src/lib/utils/urlFilters.svelte.ts | 9 +- src/params.ts | 14 + src/params/guid.ts | 3 - src/params/integer.ts | 3 - src/routes/(app)/+layout.svelte | 4 +- src/routes/(app)/+layout.ts | 4 +- src/routes/(app)/admin/+layout.svelte | 10 +- src/routes/(app)/admin/+page.server.ts | 2 +- .../(app)/admin/blacklists/+page.svelte | 8 +- src/routes/(app)/admin/config/+page.svelte | 12 +- .../admin/config/data-table-actions.svelte | 2 +- .../(app)/admin/config/dialog-item-add.svelte | 4 +- .../admin/config/dialog-item-delete.svelte | 6 +- .../admin/config/dialog-item-edit.svelte | 6 +- src/routes/(app)/admin/mail/+page.svelte | 18 +- .../admin/mail/data-table-actions.svelte | 4 +- .../admin/mail/dialog-message-delete.svelte | 4 +- .../admin/mail/dialog-message-details.svelte | 2 +- .../(app)/admin/mail/dialog-send-test.svelte | 6 +- .../(app)/admin/online-hubs/+page.svelte | 8 +- src/routes/(app)/admin/online-hubs/columns.ts | 4 +- .../online-hubs/data-table-actions.svelte | 12 +- src/routes/(app)/admin/users/+page.svelte | 18 +- .../admin/users/[userId=guid]/+page.svelte | 12 +- .../admin/users/data-table-actions.svelte | 4 +- .../admin/users/dialog-user-delete.svelte | 6 +- .../(app)/admin/users/dialog-user-edit.svelte | 8 +- src/routes/(app)/admin/webhooks/+page.svelte | 12 +- .../admin/webhooks/data-table-actions.svelte | 2 +- .../admin/webhooks/dialog-webhook-add.svelte | 4 +- .../webhooks/dialog-webhook-delete.svelte | 6 +- src/routes/(app)/hangfire/+page.svelte | 2 +- src/routes/(app)/home/+page.svelte | 39 +- src/routes/(app)/hubs/+page.svelte | 10 +- .../hubs/[hubId=guid]/update/+page.svelte | 24 +- src/routes/(app)/hubs/columns.ts | 2 +- .../(app)/hubs/data-table-actions.svelte | 23 +- src/routes/(app)/profile/+page.svelte | 2 +- src/routes/(app)/settings/+page.server.ts | 2 +- .../(app)/settings/account/+page.svelte | 28 +- .../(app)/settings/account/DangerZone.svelte | 4 +- .../account/dialog-email-change.svelte | 6 +- .../account/dialog-password-change.svelte | 4 +- .../account/dialog-username-change.svelte | 10 +- .../(app)/settings/api-tokens/+page.svelte | 23 +- .../api-tokens/dialog-token-edit.svelte | 6 +- .../settings/api-tokens/new/+page.svelte | 29 +- .../shocker-control-settings.svelte | 4 +- .../settings/api-tokens/token-actions.svelte | 6 +- .../(app)/settings/connections/+page.svelte | 12 +- .../dialog-oauth-disconnect.svelte | 4 +- .../(app)/settings/sessions/+page.svelte | 14 +- .../sessions/dialog-session-revoke.svelte | 8 +- .../settings/sessions/session-actions.svelte | 2 +- src/routes/(app)/shares/public/+page.svelte | 35 +- .../public/[shareId=guid]/edit/+page.svelte | 35 +- .../[shareId=guid]/edit/SharedDevice.svelte | 2 +- .../[shareId=guid]/edit/SharedShocker.svelte | 8 +- .../edit/dialog-add-shocker.svelte | 2 +- .../shares/public/data-table-actions.svelte | 21 +- .../public/dialog-publicshare-create.svelte | 4 +- .../public/dialog-publicshare-delete.svelte | 6 +- src/routes/(app)/shares/user/+layout.svelte | 23 +- src/routes/(app)/shares/user/+page.server.ts | 2 +- .../user/dialog-share-code-create.svelte | 14 +- .../user/dialog-share-code-created.svelte | 4 +- .../user/dialog-share-code-redeem.svelte | 11 +- .../(app)/shares/user/incoming/+page.svelte | 4 +- .../user/incoming/incoming-share-item.svelte | 8 +- .../shares/user/incoming/manage-share.svelte | 10 +- .../(app)/shares/user/invites/+page.svelte | 4 +- .../user/invites/incoming-invite-item.svelte | 10 +- .../user/invites/outgoing-invite-item.svelte | 10 +- .../(app)/shares/user/outgoing/+page.svelte | 4 +- .../shares/user/outgoing/edit-share.svelte | 14 +- .../user/outgoing/user-share-item.svelte | 8 +- src/routes/(app)/shockers/+server.ts | 2 +- .../[shockerId=guid]/edit/+page.svelte | 32 +- src/routes/(app)/shockers/logs/+page.svelte | 24 +- src/routes/(app)/shockers/own/+page.svelte | 86 ++- src/routes/(app)/shockers/shared/+page.svelte | 22 +- src/routes/(auth)/+layout.svelte | 8 +- src/routes/(auth)/activate/+page.svelte | 12 +- .../(auth)/forgot-password/+page.svelte | 18 +- src/routes/(auth)/login/+page.svelte | 45 +- .../oauth/[provider]/create/+page.svelte | 16 +- src/routes/(auth)/oauth/error/+page.svelte | 14 +- .../[secret]/+page.svelte | 14 +- src/routes/(auth)/signup/+page.svelte | 41 +- src/routes/(auth)/verify-email/+page.svelte | 12 +- src/routes/(meta)/llms.txt/+server.ts | 18 +- src/routes/(meta)/robots.txt/+server.ts | 10 +- src/routes/(meta)/sitemap.xml/+server.ts | 8 +- src/routes/(redirects)/flashtool/+server.ts | 2 +- src/routes/(redirects)/s/[id=guid]/+server.ts | 9 +- src/routes/(redirects)/t/+server.ts | 4 +- .../(redirects)/usc/[code=guid]/+server.ts | 7 +- src/routes/+error.svelte | 16 +- src/routes/+layout.server.ts | 2 +- src/routes/+layout.svelte | 6 +- src/routes/+page.server.ts | 2 +- src/routes/+page.svelte | 9 +- src/routes/Breadcrumb.svelte | 6 +- src/routes/Footer.svelte | 10 +- src/routes/Header.svelte | 24 +- src/routes/Sidebar.svelte | 77 ++- src/routes/WelcomeScreen.svelte | 12 +- src/routes/logout/+page.ts | 4 +- src/routes/report/api-tokens/+page.svelte | 13 +- .../shares/public/[shareId=guid]/+page.svelte | 26 +- .../public/[shareId=guid]/ControlView.svelte | 28 +- src/routes/terminal/+page.svelte | 8 +- .../terminal/FirmwareBoardSelector.svelte | 2 +- src/routes/terminal/FirmwareFlasher.svelte | 2 +- src/routes/terminal/HelpDialog.svelte | 9 +- src/routes/terminal/SerialPortSelector.svelte | 2 +- tsconfig.json | 22 +- vite.config.ts | 16 +- 195 files changed, 1426 insertions(+), 1268 deletions(-) create mode 100644 src/env.ts create mode 100644 src/params.ts delete mode 100644 src/params/guid.ts delete mode 100644 src/params/integer.ts diff --git a/package.json b/package.json index fb091e21..5eaf2c47 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,9 @@ "@lucide/svelte": "^1.28.0", "@microsoft/signalr": "^10.0.11", "@playwright/test": "^1.62.1", - "@sveltejs/adapter-cloudflare": "^7.2.9", - "@sveltejs/adapter-node": "^5.5.7", - "@sveltejs/kit": "^2.70.2", + "@sveltejs/adapter-cloudflare": "8.0.0-next.6", + "@sveltejs/adapter-node": "6.0.0-next.10", + "@sveltejs/kit": "3.0.0-next.23", "@sveltejs/vite-plugin-svelte": "^7.2.0", "@tailwindcss/vite": "^4.3.3", "@tanstack/svelte-table": "^9.0.0", @@ -55,7 +55,7 @@ "rollup-plugin-license": "^3.7.1", "semver": "^7.8.5", "svelte": "^5.56.8", - "svelte-check": "^4.7.4", + "svelte-check": "^4.7.5", "svelte-sonner": "^1.1.1", "sveltekit-superforms": "^2.30.2", "tailwind-merge": "^3.6.0", @@ -95,5 +95,9 @@ "browserslist": [ "defaults and fully supports es6-module" ], - "packageManager": "pnpm@11.20.0" + "packageManager": "pnpm@11.20.0", + "imports": { + "#lib": "./src/lib/index.js", + "#lib/*": "./src/lib/*" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 59f06d89..19be1b29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,14 +85,14 @@ importers: specifier: ^1.62.1 version: 1.62.1 '@sveltejs/adapter-cloudflare': - specifier: ^7.2.9 - version: 7.2.9(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(wrangler@4.120.0) + specifier: 8.0.0-next.6 + version: 8.0.0-next.6(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(wrangler@4.120.0(@cloudflare/workers-types@5.20260817.1)) '@sveltejs/adapter-node': - specifier: ^5.5.7 - version: 5.5.7(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0))) + specifier: 6.0.0-next.10 + version: 6.0.0-next.10(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0))) '@sveltejs/kit': - specifier: ^2.70.2 - version: 2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) + specifier: 3.0.0-next.23 + version: 3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) '@sveltejs/vite-plugin-svelte': specifier: ^7.2.0 version: 7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) @@ -113,7 +113,7 @@ importers: version: 1.0.8 bits-ui: specifier: 2.18.1 - version: 2.18.1(@internationalized/date@3.12.3)(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0)) + version: 2.18.1(@internationalized/date@3.12.3)(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0)) boxen: specifier: ^8.0.1 version: 8.0.1 @@ -143,7 +143,7 @@ importers: version: 0.6.1 formsnap: specifier: ^2.0.1 - version: 2.0.1(svelte@5.56.8(@typescript-eslint/types@8.66.0))(sveltekit-superforms@2.30.2(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)) + version: 2.0.1(svelte@5.56.8(@typescript-eslint/types@8.66.0))(sveltekit-superforms@2.30.2(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)) globals: specifier: ^17.9.0 version: 17.9.0 @@ -172,14 +172,14 @@ importers: specifier: ^5.56.8 version: 5.56.8(@typescript-eslint/types@8.66.0) svelte-check: - specifier: ^4.7.4 - version: 4.7.4(picomatch@4.0.5)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3) + specifier: ^4.7.5 + version: 4.7.6(picomatch@4.0.5)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3) svelte-sonner: specifier: ^1.1.1 version: 1.1.1(svelte@5.56.8(@typescript-eslint/types@8.66.0)) sveltekit-superforms: specifier: ^2.30.2 - version: 2.30.2(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3) + version: 2.30.2(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3) tailwind-merge: specifier: ^3.6.0 version: 3.6.0 @@ -215,7 +215,7 @@ importers: version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.2)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) wrangler: specifier: ^4.120.0 - version: 4.120.0 + version: 4.120.0(@cloudflare/workers-types@5.20260817.1) packages/svelte-core: devDependencies: @@ -420,8 +420,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20260702.1': - resolution: {integrity: sha512-mOhf5TUEB1m2vPrxtqoIGfz0fUC9xyxRDx5gWHy5s+OCo6dcV+g7wI1R7gYCMFohhqF/2y2xeKVwMwCJjfn/WA==} + '@cloudflare/workers-types@5.20260817.1': + resolution: {integrity: sha512-5Dv+cyjusBTPLMRedUCiLJu3zqeeupgyn1QcHmpHJV9k/TjQAxx79AO8RVtpjVaO2CB+Oh3ywAp1UuNpbyDjGQ==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -1044,6 +1044,9 @@ packages: '@oxc-project/types@0.142.0': resolution: {integrity: sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==} + '@oxc-project/types@0.144.0': + resolution: {integrity: sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==} + '@playwright/test@1.62.1': resolution: {integrity: sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==} engines: {node: '>=20'} @@ -1074,30 +1077,60 @@ packages: cpu: [arm64] os: [android] + '@rolldown/binding-android-arm64@1.2.4': + resolution: {integrity: sha512-jHC2cnyKz5xU2fhECtFl8OZ83cYNt13GZQD+0uMJ/X3o+ijmd56okHhTUwxVSHPx1IRVIJEZ1/1pPzeLCU6XKA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@rolldown/binding-darwin-arm64@1.2.2': resolution: {integrity: sha512-9u9Xv6c1AJZT0FfwH5vrMG5Jjcwhc1MlyrPu0XfTqkzsmqfks2M6W/o5XwAJgVVN/jHpqqngC1WevHKKTIUtIA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@rolldown/binding-darwin-arm64@1.2.4': + resolution: {integrity: sha512-Dc5mPD8F5F/FS8i01syd7FTF6yB2fVthH/TRkjwJkzUK6EpoxHtqvZQP5Zwq80/5z19TWYHIg1KOHboCgVx/aQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@rolldown/binding-darwin-x64@1.2.2': resolution: {integrity: sha512-9W1mbGZAfW3oqd85bhBkmpyHCCzL1TeG/zFFP3vg7b0rlly8cxOcre5nXwz+LHazCwac2MNWgPdPCHndABjpWQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@rolldown/binding-darwin-x64@1.2.4': + resolution: {integrity: sha512-fpDm4oBo6SqLvWUYCmFhdde3U9KH2fRNNMeAnAPAIwxRL345xutL0EtEUcuoxsoazdJGv/MuDBQHlCDrtbvqOg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@rolldown/binding-freebsd-x64@1.2.2': resolution: {integrity: sha512-0p1lhiCSCyaerFwtrdZQUx7NqGk6LQnaRKWX7tFQqwQgvX0rjM15cIkm3pax1UpEakK14C4mOxx/jSqCBdBRqQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@rolldown/binding-freebsd-x64@1.2.4': + resolution: {integrity: sha512-rSJoreDE/HoIzoaib6MTp5jQtCTdMHKIvItAKT/ImS6Y6Ww76oUaeMyp4Vc/fAgd/ehji068IxetHXAnqUwN9A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@rolldown/binding-linux-arm-gnueabihf@1.2.2': resolution: {integrity: sha512-e+cOJXrJ2L3zx6YzqPg+f6Wbk3V1cKB8bOhbaYdVYN3DdquzNdRAmrbETz1qnt5yp/c7JNlNjmITiA2cVneQ7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.2.4': + resolution: {integrity: sha512-/jm8OGHgn7oGaJu3i/qZI9spUGcJ+y/lk43ttQ/iO1tOd9NissG6o97bighBCiL+BKRngmcDuR6ikfwYdJmVuQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.2.2': resolution: {integrity: sha512-JsSMsj6sNat/MuhG5fnBD7QgbtpHKVe30x5/bAVirDHdhoQRXJkF6xc0Jqk8O4fiCUQAzMOoH9wZi3m60c8wtg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1105,6 +1138,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-arm64-gnu@1.2.4': + resolution: {integrity: sha512-tIP06BeD9EqvECBrPZ+sqdPlYrT+aYaAiu1wYziVx5elRK/ftm33JxVDy2bXGbr6J0CrtirCkR87/X5a2euEng==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-arm64-musl@1.2.2': resolution: {integrity: sha512-B5G/zJdHaoJn9vD50eGHWkiWfmq8Uhi3IiLPJTzmZTrAalk1bztUikSXo0qga18ibE0IXboyeMUnhPjhAJ45wQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1112,6 +1152,13 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-arm64-musl@1.2.4': + resolution: {integrity: sha512-Ql1Q0EQqVThvn9VAVlwNzsUvbSFtCMGjLpRRi4pk5i7NZZ4n5ISiLMjHYtus4VQ2PvkSw24zyaCVsiS+sXPj1w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rolldown/binding-linux-ppc64-gnu@1.2.2': resolution: {integrity: sha512-6mC/awzKka8W6EoekjegpfGkjz8jXWDX63pqu/HYVpyKtZfu65Jsh4QAH3Kej3CAv/c1oGX7psTmFEbr0mDxLA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1119,6 +1166,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-ppc64-gnu@1.2.4': + resolution: {integrity: sha512-GjbjXD4XXfN19D0LZNbmiCBUoDiRACsYHr0yaIbbn8aFsXjHZifcYqu/W5Er5X2X990WjHXFrxarn5chzItorQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-s390x-gnu@1.2.2': resolution: {integrity: sha512-412MX9fJLdA1IK28EZnc8jYv2HRTleOZgfLQumJ5zy7OeJLZlg/CETwFaXjNmGVxG51cFHpKLqb5LKvBC+HsHA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1126,6 +1180,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-s390x-gnu@1.2.4': + resolution: {integrity: sha512-p5WR0NOwaRmJ/B1b6IjEFLLivwEsf3PrdBIhRbhTCQisbo2SvHHpG4ELB/+FgQNnB88LTOF86upmJmbvZdQ2lw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.2.2': resolution: {integrity: sha512-Q/+HI/ToJafZ1iCqGgVQXUEkIjufHCTF0gBQ2a5o3cg7GJ2h0qyq3nvvSmU+bGda2/7ygXpTY4TM6gO9OhQ0ZA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1133,6 +1194,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.2.4': + resolution: {integrity: sha512-4/GyVjmhR+Tc6HLJvwc1sOhPqAZtySiSMesOZyX6JQ5XBxoTDEMKQzvo07NIK6nTon/SivlZqvhzvuVBNQhObQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-musl@1.2.2': resolution: {integrity: sha512-ZKp/w41n6wCvxzxQHtQSbuphfX3Y4cCvbjkKHusrLx4lh+JWLTU7StSltO/DKARISzbj368d+qUaCjI8K2wzXw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1140,72 +1208,52 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-x64-musl@1.2.4': + resolution: {integrity: sha512-l9eeLsCNvPpmSXUej0etw/J1eqV0Jj1D5G/xG6YTijmE6dkv6E2QezgWbTfQk63v952DPqrjOCoiqxq7Bw0YUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@rolldown/binding-openharmony-arm64@1.2.2': resolution: {integrity: sha512-pxE6xD4KS3eAROkKK5yrhB9/3+vhlhVGMvlQLbdpzrBGDbKrnzx3RLwPaHvasLo6jgaiBLn7e04Df9C4tYhjmA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@rolldown/binding-openharmony-arm64@1.2.4': + resolution: {integrity: sha512-e0F355MSTMm3+UOqtV3L24gFUp2N5m1f8L/7d56deik6va+AXdrt9F8LbzGpeWGWRbZEDq4m8NVnJDeBtf9DZg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-win32-arm64-msvc@1.2.2': resolution: {integrity: sha512-4MqEue5re+xIZzAWsB8sj0P1kqZySWqIuN4t6QaIO/YA6SFwySOLruvWQFzfmqk8LBK2P30KCSJwf6mJCZZ5/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.2.4': + resolution: {integrity: sha512-AWLi0uBRYh6QlE7OKhiz+phZC0qwtij2QZmhmOdsLdFn64m7oMpooE9ICE3lhm9xMb4SpDo2WbHcxX1iFLFtqw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-x64-msvc@1.2.2': resolution: {integrity: sha512-NweNxxD0Nf9t8v7kodun45Ijp3EIwYY+uydPP6qBEYvfBqhIjN6dZMzlQja3tqX/aLs3F3Uz+AxDpKgRhpOZQg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.2.4': + resolution: {integrity: sha512-UwSDJOg3dqCAejWdxclJjCsh3Qq4vLYMDxmyHqo1btz3stK2VqgwNd3mm5tuIwzSlGIQ/1H9Hr+Zn09mrezNqQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@rollup/plugin-commonjs@29.0.3': - resolution: {integrity: sha512-ZaOxZceP7SOUW7Lqw5IRVweSQYWaeIPnXIGLiB690EBA3FGJTO40EEr2L5yZplJWsgTCogILRSpcAe7+U0Otdg==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@16.0.3': - resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@6.0.3': - resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.4.0': - resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/rollup-android-arm-eabi@4.62.4': resolution: {integrity: sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==} cpu: [arm] @@ -1368,21 +1416,26 @@ packages: peerDependencies: acorn: ^8.9.0 + '@sveltejs/acorn-typescript@1.0.13': + resolution: {integrity: sha512-wgKggnhZVL9Bfx1OaKKTrYY9BFRk6C8UAkQNUcIv1+llzYrIqy+RZm5HPKzn0NpEBvTVhTqB4kQyllZywsRBRQ==} + peerDependencies: + acorn: ^8.9.0 + '@sveltejs/adapter-auto@7.0.1': resolution: {integrity: sha512-dvuPm1E7M9NI/+canIQ6KKQDU2AkEefEZ2Dp7cY6uKoPq9Z/PhOXABe526UdW2mN986gjVkuSLkOYIBnS/M2LQ==} peerDependencies: '@sveltejs/kit': ^2.0.0 - '@sveltejs/adapter-cloudflare@7.2.9': - resolution: {integrity: sha512-LEfLRYKZIiNYBPYk9Cu4dFCCIX37NO96jESNRDv7yr3vvblKU4Yh05FPUMRSrOWFKtG6bJcGIvdG/M2DSf4D1w==} + '@sveltejs/adapter-cloudflare@8.0.0-next.6': + resolution: {integrity: sha512-SFj/Fxg7m4bCpwjz7uvTG6vDuDhsnXuwUnH0qyPxeRc2SNHo1HEMoTNBFHlC9A9hXgjfnSJZINn+tJGP08q7IQ==} peerDependencies: - '@sveltejs/kit': ^2.0.0 - wrangler: ^4.0.0 + '@sveltejs/kit': ^3.0.0-next.0 + wrangler: ^4.118.0 - '@sveltejs/adapter-node@5.5.7': - resolution: {integrity: sha512-uOfc9eVlI3A37RRSaKcgrheBYPrfJwC9VMqDp8x/O6tlKdcLLvHThSWD0KNIbjQ/d+7bwLGx3vx6aowAcRfd2g==} + '@sveltejs/adapter-node@6.0.0-next.10': + resolution: {integrity: sha512-eYvk01tqPixXDkw5MCsMJZUU/9gbqWIAE9ASUYDtIaESmUcT/QBXo15Gd5NHy4ow4pelXVP/wJnQKa2RxOg10g==} peerDependencies: - '@sveltejs/kit': ^2.4.0 + '@sveltejs/kit': ^3.0.0-next.0 '@sveltejs/kit@2.70.2': resolution: {integrity: sha512-RzRoRpuR2KXqc5yMO0akQHDZeT4AslOlznGITURsqHaVbtyYP4Wn3eE3gxj9JcDyNYO0crkxhdwFHc+2vkVm6w==} @@ -1400,10 +1453,30 @@ packages: typescript: optional: true + '@sveltejs/kit@3.0.0-next.23': + resolution: {integrity: sha512-vQEp3qR99VrVlRe+jLKUAAelj75xTf/TBdY40LM0fA0JiQiy+rT8vD4GKgMG86WjOk63E3Bas15aQnYApKyfvQ==} + engines: {node: '>=22.17'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.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 + typescript: + optional: true + '@sveltejs/load-config@0.2.1': resolution: {integrity: sha512-5m3B2cbqQ4TbwW6Xkh66Ntw6dD7gNc77cCxABTTesWcq9jxIzMgTk97pZx5vEtvQx8iokgi7GIphqZe+PGwcZA==} engines: {node: '>= 18.0.0'} + '@sveltejs/load-config@0.2.3': + resolution: {integrity: sha512-VT3qmUb8pRV2QrZjd8iAmtg8lf4W0TIjZbvXtz5MKei/q96teWZgGJyyidJzOjzZzvdq616eSRVeMYIQChUTAQ==} + engines: {node: '>= 18.0.0'} + '@sveltejs/package@2.5.8': resolution: {integrity: sha512-zeBbsXYvHiBu56v4gJaGQoEHzg96w0E1j3dOMX8vo56s6vI5eQ57ZEZhudjwjnegnVitRRu5MrmhO0eNvaonIw==} engines: {node: ^16.14 || >=18} @@ -1557,9 +1630,6 @@ packages: '@types/node@26.1.2': resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/semver@7.8.0': resolution: {integrity: sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==} @@ -1990,9 +2060,6 @@ packages: commenting@1.1.0: resolution: {integrity: sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA==} - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - confbox@0.2.4: resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} @@ -2007,6 +2074,10 @@ packages: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} + cookie@2.0.1: + resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==} + engines: {node: '>=22'} + cross-env@10.1.0: resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} engines: {node: '>=20'} @@ -2116,10 +2187,6 @@ packages: error-stack-parser-es@1.0.5: resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - es-module-lexer@2.3.1: resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} @@ -2227,9 +2294,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -2335,9 +2399,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - get-east-asian-width@1.6.0: resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} @@ -2376,10 +2437,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} - engines: {node: '>= 0.4'} - human-id@4.2.0: resolution: {integrity: sha512-K3GbkIWqyvvlpfhBPlbEvD97TtqBpAYA4kt+cn2lD2x2HuohzZCibcA2nOlnJT6exqvJLggoB5nv2dNf192nEA==} hasBin: true @@ -2412,10 +2469,6 @@ packages: inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - is-core-module@2.16.2: - resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} - engines: {node: '>= 0.4'} - is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2442,16 +2495,10 @@ packages: engines: {node: '>=14.16'} hasBin: true - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -2700,6 +2747,9 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + magic-string@1.2.0: + resolution: {integrity: sha512-ptco+HFxTLgjafSLim2LojBSwfg5feBjd+SqyiwdGkzC38UPdZy3zgrHMI2CoTf5fJL38tbHMYWVzIH8BxGqJw==} + memoize-weak@1.0.2: resolution: {integrity: sha512-gj39xkrjEw7nCn4nJ1M5ms6+MyMlyiGmttzsqAUsAKn6bYKwuTHh/AO3cKPF8IBrTIYTxb0wWXFs3E//Y8VoWQ==} @@ -2828,9 +2878,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -3036,10 +3083,6 @@ packages: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} - regexparam@3.0.0: - resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==} - engines: {node: '>=8'} - require-in-the-middle@8.0.1: resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==} engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'} @@ -3054,11 +3097,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} - engines: {node: '>= 0.4'} - hasBin: true - reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -3068,6 +3106,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rolldown@1.2.4: + resolution: {integrity: sha512-rSr7irW0K7QRWzjdJXqZowkcRdDtjRduh43rBltnVKd0VFq839l1lJoDvGJb6gl7+4rTTCrPWu+YfujUL8Ug7w==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup-plugin-license@3.7.1: resolution: {integrity: sha512-FcGXUbAmPvRSLxjVdjp/r/MUtKBlttVQd+ApUyvKfREnsoAfAZA6Ic2fE1Tz4RL0f9XqEQU9UIRNUMdtQtliDw==} engines: {node: '>=14.0.0'} @@ -3226,10 +3269,6 @@ packages: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} engines: {node: '>=18'} - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - svelte-check@4.7.4: resolution: {integrity: sha512-IW9ot9YqAoyv8FvyN+eb4ZTe8zgcKZrJLNYU6dzSKkGwEBsSPc4K7lmQ8bKn8W2YMXM6WDfZSSVOaGtekyUfOQ==} engines: {node: '>= 18.0.0'} @@ -3238,6 +3277,14 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 typescript: ^5.0.0 || ^6.0.0 + svelte-check@4.7.6: + resolution: {integrity: sha512-t2scM//ZuVbSY/T2w6FSBw1v9s2NEmh/g+sy1lqtosW5ylBV5AF4wFb1Ts9Kf3MbfPDUDJDZ9L436YT0SPTdvw==} + engines: {node: '>= 18.0.0'} + hasBin: true + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + typescript: ^5.0.0 || ^6.0.0 + svelte-eslint-parser@1.8.0: resolution: {integrity: sha512-mikR1qwIVy3t5WthUoAXkMwxkXvabZP9FJgdx35Ei7EbGWmctva1Pih16Koeor/bdNNq8NXHlwKGS6NkYTawLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.34.1} @@ -3609,10 +3656,6 @@ packages: engines: {node: '>=16'} hasBin: true - worktop@0.8.0-next.18: - resolution: {integrity: sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==} - engines: {node: '>=12'} - wrangler@4.120.0: resolution: {integrity: sha512-cBmu/MeaB/fPacC0JpATs4duTOCagBxrZo+vBzuTX06tLzwSyAHE1drlHUZ8rP0VqVz1fy3ReGYTiHdKkoHltg==} engines: {node: '>=22.0.0'} @@ -3861,7 +3904,7 @@ snapshots: '@cloudflare/workerd-windows-64@1.20260801.1': optional: true - '@cloudflare/workers-types@4.20260702.1': {} + '@cloudflare/workers-types@5.20260817.1': {} '@cspotcode/source-map-support@0.8.1': dependencies: @@ -4392,6 +4435,8 @@ snapshots: '@oxc-project/types@0.142.0': {} + '@oxc-project/types@0.144.0': {} + '@playwright/test@1.62.1': dependencies: playwright: 1.62.1 @@ -4420,89 +4465,88 @@ snapshots: '@rolldown/binding-android-arm64@1.2.2': optional: true + '@rolldown/binding-android-arm64@1.2.4': + optional: true + '@rolldown/binding-darwin-arm64@1.2.2': optional: true + '@rolldown/binding-darwin-arm64@1.2.4': + optional: true + '@rolldown/binding-darwin-x64@1.2.2': optional: true + '@rolldown/binding-darwin-x64@1.2.4': + optional: true + '@rolldown/binding-freebsd-x64@1.2.2': optional: true + '@rolldown/binding-freebsd-x64@1.2.4': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.2.2': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.2.4': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.2.2': optional: true + '@rolldown/binding-linux-arm64-gnu@1.2.4': + optional: true + '@rolldown/binding-linux-arm64-musl@1.2.2': optional: true + '@rolldown/binding-linux-arm64-musl@1.2.4': + optional: true + '@rolldown/binding-linux-ppc64-gnu@1.2.2': optional: true + '@rolldown/binding-linux-ppc64-gnu@1.2.4': + optional: true + '@rolldown/binding-linux-s390x-gnu@1.2.2': optional: true + '@rolldown/binding-linux-s390x-gnu@1.2.4': + optional: true + '@rolldown/binding-linux-x64-gnu@1.2.2': optional: true - '@rolldown/binding-linux-x64-musl@1.2.2': + '@rolldown/binding-linux-x64-gnu@1.2.4': optional: true - '@rolldown/binding-openharmony-arm64@1.2.2': + '@rolldown/binding-linux-x64-musl@1.2.2': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.2': + '@rolldown/binding-linux-x64-musl@1.2.4': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.2': + '@rolldown/binding-openharmony-arm64@1.2.2': optional: true - '@rolldown/pluginutils@1.0.1': {} + '@rolldown/binding-openharmony-arm64@1.2.4': + optional: true - '@rollup/plugin-commonjs@29.0.3(rollup@4.62.4)': - dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.4) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.5) - is-reference: 1.2.1 - magic-string: 0.30.21 - picomatch: 4.0.5 - optionalDependencies: - rollup: 4.62.4 + '@rolldown/binding-win32-arm64-msvc@1.2.2': + optional: true - '@rollup/plugin-json@6.1.0(rollup@4.62.4)': - dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.4) - optionalDependencies: - rollup: 4.62.4 + '@rolldown/binding-win32-arm64-msvc@1.2.4': + optional: true - '@rollup/plugin-node-resolve@16.0.3(rollup@4.62.4)': - dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.4) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.12 - optionalDependencies: - rollup: 4.62.4 + '@rolldown/binding-win32-x64-msvc@1.2.2': + optional: true - '@rollup/plugin-replace@6.0.3(rollup@4.62.4)': - dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.4) - magic-string: 0.30.21 - optionalDependencies: - rollup: 4.62.4 + '@rolldown/binding-win32-x64-msvc@1.2.4': + optional: true - '@rollup/pluginutils@5.4.0(rollup@4.62.4)': - dependencies: - '@types/estree': 1.0.9 - estree-walker: 2.0.2 - picomatch: 4.0.5 - optionalDependencies: - rollup: 4.62.4 + '@rolldown/pluginutils@1.0.1': {} '@rollup/rollup-android-arm-eabi@4.62.4': optional: true @@ -4600,25 +4644,24 @@ snapshots: dependencies: acorn: 8.18.0 + '@sveltejs/acorn-typescript@1.0.13(acorn@8.18.0)': + dependencies: + acorn: 8.18.0 + '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))': dependencies: '@sveltejs/kit': 2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) - '@sveltejs/adapter-cloudflare@7.2.9(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(wrangler@4.120.0)': + '@sveltejs/adapter-cloudflare@8.0.0-next.6(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(wrangler@4.120.0(@cloudflare/workers-types@5.20260817.1))': dependencies: - '@cloudflare/workers-types': 4.20260702.1 - '@sveltejs/kit': 2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) - worktop: 0.8.0-next.18 - wrangler: 4.120.0 + '@cloudflare/workers-types': 5.20260817.1 + '@sveltejs/kit': 3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) + wrangler: 4.120.0(@cloudflare/workers-types@5.20260817.1) - '@sveltejs/adapter-node@5.5.7(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))': + '@sveltejs/adapter-node@6.0.0-next.10(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))': dependencies: - '@rollup/plugin-commonjs': 29.0.3(rollup@4.62.4) - '@rollup/plugin-json': 6.1.0(rollup@4.62.4) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.62.4) - '@rollup/plugin-replace': 6.0.3(rollup@4.62.4) - '@sveltejs/kit': 2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) - rollup: 4.62.4 + '@sveltejs/kit': 3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) + rolldown: 1.2.4 '@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0))': dependencies: @@ -4641,8 +4684,29 @@ snapshots: '@opentelemetry/api': 1.9.1 typescript: 6.0.3 + '@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + '@standard-schema/spec': 1.1.0 + '@sveltejs/acorn-typescript': 1.0.13(acorn@8.18.0) + '@sveltejs/vite-plugin-svelte': 7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) + acorn: 8.18.0 + cookie: 2.0.1 + devalue: 5.9.0 + esm-env: 1.2.2 + magic-string: 1.2.0 + mrmime: 2.0.1 + sirv: 3.0.2 + svelte: 5.56.8(@typescript-eslint/types@8.66.0) + vite: 8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0) + optionalDependencies: + '@opentelemetry/api': 1.9.1 + typescript: 6.0.3 + '@sveltejs/load-config@0.2.1': {} + '@sveltejs/load-config@0.2.3': {} + '@sveltejs/package@2.5.8(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)': dependencies: chokidar: 5.0.0 @@ -4773,8 +4837,6 @@ snapshots: dependencies: undici-types: 8.3.0 - '@types/resolve@1.20.2': {} - '@types/semver@7.8.0': {} '@types/trusted-types@2.0.7': {} @@ -5094,6 +5156,19 @@ snapshots: transitivePeerDependencies: - '@sveltejs/kit' + bits-ui@2.18.1(@internationalized/date@3.12.3)(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0)): + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/dom': 1.8.0 + '@internationalized/date': 3.12.3 + esm-env: 1.2.2 + runed: 0.35.1(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0)) + svelte: 5.56.8(@typescript-eslint/types@8.66.0) + svelte-toolbelt: 0.10.6(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0)) + tabbable: 6.5.0 + transitivePeerDependencies: + - '@sveltejs/kit' + blake3-wasm@2.1.5: {} boxen@8.0.1: @@ -5181,8 +5256,6 @@ snapshots: commenting@1.1.0: {} - commondir@1.0.1: {} - confbox@0.2.4: {} convert-source-map@2.0.0: {} @@ -5191,6 +5264,8 @@ snapshots: cookie@1.1.1: {} + cookie@2.0.1: {} + cross-env@10.1.0: dependencies: '@epic-web/invariant': 1.0.0 @@ -5277,8 +5352,6 @@ snapshots: error-stack-parser-es@1.0.5: {} - es-errors@1.3.0: {} - es-module-lexer@2.3.1: {} esbuild@0.28.1: @@ -5440,8 +5513,6 @@ snapshots: estraverse@5.3.0: {} - estree-walker@2.0.2: {} - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.9 @@ -5521,6 +5592,12 @@ snapshots: svelte-toolbelt: 0.5.0(svelte@5.56.8(@typescript-eslint/types@8.66.0)) sveltekit-superforms: 2.30.2(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3) + formsnap@2.0.1(svelte@5.56.8(@typescript-eslint/types@8.66.0))(sveltekit-superforms@2.30.2(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)): + dependencies: + svelte: 5.56.8(@typescript-eslint/types@8.66.0) + svelte-toolbelt: 0.5.0(svelte@5.56.8(@typescript-eslint/types@8.66.0)) + sveltekit-superforms: 2.30.2(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3) + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -5539,8 +5616,6 @@ snapshots: fsevents@2.3.3: optional: true - function-bind@1.1.2: {} - get-east-asian-width@1.6.0: {} get-tsconfig@4.14.0: @@ -5574,10 +5649,6 @@ snapshots: graceful-fs@4.2.11: {} - hasown@2.0.4: - dependencies: - function-bind: 1.1.2 - human-id@4.2.0: {} husky@9.1.7: {} @@ -5600,10 +5671,6 @@ snapshots: inline-style-parser@0.2.7: {} - is-core-module@2.16.2: - dependencies: - hasown: 2.0.4 - is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -5620,14 +5687,8 @@ snapshots: dependencies: is-docker: 3.0.0 - is-module@1.0.0: {} - is-number@7.0.0: {} - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.9 - is-reference@3.0.3: dependencies: '@types/estree': 1.0.9 @@ -5820,6 +5881,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + magic-string@1.2.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + memoize-weak@1.0.2: {} merge2@1.4.1: {} @@ -5930,8 +5995,6 @@ snapshots: path-key@3.1.1: {} - path-parse@1.0.7: {} - path-to-regexp@6.3.0: {} path-type@4.0.0: {} @@ -6054,8 +6117,6 @@ snapshots: readdirp@5.0.0: {} - regexparam@3.0.0: {} - require-in-the-middle@8.0.1(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -6069,13 +6130,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.12: - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.2 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - reusify@1.1.0: {} rolldown@1.2.2: @@ -6098,6 +6152,26 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.2.2 '@rolldown/binding-win32-x64-msvc': 1.2.2 + rolldown@1.2.4: + dependencies: + '@oxc-project/types': 0.144.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.2.4 + '@rolldown/binding-darwin-arm64': 1.2.4 + '@rolldown/binding-darwin-x64': 1.2.4 + '@rolldown/binding-freebsd-x64': 1.2.4 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.4 + '@rolldown/binding-linux-arm64-gnu': 1.2.4 + '@rolldown/binding-linux-arm64-musl': 1.2.4 + '@rolldown/binding-linux-ppc64-gnu': 1.2.4 + '@rolldown/binding-linux-s390x-gnu': 1.2.4 + '@rolldown/binding-linux-x64-gnu': 1.2.4 + '@rolldown/binding-linux-x64-musl': 1.2.4 + '@rolldown/binding-openharmony-arm64': 1.2.4 + '@rolldown/binding-win32-arm64-msvc': 1.2.4 + '@rolldown/binding-win32-x64-msvc': 1.2.4 + rollup-plugin-license@3.7.1(picomatch@4.0.5)(rollup@4.62.4): dependencies: commenting: 1.1.0 @@ -6169,6 +6243,15 @@ snapshots: optionalDependencies: '@sveltejs/kit': 2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) + runed@0.35.1(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0)): + dependencies: + dequal: 2.0.3 + esm-env: 1.2.2 + lz-string: 1.5.0 + svelte: 5.56.8(@typescript-eslint/types@8.66.0) + optionalDependencies: + '@sveltejs/kit': 3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) + sade@1.8.1: dependencies: mri: 1.2.0 @@ -6306,8 +6389,6 @@ snapshots: supports-color@10.2.2: {} - supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.7.4(picomatch@4.0.5)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -6321,6 +6402,19 @@ snapshots: transitivePeerDependencies: - picomatch + svelte-check@4.7.6(picomatch@4.0.5)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + '@sveltejs/load-config': 0.2.3 + chokidar: 4.0.3 + fdir: 6.5.0(picomatch@4.0.5) + picocolors: 1.1.1 + sade: 1.8.1 + svelte: 5.56.8(@typescript-eslint/types@8.66.0) + typescript: 6.0.3 + transitivePeerDependencies: + - picomatch + svelte-eslint-parser@1.8.0(svelte@5.56.8(@typescript-eslint/types@8.66.0)): dependencies: eslint-scope: 8.4.0 @@ -6347,6 +6441,15 @@ snapshots: transitivePeerDependencies: - '@sveltejs/kit' + svelte-toolbelt@0.10.6(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0)): + dependencies: + clsx: 2.1.1 + runed: 0.35.1(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0)) + style-to-object: 1.0.14 + svelte: 5.56.8(@typescript-eslint/types@8.66.0) + transitivePeerDependencies: + - '@sveltejs/kit' + svelte-toolbelt@0.5.0(svelte@5.56.8(@typescript-eslint/types@8.66.0)): dependencies: clsx: 2.1.1 @@ -6416,6 +6519,34 @@ snapshots: - '@types/json-schema' - typescript + sveltekit-superforms@2.30.2(@sveltejs/kit@3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(@types/json-schema@7.0.15)(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3): + dependencies: + '@sveltejs/kit': 3.0.0-next.23(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)))(svelte@5.56.8(@typescript-eslint/types@8.66.0))(typescript@6.0.3)(vite@8.2.0(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)) + devalue: 5.9.0 + memoize-weak: 1.0.2 + svelte: 5.56.8(@typescript-eslint/types@8.66.0) + ts-deepmerge: 8.0.0 + optionalDependencies: + '@exodus/schemasafe': 1.3.0 + '@standard-schema/spec': 1.1.0 + '@typeschema/class-validator': 0.3.0(@types/json-schema@7.0.15)(class-validator@0.14.4) + '@valibot/to-json-schema': 1.7.1(valibot@1.4.2(typescript@6.0.3)) + '@vinejs/vine': 3.0.1 + arktype: 2.2.3 + class-validator: 0.14.4 + effect: 3.22.1 + joi: 17.13.4 + json-schema-to-ts: 3.1.1 + superstruct: 2.0.2 + typebox: 1.3.10 + valibot: 1.4.2(typescript@6.0.3) + yup: 1.7.1 + zod: 4.4.3 + zod-v3-to-json-schema: 4.0.0(zod@4.4.3) + transitivePeerDependencies: + - '@types/json-schema' + - typescript + tabbable@6.5.0: {} tailwind-merge@3.6.0: {} @@ -6675,12 +6806,7 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20260801.1 '@cloudflare/workerd-windows-64': 1.20260801.1 - worktop@0.8.0-next.18: - dependencies: - mrmime: 2.0.1 - regexparam: 3.0.0 - - wrangler@4.120.0: + wrangler@4.120.0(@cloudflare/workers-types@5.20260817.1): dependencies: '@cloudflare/kv-asset-handler': 0.5.0 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260801.1) @@ -6691,6 +6817,7 @@ snapshots: unenv: 2.0.0-rc.24 workerd: 1.20260801.1 optionalDependencies: + '@cloudflare/workers-types': 5.20260817.1 fsevents: 2.3.3 transitivePeerDependencies: - bufferutil diff --git a/src/app.d.ts b/src/app.d.ts index b8a17814..f1852664 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -1,5 +1,5 @@ /// -import type { TurnstileInstance } from '$lib/types/TurnstileInstance'; +import type { TurnstileInstance } from '#lib/types/TurnstileInstance.js'; // See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces diff --git a/src/env.ts b/src/env.ts new file mode 100644 index 00000000..1c0a9413 --- /dev/null +++ b/src/env.ts @@ -0,0 +1,29 @@ +import { defineEnvVars } from '@sveltejs/kit/env'; + +// The variables below without `static: true` were read through `$env/dynamic/*` before the +// SvelteKit 3 migration, so they were `undefined` when unset. `schema: (input) => input ?? ''` +// keeps that behaviour: every consumer feeds them to `isTruthy()` (or compares to `'true'`), +// for which an empty string is falsy just like `undefined` was. +export const variables = defineEnvVars({ + PRIVATE_BACKEND_TLS_INSECURE: { schema: (input) => input ?? '' }, + PUBLIC_GITHUB_PROJECT_URL: { public: true, static: true }, + PUBLIC_SIGNOZ_DEPLOYMENT_ENVIRONMENT: { public: true, static: true }, + PUBLIC_SIGNOZ_LOGS_ENABLED: { public: true, static: true }, + PUBLIC_SIGNOZ_LOGS_URL: { public: true, static: true }, + PUBLIC_SIGNOZ_TRACES_URL: { public: true, static: true }, + PUBLIC_SITE_NAME: { public: true, static: true }, + PUBLIC_DEVELOPMENT_BANNER: { public: true, static: true }, + PUBLIC_DISCORD_INVITE_URL: { public: true, static: true }, + PUBLIC_DISABLE_SITEMAP: { public: true, schema: (input) => input ?? '' }, + PUBLIC_DENY_ROBOTS: { public: true, schema: (input) => input ?? '' }, + PUBLIC_DISABLE_LLMS_TXT: { public: true, schema: (input) => input ?? '' }, + PUBLIC_SITE_DESCRIPTION: { public: true, static: true }, + PUBLIC_DISABLE_SHOCKER_MAP: { public: true, static: true }, + PUBLIC_BACKEND_API_URL: { public: true, static: true }, + PUBLIC_SITE_SHORT_URL: { public: true, static: true }, + PUBLIC_SITE_URL: { public: true, static: true }, + PUBLIC_DISABLE_ONBOARDING: { public: true, static: true }, + PUBLIC_SIGNOZ_RESOURCE_ATTRIBUTES: { public: true, static: true }, + PUBLIC_SIGNOZ_TRACE_PROPAGATION: { public: true, static: true }, + PUBLIC_TURNSTILE_DEV_BYPASS_VALUE: { public: true, static: true }, +}); diff --git a/src/hooks.client.ts b/src/hooks.client.ts index 2b316bcd..d7740880 100644 --- a/src/hooks.client.ts +++ b/src/hooks.client.ts @@ -1,15 +1,15 @@ +import type { HandleClientError } from '@sveltejs/kit/hooks'; import 'temporal-polyfill/global'; -import { base } from '$app/paths'; -import { versionGetBackendInfo } from '$lib/api'; -import { handleApiError } from '$lib/errorhandling/apiErrorHandling'; -import { authState, startAuthLifecycle } from '$lib/state/auth-state.svelte'; -import { backendMetadata } from '$lib/state/backend-metadata-state.svelte'; -import { userState } from '$lib/state/user-state.svelte'; -import { initTelemetry, log } from '$lib/telemetry/logger'; -import { redirectLegacyHashRoute } from '$lib/utils/legacy-hash-redirect'; +import { versionGetBackendInfo } from '#lib/api/index.js'; +import { handleApiError } from '#lib/errorhandling/apiErrorHandling.js'; +import { authState, startAuthLifecycle } from '#lib/state/auth-state.svelte.js'; +import { backendMetadata } from '#lib/state/backend-metadata-state.svelte.js'; +import { userState } from '#lib/state/user-state.svelte.js'; +import { initTelemetry, log } from '#lib/telemetry/logger.js'; +import { redirectLegacyHashRoute } from '#lib/utils/legacy-hash-redirect.js'; +import { basePath } from '#lib/utils/url.js'; import { initializeColorScheme } from '@openshock/svelte-core/state/color-scheme-state.svelte.js'; -import type { HandleClientError } from '@sveltejs/kit'; /** Best-effort extraction of a message + stack from an unknown thrown value. */ function describeError(value: unknown): { message: string; stack?: string } { @@ -75,7 +75,8 @@ async function clientInit(): Promise { export async function init() { initTelemetry(); registerGlobalErrorCapture(); - redirectLegacyHashRoute(base); + // `basePath()` has no trailing slash — the mapped target already starts with one. + redirectLegacyHashRoute(basePath()); await clientInit().catch(handleApiError); initializeColorScheme(); } @@ -83,13 +84,24 @@ export async function init() { /** * SvelteKit routes errors thrown during rendering, load, and navigation here instead of to * window.onerror — so forward them to telemetry too, otherwise they're silently swallowed. + * + * Since SvelteKit 3 this also receives *expected* errors: `error(...)` thrown by our own code + * (`kind: 'app'`) and SvelteKit's own 404s and the like (`kind: 'framework'`). Those are normal + * responses rather than defects, so they are logged at warn level and only unexpected throws + * are reported as errors. */ -export const handleError: HandleClientError = ({ error, event, status, message }) => { - const { message: errMessage, stack } = describeError(error); - log.error(errMessage, { - stack, - status, - route: event.route?.id ?? undefined, - kitMessage: message, +export const handleError: HandleClientError = ({ kind, error, event }) => { + const route = event.route?.id ?? undefined; + + if (kind === 'unknown') { + const { message, stack } = describeError(error); + log.error(message, { stack, status: 500, route, kind }); + return; + } + + log.warn(error.message, { + status: kind === 'framework' ? error.status : undefined, + route, + kind, }); }; diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 9fb8acee..48ff5e31 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,6 +1,6 @@ -import { env } from '$env/dynamic/private'; -import { PUBLIC_GITHUB_PROJECT_URL } from '$env/static/public'; -import type { Handle, ServerInit } from '@sveltejs/kit'; +import { PRIVATE_BACKEND_TLS_INSECURE } from '$app/env/private'; +import { PUBLIC_GITHUB_PROJECT_URL } from '$app/env/public'; +import type { Handle, ServerInit } from '@sveltejs/kit/hooks'; /** * Security + metadata headers for every dynamically rendered response. @@ -58,7 +58,7 @@ export const handle: Handle = async ({ event, resolve }) => { export const init: ServerInit = () => { // `typeof process` guard: on the Cloudflare adapter there is no Node `process` // and no self-signed-cert scenario, so this is a no-op there. - if (env.PRIVATE_BACKEND_TLS_INSECURE === 'true' && typeof process !== 'undefined') { + if (PRIVATE_BACKEND_TLS_INSECURE === 'true' && typeof process !== 'undefined') { process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; console.warn( '[hooks.server] PRIVATE_BACKEND_TLS_INSECURE=true — TLS certificate validation is DISABLED for ' + diff --git a/src/instrumentation.server.ts b/src/instrumentation.server.ts index d96adc6c..23dd4fa0 100644 --- a/src/instrumentation.server.ts +++ b/src/instrumentation.server.ts @@ -1,10 +1,10 @@ -import { version } from '$app/environment'; +import { version } from '$app/env'; import { PUBLIC_SIGNOZ_DEPLOYMENT_ENVIRONMENT, PUBLIC_SIGNOZ_LOGS_ENABLED, PUBLIC_SIGNOZ_LOGS_URL, PUBLIC_SIGNOZ_TRACES_URL, -} from '$env/static/public'; +} from '$app/env/public'; import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'; import { resourceFromAttributes } from '@opentelemetry/resources'; import { BatchSpanProcessor, NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; diff --git a/src/lib/api/internal/runtime-config.ts b/src/lib/api/internal/runtime-config.ts index 4115af89..2725dfeb 100644 --- a/src/lib/api/internal/runtime-config.ts +++ b/src/lib/api/internal/runtime-config.ts @@ -1,5 +1,5 @@ -import { PUBLIC_BACKEND_API_URL } from '$env/static/public'; -import { getBackendURL } from '$lib/utils/url'; +import { getBackendURL } from '#lib/utils/url.js'; +import { PUBLIC_BACKEND_API_URL } from '$app/env/public'; import type { CreateClientConfig } from './v1/client.gen'; function resolveBaseUrl(): string { diff --git a/src/lib/api/next/base.ts b/src/lib/api/next/base.ts index 7c97fc52..2a4f99f8 100644 --- a/src/lib/api/next/base.ts +++ b/src/lib/api/next/base.ts @@ -1,4 +1,4 @@ -import { getBackendURL, type BackendPath } from '$lib/utils/url'; +import { getBackendURL, type BackendPath } from '#lib/utils/url.js'; import { ResponseError } from './ResponseError'; export async function GetJson( diff --git a/src/lib/api/next/oauth.ts b/src/lib/api/next/oauth.ts index c22a8e78..deda81a0 100644 --- a/src/lib/api/next/oauth.ts +++ b/src/lib/api/next/oauth.ts @@ -1,4 +1,4 @@ -import { getBackendURL } from '$lib/utils/url'; +import { getBackendURL } from '#lib/utils/url.js'; import { GetJson, PostJson } from './base'; import type { LoginOkResponse, OAuthFinalizeRequest, OAuthSignupData } from './models'; import { TransformLoginOkResponse, TransformOAuthSignupData } from './transformers'; diff --git a/src/lib/comparers/ShockerLimitsComparer.ts b/src/lib/comparers/ShockerLimitsComparer.ts index ce167543..5304d968 100644 --- a/src/lib/comparers/ShockerLimitsComparer.ts +++ b/src/lib/comparers/ShockerLimitsComparer.ts @@ -1,4 +1,4 @@ -import type { ShockerLimits } from '$lib/api'; +import type { ShockerLimits } from '#lib/api/index.js'; export default function CompareShockerLimits(a: ShockerLimits, b: ShockerLimits) { // Compare the limits of the two shocker objects diff --git a/src/lib/comparers/ShockerPermissionsComparer.ts b/src/lib/comparers/ShockerPermissionsComparer.ts index 410dcbed..4a93e4f4 100644 --- a/src/lib/comparers/ShockerPermissionsComparer.ts +++ b/src/lib/comparers/ShockerPermissionsComparer.ts @@ -1,4 +1,4 @@ -import type { ShockerPermissions } from '$lib/api'; +import type { ShockerPermissions } from '#lib/api/index.js'; export default function CompareShockerPermissions(a: ShockerPermissions, b: ShockerPermissions) { // Compare the permissions and limits of the two shocker objects diff --git a/src/lib/comparers/UserShareComparer.ts b/src/lib/comparers/UserShareComparer.ts index 1f0d6250..5a8aaff7 100644 --- a/src/lib/comparers/UserShareComparer.ts +++ b/src/lib/comparers/UserShareComparer.ts @@ -1,5 +1,5 @@ -import type { UserShareInfo } from '$lib/api'; -import CompareShockerPermissions from '$lib/comparers/ShockerPermissionsComparer'; +import type { UserShareInfo } from '#lib/api/index.js'; +import CompareShockerPermissions from '#lib/comparers/ShockerPermissionsComparer.js'; import CompareShockerLimits from './ShockerLimitsComparer'; export function ComparePermissionsAndLimits(a: UserShareInfo, b: UserShareInfo) { diff --git a/src/lib/components/ControlModules/ClassicControlModule.svelte b/src/lib/components/ControlModules/ClassicControlModule.svelte index 159b6149..a44ba81e 100644 --- a/src/lib/components/ControlModules/ClassicControlModule.svelte +++ b/src/lib/components/ControlModules/ClassicControlModule.svelte @@ -4,9 +4,9 @@ ControlDurationProps, ControlIntensityDefault, ControlIntensityProps, - } from '$lib/constants/ControlConstants'; - import { ControlType } from '$lib/signalr/models/ControlType'; - import { useShockerEvents } from '$lib/hooks/shocker-events.svelte'; + } from '#lib/constants/ControlConstants.js'; + import { ControlType } from '#lib/signalr/models/ControlType.js'; + import { useShockerEvents } from '#lib/hooks/shocker-events.svelte.js'; import ActionButtons from './impl/ActionButtons.svelte'; import CircleSlider from './impl/CircleSlider.svelte'; import LimitsDisplay from './impl/LimitsDisplay.svelte'; diff --git a/src/lib/components/ControlModules/LiveButton.svelte b/src/lib/components/ControlModules/LiveButton.svelte index 40ad6348..c000427c 100644 --- a/src/lib/components/ControlModules/LiveButton.svelte +++ b/src/lib/components/ControlModules/LiveButton.svelte @@ -6,7 +6,7 @@ getLiveConnection, setHubLiveControl, toggleShockerLiveControl, - } from '$lib/state/live-control-state.svelte'; + } from '#lib/state/live-control-state.svelte.js'; interface Props { hubId: string; diff --git a/src/lib/components/ControlModules/LiveControlModule.svelte b/src/lib/components/ControlModules/LiveControlModule.svelte index 3cf84322..7e0eb2a1 100644 --- a/src/lib/components/ControlModules/LiveControlModule.svelte +++ b/src/lib/components/ControlModules/LiveControlModule.svelte @@ -1,11 +1,11 @@ ')).toBe(false); + // `\u002F` keeps this string from containing a literal ``, which the Svelte + // parser used by `sv migrate` treats as the end of a script block even inside a string. + expect(isValidTokenRedirectUri('data:text/html, diff --git a/src/routes/(app)/+layout.ts b/src/routes/(app)/+layout.ts index c9abd674..0f86d9ec 100644 --- a/src/routes/(app)/+layout.ts +++ b/src/routes/(app)/+layout.ts @@ -1,5 +1,5 @@ +import { authState } from '#lib/state/auth-state.svelte.js'; import { resolve } from '$app/paths'; -import { authState } from '$lib/state/auth-state.svelte'; import { redirect } from '@sveltejs/kit'; // The pages below this one will be different from user-to-user so cannot be prerendered and really shouldnt be server rendered @@ -10,6 +10,6 @@ export const prerender = false; export function load({ url }) { if (!authState.isAuthenticated) { const next = encodeURIComponent(url.pathname + url.search); - redirect(303, `${resolve('/login')}?next=${next}`); + redirect(303, `${resolve('login')}?next=${next}`); } } diff --git a/src/routes/(app)/admin/+layout.svelte b/src/routes/(app)/admin/+layout.svelte index 1f5f5160..30c6a8b2 100644 --- a/src/routes/(app)/admin/+layout.svelte +++ b/src/routes/(app)/admin/+layout.svelte @@ -1,16 +1,16 @@ diff --git a/src/routes/(app)/home/+page.svelte b/src/routes/(app)/home/+page.svelte index b805009b..21feb1f3 100644 --- a/src/routes/(app)/home/+page.svelte +++ b/src/routes/(app)/home/+page.svelte @@ -4,12 +4,12 @@ import { Container } from '@openshock/svelte-core/components'; import * as Card from '@openshock/svelte-core/components/ui/card'; import { Button } from '@openshock/svelte-core/components/ui/button'; - import { registerBreadcrumbs } from '$lib/state/breadcrumbs-state.svelte'; - import { userState } from '$lib/state/user-state.svelte'; - import { onlineHubs, ownHubs, refreshOwnHubs } from '$lib/state/hubs-state.svelte'; + import { registerBreadcrumbs } from '#lib/state/breadcrumbs-state.svelte.js'; + import { userState } from '#lib/state/user-state.svelte.js'; + import { onlineHubs, ownHubs, refreshOwnHubs } from '#lib/state/hubs-state.svelte.js'; import { onMount } from 'svelte'; - registerBreadcrumbs(() => [{ label: 'Home', href: '/home' }]); + registerBreadcrumbs(() => [{ label: 'Home', href: 'home' }]); let shockerCount = $derived(ownHubs.values().reduce((sum, hub) => sum + hub.shockers.length, 0)); let hubCount = $derived(ownHubs.size); @@ -87,7 +87,7 @@ - - + + {:else if shockerCount === 0} @@ -153,12 +153,11 @@ your devices. - - - + + {/if} diff --git a/src/routes/(app)/hubs/+page.svelte b/src/routes/(app)/hubs/+page.svelte index fe2bb77a..3786dce1 100644 --- a/src/routes/(app)/hubs/+page.svelte +++ b/src/routes/(app)/hubs/+page.svelte @@ -1,17 +1,17 @@ diff --git a/src/routes/(app)/hubs/[hubId=guid]/update/+page.svelte b/src/routes/(app)/hubs/[hubId=guid]/update/+page.svelte index 13be05f4..b6eeec61 100644 --- a/src/routes/(app)/hubs/[hubId=guid]/update/+page.svelte +++ b/src/routes/(app)/hubs/[hubId=guid]/update/+page.svelte @@ -1,6 +1,6 @@ diff --git a/src/routes/(app)/settings/+page.server.ts b/src/routes/(app)/settings/+page.server.ts index ece9de1f..65f5aea2 100644 --- a/src/routes/(app)/settings/+page.server.ts +++ b/src/routes/(app)/settings/+page.server.ts @@ -2,5 +2,5 @@ import { resolve } from '$app/paths'; import { redirect } from '@sveltejs/kit'; export function load() { - redirect(307, resolve('/settings/account')); + redirect(307, resolve('settings/account')); } diff --git a/src/routes/(app)/settings/account/+page.svelte b/src/routes/(app)/settings/account/+page.svelte index 14801ea6..e42efb6e 100644 --- a/src/routes/(app)/settings/account/+page.svelte +++ b/src/routes/(app)/settings/account/+page.svelte @@ -3,7 +3,7 @@ import KeyRound from '@lucide/svelte/icons/key-round'; import Mail from '@lucide/svelte/icons/mail'; import User from '@lucide/svelte/icons/user'; - import { PUBLIC_SIGNOZ_LOGS_ENABLED } from '$env/static/public'; + import { PUBLIC_SIGNOZ_LOGS_ENABLED } from '$app/env/public'; import { Container } from '@openshock/svelte-core/components'; import { Button } from '@openshock/svelte-core/components/ui/button'; import { ToggleGroup, ToggleGroupItem } from '@openshock/svelte-core/components/ui/toggle-group'; @@ -11,20 +11,25 @@ telemetryConsent, telemetryPrompted, type TelemetryLevel, - } from '$lib/state/telemetry-consent-state.svelte'; - import { initTelemetry } from '$lib/telemetry/logger'; - import { userState } from '$lib/state/user-state.svelte'; + } from '#lib/state/telemetry-consent-state.svelte.js'; + import { initTelemetry } from '#lib/telemetry/logger.js'; + import { userState } from '#lib/state/user-state.svelte.js'; import ChangeEmailDialog from './dialog-email-change.svelte'; import ChangePasswordDialog from './dialog-password-change.svelte'; import ChangeUsernameDialog from './dialog-username-change.svelte'; - import { registerBreadcrumbs } from '$lib/state/breadcrumbs-state.svelte'; + import { registerBreadcrumbs } from '#lib/state/breadcrumbs-state.svelte.js'; import DangerZone from './DangerZone.svelte'; const errorReportingAvailable = PUBLIC_SIGNOZ_LOGS_ENABLED === 'true'; const telemetryOptions: { value: TelemetryLevel; label: string; description: string }[] = [ { value: 'off', label: 'Off', description: 'Send nothing.' }, - { value: 'errors', label: 'Errors', description: 'Send browser error reports only.' }, + { + value: 'errors', + label: 'Errors', + description: 'Send browser error reports only.', + }, + { value: 'full', label: 'Full', @@ -47,7 +52,7 @@ ); registerBreadcrumbs(() => [ - { label: 'Settings', href: '/settings/account' }, + { label: 'Settings', href: 'settings/account' }, { label: 'Account' }, ]); @@ -74,6 +79,7 @@
{account.name}
+ @@ -89,10 +95,8 @@ type="button" disabled={isOAuthOnly} title={isOAuthOnly ? 'Not available for OAuth-only accounts' : undefined} - onclick={() => (emailDialogOpen = true)} + onclick={() => (emailDialogOpen = true)}>Change Email - Change Email -
@@ -111,10 +115,8 @@ type="button" disabled={isOAuthOnly} title={isOAuthOnly ? 'Not available for OAuth-only accounts' : undefined} - onclick={() => (passwordDialogOpen = true)} + onclick={() => (passwordDialogOpen = true)}>Change Password - Change Password -
{#if errorReportingAvailable} diff --git a/src/routes/(app)/settings/account/DangerZone.svelte b/src/routes/(app)/settings/account/DangerZone.svelte index 7a2413d0..27e7cc3a 100644 --- a/src/routes/(app)/settings/account/DangerZone.svelte +++ b/src/routes/(app)/settings/account/DangerZone.svelte @@ -1,10 +1,10 @@ {#snippet shockerCard( - shocker: import('$lib/api').ShockerResponse, + shocker: import('#lib/api/index.js').ShockerResponse, hubId: string, showHubBadge: boolean )} @@ -230,32 +233,27 @@ - Classic - + - Rich - + - Simple - + {#if !isTruthy(PUBLIC_DISABLE_SHOCKER_MAP)} - Map - {/if} @@ -278,19 +276,19 @@ - Group by Hub - + - + + @@ -305,9 +303,7 @@ : 'Add a shocker to one of your hubs to get started.'} > {#if ownHubs.size === 0} - + {:else} - + {/if} diff --git a/src/routes/(auth)/forgot-password/+page.svelte b/src/routes/(auth)/forgot-password/+page.svelte index 3cdf1424..fcdc52ce 100644 --- a/src/routes/(auth)/forgot-password/+page.svelte +++ b/src/routes/(auth)/forgot-password/+page.svelte @@ -1,15 +1,15 @@ diff --git a/src/routes/(auth)/oauth/error/+page.svelte b/src/routes/(auth)/oauth/error/+page.svelte index 18469bbf..dcc44a1e 100644 --- a/src/routes/(auth)/oauth/error/+page.svelte +++ b/src/routes/(auth)/oauth/error/+page.svelte @@ -3,9 +3,9 @@ import { resolve } from '$app/paths'; import * as Card from '@openshock/svelte-core/components/ui/card'; import { FieldDescription } from '@openshock/svelte-core/components/ui/field'; - import { registerBreadcrumbs } from '$lib/state/breadcrumbs-state.svelte'; - import { getOAuthErrorMessage } from '$lib/auth/oauth-errors'; - import { consumeSearchParam } from '$lib/utils/url'; + import { registerBreadcrumbs } from '#lib/state/breadcrumbs-state.svelte.js'; + import { getOAuthErrorMessage } from '#lib/auth/oauth-errors.js'; + import { consumeSearchParam } from '#lib/utils/url.js'; registerBreadcrumbs(() => [{ label: 'Authentication Error' }]); @@ -13,7 +13,7 @@ consumeSearchParam('error', async (code) => { if (code === 'emailAlreadyRegistered') { - await goto(resolve(`/login?error=${encodeURIComponent(code)}`), { replaceState: true }); + await goto(resolve(`login?error=${encodeURIComponent(code)}`), { replace: true }); return false; } errorCode = code; @@ -27,9 +27,9 @@ - - Back to login - + Back to login {/if} diff --git a/src/routes/(auth)/reset-password/[passwordResetId=guid]/[secret]/+page.svelte b/src/routes/(auth)/reset-password/[passwordResetId=guid]/[secret]/+page.svelte index 8aecf378..9bddb13b 100644 --- a/src/routes/(auth)/reset-password/[passwordResetId=guid]/[secret]/+page.svelte +++ b/src/routes/(auth)/reset-password/[passwordResetId=guid]/[secret]/+page.svelte @@ -3,13 +3,13 @@ import { resolve } from '$app/paths'; import { page } from '$app/state'; import KeyRound from '@lucide/svelte/icons/key-round'; - import { accountPasswordResetCheckValid, accountPasswordResetComplete } from '$lib/api'; + import { accountPasswordResetCheckValid, accountPasswordResetComplete } from '#lib/api/index.js'; import { PasswordInput } from '@openshock/svelte-core/components/input'; import { Button } from '@openshock/svelte-core/components/ui/button'; import * as Card from '@openshock/svelte-core/components/ui/card'; - import { handleApiError } from '$lib/errorhandling/apiErrorHandling'; + import { handleApiError } from '#lib/errorhandling/apiErrorHandling.js'; import { validatePasswordMatch } from '@openshock/svelte-core/inputvalidation'; - import { registerBreadcrumbs } from '$lib/state/breadcrumbs-state.svelte'; + import { registerBreadcrumbs } from '#lib/state/breadcrumbs-state.svelte.js'; import { toast } from 'svelte-sonner'; registerBreadcrumbs(() => [{ label: 'Reset Password' }]); @@ -54,7 +54,7 @@ }); toast.success('Password has been reset'); - goto(resolve('/login')); + goto(resolve('login')); } catch (e) { await handleApiError(e); } finally { @@ -106,9 +106,9 @@ {:else if !checking} - + {/if} diff --git a/src/routes/(auth)/signup/+page.svelte b/src/routes/(auth)/signup/+page.svelte index 5906609d..994b1acb 100644 --- a/src/routes/(auth)/signup/+page.svelte +++ b/src/routes/(auth)/signup/+page.svelte @@ -1,22 +1,22 @@ @@ -38,15 +37,18 @@ determiner="auto" metaLocale="en_US" /> +
{page.status}
+

{page.error?.message ?? 'Something went wrong.'}

+

{page.status === 404 ? "The page you're looking for doesn't exist." diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts index 4a2f512e..21e3c8b0 100644 --- a/src/routes/+layout.server.ts +++ b/src/routes/+layout.server.ts @@ -2,7 +2,7 @@ import { isOnboardingDisabled, isWelcomeSunset, WELCOME_COOKIE_NAME, -} from '$lib/tour/onboarding-state'; +} from '#lib/tour/onboarding-state.js'; import { SIDEBAR_COOKIE_NAME } from '@openshock/svelte-core/components/ui/sidebar/constants.js'; import { isTruthy } from '@openshock/svelte-core/utils'; import type { LayoutServerLoad } from './$types'; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 283d1b80..f2c52aa4 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,6 +1,6 @@ - +

- OpenShock Logo + OpenShock Logo +

The go-to platform for safe, reliable, real low-latency remote shocking.
{#if data.ok} diff --git a/src/routes/Breadcrumb.svelte b/src/routes/Breadcrumb.svelte index e45c9fa7..91ce588b 100644 --- a/src/routes/Breadcrumb.svelte +++ b/src/routes/Breadcrumb.svelte @@ -1,7 +1,7 @@ {#if breadcrumbs.state.length > 0} @@ -12,7 +12,7 @@ {/if} - {#if crumb.href && i < breadcrumbs.state.length - 1} + {#if crumb.href !== null && i < breadcrumbs.state.length - 1} {crumb.label} {:else} {crumb.label} diff --git a/src/routes/Footer.svelte b/src/routes/Footer.svelte index 4e978ef2..d7c9dfe1 100644 --- a/src/routes/Footer.svelte +++ b/src/routes/Footer.svelte @@ -1,13 +1,11 @@