Update db and db-schema packages to export from dist/ #1

Merged
igm merged 3 commits from fix-exports into master 2026-01-11 05:19:11 +00:00
21 changed files with 36 additions and 30 deletions
Showing only changes of commit 7358129802 - Show all commits

View File

@@ -60,7 +60,7 @@ function isActive(href: string, pathname: string): boolean {
{#each navItems as item (item.href)} {#each navItems as item (item.href)}
{@const active = isActive(item.href, $page.url.pathname)} {@const active = isActive(item.href, $page.url.pathname)}
<a <a
href={resolve(item.href)} href={resolve(item.href as any)}
class={cn( class={cn(
"inline-flex h-[calc(100%-1px)] items-center justify-center gap-1.5 rounded-md border border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow]", "inline-flex h-[calc(100%-1px)] items-center justify-center gap-1.5 rounded-md border border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow]",
active active

View File

@@ -27,7 +27,9 @@ const userQuery = createQuery(() => ({
$effect(() => { $effect(() => {
if (!isAuthPage && userQuery.error) { if (!isAuthPage && userQuery.error) {
goto( goto(
resolve(`/auth/login?redirect=${encodeURIComponent(page.url.pathname)}`), resolve(
`/auth/login?redirect=${encodeURIComponent(page.url.pathname)}` as any,
),
); );
} }
}); });

View File

@@ -28,7 +28,7 @@ const filters = [
<div class="divide-y divide-border/50"> <div class="divide-y divide-border/50">
{#each filters as filter (filter.label)} {#each filters as filter (filter.label)}
<a <a
href={resolve(filter.href)} href={resolve(filter.href as any)}
class="group flex items-center gap-3 px-5 py-3 transition-colors hover:bg-muted/30" class="group flex items-center gap-3 px-5 py-3 transition-colors hover:bg-muted/30"
> >
<div class="flex h-7 w-7 items-center justify-center rounded-md bg-muted text-muted-foreground transition-colors group-hover:bg-foreground/10 group-hover:text-foreground"> <div class="flex h-7 w-7 items-center justify-center rounded-md bg-muted text-muted-foreground transition-colors group-hover:bg-foreground/10 group-hover:text-foreground">

View File

@@ -40,7 +40,7 @@ function handleTabChange(tabId: string) {
} else { } else {
url.searchParams.set("tab", tabId); url.searchParams.set("tab", tabId);
} }
goto(resolve(url.toString()), { replaceState: true, noScroll: true }); goto(resolve(url.toString() as any), { replaceState: true, noScroll: true });
} }
</script> </script>

View File

@@ -6,6 +6,7 @@ import MonitorIcon from "@lucide/svelte/icons/monitor";
import ShieldCheckIcon from "@lucide/svelte/icons/shield-check"; import ShieldCheckIcon from "@lucide/svelte/icons/shield-check";
import UserIcon from "@lucide/svelte/icons/user"; import UserIcon from "@lucide/svelte/icons/user";
import { createQuery } from "@tanstack/svelte-query"; import { createQuery } from "@tanstack/svelte-query";
import { resolve } from "$app/paths";
import { page } from "$app/stores"; import { page } from "$app/stores";
import { api } from "$lib/api/client"; import { api } from "$lib/api/client";
import { DashboardLayout } from "$lib/components/layout"; import { DashboardLayout } from "$lib/components/layout";
@@ -91,10 +92,10 @@ function isActive(href: string): boolean {
<nav class="w-full shrink-0 lg:w-64"> <nav class="w-full shrink-0 lg:w-64">
<!-- Mobile: horizontal scroll --> <!-- Mobile: horizontal scroll -->
<div class="flex gap-2 overflow-x-auto pb-2 lg:hidden"> <div class="flex gap-2 overflow-x-auto pb-2 lg:hidden">
{#each navItems as item} {#each navItems as item (item.href)}
{@const active = isActive(item.href)} {@const active = isActive(item.href)}
<a <a
href={item.href} href={resolve(item.href as any)}
class={cn( class={cn(
"flex shrink-0 items-center gap-2 rounded-lg border px-3 py-2 text-sm font-medium transition-colors", "flex shrink-0 items-center gap-2 rounded-lg border px-3 py-2 text-sm font-medium transition-colors",
active active
@@ -110,10 +111,10 @@ function isActive(href: string): boolean {
<!-- Desktop: vertical list --> <!-- Desktop: vertical list -->
<div class="hidden space-y-1 lg:block"> <div class="hidden space-y-1 lg:block">
{#each navItems as item} {#each navItems as item (item.href)}
{@const active = isActive(item.href)} {@const active = isActive(item.href)}
<a <a
href={item.href} href={resolve(item.href as any)}
class={cn( class={cn(
"group flex items-start gap-3 rounded-lg px-3 py-2.5 transition-colors", "group flex items-start gap-3 rounded-lg px-3 py-2.5 transition-colors",
active active

View File

@@ -53,7 +53,7 @@ async function handleSignOut() {
await api.auth.logout(); await api.auth.logout();
queryClient.clear(); queryClient.clear();
open = false; open = false;
goto(resolve("/login")); goto(resolve("/auth/login"));
} catch (error) { } catch (error) {
console.error("Failed to sign out:", error); console.error("Failed to sign out:", error);
} }
@@ -99,7 +99,7 @@ const navItems = [
? $page.url.pathname === "/admin" ? $page.url.pathname === "/admin"
: $page.url.pathname.startsWith(item.href)} : $page.url.pathname.startsWith(item.href)}
<a <a
href={resolve(item.href)} href={resolve(item.href as any)}
onclick={handleNavClick} onclick={handleNavClick}
class={cn( class={cn(
"flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium transition-colors", "flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium transition-colors",

View File

@@ -44,7 +44,7 @@ async function handleSignOut() {
try { try {
await api.auth.logout(); await api.auth.logout();
queryClient.clear(); queryClient.clear();
goto(resolve("/login")); goto(resolve("/auth/login"));
} catch (error) { } catch (error) {
console.error("Failed to sign out:", error); console.error("Failed to sign out:", error);
} }
@@ -91,7 +91,7 @@ const navItems = [
? $page.url.pathname === "/admin" ? $page.url.pathname === "/admin"
: $page.url.pathname.startsWith(item.href)} : $page.url.pathname.startsWith(item.href)}
<a <a
href={resolve(item.href)} href={resolve(item.href as any)}
class={cn( class={cn(
"group relative flex h-8 w-8 items-center justify-center rounded-lg transition-all duration-150", "group relative flex h-8 w-8 items-center justify-center rounded-lg transition-all duration-150",
isActive isActive

View File

@@ -75,7 +75,7 @@ const navItems = $derived.by(() => {
: $page.url.pathname === item.href || : $page.url.pathname === item.href ||
$page.url.pathname.startsWith(item.href + "/")} $page.url.pathname.startsWith(item.href + "/")}
<a <a
href={resolve(item.href)} href={resolve(item.href as any)}
class={cn( class={cn(
"group relative flex h-8 w-8 items-center justify-center rounded-lg transition-all duration-150", "group relative flex h-8 w-8 items-center justify-center rounded-lg transition-all duration-150",
isActive isActive

View File

@@ -86,7 +86,7 @@ async function handleSignOut() {
await api.auth.logout(); await api.auth.logout();
queryClient.clear(); queryClient.clear();
open = false; open = false;
goto(resolve("/login")); goto(resolve("/auth/login"));
} catch (error) { } catch (error) {
console.error("Failed to sign out:", error); console.error("Failed to sign out:", error);
} }
@@ -124,7 +124,7 @@ async function handleSignOut() {
$page.url.pathname === item.href || $page.url.pathname === item.href ||
(item.href !== "/" && $page.url.pathname.startsWith(item.href))} (item.href !== "/" && $page.url.pathname.startsWith(item.href))}
<a <a
href={resolve(item.href)} href={resolve(item.href as any)}
onclick={handleNavClick} onclick={handleNavClick}
class={cn( class={cn(
"flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium transition-colors", "flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium transition-colors",

View File

@@ -20,7 +20,7 @@ const orgsQuery = createQuery(() => ({
const orgs = $derived(orgsQuery.data ?? []); const orgs = $derived(orgsQuery.data ?? []);
function handleOrgSelect(slug: string) { function handleOrgSelect(slug: string) {
goto(resolve(`/dashboard/${slug}`)); goto(resolve(`/dashboard/${slug}` as any));
} }
</script> </script>

View File

@@ -44,7 +44,7 @@ async function handleSignOut() {
await api.auth.logout(); await api.auth.logout();
// Clear all cached queries // Clear all cached queries
queryClient.clear(); queryClient.clear();
goto(resolve("/login")); goto(resolve("/auth/login"));
} catch (error) { } catch (error) {
console.error("Failed to sign out:", error); console.error("Failed to sign out:", error);
} }

View File

@@ -62,7 +62,7 @@ function isActive(href: string): boolean {
{#each navItems as item (item.href)} {#each navItems as item (item.href)}
{@const active = isActive(item.href)} {@const active = isActive(item.href)}
<a <a
href={resolve(item.href)} href={resolve(item.href as any)}
class={cn( class={cn(
"flex shrink-0 items-center gap-2 rounded-lg border px-3 py-2 text-sm font-medium transition-colors", "flex shrink-0 items-center gap-2 rounded-lg border px-3 py-2 text-sm font-medium transition-colors",
active active
@@ -81,7 +81,7 @@ function isActive(href: string): boolean {
{#each navItems as item (item.href)} {#each navItems as item (item.href)}
{@const active = isActive(item.href)} {@const active = isActive(item.href)}
<a <a
href={resolve(item.href)} href={resolve(item.href as any)}
class={cn( class={cn(
"group flex items-start gap-3 rounded-lg px-3 py-2.5 transition-colors", "group flex items-start gap-3 rounded-lg px-3 py-2.5 transition-colors",
active active

View File

@@ -17,11 +17,11 @@ const orgsQuery = createQuery(() => ({
$effect(() => { $effect(() => {
if (orgsQuery.error) { if (orgsQuery.error) {
// Not authenticated, redirect to login // Not authenticated, redirect to login
goto(resolve(`/auth/login?redirect=${encodeURIComponent("/")}`)); goto(resolve(`/auth/login?redirect=${encodeURIComponent("/")}` as any));
} else if (orgsQuery.data) { } else if (orgsQuery.data) {
if (orgsQuery.data.length > 0) { if (orgsQuery.data.length > 0) {
// Redirect to first org's dashboard // Redirect to first org's dashboard
goto(resolve(`/dashboard/${orgsQuery.data[0].slug}`), { goto(resolve(`/dashboard/${orgsQuery.data[0].slug}` as any), {
replaceState: true, replaceState: true,
}); });
} else { } else {

View File

@@ -11,6 +11,7 @@ import {
import { createQuery, useQueryClient } from "@tanstack/svelte-query"; import { createQuery, useQueryClient } from "@tanstack/svelte-query";
import { toast } from "svelte-sonner"; import { toast } from "svelte-sonner";
import { goto } from "$app/navigation"; import { goto } from "$app/navigation";
import { resolve } from "$app/paths";
import { api } from "$lib/api/client"; import { api } from "$lib/api/client";
import { ConfirmDialog } from "$lib/components/account"; import { ConfirmDialog } from "$lib/components/account";
import { Alert, AlertDescription } from "$lib/components/ui/alert"; import { Alert, AlertDescription } from "$lib/components/ui/alert";
@@ -38,7 +39,7 @@ const userQuery = createQuery(() => ({
$effect(() => { $effect(() => {
if (userQuery.data && !userQuery.data.isSuperuser) { if (userQuery.data && !userQuery.data.isSuperuser) {
toast.error("Access denied. Superuser privileges required."); toast.error("Access denied. Superuser privileges required.");
goto("/account"); goto(resolve("/account"));
} }
}); });

View File

@@ -53,7 +53,7 @@ const acceptMutation = createMutation(() => ({
queryClient.invalidateQueries({ queryKey: ["orgs"] }); queryClient.invalidateQueries({ queryKey: ["orgs"] });
// Redirect to the org dashboard // Redirect to the org dashboard
if (inviteQuery.data) { if (inviteQuery.data) {
goto(resolve(`/dashboard/${inviteQuery.data.org.slug}`)); goto(resolve(`/dashboard/${inviteQuery.data.org.slug}` as any));
} else { } else {
goto(resolve("/dashboard")); goto(resolve("/dashboard"));
} }

View File

@@ -28,7 +28,7 @@ $effect(() => {
if (userQuery.error) { if (userQuery.error) {
goto( goto(
resolve( resolve(
`/auth/login?redirect=${encodeURIComponent(window.location.pathname)}`, `/auth/login?redirect=${encodeURIComponent(window.location.pathname)}` as any,
), ),
); );
} }

View File

@@ -81,9 +81,9 @@ let { children }: Props = $props();
<!-- Footer --> <!-- Footer -->
<p class="text-center text-xs text-muted-foreground"> <p class="text-center text-xs text-muted-foreground">
By continuing, you agree to our By continuing, you agree to our
<a href={resolve("/terms")} class="underline underline-offset-4 hover:text-foreground">Terms of Service</a> <a href={resolve("/terms" as any)} class="underline underline-offset-4 hover:text-foreground">Terms of Service</a>
and and
<a href={resolve("/privacy")} class="underline underline-offset-4 hover:text-foreground">Privacy Policy</a> <a href={resolve("/privacy" as any)} class="underline underline-offset-4 hover:text-foreground">Privacy Policy</a>
</p> </p>
</div> </div>
</div> </div>

View File

@@ -59,7 +59,7 @@ const statusQuery = createQuery(() => ({
$effect(() => { $effect(() => {
if (statusQuery.data?.status === "completed") { if (statusQuery.data?.status === "completed") {
clearLoginFlowState(); clearLoginFlowState();
goto(resolve(statusQuery.data.redirectTo || "/")); goto(resolve((statusQuery.data.redirectTo || "/") as any));
} }
}); });

View File

@@ -62,7 +62,7 @@ async function handleTrust() {
} }
async function handleSkip() { async function handleSkip() {
goto(resolve("/performance")); goto(resolve("/"));
} }
// Get device icon based on type // Get device icon based on type

View File

@@ -42,7 +42,7 @@ $effect(() => {
if (orgsQuery.error) { if (orgsQuery.error) {
goto( goto(
resolve( resolve(
`/auth/login?redirect=${encodeURIComponent(window.location.pathname)}`, `/auth/login?redirect=${encodeURIComponent(window.location.pathname)}` as any,
), ),
); );
} }

View File

@@ -46,7 +46,9 @@ async function acceptInvite(): Promise<void> {
if (!isAuthenticated) { if (!isAuthenticated) {
// Redirect to login with return URL // Redirect to login with return URL
const returnUrl = `/invite/accept?token=${encodeURIComponent(token)}`; const returnUrl = `/invite/accept?token=${encodeURIComponent(token)}`;
goto(resolve(`/auth/login?redirect=${encodeURIComponent(returnUrl)}`)); goto(
resolve(`/auth/login?redirect=${encodeURIComponent(returnUrl)}` as any),
);
return; return;
} }